diff --git a/nmigen/back/rtlil.py b/nmigen/back/rtlil.py index accaeb0..5cd9f97 100644 --- a/nmigen/back/rtlil.py +++ b/nmigen/back/rtlil.py @@ -899,6 +899,14 @@ def _convert_fragment(builder, fragment, name_map, hierarchy): # by looking for any signals on RHS. If there aren't any, we add some logic # whose only purpose is to trigger Verilog simulators when it converts # through RTLIL and to Verilog, by populating the sensitivity list. + # + # Unfortunately, while this workaround allows true (event-driven) Verilog + # simulators to work properly, and is universally ignored by synthesizers, + # Verilator rejects it. + # + # Running the Yosys proc_prune pass converts such pathological `always @*` + # blocks to `assign` statements, so this workaround can be removed completely + # once support for Yosys 0.9 is dropped. if not stmt_compiler._has_rhs: if verilog_trigger is None: verilog_trigger = \ diff --git a/nmigen/back/verilog.py b/nmigen/back/verilog.py index 8faf58a..eb98a34 100644 --- a/nmigen/back/verilog.py +++ b/nmigen/back/verilog.py @@ -39,6 +39,7 @@ def _convert_rtlil_text(rtlil_text, *, strip_internal_attrs=False, write_verilog read_ilang <