diff options
author | Clifford Wolf <clifford@clifford.at> | 2018-10-19 13:04:41 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-19 13:04:41 +0200 |
commit | 3a6ac16259af8ae6bc6abf8ef1713152fa67f771 (patch) | |
tree | 83bdc0d24484fd69a1ee2ab27ddde358bd58aef4 /scripts/romload/map2debug.py | |
parent | a721bb0c6eb01084cf5f0701e0dcdf55f06bbe77 (diff) | |
parent | 82b44105a025cb611b4f641aebb1e585848a12a8 (diff) | |
download | picorv32-3a6ac16259af8ae6bc6abf8ef1713152fa67f771.tar.gz picorv32-3a6ac16259af8ae6bc6abf8ef1713152fa67f771.zip |
Merge pull request #94 from hutch31/master
Added new testbench and linker file for ROM load
Diffstat (limited to 'scripts/romload/map2debug.py')
-rw-r--r-- | scripts/romload/map2debug.py | 30 |
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)) + |