back.verilog: use proc -nomux
if it is available.
Yosys offers no stability guarantees for individual `proc_*` passes, though so far it worked out fine. This commit changes the Verilog backend to use `proc -nomux` instead, which is guaranteed to have backwards-compatible behavior. Fixes #479.
This commit is contained in:
parent
b65e11f38f
commit
955f3f6dcc
|
@ -13,11 +13,15 @@ def _convert_rtlil_text(rtlil_text, *, strip_internal_attrs=False, write_verilog
|
|||
script = []
|
||||
script.append("read_ilang <<rtlil\n{}\nrtlil".format(rtlil_text))
|
||||
|
||||
if yosys_version >= (0, 9, 3468):
|
||||
# Yosys >=0.9+3468 (since commit f3d7e9a1) emits Verilog without a possible sim/synth
|
||||
# mismatch, making $verilog_initial_trigger unnecessary.
|
||||
if yosys_version >= (0, 9, 3527):
|
||||
# Yosys >=0.9+3527 (since commit 656ee70f) supports the `-nomux` option for the `proc`
|
||||
# script pass. Because the individual `proc_*` passes are not a stable interface,
|
||||
# `proc -nomux` is used instead, if available.
|
||||
script.append("delete w:$verilog_initial_trigger")
|
||||
script.append("proc_prune")
|
||||
script.append("proc -nomux")
|
||||
else:
|
||||
# On earlier versions, use individual `proc_*` passes; this is a known range of Yosys
|
||||
# versions and we know it's compatible with what nMigen does.
|
||||
script.append("proc_init")
|
||||
script.append("proc_arst")
|
||||
script.append("proc_dff")
|
||||
|
|
Loading…
Reference in a new issue