|
From: Jon T. <dos...@gm...> - 2015-06-22 23:07:42
|
On Mon, Jun 22, 2015 at 12:38 PM, Martin Whitaker <mai...@ma...> wrote: > Jon Taylor wrote: >> Hi all, >> >> I am the author of Controlix, an operating system written in vhdl. I am >> currently developing it using GHDL as the compiler, and the system >> interface uses vhpi calls. Works OK on top of POSIX, but Icarus' vpp is >> written in c instead of in ada, making a static linkage job for bare metal >> targeting much more feasible. >> >> Afaics from perusing the sources, neither vhpi or vpp are currently >> supported by vhdlpp. If someone is already looking into writing support for >> this, I'd be happy to test, otherwise I might be able to take a crack at it >> myself (I have the coding time available). >> > Hello Jon, > > Sorry nobody has replied to you sooner. As far as I know nobody is working on > supporting VHPI - hopefully Steve or Orson will chime in if I'm wrong. > > I'm not familiar with VHPI myself, but at a quick glance it seems very similar > to VPI. Yes, although the full spec is a lot more complex than a simple function-binding strategy. However, most of the time you don't end up needing to implement the full spec - GHDL doesn't, all it implements is procedure and function calls. > This means support would need to be added to the simulator runtime > (vvp). Yes again. What I am researching now is whether I can piggyback the VHPI interface on top of the VPI interface in VVP - that is, if %vpi_call() calls can be generated by vhdlpp from VHPIDIRECT functions and procedures. > This may not be a big deal in itself, but I suspect the problem you > will run into is that vhdlpp is just a preprocessor that converts VHDL to > SystemVerilog, so some knowledge of the original code may get lost on the way. I think that as long as the end product .vpi code contains the necessary %vpi_call()s, this shouldn't be a problem. All I will need at that point is a .c file to link into vpp to map a VHPIDIRECT string to a symbol in the object file. I think libDL can do that. [snip] > By vpp, do you mean the VHDL preprocessor? No, sorry I meant VVP, not vpp. |-> Jon |