number_conv.py 728 B

123456789101112131415161718192021222324
  1. import numpy as np
  2. from fpu_test_gen import reverse_endian, dtype_size
  3. import sys
  4. def float2verilog(lines, dtype=np.float32):
  5. dsize = dtype_size(dtype)
  6. print("")
  7. for i, line in enumerate(lines):
  8. arr = line.replace('[', '').replace(']', '').split()
  9. nums = np.array([float(f.strip(',')) for f in arr if f], dtype=dtype)
  10. b = nums.tobytes()
  11. print(f'[{i}] = {{' +
  12. ', '.join(["'h" + reverse_endian(b[i*dsize:i*dsize+dsize]).hex() for i in range(len(arr))]) +
  13. '};')
  14. if __name__ == '__main__':
  15. print("Press Ctrl-D to proceed")
  16. while True:
  17. lines = sys.stdin.readlines()
  18. if len(lines) == 0:
  19. break
  20. float2verilog(lines)