Skip to content

Commit fc9369b

Browse files
wanda-phiwhitequark
authored andcommitted
hdl._xfrm: Simplify EnableInserter logic.
1 parent 7d295b0 commit fc9369b

File tree

2 files changed

+11
-25
lines changed

2 files changed

+11
-25
lines changed

amaranth/hdl/_xfrm.py

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -575,23 +575,14 @@ def _insert_control(self, fragment, domain, signals):
575575
fragment.add_statements(domain, Switch(self.controls[domain], {1: stmts}, src_loc=self.src_loc))
576576

577577

578-
class _PropertyEnableInserter(StatementTransformer):
579-
def __init__(self, en):
580-
self.en = en
581-
582-
def on_Property(self, stmt):
583-
return Switch(
584-
self.en,
585-
{1: [stmt]},
586-
src_loc=stmt.src_loc,
587-
)
588-
589-
590578
class EnableInserter(_ControlInserter):
591579
def _insert_control(self, fragment, domain, signals):
592-
stmts = [s.eq(s) for s in signals]
593-
fragment.add_statements(domain, Switch(self.controls[domain], {0: stmts}, src_loc=self.src_loc))
594-
fragment.statements[domain] = _PropertyEnableInserter(self.controls[domain])(fragment.statements[domain])
580+
if domain in fragment.statements:
581+
fragment.statements[domain] = _StatementList([Switch(
582+
self.controls[domain],
583+
{1: fragment.statements[domain]},
584+
src_loc=self.src_loc,
585+
)])
595586

596587
def on_fragment(self, fragment):
597588
new_fragment = super().on_fragment(fragment)

tests/test_hdl_xfrm.py

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -337,9 +337,8 @@ def test_enable_default(self):
337337
f = EnableInserter(self.c1)(f)
338338
self.assertRepr(f.statements["sync"], """
339339
(
340-
(eq (sig s1) (const 1'd1))
341340
(switch (sig c1)
342-
(case 0 (eq (sig s1) (sig s1)))
341+
(case 1 (eq (sig s1) (const 1'd1)))
343342
)
344343
)
345344
""")
@@ -359,9 +358,8 @@ def test_enable_cd(self):
359358
""")
360359
self.assertRepr(f.statements["pix"], """
361360
(
362-
(eq (sig s2) (const 1'd0))
363361
(switch (sig c1)
364-
(case 0 (eq (sig s2) (sig s2)))
362+
(case 1 (eq (sig s2) (const 1'd0)))
365363
)
366364
)
367365
""")
@@ -380,17 +378,15 @@ def test_enable_subfragment(self):
380378
(f2, _, _), = f1.subfragments
381379
self.assertRepr(f1.statements["sync"], """
382380
(
383-
(eq (sig s1) (const 1'd1))
384381
(switch (sig c1)
385-
(case 0 (eq (sig s1) (sig s1)))
382+
(case 1 (eq (sig s1) (const 1'd1)))
386383
)
387384
)
388385
""")
389386
self.assertRepr(f2.statements["sync"], """
390387
(
391-
(eq (sig s2) (const 1'd1))
392388
(switch (sig c1)
393-
(case 0 (eq (sig s2) (sig s2)))
389+
(case 1 (eq (sig s2) (const 1'd1)))
394390
)
395391
)
396392
""")
@@ -451,9 +447,8 @@ def test_composition(self):
451447
f = Fragment.get(te2, None)
452448
self.assertRepr(f.statements["sync"], """
453449
(
454-
(eq (sig s1) (const 1'd1))
455450
(switch (sig c1)
456-
(case 0 (eq (sig s1) (sig s1)))
451+
(case 1 (eq (sig s1) (const 1'd1)))
457452
)
458453
(switch (sig c2)
459454
(case 1 (eq (sig s1) (const 1'd0)))

0 commit comments

Comments
 (0)