From cb2f18ee37b05868a814ef0b25f752097993a7bc Mon Sep 17 00:00:00 2001 From: whitequark Date: Wed, 16 Jan 2019 15:55:28 +0000 Subject: [PATCH] hdl.ast: fix naming of Signal.like() signals when tracer fails. --- nmigen/hdl/ast.py | 10 +++++++--- nmigen/test/test_hdl_ast.py | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/nmigen/hdl/ast.py b/nmigen/hdl/ast.py index 5a03ef7..be1440b 100644 --- a/nmigen/hdl/ast.py +++ b/nmigen/hdl/ast.py @@ -611,7 +611,7 @@ class Signal(Value, DUID): self.decoder = decoder @classmethod - def like(cls, other, src_loc_at=0, **kwargs): + def like(cls, other, name=None, src_loc_at=0, **kwargs): """Create Signal based on another. Parameters @@ -619,8 +619,12 @@ class Signal(Value, DUID): other : Value Object to base this Signal on. """ - kw = dict(shape=cls.wrap(other).shape(), - name=tracer.get_var_name(depth=2 + src_loc_at)) + if name is None: + try: + name = tracer.get_var_name(depth=2 + src_loc_at) + except tracer.NameNotFound: + name = "$like" + kw = dict(shape=cls.wrap(other).shape(), name=name) if isinstance(other, cls): kw.update(reset=other.reset, reset_less=other.reset_less, attrs=other.attrs, decoder=other.decoder) diff --git a/nmigen/test/test_hdl_ast.py b/nmigen/test/test_hdl_ast.py index bf6b0fd..603a6cc 100644 --- a/nmigen/test/test_hdl_ast.py +++ b/nmigen/test/test_hdl_ast.py @@ -458,6 +458,8 @@ class SignalTestCase(FHDLTestCase): self.assertEqual(s5.decoder, str) s6 = Signal.like(10) self.assertEqual(s6.shape(), (4, False)) + s7 = [Signal.like(Signal(4))][0] + self.assertEqual(s7.name, "$like") class ClockSignalTestCase(FHDLTestCase): -- 2.30.2