From 41e2430e2b3759b70fd406947ec9365c3ffcefc0 Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Sun, 18 Dec 2011 21:26:51 +0100 Subject: [PATCH] fhdl: automatic signal name from assignment --- migen/fhdl/structure.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/migen/fhdl/structure.py b/migen/fhdl/structure.py index 92f767a8..9148e46e 100644 --- a/migen/fhdl/structure.py +++ b/migen/fhdl/structure.py @@ -1,4 +1,6 @@ import math +import inspect +import re def bits_for(n): if isinstance(n, Constant): @@ -123,11 +125,27 @@ def _cst(x): else: return x +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_]+) =', line) + if m is None: return None + name = m.group(1) + modules = frame.f_globals["__name__"] + if modules != "__main__": + modules = modules.split('.') + name = modules[len(modules)-1] + "_" + name + return name + class Signal(Value): - def __init__(self, bv=BV(), name="anonymous", variable=False, reset=0): + def __init__(self, bv=BV(), name=None, variable=False, reset=0): self.bv = bv self.variable = variable self.name = name + if self.name is None: + self.name = _make_signal_name() + if self.name is None: + self.name = "anonymous" self.reset = Constant(reset, bv) def __hash__(self): -- 2.30.2