back.rtlil: clarify $verilog_initial_trigger behavior. NFC.
This commit is contained in:
parent
010ddb96b5
commit
b4fbef65ca
|
@ -710,11 +710,11 @@ def convert_fragment(builder, fragment, name, top):
|
||||||
stmt_compiler._has_rhs = False
|
stmt_compiler._has_rhs = False
|
||||||
stmt_compiler(lhs_group_filter(fragment.statements))
|
stmt_compiler(lhs_group_filter(fragment.statements))
|
||||||
|
|
||||||
# Verilog `always @*` blocks will not run if `*` does not match anythng, i.e.
|
# Verilog `always @*` blocks will not run if `*` does not match anything, i.e.
|
||||||
# if the implicit sensitivity list is empty. We check this while translating,
|
# if the implicit sensitivity list is empty. We check this while translating,
|
||||||
# by looking at any signals on RHS. If this is not true, we add some logic
|
# 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
|
# whose only purpose is to trigger Verilog simulators when it converts
|
||||||
# through RTLIL and to Verilog.
|
# through RTLIL and to Verilog, by populating the sensitivity list.
|
||||||
if not stmt_compiler._has_rhs:
|
if not stmt_compiler._has_rhs:
|
||||||
if verilog_trigger is None:
|
if verilog_trigger is None:
|
||||||
verilog_trigger = \
|
verilog_trigger = \
|
||||||
|
@ -730,6 +730,8 @@ def convert_fragment(builder, fragment, name, top):
|
||||||
wire_curr, wire_next = compiler_state.resolve(signal)
|
wire_curr, wire_next = compiler_state.resolve(signal)
|
||||||
sync.update(wire_curr, rhs_compiler(ast.Const(signal.reset, signal.nbits)))
|
sync.update(wire_curr, rhs_compiler(ast.Const(signal.reset, signal.nbits)))
|
||||||
|
|
||||||
|
# The Verilog simulator trigger needs to change at time 0, so if we haven't
|
||||||
|
# yet done that in some process, do it.
|
||||||
if verilog_trigger and not verilog_trigger_sync_emitted:
|
if verilog_trigger and not verilog_trigger_sync_emitted:
|
||||||
sync.update(verilog_trigger, "1'0")
|
sync.update(verilog_trigger, "1'0")
|
||||||
verilog_trigger_sync_emitted = True
|
verilog_trigger_sync_emitted = True
|
||||||
|
|
Loading…
Reference in a new issue