![]() Verilog has an edge case where an `always @*` process, which is used to describe a combinatorial function procedurally, may not execute at time zero because none of the signals in its implicit sensitivity list change, i.e. when the process doesn't read any signals. This causes the wires driven by the process to stay undefined. The workaround to this problem (assuming SystemVerilog `always_comb` is not available) is to introduce a dummy signal that changes only at time zero and is optimized out during synthesis. nMigen has had its own workaround, `$verilog_initial_trigger`, for a while. However, `proc_prune`, while increasing readability, pulls references to this signal out of the process. Because of this, a similar workaround was implemented in Yosys' `write_verilog` itself. This commit ensures we use our workaround on versions of Yosys without the updated `write_verilog`, and Yosys' workaround on later versions. Fixes #418. |
||
---|---|---|
.. | ||
__init__.py | ||
cxxrtl.py | ||
pysim.py | ||
rtlil.py | ||
verilog.py |