fhdl.ir: don't crash propagataing ports in empty fragments.
This commit is contained in:
parent
72257b6935
commit
b150f1915d
|
@ -131,8 +131,8 @@ class Fragment:
|
||||||
def _propagate_ports(self, ports):
|
def _propagate_ports(self, ports):
|
||||||
# Collect all signals we're driving (on LHS of statements), and signals we're using
|
# Collect all signals we're driving (on LHS of statements), and signals we're using
|
||||||
# (on RHS of statements, or in clock domains).
|
# (on RHS of statements, or in clock domains).
|
||||||
self_driven = union(s._lhs_signals() for s in self.statements)
|
self_driven = union(s._lhs_signals() for s in self.statements) or ValueSet()
|
||||||
self_used = union(s._rhs_signals() for s in self.statements)
|
self_used = union(s._rhs_signals() for s in self.statements) or ValueSet()
|
||||||
for domain, _ in self.iter_sync():
|
for domain, _ in self.iter_sync():
|
||||||
cd = self.domains[domain]
|
cd = self.domains[domain]
|
||||||
self_used.add(cd.clk)
|
self_used.add(cd.clk)
|
||||||
|
|
|
@ -13,6 +13,14 @@ class FragmentPortsTestCase(FHDLTestCase):
|
||||||
self.c2 = Signal()
|
self.c2 = Signal()
|
||||||
self.c3 = Signal()
|
self.c3 = Signal()
|
||||||
|
|
||||||
|
def test_empty(self):
|
||||||
|
f = Fragment()
|
||||||
|
|
||||||
|
ins, outs = f._propagate_ports(ports=())
|
||||||
|
self.assertEqual(ins, ValueSet())
|
||||||
|
self.assertEqual(outs, ValueSet())
|
||||||
|
self.assertEqual(f.ports, ValueSet())
|
||||||
|
|
||||||
def test_self_contained(self):
|
def test_self_contained(self):
|
||||||
f = Fragment()
|
f = Fragment()
|
||||||
f.add_statements(
|
f.add_statements(
|
||||||
|
|
Loading…
Reference in a new issue