[topgen] Add Module Name When Prefixing Signals

This commit adds the module name into the signal information when
generating top_earlgrey.gen.hjson. This makes it much easier to, for
example, map a PLIC interrupt signal back to the module it
corresponds to, without having to split the signal name again.

Signed-off-by: Sam Elliott <selliott@lowrisc.org>
diff --git a/util/topgen/lib.py b/util/topgen/lib.py
index b33d31f..6ee4fc7 100644
--- a/util/topgen/lib.py
+++ b/util/topgen/lib.py
@@ -117,15 +117,16 @@
     return result
 
 
-def add_prefix_to_signal(signal, prefix):
-    """Add prefix to module signal format { name: "sig_name", width: NN }
+def add_module_prefix_to_signal(signal, module):
+    """Add module prefix to module signal format { name: "sig_name", width: NN }
     """
     result = deepcopy(signal)
 
     if "name" not in signal:
         raise SystemExit("signal {} doesn't have name field".format(signal))
 
-    result["name"] = prefix + "_" + signal["name"]
+    result["name"] = module + "_" + signal["name"]
+    result["module_name"] = module
 
     return result
 
diff --git a/util/topgen/merge.py b/util/topgen/merge.py
index 5c1babc..2543b5d 100644
--- a/util/topgen/merge.py
+++ b/util/topgen/merge.py
@@ -458,7 +458,7 @@
 
         log.info("Adding interrupts from module %s" % ip[0]["name"])
         top["interrupt"] += list(
-            map(partial(add_prefix_to_signal, prefix=m.lower()),
+            map(partial(add_module_prefix_to_signal, module=m.lower()),
                 ip[0]["interrupt_list"]))
 
 
@@ -480,7 +480,7 @@
 
         log.info("Adding alert from module %s" % ip[0]["name"])
         top["alert"] += list(
-            map(partial(add_prefix_to_signal, prefix=m.lower()),
+            map(partial(add_module_prefix_to_signal, module=m.lower()),
                 ip[0]["alert_list"]))
 
 
@@ -513,7 +513,7 @@
 
         # convert signal with module name
         signals = list(
-            map(partial(add_prefix_to_signal, prefix=mname), signals))
+            map(partial(add_module_prefix_to_signal, module=mname), signals))
         # Parse how many pads are assigned
         if not "pad" in e:
             raise SystemExit("Should catch pad field in validate.py!")
@@ -577,22 +577,22 @@
                 filter(
                     lambda x: x["name"] not in dio_names,
                     map(
-                        partial(add_prefix_to_signal,
-                                prefix=m["name"].lower()),
+                        partial(add_module_prefix_to_signal,
+                                module=m["name"].lower()),
                         m["available_input_list"])))
             pinmux["outputs"] += list(
                 filter(
                     lambda x: x["name"] not in dio_names,
                     map(
-                        partial(add_prefix_to_signal,
-                                prefix=m["name"].lower()),
+                        partial(add_module_prefix_to_signal,
+                                module=m["name"].lower()),
                         m["available_output_list"])))
             pinmux["inouts"] += list(
                 filter(
                     lambda x: x["name"] not in dio_names,
                     map(
-                        partial(add_prefix_to_signal,
-                                prefix=m["name"].lower()),
+                        partial(add_module_prefix_to_signal,
+                                module=m["name"].lower()),
                         m["available_inout_list"])))
 
         elif len(tokens) == 2: