Skip to content

Commit 7d295b0

Browse files
wanda-phiwhitequark
authored andcommitted
test_hdl_ir: Add a bunch of tests for NIR emitter.
1 parent 3ae7714 commit 7d295b0

File tree

3 files changed

+1346
-46
lines changed

3 files changed

+1346
-46
lines changed

amaranth/hdl/_dsl.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -503,9 +503,11 @@ def _pop_ctrl(self):
503503
if_tests, if_bodies = data["tests"], data["bodies"]
504504
if_src_locs = data["src_locs"]
505505

506-
domains = set()
506+
# Use dict to ensure deterministic iteration.
507+
domains = {}
507508
for if_case in if_bodies:
508-
domains |= set(if_case)
509+
for domain in if_case:
510+
domains[domain] = None
509511

510512
for domain in domains:
511513
tests, cases = [], OrderedDict()
@@ -528,9 +530,10 @@ def _pop_ctrl(self):
528530
switch_test, switch_cases = data["test"], data["cases"]
529531
switch_case_src_locs = data["case_src_locs"]
530532

531-
domains = set()
533+
domains = {}
532534
for stmts in switch_cases.values():
533-
domains |= set(stmts)
535+
for domain in stmts:
536+
domains[domain] = None
534537

535538
for domain in domains:
536539
domain_cases = OrderedDict()
@@ -561,9 +564,10 @@ def _pop_ctrl(self):
561564
self._top_comb_statements.append(
562565
sig.eq(Operator("==", [fsm_signal, fsm_encoding[name]], src_loc_at=0)))
563566

564-
domains = set()
567+
domains = {}
565568
for stmts in fsm_states.values():
566-
domains |= set(stmts)
569+
for domain in stmts:
570+
domains[domain] = None
567571

568572
for domain in domains:
569573
domain_states = OrderedDict()

amaranth/hdl/_nir.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -383,10 +383,10 @@ def resolve_nets(self, netlist: Netlist):
383383

384384
def __repr__(self):
385385
ports = []
386-
for (name, val) in self.ports_o.items():
387-
ports.append(f"(output {name!r} {val})")
388386
for (name, (start, width)) in self.ports_i.items():
389387
ports.append(f"(input {name!r} {start}:{start+width})")
388+
for (name, val) in self.ports_o.items():
389+
ports.append(f"(output {name!r} {val})")
390390
for (name, (start, width)) in self.ports_io.items():
391391
ports.append(f"(inout {name!r} {start}:{start+width})")
392392
ports = " ".join(ports)
@@ -533,7 +533,7 @@ def resolve_nets(self, netlist: Netlist):
533533
self.index = netlist.resolve_value(self.index)
534534

535535
def __repr__(self):
536-
elems = " ".join(repr(elem) for elem in elems)
536+
elems = " ".join(repr(elem) for elem in self.elems)
537537
return f"(array_mux {self.width} {self.index} ({elems}))"
538538

539539

0 commit comments

Comments
 (0)