test_hdl_ir: Add a bunch of tests for NIR emitter.
This commit is contained in:
parent
3ae7714d04
commit
7d295b040a
|
@ -503,9 +503,11 @@ class Module(_ModuleBuilderRoot, Elaboratable):
|
||||||
if_tests, if_bodies = data["tests"], data["bodies"]
|
if_tests, if_bodies = data["tests"], data["bodies"]
|
||||||
if_src_locs = data["src_locs"]
|
if_src_locs = data["src_locs"]
|
||||||
|
|
||||||
domains = set()
|
# Use dict to ensure deterministic iteration.
|
||||||
|
domains = {}
|
||||||
for if_case in if_bodies:
|
for if_case in if_bodies:
|
||||||
domains |= set(if_case)
|
for domain in if_case:
|
||||||
|
domains[domain] = None
|
||||||
|
|
||||||
for domain in domains:
|
for domain in domains:
|
||||||
tests, cases = [], OrderedDict()
|
tests, cases = [], OrderedDict()
|
||||||
|
@ -528,9 +530,10 @@ class Module(_ModuleBuilderRoot, Elaboratable):
|
||||||
switch_test, switch_cases = data["test"], data["cases"]
|
switch_test, switch_cases = data["test"], data["cases"]
|
||||||
switch_case_src_locs = data["case_src_locs"]
|
switch_case_src_locs = data["case_src_locs"]
|
||||||
|
|
||||||
domains = set()
|
domains = {}
|
||||||
for stmts in switch_cases.values():
|
for stmts in switch_cases.values():
|
||||||
domains |= set(stmts)
|
for domain in stmts:
|
||||||
|
domains[domain] = None
|
||||||
|
|
||||||
for domain in domains:
|
for domain in domains:
|
||||||
domain_cases = OrderedDict()
|
domain_cases = OrderedDict()
|
||||||
|
@ -561,9 +564,10 @@ class Module(_ModuleBuilderRoot, Elaboratable):
|
||||||
self._top_comb_statements.append(
|
self._top_comb_statements.append(
|
||||||
sig.eq(Operator("==", [fsm_signal, fsm_encoding[name]], src_loc_at=0)))
|
sig.eq(Operator("==", [fsm_signal, fsm_encoding[name]], src_loc_at=0)))
|
||||||
|
|
||||||
domains = set()
|
domains = {}
|
||||||
for stmts in fsm_states.values():
|
for stmts in fsm_states.values():
|
||||||
domains |= set(stmts)
|
for domain in stmts:
|
||||||
|
domains[domain] = None
|
||||||
|
|
||||||
for domain in domains:
|
for domain in domains:
|
||||||
domain_states = OrderedDict()
|
domain_states = OrderedDict()
|
||||||
|
|
|
@ -383,10 +383,10 @@ class Top(Cell):
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
ports = []
|
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():
|
for (name, (start, width)) in self.ports_i.items():
|
||||||
ports.append(f"(input {name!r} {start}:{start+width})")
|
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():
|
for (name, (start, width)) in self.ports_io.items():
|
||||||
ports.append(f"(inout {name!r} {start}:{start+width})")
|
ports.append(f"(inout {name!r} {start}:{start+width})")
|
||||||
ports = " ".join(ports)
|
ports = " ".join(ports)
|
||||||
|
@ -533,7 +533,7 @@ class ArrayMux(Cell):
|
||||||
self.index = netlist.resolve_value(self.index)
|
self.index = netlist.resolve_value(self.index)
|
||||||
|
|
||||||
def __repr__(self):
|
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}))"
|
return f"(array_mux {self.width} {self.index} ({elems}))"
|
||||||
|
|
||||||
|
|
||||||
|
|
1370
tests/test_hdl_ir.py
1370
tests/test_hdl_ir.py
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue