Skip to content

Commit 81c35a5

Browse files
wanda-phiwhitequark
authored andcommitted
hdl._ir: remove Fragment.drivers.
1 parent 262e24b commit 81c35a5

File tree

8 files changed

+9
-156
lines changed

8 files changed

+9
-156
lines changed

amaranth/hdl/_dsl.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -675,15 +675,7 @@ def elaborate(self, platform):
675675
for domain, statements in self._statements.items():
676676
statements = resolve_statements(statements)
677677
fragment.add_statements(domain, statements)
678-
visitor = _Visitor()
679-
visitor.visit_stmt(statements)
680-
for signal in visitor.driven_signals:
681-
fragment.add_driver(signal, domain)
682678
fragment.add_statements("comb", self._top_comb_statements)
683-
visitor = _Visitor()
684-
visitor.visit_stmt(self._top_comb_statements)
685-
for signal in visitor.driven_signals:
686-
fragment.add_driver(signal, "comb")
687679
fragment.add_domains(self._domains.values())
688680
fragment.generated.update(self._generated)
689681
return fragment

amaranth/hdl/_ir.py

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ def get(obj, platform):
6363
obj = new_obj
6464

6565
def __init__(self, *, src_loc=None):
66-
self.drivers = OrderedDict()
6766
self.statements = {}
6867
self.domains = OrderedDict()
6968
self.subfragments = []
@@ -73,28 +72,6 @@ def __init__(self, *, src_loc=None):
7372
self.origins = None
7473
self.domains_propagated_up = {}
7574

76-
def add_driver(self, signal, domain="comb"):
77-
assert isinstance(domain, str)
78-
if domain not in self.drivers:
79-
self.drivers[domain] = _ast.SignalSet()
80-
self.drivers[domain].add(signal)
81-
82-
def iter_drivers(self):
83-
for domain, signals in self.drivers.items():
84-
for signal in signals:
85-
yield domain, signal
86-
87-
def iter_comb(self):
88-
if "comb" in self.drivers:
89-
yield from self.drivers["comb"]
90-
91-
def iter_sync(self):
92-
for domain, signals in self.drivers.items():
93-
if domain == "comb":
94-
continue
95-
for signal in signals:
96-
yield domain, signal
97-
9875
def add_domains(self, *domains):
9976
for domain in flatten(domains):
10077
assert isinstance(domain, _cd.ClockDomain)

amaranth/hdl/_mem.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,8 +221,6 @@ def read_port(self, *, domain, addr, data, en, transparent_for):
221221
assert isinstance(idx, int)
222222
assert idx in range(len(self._write_ports))
223223
assert self._write_ports[idx]._domain == port._domain
224-
for signal in port._data._rhs_signals():
225-
self.add_driver(signal, port._domain)
226224
self._read_ports.append(port)
227225

228226
def write_port(self, *, domain, addr, data, en):

amaranth/hdl/_xfrm.py

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -252,10 +252,6 @@ def map_statements(self, fragment, new_fragment):
252252
for domain, statements in fragment.statements.items():
253253
new_fragment.add_statements(domain, statements)
254254

255-
def map_drivers(self, fragment, new_fragment):
256-
for domain, signal in fragment.iter_drivers():
257-
new_fragment.add_driver(signal, domain)
258-
259255
def map_memory_ports(self, fragment, new_fragment):
260256
if hasattr(self, "on_value"):
261257
for port in new_fragment._read_ports:
@@ -322,7 +318,6 @@ def on_fragment(self, fragment):
322318
self.map_subfragments(fragment, new_fragment)
323319
self.map_domains(fragment, new_fragment)
324320
self.map_statements(fragment, new_fragment)
325-
self.map_drivers(fragment, new_fragment)
326321
return new_fragment
327322

328323
def __call__(self, value, *, src_loc_at=0):
@@ -518,13 +513,6 @@ def map_statements(self, fragment, new_fragment):
518513
map(self.on_statement, statements)
519514
)
520515

521-
def map_drivers(self, fragment, new_fragment):
522-
for domain, signals in fragment.drivers.items():
523-
if domain in self.domain_map:
524-
domain = self.domain_map[domain]
525-
for signal in signals:
526-
new_fragment.add_driver(self.on_value(signal), domain)
527-
528516
def map_memory_ports(self, fragment, new_fragment):
529517
super().map_memory_ports(fragment, new_fragment)
530518
for port in new_fragment._read_ports:
@@ -560,10 +548,6 @@ def _resolve(self, domain, context):
560548
self._warn_on_propagation_up(domain, context.src_loc)
561549
return self.domains[domain]
562550

563-
def map_drivers(self, fragment, new_fragment):
564-
for domain, signal in fragment.iter_drivers():
565-
new_fragment.add_driver(self.on_value(signal), domain)
566-
567551
def replace_value_src_loc(self, value, new_value):
568552
return not isinstance(value, (ClockSignal, ResetSignal))
569553

@@ -605,9 +589,12 @@ def __init__(self, controls):
605589

606590
def on_fragment(self, fragment):
607591
new_fragment = super().on_fragment(fragment)
608-
for domain, signals in fragment.drivers.items():
592+
for domain, statements in fragment.statements.items():
609593
if domain == "comb" or domain not in self.controls:
610594
continue
595+
signals = SignalSet()
596+
for stmt in statements:
597+
signals |= stmt._lhs_signals()
611598
self._insert_control(new_fragment, domain, signals)
612599
return new_fragment
613600

tests/test_hdl_dsl.py

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -631,12 +631,6 @@ def test_FSM_basic(self):
631631
)
632632
)
633633
""")
634-
self.assertEqual({repr(sig): k for k, v in frag.drivers.items() for sig in v}, {
635-
"(sig a)": "comb",
636-
"(sig fsm_state)": "sync",
637-
"(sig b)": "sync",
638-
"(sig)": "comb",
639-
})
640634
fsm = frag.find_generated("fsm")
641635
self.assertIsInstance(fsm.state, Signal)
642636
self.assertEqual(fsm.encoding, OrderedDict({
@@ -960,9 +954,6 @@ def test_lower(self):
960954
(eq (sig c1) (sig s1))
961955
)
962956
""")
963-
self.assertEqual(f1.drivers, {
964-
"comb": SignalSet((self.c1,))
965-
})
966957
self.assertEqual(len(f1.subfragments), 1)
967958
(f2, f2_name, _), = f1.subfragments
968959
self.assertEqual(f2_name, "foo")
@@ -976,8 +967,4 @@ def test_lower(self):
976967
(eq (sig c3) (sig s3))
977968
)
978969
""")
979-
self.assertEqual(f2.drivers, {
980-
"comb": SignalSet((self.c2,)),
981-
"sync": SignalSet((self.c3,))
982-
})
983970
self.assertEqual(len(f2.subfragments), 0)

0 commit comments

Comments
 (0)