forked from FPGALover/RISCV_picorv32_fpga
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
|
#!/usr/bin/env python3
|
||
|
#
|
||
|
# This is free and unencumbered software released into the public domain.
|
||
|
#
|
||
|
# Anyone is free to copy, modify, publish, use, compile, sell, or
|
||
|
# distribute this software, either in source code form or as a compiled
|
||
|
# binary, for any purpose, commercial or non-commercial, and by any
|
||
|
# means.
|
||
|
|
||
|
from sys import argv
|
||
|
|
||
|
binfile = argv[1]
|
||
|
nwords = int(argv[2])
|
||
|
|
||
|
with open(binfile, "rb") as f:
|
||
|
bindata = f.read()
|
||
|
|
||
|
print ("-- Altera Quartus Memory Initilization file .mif")
|
||
|
print ("DEPTH = 16384; -- The size of memory in words")
|
||
|
print ("WIDTH = 32; -- The size of data in bits")
|
||
|
print ("")
|
||
|
print ("ADDRESS_RADIX = HEX; -- The radix for address values")
|
||
|
print ("DATA_RADIX = HEX; -- The radix for data values")
|
||
|
print ("")
|
||
|
print ("CONTENT BEGIN -- start of (address : data pairs)")
|
||
|
|
||
|
assert len(bindata) < 4 * nwords
|
||
|
#assert len(bindata) % 4 == 0
|
||
|
|
||
|
for i in range(nwords):
|
||
|
if i < len(bindata) // 4:
|
||
|
w = bindata[4 * i : 4 * i + 4]
|
||
|
print("%04x : %02x%02x%02x%02x;" % (i, w[3], w[2], w[1], w[0]))
|
||
|
else:
|
||
|
print("%04x : 00000000;" % (i))
|
||
|
|
||
|
print ("END;")
|