back.rtlil: do not add src attribute to cases if emit_src=False.

Fixes #706.
This commit is contained in:
Catherine 2023-01-31 19:10:32 +00:00
parent de8846ea84
commit 7bf15bc466

View file

@ -779,8 +779,9 @@ class _StatementCompiler(xfrm.StatementVisitor):
with self._case.switch(test_sigspec, src=_src(stmt.src_loc)) as switch: with self._case.switch(test_sigspec, src=_src(stmt.src_loc)) as switch:
for values, stmts in stmt.cases.items(): for values, stmts in stmt.cases.items():
case_attrs = {} case_attrs = {}
case_src = None
if values in stmt.case_src_locs: if values in stmt.case_src_locs:
case_attrs["src"] = _src(stmt.case_src_locs[values]) case_src = _src(stmt.case_src_locs[values])
if isinstance(stmt.test, ast.Signal) and stmt.test.decoder: if isinstance(stmt.test, ast.Signal) and stmt.test.decoder:
decoded_values = [] decoded_values = []
for value in values: for value in values:
@ -789,7 +790,7 @@ class _StatementCompiler(xfrm.StatementVisitor):
else: else:
decoded_values.append(stmt.test.decoder(int(value, 2))) decoded_values.append(stmt.test.decoder(int(value, 2)))
case_attrs["amaranth.decoding"] = "|".join(decoded_values) case_attrs["amaranth.decoding"] = "|".join(decoded_values)
with self.case(switch, values, attrs=case_attrs): with self.case(switch, values, attrs=case_attrs, src=case_src):
self._wrap_assign = False self._wrap_assign = False
self.on_statements(stmts) self.on_statements(stmts)
self._wrap_assign = True self._wrap_assign = True