Use hardcoded BROM instead of readmemh
diff --git a/verilog/rtl/bin2v.py b/verilog/rtl/bin2v.py
new file mode 100644
index 0000000..af18e00
--- /dev/null
+++ b/verilog/rtl/bin2v.py
@@ -0,0 +1,77 @@
+# https://github.com/JasonLrh/bin2verilog
+import sys
+import os
+import argparse
+
+# 
+# argument handle
+# 
+parser = argparse.ArgumentParser(description='bin file to Verilog.v')
+parser.add_argument('-t', help='timescale', default='1ns/1ps')
+parser.add_argument('-b', help='Path to input [.bin] file', default='a.bin')
+parser.add_argument('-o', help='Path to output [.v] file', default='ROM.v')
+parser.add_argument('-addr_width', help='addr width', default=16, type=int)
+parser.add_argument('-data_width', help='data width', default=8, type=int)
+parser.add_argument('-addr_name', help='addr name', default='addr')
+parser.add_argument('-data_name', help='data name', default='data')
+parser.add_argument('-module_name', default="ROM")
+
+args = parser.parse_args()
+
+# 
+# data_width 
+# 
+if args.data_width != 8:
+    print("! data width not support : " + str(args.data_width))
+    exit(0)
+
+# 
+# load bin file
+# 
+with open(args.b, mode='rb') as input_bin_file:
+    bin_content = input_bin_file.read()
+
+if bin_content is None:
+    # no content in file or error in open file
+    print("Warning: check input [.bin] file")
+    exit(0)
+
+length = len(bin_content)
+
+if length > 2**int(args.addr_width):
+    # addr bus is short    or     bin file too big 
+    print("Warning: addr bus width is short for this file")
+    length = 2**int(args.addr_width)
+
+# 
+# write verilog file 
+# 
+with open(args.o, mode="w", encoding='utf-8') as output_v_file:
+    # test writeablility
+    if output_v_file.writable() == False:
+        print("! [.v] file can't write")
+        exit(0)
+    
+    # write job
+    # head
+    output_v_file.write(
+f"""`timescale {args.t}
+module {args.module_name}(
+    input [{args.addr_width - 1}:0] {args.addr_name},
+    output reg [{args.data_width - 1}:0] {args.data_name}
+);
+always@(*)
+    case ({args.addr_name})
+""" )
+
+    # data content
+    for i in range(length):
+        output_v_file.write(f"        {args.addr_width}" + f"'h%0{str(args.addr_width // 4)}X: "%i + f"{args.data_name} = {args.data_width}" + f"'h%0{str(args.data_width // 4)}X;\n"%bin_content[i])
+    
+    # end of file
+    output_v_file.write(
+f"""    endcase
+endmodule
+"""
+    )
+    print("Write OK")
\ No newline at end of file
diff --git a/verilog/rtl/bootrom.mif b/verilog/rtl/bootrom.mif
deleted file mode 100644
index 77d25b3..0000000
--- a/verilog/rtl/bootrom.mif
+++ /dev/null
@@ -1,256 +0,0 @@
-31
-FE
-FF
-AF
-21
-FF
-9F
-32
-CB
-7C
-20
-FB
-3E
-00
-E0
-42
-3E
-91
-E0
-40
-3E
-01
-C3
-FE
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-00
-E0
-50
diff --git a/verilog/rtl/brom.v b/verilog/rtl/brom.v
index 1b6896b..93e0a7c 100644
--- a/verilog/rtl/brom.v
+++ b/verilog/rtl/brom.v
@@ -1,35 +1,265 @@
-`timescale 1ns / 1ps
-`default_nettype wire
-//////////////////////////////////////////////////////////////////////////////////
-// Company: 
-// Engineer: 
-// 
-// Create Date:    21:10:17 02/09/2018 
-// Design Name: 
-// Module Name:    brom 
-// Project Name: 
-// Target Devices: 
-// Tool versions: 
-// Description: 
-//
-// Dependencies: 
-//
-// Revision: 
-// Revision 0.01 - File Created
-// Additional Comments: 
-//
-//////////////////////////////////////////////////////////////////////////////////
+`timescale 1ns/1ps
 module brom(
     input [7:0] a,
-    output [7:0] d
-    );
-    
-    reg [7:0] brom_array [0:255]; // 256 Bytes BROM array
-   
-    initial begin
-        $readmemh("bootrom.mif", brom_array, 0, 255);
-    end
-    
-    assign d = brom_array[a];
-
+    output reg [7:0] d
+);
+always@(*)
+    case (a)
+        8'h00: d = 8'h31;
+        8'h01: d = 8'hFE;
+        8'h02: d = 8'hFF;
+        8'h03: d = 8'hAF;
+        8'h04: d = 8'h21;
+        8'h05: d = 8'hFF;
+        8'h06: d = 8'h9F;
+        8'h07: d = 8'h32;
+        8'h08: d = 8'hCB;
+        8'h09: d = 8'h7C;
+        8'h0A: d = 8'h20;
+        8'h0B: d = 8'hFB;
+        8'h0C: d = 8'h3E;
+        8'h0D: d = 8'h00;
+        8'h0E: d = 8'hE0;
+        8'h0F: d = 8'h42;
+        8'h10: d = 8'h3E;
+        8'h11: d = 8'h91;
+        8'h12: d = 8'hE0;
+        8'h13: d = 8'h40;
+        8'h14: d = 8'h3E;
+        8'h15: d = 8'h01;
+        8'h16: d = 8'hC3;
+        8'h17: d = 8'hFE;
+        8'h18: d = 8'h00;
+        8'h19: d = 8'h00;
+        8'h1A: d = 8'h00;
+        8'h1B: d = 8'h00;
+        8'h1C: d = 8'h00;
+        8'h1D: d = 8'h00;
+        8'h1E: d = 8'h00;
+        8'h1F: d = 8'h00;
+        8'h20: d = 8'h00;
+        8'h21: d = 8'h00;
+        8'h22: d = 8'h00;
+        8'h23: d = 8'h00;
+        8'h24: d = 8'h00;
+        8'h25: d = 8'h00;
+        8'h26: d = 8'h00;
+        8'h27: d = 8'h00;
+        8'h28: d = 8'h00;
+        8'h29: d = 8'h00;
+        8'h2A: d = 8'h00;
+        8'h2B: d = 8'h00;
+        8'h2C: d = 8'h00;
+        8'h2D: d = 8'h00;
+        8'h2E: d = 8'h00;
+        8'h2F: d = 8'h00;
+        8'h30: d = 8'h00;
+        8'h31: d = 8'h00;
+        8'h32: d = 8'h00;
+        8'h33: d = 8'h00;
+        8'h34: d = 8'h00;
+        8'h35: d = 8'h00;
+        8'h36: d = 8'h00;
+        8'h37: d = 8'h00;
+        8'h38: d = 8'h00;
+        8'h39: d = 8'h00;
+        8'h3A: d = 8'h00;
+        8'h3B: d = 8'h00;
+        8'h3C: d = 8'h00;
+        8'h3D: d = 8'h00;
+        8'h3E: d = 8'h00;
+        8'h3F: d = 8'h00;
+        8'h40: d = 8'h00;
+        8'h41: d = 8'h00;
+        8'h42: d = 8'h00;
+        8'h43: d = 8'h00;
+        8'h44: d = 8'h00;
+        8'h45: d = 8'h00;
+        8'h46: d = 8'h00;
+        8'h47: d = 8'h00;
+        8'h48: d = 8'h00;
+        8'h49: d = 8'h00;
+        8'h4A: d = 8'h00;
+        8'h4B: d = 8'h00;
+        8'h4C: d = 8'h00;
+        8'h4D: d = 8'h00;
+        8'h4E: d = 8'h00;
+        8'h4F: d = 8'h00;
+        8'h50: d = 8'h00;
+        8'h51: d = 8'h00;
+        8'h52: d = 8'h00;
+        8'h53: d = 8'h00;
+        8'h54: d = 8'h00;
+        8'h55: d = 8'h00;
+        8'h56: d = 8'h00;
+        8'h57: d = 8'h00;
+        8'h58: d = 8'h00;
+        8'h59: d = 8'h00;
+        8'h5A: d = 8'h00;
+        8'h5B: d = 8'h00;
+        8'h5C: d = 8'h00;
+        8'h5D: d = 8'h00;
+        8'h5E: d = 8'h00;
+        8'h5F: d = 8'h00;
+        8'h60: d = 8'h00;
+        8'h61: d = 8'h00;
+        8'h62: d = 8'h00;
+        8'h63: d = 8'h00;
+        8'h64: d = 8'h00;
+        8'h65: d = 8'h00;
+        8'h66: d = 8'h00;
+        8'h67: d = 8'h00;
+        8'h68: d = 8'h00;
+        8'h69: d = 8'h00;
+        8'h6A: d = 8'h00;
+        8'h6B: d = 8'h00;
+        8'h6C: d = 8'h00;
+        8'h6D: d = 8'h00;
+        8'h6E: d = 8'h00;
+        8'h6F: d = 8'h00;
+        8'h70: d = 8'h00;
+        8'h71: d = 8'h00;
+        8'h72: d = 8'h00;
+        8'h73: d = 8'h00;
+        8'h74: d = 8'h00;
+        8'h75: d = 8'h00;
+        8'h76: d = 8'h00;
+        8'h77: d = 8'h00;
+        8'h78: d = 8'h00;
+        8'h79: d = 8'h00;
+        8'h7A: d = 8'h00;
+        8'h7B: d = 8'h00;
+        8'h7C: d = 8'h00;
+        8'h7D: d = 8'h00;
+        8'h7E: d = 8'h00;
+        8'h7F: d = 8'h00;
+        8'h80: d = 8'h00;
+        8'h81: d = 8'h00;
+        8'h82: d = 8'h00;
+        8'h83: d = 8'h00;
+        8'h84: d = 8'h00;
+        8'h85: d = 8'h00;
+        8'h86: d = 8'h00;
+        8'h87: d = 8'h00;
+        8'h88: d = 8'h00;
+        8'h89: d = 8'h00;
+        8'h8A: d = 8'h00;
+        8'h8B: d = 8'h00;
+        8'h8C: d = 8'h00;
+        8'h8D: d = 8'h00;
+        8'h8E: d = 8'h00;
+        8'h8F: d = 8'h00;
+        8'h90: d = 8'h00;
+        8'h91: d = 8'h00;
+        8'h92: d = 8'h00;
+        8'h93: d = 8'h00;
+        8'h94: d = 8'h00;
+        8'h95: d = 8'h00;
+        8'h96: d = 8'h00;
+        8'h97: d = 8'h00;
+        8'h98: d = 8'h00;
+        8'h99: d = 8'h00;
+        8'h9A: d = 8'h00;
+        8'h9B: d = 8'h00;
+        8'h9C: d = 8'h00;
+        8'h9D: d = 8'h00;
+        8'h9E: d = 8'h00;
+        8'h9F: d = 8'h00;
+        8'hA0: d = 8'h00;
+        8'hA1: d = 8'h00;
+        8'hA2: d = 8'h00;
+        8'hA3: d = 8'h00;
+        8'hA4: d = 8'h00;
+        8'hA5: d = 8'h00;
+        8'hA6: d = 8'h00;
+        8'hA7: d = 8'h00;
+        8'hA8: d = 8'h00;
+        8'hA9: d = 8'h00;
+        8'hAA: d = 8'h00;
+        8'hAB: d = 8'h00;
+        8'hAC: d = 8'h00;
+        8'hAD: d = 8'h00;
+        8'hAE: d = 8'h00;
+        8'hAF: d = 8'h00;
+        8'hB0: d = 8'h00;
+        8'hB1: d = 8'h00;
+        8'hB2: d = 8'h00;
+        8'hB3: d = 8'h00;
+        8'hB4: d = 8'h00;
+        8'hB5: d = 8'h00;
+        8'hB6: d = 8'h00;
+        8'hB7: d = 8'h00;
+        8'hB8: d = 8'h00;
+        8'hB9: d = 8'h00;
+        8'hBA: d = 8'h00;
+        8'hBB: d = 8'h00;
+        8'hBC: d = 8'h00;
+        8'hBD: d = 8'h00;
+        8'hBE: d = 8'h00;
+        8'hBF: d = 8'h00;
+        8'hC0: d = 8'h00;
+        8'hC1: d = 8'h00;
+        8'hC2: d = 8'h00;
+        8'hC3: d = 8'h00;
+        8'hC4: d = 8'h00;
+        8'hC5: d = 8'h00;
+        8'hC6: d = 8'h00;
+        8'hC7: d = 8'h00;
+        8'hC8: d = 8'h00;
+        8'hC9: d = 8'h00;
+        8'hCA: d = 8'h00;
+        8'hCB: d = 8'h00;
+        8'hCC: d = 8'h00;
+        8'hCD: d = 8'h00;
+        8'hCE: d = 8'h00;
+        8'hCF: d = 8'h00;
+        8'hD0: d = 8'h00;
+        8'hD1: d = 8'h00;
+        8'hD2: d = 8'h00;
+        8'hD3: d = 8'h00;
+        8'hD4: d = 8'h00;
+        8'hD5: d = 8'h00;
+        8'hD6: d = 8'h00;
+        8'hD7: d = 8'h00;
+        8'hD8: d = 8'h00;
+        8'hD9: d = 8'h00;
+        8'hDA: d = 8'h00;
+        8'hDB: d = 8'h00;
+        8'hDC: d = 8'h00;
+        8'hDD: d = 8'h00;
+        8'hDE: d = 8'h00;
+        8'hDF: d = 8'h00;
+        8'hE0: d = 8'h00;
+        8'hE1: d = 8'h00;
+        8'hE2: d = 8'h00;
+        8'hE3: d = 8'h00;
+        8'hE4: d = 8'h00;
+        8'hE5: d = 8'h00;
+        8'hE6: d = 8'h00;
+        8'hE7: d = 8'h00;
+        8'hE8: d = 8'h00;
+        8'hE9: d = 8'h00;
+        8'hEA: d = 8'h00;
+        8'hEB: d = 8'h00;
+        8'hEC: d = 8'h00;
+        8'hED: d = 8'h00;
+        8'hEE: d = 8'h00;
+        8'hEF: d = 8'h00;
+        8'hF0: d = 8'h00;
+        8'hF1: d = 8'h00;
+        8'hF2: d = 8'h00;
+        8'hF3: d = 8'h00;
+        8'hF4: d = 8'h00;
+        8'hF5: d = 8'h00;
+        8'hF6: d = 8'h00;
+        8'hF7: d = 8'h00;
+        8'hF8: d = 8'h00;
+        8'hF9: d = 8'h00;
+        8'hFA: d = 8'h00;
+        8'hFB: d = 8'h00;
+        8'hFC: d = 8'h00;
+        8'hFD: d = 8'h00;
+        8'hFE: d = 8'hE0;
+        8'hFF: d = 8'h50;
+    endcase
 endmodule