tracer: factor out get_var_name(default=).

This commit is contained in:
whitequark 2019-02-15 14:15:02 +00:00
parent cac4b10b82
commit e93bf4bf4b
4 changed files with 15 additions and 28 deletions

View file

@ -581,12 +581,7 @@ class Signal(Value, DUID):
attrs=None, decoder=None, src_loc_at=0): attrs=None, decoder=None, src_loc_at=0):
super().__init__(src_loc_at=src_loc_at) super().__init__(src_loc_at=src_loc_at)
if name is None: self.name = name or tracer.get_var_name(depth=2 + src_loc_at, default="$signal")
try:
name = tracer.get_var_name(depth=2 + src_loc_at)
except tracer.NameNotFound:
name = "$signal"
self.name = name
if shape is None: if shape is None:
if min is None: if min is None:
@ -625,12 +620,8 @@ class Signal(Value, DUID):
other : Value other : Value
Object to base this Signal on. Object to base this Signal on.
""" """
if name is None: name = name or tracer.get_var_name(depth=2 + src_loc_at, default="$like")
try: kw = dict(shape=cls.wrap(other).shape(), name=name)
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): if isinstance(other, cls):
kw.update(reset=other.reset, reset_less=other.reset_less, kw.update(reset=other.reset, reset_less=other.reset_less,
attrs=other.attrs, decoder=other.decoder) attrs=other.attrs, decoder=other.decoder)

View file

@ -15,12 +15,7 @@ class Memory:
raise TypeError("Memory depth must be a non-negative integer, not '{!r}'" raise TypeError("Memory depth must be a non-negative integer, not '{!r}'"
.format(depth)) .format(depth))
if name is None: self.name = name or tracer.get_var_name(depth=2, default="$memory")
try:
name = tracer.get_var_name(depth=2)
except tracer.NameNotFound:
name = "$memory"
self.name = name
self.src_loc = tracer.get_src_loc() self.src_loc = tracer.get_src_loc()
self.width = width self.width = width
@ -194,10 +189,7 @@ class DummyPort:
if granularity is None: if granularity is None:
granularity = width granularity = width
if name is None: if name is None:
try: name = tracer.get_var_name(depth=2, default="dummy")
name = tracer.get_var_name(depth=2)
except tracer.NameNotFound:
name = "dummy"
self.addr = Signal(addr_bits, self.addr = Signal(addr_bits,
name="{}_addr".format(name)) name="{}_addr".format(name))

View file

@ -64,10 +64,8 @@ class Layout:
class Record(Value): class Record(Value):
def __init__(self, layout, name=None): def __init__(self, layout, name=None):
if name is None: if name is None:
try: name = tracer.get_var_name(default=None)
name = tracer.get_var_name()
except tracer.NameNotFound:
pass
self.name = name self.name = name
self.src_loc = tracer.get_src_loc() self.src_loc = tracer.get_src_loc()

View file

@ -10,7 +10,10 @@ class NameNotFound(Exception):
pass pass
def get_var_name(depth=2): _raise_exception = object()
def get_var_name(depth=2, default=_raise_exception):
frame = inspect.currentframe() frame = inspect.currentframe()
for _ in range(depth): for _ in range(depth):
frame = frame.f_back frame = frame.f_back
@ -37,7 +40,10 @@ def get_var_name(depth=2):
"DUP_TOP", "BUILD_LIST"): "DUP_TOP", "BUILD_LIST"):
index += 2 index += 2
else: else:
raise NameNotFound if default is _raise_exception:
raise NameNotFound
else:
return default
def get_src_loc(src_loc_at=0): def get_src_loc(src_loc_at=0):