summaryrefslogtreecommitdiffstats
path: root/scripts/romload/map2debug.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/romload/map2debug.py')
-rw-r--r--scripts/romload/map2debug.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/scripts/romload/map2debug.py b/scripts/romload/map2debug.py
new file mode 100644
index 0000000..fc5c97c
--- /dev/null
+++ b/scripts/romload/map2debug.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python3
+
+import re
+
+symbol = re.compile("\s*0x([0-9a-f]+)\s+([\w_]+)")
+symbol_map = {}
+with open("firmware.map", "r") as fh:
+ for fd in fh:
+ sym = symbol.match(fd)
+ if (sym):
+ addr = int(sym.group(1), 16)
+ symbol_map[addr] = sym.group(2)
+
+with open("firmware_dbg.v", "w") as fh:
+ for k, v in symbol_map.items():
+ fh.write("`define C_SYM_{1:s} 32'h{0:08x}\n".format(k, v.upper()))
+ fh.write(" task firmware_dbg;\n")
+ fh.write(" input [31:0] addr;\n");
+ fh.write(" begin\n");
+ fh.write(" case (addr)\n");
+ for k, v in symbol_map.items():
+ fh.write(" 32'h{0:08x} : $display(\"%t: FCALL: {1:s}\", $time);\n".format(k, v))
+ fh.write(" endcase\n");
+ fh.write(" end\n");
+ fh.write(" endtask\n");
+
+with open("firmware_addr.txt", "w") as fh:
+ for k, v in symbol_map.items():
+ fh.write("{0:08x} {1:s}\n".format(k,v))
+