Menu

Possible compiler switch to Icarus

I've been spending the past few hours reading up on and playing with Icarus, commonly known as Icarus Verilog, which is an open source Verilog compiler/simulator package much like GHDL is for VHDL. There are some differences: Icarus is written in C++ instead of Ada, and it compiles to an intermediate language called VPP which is then executed/simulated by a standalone utility, 'vpp'.

Good design throughout, but the really nice part is new: Icarus/VPP now supports VHDL-to-VPP compilation! The VHDL support isn't finished yet, but I am going to try to leverage what is there and see if I can replace GHDL with Icarus for use with Controlix, as the primary compiler, because it would make porting Controlix to bare-metal hardware easier. The reason for this is that porting the 'vpp' utility would be all that would be needed and it is also C++ code, much easier to statically link than Ada.

The 'vpp' source code is small enough that I should be able to test the feasibility of this idea quickly, and if so I will be able to then (also quickly) try out the Icarus trunk from the GitHub repo on the Controlix source. One sticky point is VHPI - it will probably be necessary to refactor that interface's use cases into some sort of bounce buffer which can be mapped through one of the special device I/O primitives that VPP supports so I can fake a basic device interface for the POSIX target and just mux/demux device I/O and memory access through the hardware memory map in the bare-metal case.

Wish me luck....

Posted by Jon Taylor 2015-06-10

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.