From cdd9977a40be0160ada60b70d1f0e8d1ac51052a Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Sat, 7 Jan 2012 15:30:14 +0100 Subject: [PATCH] fhdl: better signal naming heuristic --- migen/fhdl/structure.py | 45 ++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/migen/fhdl/structure.py b/migen/fhdl/structure.py index 7fc3f92c..532098dd 100644 --- a/migen/fhdl/structure.py +++ b/migen/fhdl/structure.py @@ -131,20 +131,47 @@ def _cst(x): else: return x +def _try_class_name(frame): + while frame is not None: + try: + cl = frame.f_locals['self'] + prefix = cl.__class__.__name__.lower() + if prefix != 'inst' and prefix != 'source' and prefix != 'sink': + return prefix + except KeyError: + pass + frame = frame.f_back + return None + +def _try_module_name(frame): + modules = frame.f_globals["__name__"] + if modules != "__main__": + modules = modules.split('.') + prefix = modules[len(modules)-1] + return prefix + else: + return None + def _make_signal_name(): frame = inspect.currentframe().f_back.f_back + line = inspect.getframeinfo(frame).code_context[0] m = re.match('[\t ]*([0-9A-Za-z_\.]+)[\t ]*=', line) if m is None: - return "anonymous" - name = m.group(1) - name = name.split('.') - name = name[len(name)-1] - modules = frame.f_globals["__name__"] - if modules != "__main__": - modules = modules.split('.') - name = modules[len(modules)-1] + "_" + name - return name + name = "anonymous" + else: + names = m.group(1).split('.') + name = names[len(names)-1] + + prefix = _try_class_name(frame) + if prefix is None: + prefix = _try_module_name(frame) + if prefix is None: + prefix = "" + else: + prefix += "_" + + return prefix + name class Signal(Value): def __init__(self, bv=BV(), name=None, variable=False, reset=0): -- 2.30.2