In SystemVerilog a task or function can initialize a variable in a task or function. In Icarus this is done by creating an initial block that does the assignment. We can translate this by emitting the initial block in the enclosing module scope. This is not 100% correct since SystemVerilog requires the initialization to be done before the other initial/always blocks are processed. For SystemVerilog the current Icarus behavior is incorrect, but even if it had a new process type that ran before the other ones the best I can do for vlog95 is emit it before the normal module processes which currently works. |
||
|---|---|---|
| .. | ||
| Makefile.in | ||
| event.c | ||
| expr.c | ||
| logic_lpm.c | ||
| misc.c | ||
| numbers.c | ||
| scope.c | ||
| stmt.c | ||
| udp.c | ||
| vlog95-s.conf | ||
| vlog95.c | ||
| vlog95.conf | ||
| vlog95_priv.h | ||