#!/usr/bin/env python3 import struct import sys sv_template = None sv_code = None template_name = sys.argv[1] or 'template.sv' code_name = sys.argv[2] or 'result.sv' try: sv_template = open(template_name, mode='r') sv_code = open(code_name, mode='w') var_name = sv_template.readline().strip() rom_formatted = '' index = 0 for line in iter(lambda: sys.stdin.buffer.read(4), ''): if (not line): break value = format(struct.unpack('<I', line)[0], '08x') rom_formatted += f'\n {index}: {var_name} = 32\'h{value};' index += 1 sv_code.write(sv_template.read().format(rom_formatted=rom_formatted)) except Exception as e: print(f'Unable to convert the code: {e}', file=sys.stderr) sys.exit(-1) finally: if (sv_template): sv_template.close() if (sv_code): sv_code.close()