blob: 4f1b14c2c9407aa76db1794b512a72c60fe62deb [file] [log] [blame]
#!/usr/bin/env python3
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
"""Utility script
Handles linear addresses generated from srec_cat to suit with fpga BRAM
architecture which need word addressing.. Example
0x0 0x00000010
0x1 0x000000FF
0x2 0x00000088
get converted to
0x0 0x00000010
0x4 0x000000FF
0x8 0x00000088 """
import argparse
import imp
import logging
import os
import sys
from pathlib import Path
DESC = """addr4x.py script handles the address generated in mem file from
srec_cat to suit with BRAM memory architecture which need word addressing"""
def main(argv):
parser = argparse.ArgumentParser(prog="addr4x.py", description=DESC)
parser.add_argument('--infile',
'-i',
dest='inputfile',
type=argparse.FileType('r', encoding='UTF-8'),
required=True,
help='Input Mem file')
parser.add_argument('--outfile',
'-o',
dest='outputfile',
type=argparse.FileType('w', encoding='UTF-8'),
required=True,
help='Output Mem file')
args = parser.parse_args()
in_file_path = Path(args.inputfile.name).resolve()
with open(in_file_path) as file:
for line in file:
if "sourceforge" not in line:
a = line.split("@")
b = a[1].split(" ")
mult = int(b[0], 16)
final = "@" + hex(mult * 4)[2:] + " " + b[1]
args.outputfile.write(final)
if __name__ == "__main__":
main(sys.argv)