diff --git a/flist/apb/apb_ip.flist b/flist/apb/apb_ip.flist
index 593cf11136920aa568ebb28bcc9987b20db4f222..24e608fc499ba3e7d2a19a25aa1c09e7cad2afd5 100644
--- a/flist/apb/apb_ip.flist
+++ b/flist/apb/apb_ip.flist
@@ -18,8 +18,8 @@
 // =============    Accelerator Module search path    =============
 -y $(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_ahb_to_apb/verilog
 -y $(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb3_eg_slave/verilog
-+incdir+(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_ahb_to_apb/verilog
-+incdir+(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb3_eg_slave/verilog
++incdir+$(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_ahb_to_apb/verilog
++incdir+$(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb3_eg_slave/verilog
 
 $(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_ahb_to_apb/verilog/cmsdk_ahb_to_apb.v
 $(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb3_eg_slave/verilog/cmsdk_apb3_eg_slave_interface.v
diff --git a/flist/corstone-101/corstone-101_ip.flist b/flist/corstone-101/corstone-101_ip.flist
index 06d9fcc13b2d834ff3095575db324317f176e5c5..60800f67280ad289a9ec194d023efb323097536c 100644
--- a/flist/corstone-101/corstone-101_ip.flist
+++ b/flist/corstone-101/corstone-101_ip.flist
@@ -16,8 +16,6 @@
 +libext+.v+.vlib
 
 // =============    Corstone-101 search path    =============
-+incdir+$(PROJECT_DIR)/system/defines/corstone101
-
 +incdir+$(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb_dualtimers/verilog
 +incdir+$(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/cmsdk_apb_watchdog/verilog
 +incdir+$(ARM_IP_LIBRARY_PATH)/latest/Corstone-101/logical/models/memories/
diff --git a/flist/nanosoc/nanosoc_chip_ip.flist b/flist/nanosoc/nanosoc_chip_ip.flist
index f148dace48e1eeab7cf512d5a0e2ed2b0df5323a..c7b49e1f711620a60d1490706fb2d8dfd61a27d1 100644
--- a/flist/nanosoc/nanosoc_chip_ip.flist
+++ b/flist/nanosoc/nanosoc_chip_ip.flist
@@ -31,7 +31,4 @@ $(NANOSOC_TECH_DIR)/system/src/verilog/nanosoc_mcu_clkctrl.v
 $(NANOSOC_TECH_DIR)/system/src/verilog/nanosoc_mcu_sysctrl.v
 
 $(NANOSOC_TECH_DIR)/system/src/verilog/nanosoc_apb_usrt.v
-$(NANOSOC_TECH_DIR)/system/src/verilog/nanosoc_ahb_bootrom.v
-
-
-$(NANOSOC_TECH_DIR)/system/src/bootrom/verilog/bootrom.v
\ No newline at end of file
+$(NANOSOC_TECH_DIR)/system/src/verilog/nanosoc_ahb_bootrom.v
\ No newline at end of file
diff --git a/flist/nanosoc/nanosoc_tb.flist b/flist/nanosoc/nanosoc_tb.flist
index 166bb2e0deaee0ca3a6c6b07e26356b9d8443f18..e5438e8832b81056cb5f1dde561df2d779c8ce8e 100644
--- a/flist/nanosoc/nanosoc_tb.flist
+++ b/flist/nanosoc/nanosoc_tb.flist
@@ -15,8 +15,8 @@
 // ============= Verilog library extensions ===========
 +libext+.v+.vlib
 
-// =============    DMA-230 search path    =============
-+incdir+$(NANOSOC_TECH_DIR)/system/verilog/
+// =============    NanoSoC Testbench search path    =============
++incdir+$(NANOSOC_TECH_DIR)/system/verif/verilog/
 
 // - Top-level testbench
 $(NANOSOC_TECH_DIR)/system/verif/verilog/nanosoc_tb.v
diff --git a/flist/project/system.flist b/flist/project/system.flist
index 2b2b0f148cea235344edc2c7bad5e344db901b3a..d95e9b3c098f8691c90566f2b3935929c96528ce 100644
--- a/flist/project/system.flist
+++ b/flist/project/system.flist
@@ -58,4 +58,7 @@
 $(PROJECT_DIR)/system/src/nanosoc_exp.v
 
 // - Top level
--f $(PROJECT_DIR)/flist/nanosoc/nanosoc_tb.flist
\ No newline at end of file
+-f $(PROJECT_DIR)/flist/nanosoc/nanosoc_tb.flist
+
+// =============    Bootrom Filelist      ================
+$(PROJECT_DIR)/system/bootrom/verilog/bootrom.v
\ No newline at end of file
diff --git a/generic-lib b/generic-lib
index f5886f46ad61255996214720ab13e0b006530699..6272430296dc633f2424b1f7cf87a90f7167e54c 160000
--- a/generic-lib
+++ b/generic-lib
@@ -1 +1 @@
-Subproject commit f5886f46ad61255996214720ab13e0b006530699
+Subproject commit 6272430296dc633f2424b1f7cf87a90f7167e54c
diff --git a/nanosoc b/nanosoc
index a0ac6688b4031dbd37877c2a665e4e375d918cbc..7709570c4a96911d0f105616670453b8b4a92a0b 160000
--- a/nanosoc
+++ b/nanosoc
@@ -1 +1 @@
-Subproject commit a0ac6688b4031dbd37877c2a665e4e375d918cbc
+Subproject commit 7709570c4a96911d0f105616670453b8b4a92a0b
diff --git a/simulate/socsim/system_secworks_sha256.sh b/simulate/socsim/system_secworks_sha256.sh
index 339422ab1f358d67a4ada731db516083127f39f7..599841244f1c22128babe3c8f5f676964c3d38c2 100755
--- a/simulate/socsim/system_secworks_sha256.sh
+++ b/simulate/socsim/system_secworks_sha256.sh
@@ -26,6 +26,7 @@ cd $PROJECT_DIR/simulate/sim/system_secworks_sha256
 echo ${2}
 make -C $NANOSOC_TECH_DIR/system run_xm \
     SIM_DIR=$SIM_DIR \
+    BOOTROM_GEN=yes  \
     ADP_FILE=$PROJECT_DIR/system/stimulus/adp_hash_stim.cmd \
     ${@:2}
 
diff --git a/system/bootrom/bintxt/bootrom.bintxt b/system/bootrom/bintxt/bootrom.bintxt
new file mode 100644
index 0000000000000000000000000000000000000000..9cd282998f44b6e5d77aa2fffd2afad4672056cb
--- /dev/null
+++ b/system/bootrom/bintxt/bootrom.bintxt
@@ -0,0 +1,256 @@
+00110000000000000000001101101000
+00010000000000000000001100110101
+00010000000000000000001100111101
+00010000000000000000001100111111
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00000000000000000000000000000000
+00010000000000000000001101000001
+00000000000000000000000000000000
+00000000000000000000000000000000
+00010000000000000000001101000011
+00010000000000000000001101000101
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+00010000000000000000001101000111
+11111000000000101111000000000000
+11111000001111101111000000000000
+11001000001100001010000000001100
+00011000001001000011100000001000
+01000110101000100001100000101101
+01000110101010110001111001100111
+01000110010111010100011001010100
+11010001000000010100001010101100
+11111000001100001111000000000000
+00111110000011110100011001111110
+01000110101101101100110000001111
+01000010001100110010011000000001
+00011010111110111101000000000000
+01000110101010110100011010100010
+01000111000110000100001100110011
+00000000000000000000001011011100
+00000000000000000000001011111100
+11010011000000100011101000010000
+11000001011110001100100001111000
+00000111010100101101100011111010
+11001000001100001101001100000001
+11010101000000011100000100110000
+01100000000011000110100000000100
+00000000000000000100011101110000
+00100100000000000010001100000000
+00100110000000000010010100000000
+11010011000000010011101000010000
+11011000111110111100000101111000
+11010011000000000000011101010010
+11010101000000001100000100110000
+01000111011100000110000000001011
+10111101000111111011010100011111
+10111101000100001011010100010000
+11111001000101011111000000000000
+11110111111111110100011000010001
+11110000000000001111111111110111
+11110000000000001111100001101000
+10110100000000111111100100101101
+11111111111100101111011111111111
+11110000000000001011110000000011
+00000000000000001111100100110011
+01101000000000010010000000000000
+01101000010000010100011010001101
+00000000000000000100011100001000
+01001000010100110010000101000001
+01100001000000010000000101001001
+01100000100000010010000100000001
+01100000100000010100100001010001
+00100000001000000100100101010001
+01000111011100000110000110001000
+01101000010010100100100101001110
+11010001111111000000011111010010
+00000111110100100110100001001010
+01100000000010001101000100000000
+01001001010010100100011101110000
+00101011000000000111100000000011
+01101000010010101101000000001001
+11010001111111000000011111010010
+00000111110100100110100001001010
+01100000000010111101000100000000
+00101011000000000001110001000000
+01000111011100001101000111110010
+01001100010001001011010100010000
+01001000010000010110100000100001
+11010000000010100010100100000000
+01111000000110101010001101000010
+11010000001000010010101000000000
+00000111110010010110100001000001
+01101000010000011101000111111100
+11010000000101110000011111001001
+10100011010000011110000000010111
+00101010000000000111100000011010
+01101000010000011101000000001001
+11010001111111000000011111001001
+00000111110010010110100001000001
+01100000000000101101000100000000
+00101010000000000001110001011011
+00100010000001001101000111110010
+00000111110010010110100001000001
+01101000010000011101000111111100
+11010001000000000000011111001001
+11100111111111100110000000000010
+00011100010110110110000000000010
+11010001110110100010101000000000
+01100000001000000010000000000000
+10001111010011111111001110111111
+10001111011011111111001110111111
+11111111101000101111011111111111
+10110101000100001011110100010000
+01001000001001100010000101000001
+01100001000000010000000101001001
+01100000100000010010000100000001
+01100000100000010100100000100100
+00100001001000000100101000100100
+10100011001011110110000110010001
+00101010000000000111100000011010
+01101000010000011101000000001001
+11010001111111000000011111001001
+00000111110010010110100001000001
+01100000000000101101000100000000
+00101010000000000001110001011011
+01001100000111011101000111110010
+00101001000000000110100000100001
+10100011000111001101000000001010
+00101010000000000111100000011010
+01101000010000011101000000100001
+11010001111111000000011111001001
+00000111110010010110100001000001
+11100000000101111101000000010111
+01111000000110101010001100011010
+11010000000010010010101000000000
+00000111110010010110100001000001
+01101000010000011101000111111100
+11010001000000000000011111001001
+00011100010110110110000000000010
+11010001111100100010101000000000
+01101000010000010010001000000100
+11010001111111000000011111001001
+00000111110010010110100001000001
+01100000000000101101000100000000
+01100000000000101110011111111110
+00101010000000000001110001011011
+00100000000000001101000111011010
+11110011101111110110000000100000
+11110011101111111000111101001111
+11110111111111111000111101101111
+00100000000000001111111101010101
+00000000000000001011110100010000
+01000000000000000110000000000000
+01000000000000001110000000000000
+01000000000000010001000000000000
+01000000000000011111000000000000
+01010010001000000010101000101010
+01110000011000010110110101100101
+01000001010100100011111000101101
+00000000000010100011001001001101
+01110010011100100100010101000000
+00100000001110100111001001101111
+01000001010011010100010101010010
+01101100011000110010000001010000
+01100101011100100110000101100101
+00000000000000000000101001100100
+01010011000010100000101000001010
+01000001010011000100001101001111
+00100000001110100101001101000010
+00100000010011010101001001000001
+01110100011100100110111101000011
+01001101001011010111100001100101
+01100001011011100010000000110000
+01101111011100110110111101101110
+00000000000000000000101001100011
+01001000000000110100100100000100
+01000111011100000110000000001000
+01001000000000010100100100000010
+01000111011100000110000000001000
+00000101111101011110000100000000
+00110000000000000000000000000000
+01000111100000000100100000000111
+01000111000000000100100000000111
+11100111111111101110011111111110
+11100111111111101110011111111110
+11100111111111101110011111111110
+01001001000001010100100000000100
+01001011000001100100101000000101
+00000000000000000100011101110000
+00010000000000000000001100100101
+00010000000000000000000011000001
+00110000000000000000000001101000
+00110000000000000000001101101000
+00110000000000000000000101101000
+00110000000000000000000101101000
+01000111011100000100011101110000
+01000110011101010100011101110000
+11111000001001001111000000000000
+00000000000001010100011010101110
+01000110010100110100011001101001
+00000000110000000000100011000000
+10110000000110000100011010000101
+11110111111111111011010100100000
+10111100011000001111111111011101
+00001000010010010010011100000000
+00100110000000000100011010110110
+11000101110000001100010111000000
+11000101110000001100010111000000
+11000101110000001100010111000000
+11000101110000001100010111000000
+00000000010010010011110101000000
+01000111011100000100011010001101
+01000110000001001011010100010000
+01000110110000000100011011000000
+11110111111111110100011000100000
+10111101000100001111111011001100
+01000111011100000100100000000000
+00110000000000000000000000000100
+00100000000110000100100100000001
+11100111111111101011111010101011
+00000000000000100000000000100110
+00000000000000000100011101110000
+00010000000000000000001111111000
+00110000000000000000000000000000
+00000000000000000000000000000100
+00010000000000000000000100000100
+00010000000000000000001111111100
+00110000000000000000000000000100
+00000000000000000000001101100100
+00010000000000000000000100100000
+00000101111101011110000100000000
+00000000000000000000000000000000
diff --git a/system/bootrom/hex/bootloader.hex b/system/bootrom/hex/bootloader.hex
new file mode 100644
index 0000000000000000000000000000000000000000..ce820229ded4e80f74279c05db88c9d44b2e4ea9
--- /dev/null
+++ b/system/bootrom/hex/bootloader.hex
@@ -0,0 +1,1020 @@
+68
+03
+00
+30
+35
+03
+00
+10
+3D
+03
+00
+10
+3F
+03
+00
+10
+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
+41
+03
+00
+10
+00
+00
+00
+00
+00
+00
+00
+00
+43
+03
+00
+10
+45
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+47
+03
+00
+10
+00
+F0
+02
+F8
+00
+F0
+3E
+F8
+0C
+A0
+30
+C8
+08
+38
+24
+18
+2D
+18
+A2
+46
+67
+1E
+AB
+46
+54
+46
+5D
+46
+AC
+42
+01
+D1
+00
+F0
+30
+F8
+7E
+46
+0F
+3E
+0F
+CC
+B6
+46
+01
+26
+33
+42
+00
+D0
+FB
+1A
+A2
+46
+AB
+46
+33
+43
+18
+47
+DC
+02
+00
+00
+FC
+02
+00
+00
+10
+3A
+02
+D3
+78
+C8
+78
+C1
+FA
+D8
+52
+07
+01
+D3
+30
+C8
+30
+C1
+01
+D5
+04
+68
+0C
+60
+70
+47
+00
+00
+00
+23
+00
+24
+00
+25
+00
+26
+10
+3A
+01
+D3
+78
+C1
+FB
+D8
+52
+07
+00
+D3
+30
+C1
+00
+D5
+0B
+60
+70
+47
+1F
+B5
+1F
+BD
+10
+B5
+10
+BD
+00
+F0
+15
+F9
+11
+46
+FF
+F7
+F7
+FF
+00
+F0
+68
+F8
+00
+F0
+2D
+F9
+03
+B4
+FF
+F7
+F2
+FF
+03
+BC
+00
+F0
+33
+F9
+00
+00
+00
+20
+01
+68
+8D
+46
+41
+68
+08
+47
+00
+00
+41
+21
+53
+48
+49
+01
+01
+61
+01
+21
+81
+60
+51
+48
+81
+60
+51
+49
+20
+20
+88
+61
+70
+47
+4E
+49
+4A
+68
+D2
+07
+FC
+D1
+4A
+68
+D2
+07
+00
+D1
+08
+60
+70
+47
+4A
+49
+03
+78
+00
+2B
+09
+D0
+4A
+68
+D2
+07
+FC
+D1
+4A
+68
+D2
+07
+00
+D1
+0B
+60
+40
+1C
+00
+2B
+F2
+D1
+70
+47
+10
+B5
+44
+4C
+21
+68
+41
+48
+00
+29
+0A
+D0
+42
+A3
+1A
+78
+00
+2A
+21
+D0
+41
+68
+C9
+07
+FC
+D1
+41
+68
+C9
+07
+17
+D0
+17
+E0
+41
+A3
+1A
+78
+00
+2A
+09
+D0
+41
+68
+C9
+07
+FC
+D1
+41
+68
+C9
+07
+00
+D1
+02
+60
+5B
+1C
+00
+2A
+F2
+D1
+04
+22
+41
+68
+C9
+07
+FC
+D1
+41
+68
+C9
+07
+00
+D1
+02
+60
+FE
+E7
+02
+60
+5B
+1C
+00
+2A
+DA
+D1
+00
+20
+20
+60
+BF
+F3
+4F
+8F
+BF
+F3
+6F
+8F
+FF
+F7
+A2
+FF
+10
+BD
+10
+B5
+41
+21
+26
+48
+49
+01
+01
+61
+01
+21
+81
+60
+24
+48
+81
+60
+24
+4A
+20
+21
+91
+61
+2F
+A3
+1A
+78
+00
+2A
+09
+D0
+41
+68
+C9
+07
+FC
+D1
+41
+68
+C9
+07
+00
+D1
+02
+60
+5B
+1C
+00
+2A
+F2
+D1
+1D
+4C
+21
+68
+00
+29
+0A
+D0
+1C
+A3
+1A
+78
+00
+2A
+21
+D0
+41
+68
+C9
+07
+FC
+D1
+41
+68
+C9
+07
+17
+D0
+17
+E0
+1A
+A3
+1A
+78
+00
+2A
+09
+D0
+41
+68
+C9
+07
+FC
+D1
+41
+68
+C9
+07
+00
+D1
+02
+60
+5B
+1C
+00
+2A
+F2
+D1
+04
+22
+41
+68
+C9
+07
+FC
+D1
+41
+68
+C9
+07
+00
+D1
+02
+60
+FE
+E7
+02
+60
+5B
+1C
+00
+2A
+DA
+D1
+00
+20
+20
+60
+BF
+F3
+4F
+8F
+BF
+F3
+6F
+8F
+FF
+F7
+55
+FF
+00
+20
+10
+BD
+00
+00
+00
+60
+00
+40
+00
+E0
+00
+40
+00
+10
+01
+40
+00
+F0
+01
+40
+2A
+2A
+20
+52
+65
+6D
+61
+70
+2D
+3E
+52
+41
+4D
+32
+0A
+00
+40
+45
+72
+72
+6F
+72
+3A
+20
+52
+45
+4D
+41
+50
+20
+63
+6C
+65
+61
+72
+65
+64
+0A
+00
+00
+0A
+0A
+0A
+53
+4F
+43
+4C
+41
+42
+53
+3A
+20
+41
+52
+4D
+20
+43
+6F
+72
+74
+65
+78
+2D
+4D
+30
+20
+6E
+61
+6E
+6F
+73
+6F
+63
+0A
+00
+00
+04
+49
+03
+48
+08
+60
+70
+47
+02
+49
+01
+48
+08
+60
+70
+47
+00
+E1
+F5
+05
+00
+00
+00
+30
+07
+48
+80
+47
+07
+48
+00
+47
+FE
+E7
+FE
+E7
+FE
+E7
+FE
+E7
+FE
+E7
+FE
+E7
+04
+48
+05
+49
+05
+4A
+06
+4B
+70
+47
+00
+00
+25
+03
+00
+10
+C1
+00
+00
+10
+68
+00
+00
+30
+68
+03
+00
+30
+68
+01
+00
+30
+68
+01
+00
+30
+70
+47
+70
+47
+70
+47
+75
+46
+00
+F0
+24
+F8
+AE
+46
+05
+00
+69
+46
+53
+46
+C0
+08
+C0
+00
+85
+46
+18
+B0
+20
+B5
+FF
+F7
+DD
+FF
+60
+BC
+00
+27
+49
+08
+B6
+46
+00
+26
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+C0
+C5
+40
+3D
+49
+00
+8D
+46
+70
+47
+10
+B5
+04
+46
+C0
+46
+C0
+46
+20
+46
+FF
+F7
+CC
+FE
+10
+BD
+00
+48
+70
+47
+04
+00
+00
+30
+01
+49
+18
+20
+AB
+BE
+FE
+E7
+26
+00
+02
+00
+70
+47
+00
+00
+F8
+03
+00
+10
+00
+00
+00
+30
+04
+00
+00
+00
+04
+01
+00
+10
+FC
+03
+00
+10
+04
+00
+00
+30
+64
+03
+00
+00
+20
+01
+00
+10
+00
+E1
+F5
+05
diff --git a/system/bootrom/verilog/bootrom.v b/system/bootrom/verilog/bootrom.v
new file mode 100644
index 0000000000000000000000000000000000000000..16a0c7f4edaf3ebfa662855fb3a2fe8a20eabc10
--- /dev/null
+++ b/system/bootrom/verilog/bootrom.v
@@ -0,0 +1,277 @@
+//------------------------------------------------------------------------------------
+// customised auto-generated synthesizable ROM module abstraction
+// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
+//
+// Contributors
+//
+// David Flynn (d.w.flynn@soton.ac.uk)
+//    Date:    2304282139
+// Copyright (c) 2021-3, SoC Labs (www.soclabs.org)
+//------------------------------------------------------------------------------------
+module bootrom (
+  input  wire CLK,
+  input  wire EN,
+  input  wire [9:2] ADDR,
+  output reg [31:0] RDATA );
+reg [9:2] addr_r;
+always @(posedge CLK) if (EN) addr_r <= ADDR;
+always @(addr_r)  case(addr_r[9:2]) 
+     8'h00 : RDATA <= 32'h30000368; // 0x0000
+     8'h01 : RDATA <= 32'h10000335; // 0x0004
+     8'h02 : RDATA <= 32'h1000033d; // 0x0008
+     8'h03 : RDATA <= 32'h1000033f; // 0x000c
+     8'h04 : RDATA <= 32'h00000000; // 0x0010
+     8'h05 : RDATA <= 32'h00000000; // 0x0014
+     8'h06 : RDATA <= 32'h00000000; // 0x0018
+     8'h07 : RDATA <= 32'h00000000; // 0x001c
+     8'h08 : RDATA <= 32'h00000000; // 0x0020
+     8'h09 : RDATA <= 32'h00000000; // 0x0024
+     8'h0a : RDATA <= 32'h00000000; // 0x0028
+     8'h0b : RDATA <= 32'h10000341; // 0x002c
+     8'h0c : RDATA <= 32'h00000000; // 0x0030
+     8'h0d : RDATA <= 32'h00000000; // 0x0034
+     8'h0e : RDATA <= 32'h10000343; // 0x0038
+     8'h0f : RDATA <= 32'h10000345; // 0x003c
+     8'h10 : RDATA <= 32'h10000347; // 0x0040
+     8'h11 : RDATA <= 32'h10000347; // 0x0044
+     8'h12 : RDATA <= 32'h10000347; // 0x0048
+     8'h13 : RDATA <= 32'h10000347; // 0x004c
+     8'h14 : RDATA <= 32'h10000347; // 0x0050
+     8'h15 : RDATA <= 32'h10000347; // 0x0054
+     8'h16 : RDATA <= 32'h10000347; // 0x0058
+     8'h17 : RDATA <= 32'h10000347; // 0x005c
+     8'h18 : RDATA <= 32'h10000347; // 0x0060
+     8'h19 : RDATA <= 32'h10000347; // 0x0064
+     8'h1a : RDATA <= 32'h10000347; // 0x0068
+     8'h1b : RDATA <= 32'h10000347; // 0x006c
+     8'h1c : RDATA <= 32'h10000347; // 0x0070
+     8'h1d : RDATA <= 32'h10000347; // 0x0074
+     8'h1e : RDATA <= 32'h10000347; // 0x0078
+     8'h1f : RDATA <= 32'h10000347; // 0x007c
+     8'h20 : RDATA <= 32'h10000347; // 0x0080
+     8'h21 : RDATA <= 32'h10000347; // 0x0084
+     8'h22 : RDATA <= 32'h10000347; // 0x0088
+     8'h23 : RDATA <= 32'h10000347; // 0x008c
+     8'h24 : RDATA <= 32'h10000347; // 0x0090
+     8'h25 : RDATA <= 32'h10000347; // 0x0094
+     8'h26 : RDATA <= 32'h10000347; // 0x0098
+     8'h27 : RDATA <= 32'h10000347; // 0x009c
+     8'h28 : RDATA <= 32'h10000347; // 0x00a0
+     8'h29 : RDATA <= 32'h10000347; // 0x00a4
+     8'h2a : RDATA <= 32'h10000347; // 0x00a8
+     8'h2b : RDATA <= 32'h10000347; // 0x00ac
+     8'h2c : RDATA <= 32'h10000347; // 0x00b0
+     8'h2d : RDATA <= 32'h10000347; // 0x00b4
+     8'h2e : RDATA <= 32'h10000347; // 0x00b8
+     8'h2f : RDATA <= 32'h10000347; // 0x00bc
+     8'h30 : RDATA <= 32'hf802f000; // 0x00c0
+     8'h31 : RDATA <= 32'hf83ef000; // 0x00c4
+     8'h32 : RDATA <= 32'hc830a00c; // 0x00c8
+     8'h33 : RDATA <= 32'h18243808; // 0x00cc
+     8'h34 : RDATA <= 32'h46a2182d; // 0x00d0
+     8'h35 : RDATA <= 32'h46ab1e67; // 0x00d4
+     8'h36 : RDATA <= 32'h465d4654; // 0x00d8
+     8'h37 : RDATA <= 32'hd10142ac; // 0x00dc
+     8'h38 : RDATA <= 32'hf830f000; // 0x00e0
+     8'h39 : RDATA <= 32'h3e0f467e; // 0x00e4
+     8'h3a : RDATA <= 32'h46b6cc0f; // 0x00e8
+     8'h3b : RDATA <= 32'h42332601; // 0x00ec
+     8'h3c : RDATA <= 32'h1afbd000; // 0x00f0
+     8'h3d : RDATA <= 32'h46ab46a2; // 0x00f4
+     8'h3e : RDATA <= 32'h47184333; // 0x00f8
+     8'h3f : RDATA <= 32'h000002dc; // 0x00fc
+     8'h40 : RDATA <= 32'h000002fc; // 0x0100
+     8'h41 : RDATA <= 32'hd3023a10; // 0x0104
+     8'h42 : RDATA <= 32'hc178c878; // 0x0108
+     8'h43 : RDATA <= 32'h0752d8fa; // 0x010c
+     8'h44 : RDATA <= 32'hc830d301; // 0x0110
+     8'h45 : RDATA <= 32'hd501c130; // 0x0114
+     8'h46 : RDATA <= 32'h600c6804; // 0x0118
+     8'h47 : RDATA <= 32'h00004770; // 0x011c
+     8'h48 : RDATA <= 32'h24002300; // 0x0120
+     8'h49 : RDATA <= 32'h26002500; // 0x0124
+     8'h4a : RDATA <= 32'hd3013a10; // 0x0128
+     8'h4b : RDATA <= 32'hd8fbc178; // 0x012c
+     8'h4c : RDATA <= 32'hd3000752; // 0x0130
+     8'h4d : RDATA <= 32'hd500c130; // 0x0134
+     8'h4e : RDATA <= 32'h4770600b; // 0x0138
+     8'h4f : RDATA <= 32'hbd1fb51f; // 0x013c
+     8'h50 : RDATA <= 32'hbd10b510; // 0x0140
+     8'h51 : RDATA <= 32'hf915f000; // 0x0144
+     8'h52 : RDATA <= 32'hf7ff4611; // 0x0148
+     8'h53 : RDATA <= 32'hf000fff7; // 0x014c
+     8'h54 : RDATA <= 32'hf000f868; // 0x0150
+     8'h55 : RDATA <= 32'hb403f92d; // 0x0154
+     8'h56 : RDATA <= 32'hfff2f7ff; // 0x0158
+     8'h57 : RDATA <= 32'hf000bc03; // 0x015c
+     8'h58 : RDATA <= 32'h0000f933; // 0x0160
+     8'h59 : RDATA <= 32'h68012000; // 0x0164
+     8'h5a : RDATA <= 32'h6841468d; // 0x0168
+     8'h5b : RDATA <= 32'h00004708; // 0x016c
+     8'h5c : RDATA <= 32'h48532141; // 0x0170
+     8'h5d : RDATA <= 32'h61010149; // 0x0174
+     8'h5e : RDATA <= 32'h60812101; // 0x0178
+     8'h5f : RDATA <= 32'h60814851; // 0x017c
+     8'h60 : RDATA <= 32'h20204951; // 0x0180
+     8'h61 : RDATA <= 32'h47706188; // 0x0184
+     8'h62 : RDATA <= 32'h684a494e; // 0x0188
+     8'h63 : RDATA <= 32'hd1fc07d2; // 0x018c
+     8'h64 : RDATA <= 32'h07d2684a; // 0x0190
+     8'h65 : RDATA <= 32'h6008d100; // 0x0194
+     8'h66 : RDATA <= 32'h494a4770; // 0x0198
+     8'h67 : RDATA <= 32'h2b007803; // 0x019c
+     8'h68 : RDATA <= 32'h684ad009; // 0x01a0
+     8'h69 : RDATA <= 32'hd1fc07d2; // 0x01a4
+     8'h6a : RDATA <= 32'h07d2684a; // 0x01a8
+     8'h6b : RDATA <= 32'h600bd100; // 0x01ac
+     8'h6c : RDATA <= 32'h2b001c40; // 0x01b0
+     8'h6d : RDATA <= 32'h4770d1f2; // 0x01b4
+     8'h6e : RDATA <= 32'h4c44b510; // 0x01b8
+     8'h6f : RDATA <= 32'h48416821; // 0x01bc
+     8'h70 : RDATA <= 32'hd00a2900; // 0x01c0
+     8'h71 : RDATA <= 32'h781aa342; // 0x01c4
+     8'h72 : RDATA <= 32'hd0212a00; // 0x01c8
+     8'h73 : RDATA <= 32'h07c96841; // 0x01cc
+     8'h74 : RDATA <= 32'h6841d1fc; // 0x01d0
+     8'h75 : RDATA <= 32'hd01707c9; // 0x01d4
+     8'h76 : RDATA <= 32'ha341e017; // 0x01d8
+     8'h77 : RDATA <= 32'h2a00781a; // 0x01dc
+     8'h78 : RDATA <= 32'h6841d009; // 0x01e0
+     8'h79 : RDATA <= 32'hd1fc07c9; // 0x01e4
+     8'h7a : RDATA <= 32'h07c96841; // 0x01e8
+     8'h7b : RDATA <= 32'h6002d100; // 0x01ec
+     8'h7c : RDATA <= 32'h2a001c5b; // 0x01f0
+     8'h7d : RDATA <= 32'h2204d1f2; // 0x01f4
+     8'h7e : RDATA <= 32'h07c96841; // 0x01f8
+     8'h7f : RDATA <= 32'h6841d1fc; // 0x01fc
+     8'h80 : RDATA <= 32'hd10007c9; // 0x0200
+     8'h81 : RDATA <= 32'he7fe6002; // 0x0204
+     8'h82 : RDATA <= 32'h1c5b6002; // 0x0208
+     8'h83 : RDATA <= 32'hd1da2a00; // 0x020c
+     8'h84 : RDATA <= 32'h60202000; // 0x0210
+     8'h85 : RDATA <= 32'h8f4ff3bf; // 0x0214
+     8'h86 : RDATA <= 32'h8f6ff3bf; // 0x0218
+     8'h87 : RDATA <= 32'hffa2f7ff; // 0x021c
+     8'h88 : RDATA <= 32'hb510bd10; // 0x0220
+     8'h89 : RDATA <= 32'h48262141; // 0x0224
+     8'h8a : RDATA <= 32'h61010149; // 0x0228
+     8'h8b : RDATA <= 32'h60812101; // 0x022c
+     8'h8c : RDATA <= 32'h60814824; // 0x0230
+     8'h8d : RDATA <= 32'h21204a24; // 0x0234
+     8'h8e : RDATA <= 32'ha32f6191; // 0x0238
+     8'h8f : RDATA <= 32'h2a00781a; // 0x023c
+     8'h90 : RDATA <= 32'h6841d009; // 0x0240
+     8'h91 : RDATA <= 32'hd1fc07c9; // 0x0244
+     8'h92 : RDATA <= 32'h07c96841; // 0x0248
+     8'h93 : RDATA <= 32'h6002d100; // 0x024c
+     8'h94 : RDATA <= 32'h2a001c5b; // 0x0250
+     8'h95 : RDATA <= 32'h4c1dd1f2; // 0x0254
+     8'h96 : RDATA <= 32'h29006821; // 0x0258
+     8'h97 : RDATA <= 32'ha31cd00a; // 0x025c
+     8'h98 : RDATA <= 32'h2a00781a; // 0x0260
+     8'h99 : RDATA <= 32'h6841d021; // 0x0264
+     8'h9a : RDATA <= 32'hd1fc07c9; // 0x0268
+     8'h9b : RDATA <= 32'h07c96841; // 0x026c
+     8'h9c : RDATA <= 32'he017d017; // 0x0270
+     8'h9d : RDATA <= 32'h781aa31a; // 0x0274
+     8'h9e : RDATA <= 32'hd0092a00; // 0x0278
+     8'h9f : RDATA <= 32'h07c96841; // 0x027c
+     8'ha0 : RDATA <= 32'h6841d1fc; // 0x0280
+     8'ha1 : RDATA <= 32'hd10007c9; // 0x0284
+     8'ha2 : RDATA <= 32'h1c5b6002; // 0x0288
+     8'ha3 : RDATA <= 32'hd1f22a00; // 0x028c
+     8'ha4 : RDATA <= 32'h68412204; // 0x0290
+     8'ha5 : RDATA <= 32'hd1fc07c9; // 0x0294
+     8'ha6 : RDATA <= 32'h07c96841; // 0x0298
+     8'ha7 : RDATA <= 32'h6002d100; // 0x029c
+     8'ha8 : RDATA <= 32'h6002e7fe; // 0x02a0
+     8'ha9 : RDATA <= 32'h2a001c5b; // 0x02a4
+     8'haa : RDATA <= 32'h2000d1da; // 0x02a8
+     8'hab : RDATA <= 32'hf3bf6020; // 0x02ac
+     8'hac : RDATA <= 32'hf3bf8f4f; // 0x02b0
+     8'had : RDATA <= 32'hf7ff8f6f; // 0x02b4
+     8'hae : RDATA <= 32'h2000ff55; // 0x02b8
+     8'haf : RDATA <= 32'h0000bd10; // 0x02bc
+     8'hb0 : RDATA <= 32'h40006000; // 0x02c0
+     8'hb1 : RDATA <= 32'h4000e000; // 0x02c4
+     8'hb2 : RDATA <= 32'h40011000; // 0x02c8
+     8'hb3 : RDATA <= 32'h4001f000; // 0x02cc
+     8'hb4 : RDATA <= 32'h52202a2a; // 0x02d0
+     8'hb5 : RDATA <= 32'h70616d65; // 0x02d4
+     8'hb6 : RDATA <= 32'h41523e2d; // 0x02d8
+     8'hb7 : RDATA <= 32'h000a324d; // 0x02dc
+     8'hb8 : RDATA <= 32'h72724540; // 0x02e0
+     8'hb9 : RDATA <= 32'h203a726f; // 0x02e4
+     8'hba : RDATA <= 32'h414d4552; // 0x02e8
+     8'hbb : RDATA <= 32'h6c632050; // 0x02ec
+     8'hbc : RDATA <= 32'h65726165; // 0x02f0
+     8'hbd : RDATA <= 32'h00000a64; // 0x02f4
+     8'hbe : RDATA <= 32'h530a0a0a; // 0x02f8
+     8'hbf : RDATA <= 32'h414c434f; // 0x02fc
+     8'hc0 : RDATA <= 32'h203a5342; // 0x0300
+     8'hc1 : RDATA <= 32'h204d5241; // 0x0304
+     8'hc2 : RDATA <= 32'h74726f43; // 0x0308
+     8'hc3 : RDATA <= 32'h4d2d7865; // 0x030c
+     8'hc4 : RDATA <= 32'h616e2030; // 0x0310
+     8'hc5 : RDATA <= 32'h6f736f6e; // 0x0314
+     8'hc6 : RDATA <= 32'h00000a63; // 0x0318
+     8'hc7 : RDATA <= 32'h48034904; // 0x031c
+     8'hc8 : RDATA <= 32'h47706008; // 0x0320
+     8'hc9 : RDATA <= 32'h48014902; // 0x0324
+     8'hca : RDATA <= 32'h47706008; // 0x0328
+     8'hcb : RDATA <= 32'h05f5e100; // 0x032c
+     8'hcc : RDATA <= 32'h30000000; // 0x0330
+     8'hcd : RDATA <= 32'h47804807; // 0x0334
+     8'hce : RDATA <= 32'h47004807; // 0x0338
+     8'hcf : RDATA <= 32'he7fee7fe; // 0x033c
+     8'hd0 : RDATA <= 32'he7fee7fe; // 0x0340
+     8'hd1 : RDATA <= 32'he7fee7fe; // 0x0344
+     8'hd2 : RDATA <= 32'h49054804; // 0x0348
+     8'hd3 : RDATA <= 32'h4b064a05; // 0x034c
+     8'hd4 : RDATA <= 32'h00004770; // 0x0350
+     8'hd5 : RDATA <= 32'h10000325; // 0x0354
+     8'hd6 : RDATA <= 32'h100000c1; // 0x0358
+     8'hd7 : RDATA <= 32'h30000068; // 0x035c
+     8'hd8 : RDATA <= 32'h30000368; // 0x0360
+     8'hd9 : RDATA <= 32'h30000168; // 0x0364
+     8'hda : RDATA <= 32'h30000168; // 0x0368
+     8'hdb : RDATA <= 32'h47704770; // 0x036c
+     8'hdc : RDATA <= 32'h46754770; // 0x0370
+     8'hdd : RDATA <= 32'hf824f000; // 0x0374
+     8'hde : RDATA <= 32'h000546ae; // 0x0378
+     8'hdf : RDATA <= 32'h46534669; // 0x037c
+     8'he0 : RDATA <= 32'h00c008c0; // 0x0380
+     8'he1 : RDATA <= 32'hb0184685; // 0x0384
+     8'he2 : RDATA <= 32'hf7ffb520; // 0x0388
+     8'he3 : RDATA <= 32'hbc60ffdd; // 0x038c
+     8'he4 : RDATA <= 32'h08492700; // 0x0390
+     8'he5 : RDATA <= 32'h260046b6; // 0x0394
+     8'he6 : RDATA <= 32'hc5c0c5c0; // 0x0398
+     8'he7 : RDATA <= 32'hc5c0c5c0; // 0x039c
+     8'he8 : RDATA <= 32'hc5c0c5c0; // 0x03a0
+     8'he9 : RDATA <= 32'hc5c0c5c0; // 0x03a4
+     8'hea : RDATA <= 32'h00493d40; // 0x03a8
+     8'heb : RDATA <= 32'h4770468d; // 0x03ac
+     8'hec : RDATA <= 32'h4604b510; // 0x03b0
+     8'hed : RDATA <= 32'h46c046c0; // 0x03b4
+     8'hee : RDATA <= 32'hf7ff4620; // 0x03b8
+     8'hef : RDATA <= 32'hbd10fecc; // 0x03bc
+     8'hf0 : RDATA <= 32'h47704800; // 0x03c0
+     8'hf1 : RDATA <= 32'h30000004; // 0x03c4
+     8'hf2 : RDATA <= 32'h20184901; // 0x03c8
+     8'hf3 : RDATA <= 32'he7febeab; // 0x03cc
+     8'hf4 : RDATA <= 32'h00020026; // 0x03d0
+     8'hf5 : RDATA <= 32'h00004770; // 0x03d4
+     8'hf6 : RDATA <= 32'h100003f8; // 0x03d8
+     8'hf7 : RDATA <= 32'h30000000; // 0x03dc
+     8'hf8 : RDATA <= 32'h00000004; // 0x03e0
+     8'hf9 : RDATA <= 32'h10000104; // 0x03e4
+     8'hfa : RDATA <= 32'h100003fc; // 0x03e8
+     8'hfb : RDATA <= 32'h30000004; // 0x03ec
+     8'hfc : RDATA <= 32'h00000364; // 0x03f0
+     8'hfd : RDATA <= 32'h10000120; // 0x03f4
+     8'hfe : RDATA <= 32'h05f5e100; // 0x03f8
+     8'hff : RDATA <= 32'h00000000; // 0x03fc
+    default : RDATA <=32'h0;
+  endcase
+endmodule