29 lines
822 B
Python
29 lines
822 B
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
import re
|
||
|
|
||
|
symbol = re.compile("\s*0x([0-9a-f]+)\s+([\w_]+)\s*$")
|
||
|
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:
|
||
|
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))
|
||
|
|