Skip to content

Commit c9a6839

Browse files
committed
hdl.ir: bring new naming rules to top-level ports
1 parent 151f41e commit c9a6839

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

amaranth/hdl/_ir.py

+1
Original file line numberDiff line numberDiff line change
@@ -559,6 +559,7 @@ def _assign_port_names(self):
559559
raise TypeError("Signals with private names cannot be used in unnamed top-level ports")
560560
name = _add_name(assigned_names, conn.name)
561561
assigned_names.add(name)
562+
validate_name(name, "Top-level port name")
562563
new_ports.append((name, conn, dir))
563564
self.ports = new_ports
564565

tests/test_hdl_ir.py

+6
Original file line numberDiff line numberDiff line change
@@ -1054,6 +1054,12 @@ def test_assign_names_to_fragments_duplicate(self):
10541054
self.assertEqual(design.fragments[a1_f].name, ("top", "a"))
10551055
self.assertEqual(design.fragments[a2_f].name, ("top", "a$1"))
10561056

1057+
def test_port_wrong_name(self):
1058+
f = Fragment()
1059+
with self.assertRaisesRegex(NameError,
1060+
r"^Top-level port name must be a non-empty string$"):
1061+
design = Design(f, ports=[("", Signal(), None)], hierarchy=("top",))
1062+
10571063

10581064
class ElaboratesTo(Elaboratable):
10591065
def __init__(self, lower):

0 commit comments

Comments
 (0)