You have to give me some slack, i learned HDL coding from Verilog and then moved to VHDL. Yes, thats pretty much one of the steepest learning curves a digital engineer could take.
"Quirk" 1
When writing a combinatorial process, if the sensitivity list is empty:
reg_proc:
process -- opps
begin
...
end
GHDL doesn't complain...at all. Like maybe the proverbial "Hey, there might be an infinite loop in this process because you didn't tell me what to pay attention to, dumb ass!" This was without any wait keywords in the block anywhere. As a note: Synplify/QuestaSim will send a warning when there are no signals in the sensitivity list, not to compare a multi-thousand dollar tool to an Open Source tool, but still.process -- opps
begin
...
end
"Quirk" 2
GHDL doesn't "normally" support the std_logic_arith and std_logic_unsigned libraries due to the fact that they are not "legitimate" libraries of the IEEE. Didn't know that until i found this little quirk. So, to force GHDL to use them, GHDL must have a switch specified during analysis and during elaboration:
$ ghdl -a --ieee=synopsys design.vhd
$ ghdl -e --ieee=synopsys design
The gurus over at GHDL give you a description of the three other libraries to use here. $ ghdl -e --ieee=synopsys design
After using GHDL and becoming really familiar with it, i guess the library utilization and limitation makes sense. If you are designing a tool to use IEEE libraries, the purest method is to only support "legitimate" IEEE libraries.
i found a nice descriptive index of the different libraries here and for kicks the GNU Free Document License.
EDIT:
"Quirk" 3
For whatever reason, GHDL does not like the "—" character (that's a long-dash that Word processors place as a replacement for the double dash "--"). Even if this character is in a comment, GHDL will still choke on it. Hence another reason to never use a word processor to write code.
None of these quirks gives me a reason to not use the tool, in many respects it can easily hold it's own against the big tools and works great with gtkWave. i use it when all Synplify Pro licenses are used or i don't want to write out the massive command to use Synplify Pro and it works awesome! :)
0 comments:
Post a Comment