test_hdl_ir: Add a bunch of tests for NIR emitter.

This commit is contained in:
Wanda 2024-02-29 21:42:25 +01:00 committed by Catherine
parent 3ae7714d04
commit 7d295b040a
3 changed files with 1346 additions and 46 deletions

View file

@ -503,9 +503,11 @@ class Module(_ModuleBuilderRoot, Elaboratable):
if_tests, if_bodies = data["tests"], data["bodies"]
if_src_locs = data["src_locs"]
domains = set()
# Use dict to ensure deterministic iteration.
domains = {}
for if_case in if_bodies:
domains |= set(if_case)
for domain in if_case:
domains[domain] = None
for domain in domains:
tests, cases = [], OrderedDict()
@ -528,9 +530,10 @@ class Module(_ModuleBuilderRoot, Elaboratable):
switch_test, switch_cases = data["test"], data["cases"]
switch_case_src_locs = data["case_src_locs"]
domains = set()
domains = {}
for stmts in switch_cases.values():
domains |= set(stmts)
for domain in stmts:
domains[domain] = None
for domain in domains:
domain_cases = OrderedDict()
@ -561,9 +564,10 @@ class Module(_ModuleBuilderRoot, Elaboratable):
self._top_comb_statements.append(
sig.eq(Operator("==", [fsm_signal, fsm_encoding[name]], src_loc_at=0)))
domains = set()
domains = {}
for stmts in fsm_states.values():
domains |= set(stmts)
for domain in stmts:
domains[domain] = None
for domain in domains:
domain_states = OrderedDict()

View file

@ -383,10 +383,10 @@ class Top(Cell):
def __repr__(self):
ports = []
for (name, val) in self.ports_o.items():
ports.append(f"(output {name!r} {val})")
for (name, (start, width)) in self.ports_i.items():
ports.append(f"(input {name!r} {start}:{start+width})")
for (name, val) in self.ports_o.items():
ports.append(f"(output {name!r} {val})")
for (name, (start, width)) in self.ports_io.items():
ports.append(f"(inout {name!r} {start}:{start+width})")
ports = " ".join(ports)
@ -533,7 +533,7 @@ class ArrayMux(Cell):
self.index = netlist.resolve_value(self.index)
def __repr__(self):
elems = " ".join(repr(elem) for elem in elems)
elems = " ".join(repr(elem) for elem in self.elems)
return f"(array_mux {self.width} {self.index} ({elems}))"

File diff suppressed because it is too large Load diff