fix prefixes on RecordObject
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 26 Jun 2020 22:31:33 +0000 (23:31 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 26 Jun 2020 22:32:24 +0000 (23:32 +0100)
src/nmutil/iocontrol.py

index 5a1e2cf879d8508027e217caa63cb335234b531c..917e1058e3268731604777ac8505b065e44a917b 100644 (file)
@@ -23,6 +23,7 @@
 from nmigen import Signal, Cat, Const, Module, Value, Elaboratable
 from nmigen.cli import verilog, rtlil
 from nmigen.hdl.rec import Record
+from nmigen import tracer
 
 from collections.abc import Sequence, Iterable
 from collections import OrderedDict
@@ -85,8 +86,11 @@ def add_prefix_to_record_signals(prefix, record):
 
 class RecordObject(Record):
     def __init__(self, layout=None, name=None):
+        #if name is None:
+        #    name = tracer.get_var_name(depth=2, default="$ro")
         Record.__init__(self, layout=layout or [], name=name)
 
+
     def __setattr__(self, k, v):
         #print(f"RecordObject setattr({k}, {v})")
         #print (dir(Record))
@@ -94,13 +98,17 @@ class RecordObject(Record):
            k in dir(Record) or "fields" not in self.__dict__):
             return object.__setattr__(self, k, v)
 
+        if self.name is None:
+            prefix = ""
+        else:
+            prefix = self.name + "_"
         # Prefix the signal name with the name of the recordobject
         if isinstance(v, Signal):
-            v.name = self.name + "_" + v.name
+            print (self, self.name, v.name)
+            v.name = prefix + v.name
         elif isinstance(v, Record):
             add_prefix_to_record_signals(self.name + "_", v)
 
-
         self.fields[k] = v
         #print ("RecordObject setattr", k, v)
         if isinstance(v, Record):