diff --git a/crypto-accelerator-chip b/crypto-accelerator-chip
index 92abfa8..ee1de94 160000
--- a/crypto-accelerator-chip
+++ b/crypto-accelerator-chip
@@ -1 +1 @@
-Subproject commit 92abfa8e6441ccae7283f213a5d5c94fb086674b
+Subproject commit ee1de946217a4aefec6b2e984eae455a6fafc00a
diff --git a/openlane/setup.sh b/openlane/setup.sh
index b5440ba..c3b768b 100644
--- a/openlane/setup.sh
+++ b/openlane/setup.sh
@@ -1,2 +1,16 @@
+#SPDX-FileCopyrightText: 2020 Anish Singhani
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# SPDX-License-Identifier: Apache-2.0
 #!/bin/sh
 cp ../crypto-accelerator-chip/openlane/user_project_wrapper/macro_placement.cfg user_project_wrapper/macro_placement.cfg
diff --git a/verilog/dv/caravel/accelerator/sha256/Makefile b/verilog/dv/caravel/accelerator/sha256/Makefile
new file mode 120000
index 0000000..32961ae
--- /dev/null
+++ b/verilog/dv/caravel/accelerator/sha256/Makefile
@@ -0,0 +1 @@
+../../../../../crypto-accelerator-chip/verilog/dv/caravel/accelerator/sha256/Makefile
\ No newline at end of file
diff --git a/verilog/dv/caravel/accelerator/sha256/printio.h b/verilog/dv/caravel/accelerator/sha256/printio.h
new file mode 120000
index 0000000..b7c61e9
--- /dev/null
+++ b/verilog/dv/caravel/accelerator/sha256/printio.h
@@ -0,0 +1 @@
+../../../../../crypto-accelerator-chip/verilog/dv/caravel/accelerator/sha256/printio.h
\ No newline at end of file
diff --git a/verilog/dv/caravel/accelerator/sha256/sha256.c b/verilog/dv/caravel/accelerator/sha256/sha256.c
new file mode 120000
index 0000000..442c848
--- /dev/null
+++ b/verilog/dv/caravel/accelerator/sha256/sha256.c
@@ -0,0 +1 @@
+../../../../../crypto-accelerator-chip/verilog/dv/caravel/accelerator/sha256/sha256.c
\ No newline at end of file
diff --git a/verilog/dv/caravel/accelerator/sha256/sha256_tb.v b/verilog/dv/caravel/accelerator/sha256/sha256_tb.v
new file mode 120000
index 0000000..fddc05e
--- /dev/null
+++ b/verilog/dv/caravel/accelerator/sha256/sha256_tb.v
@@ -0,0 +1 @@
+../../../../../crypto-accelerator-chip/verilog/dv/caravel/accelerator/sha256/sha256_tb.v
\ No newline at end of file
diff --git a/verilog/dv/caravel/mgmt_soc/gpio/frame-gl.png b/verilog/dv/caravel/mgmt_soc/gpio/frame-gl.png
new file mode 100644
index 0000000..015003f
--- /dev/null
+++ b/verilog/dv/caravel/mgmt_soc/gpio/frame-gl.png
Binary files differ
diff --git a/verilog/dv/caravel/mgmt_soc/gpio/gpio.c b/verilog/dv/caravel/mgmt_soc/gpio/gpio.c
index ae6e621..22e3e85 100644
--- a/verilog/dv/caravel/mgmt_soc/gpio/gpio.c
+++ b/verilog/dv/caravel/mgmt_soc/gpio/gpio.c
@@ -3,8 +3,38 @@
 #include "printio.h"
 
 void main() {
-    unsigned int s = 0;
-    for(int i = 0; i < 10000; i++) s += i;
+    reg_mprj_io_12 = GPIO_MODE_USER_STD_INPUT_NOPULL;
+    reg_mprj_io_13 = GPIO_MODE_USER_STD_INPUT_NOPULL;
+    reg_mprj_io_14 = GPIO_MODE_USER_STD_INPUT_NOPULL;
+
+    reg_mprj_io_15 = GPIO_MODE_USER_STD_OUTPUT;
+    reg_mprj_io_16 = GPIO_MODE_USER_STD_OUTPUT;
+    reg_mprj_io_17 = GPIO_MODE_USER_STD_OUTPUT;
+    reg_mprj_io_18 = GPIO_MODE_USER_STD_OUTPUT;
+    reg_mprj_io_19 = GPIO_MODE_USER_STD_OUTPUT;
+    reg_mprj_io_20 = GPIO_MODE_USER_STD_OUTPUT;
+    reg_mprj_io_21 = GPIO_MODE_USER_STD_OUTPUT;
+    reg_mprj_io_22 = GPIO_MODE_USER_STD_OUTPUT;
+    reg_mprj_io_23 = GPIO_MODE_USER_STD_OUTPUT;
+    reg_mprj_io_24 = GPIO_MODE_USER_STD_OUTPUT;
+    reg_mprj_io_25 = GPIO_MODE_USER_STD_OUTPUT;
+    reg_mprj_io_26 = GPIO_MODE_USER_STD_OUTPUT;
+
+    reg_mprj_io_27 = GPIO_MODE_USER_STD_INPUT_NOPULL;
+    reg_mprj_io_28 = GPIO_MODE_USER_STD_INPUT_NOPULL;
+    reg_mprj_io_29 = GPIO_MODE_USER_STD_INPUT_NOPULL;
+
+    reg_mprj_io_30 = GPIO_MODE_USER_STD_OUTPUT;
+    reg_mprj_io_31 = GPIO_MODE_USER_STD_OUTPUT;
+    reg_mprj_io_32 = GPIO_MODE_USER_STD_OUTPUT;
+
+    reg_mprj_xfer = 1;
+    while (reg_mprj_xfer == 1);
+
+    //unsigned int x = 0;
+    //for(int i = 0; i < 10000; i++) x += i;
+    //printhex(x, true);
+
     printstr("test\n");
     printstr((char*)0x30000050);
     printstr("\n");
diff --git a/verilog/dv/caravel/mgmt_soc/gpio/gpio_tb.v b/verilog/dv/caravel/mgmt_soc/gpio/gpio_tb.v
index f46fee9..ee5fbc6 100644
--- a/verilog/dv/caravel/mgmt_soc/gpio/gpio_tb.v
+++ b/verilog/dv/caravel/mgmt_soc/gpio/gpio_tb.v
@@ -36,12 +36,17 @@
 		clock <= 0;
 	end
 
+	wire [37:0] mprj_io;	// Most of these are no-connects
+	wire gpio;
+	reg RSTB;
+
+	wire [40:0] dump = {clock, RSTB, gpio, mprj_io};
 	initial begin
 		$dumpfile("gpio.vcd");
-		$dumpvars(0, gpio_tb);
+		$dumpvars(0, dump);
 
 		// Repeat cycles of 1000 clock edges as needed to complete testbench
-		repeat (25) begin
+		repeat (40) begin
 			repeat (1000) @(posedge clock);
 			$display("+1000 cycles");
 		end
@@ -55,7 +60,6 @@
 		$finish;
 	end
 
-	wire [37:0] mprj_io;	// Most of these are no-connects
 	wire [15:0] checkbits;
 	reg  [7:0] checkbits_lo;
 	wire [7:0] checkbits_hi;
@@ -69,9 +73,6 @@
 	wire flash_clk;
 	wire flash_io0;
 	wire flash_io1;
-	wire gpio;
-
-	reg RSTB;
 
 	// Transactor
 	initial begin
diff --git a/verilog/dv/caravel/mgmt_soc/gpio/printio.h b/verilog/dv/caravel/mgmt_soc/gpio/printio.h
index 94da39d..6568366 100644
--- a/verilog/dv/caravel/mgmt_soc/gpio/printio.h
+++ b/verilog/dv/caravel/mgmt_soc/gpio/printio.h
@@ -9,55 +9,55 @@
 }
 
 void setup_out() {
-    reg_mprj_io_7  = GPIO_MODE_MGMT_STD_OUTPUT;
-    reg_mprj_io_6  = GPIO_MODE_MGMT_STD_OUTPUT;
-    reg_mprj_io_5  = GPIO_MODE_MGMT_STD_OUTPUT;
-    reg_mprj_io_4  = GPIO_MODE_MGMT_STD_OUTPUT;
-    reg_mprj_io_3  = GPIO_MODE_MGMT_STD_OUTPUT;
-    reg_mprj_io_2  = GPIO_MODE_MGMT_STD_OUTPUT;
-    reg_mprj_io_1  = GPIO_MODE_MGMT_STD_OUTPUT;
-    reg_mprj_io_0  = GPIO_MODE_MGMT_STD_OUTPUT;
+    reg_mprj_io_17  = GPIO_MODE_MGMT_STD_OUTPUT;
+    reg_mprj_io_16  = GPIO_MODE_MGMT_STD_OUTPUT;
+    reg_mprj_io_15  = GPIO_MODE_MGMT_STD_OUTPUT;
+    reg_mprj_io_14  = GPIO_MODE_MGMT_STD_OUTPUT;
+    reg_mprj_io_13  = GPIO_MODE_MGMT_STD_OUTPUT;
+    reg_mprj_io_12  = GPIO_MODE_MGMT_STD_OUTPUT;
+    reg_mprj_io_11  = GPIO_MODE_MGMT_STD_OUTPUT;
+    reg_mprj_io_10  = GPIO_MODE_MGMT_STD_OUTPUT;
 
     reg_mprj_xfer = 1;
     while (reg_mprj_xfer == 1);
 }
 
 void write_char(char c) {
-    uint32_t tmp7 = reg_mprj_io_7;
-    uint32_t tmp6 = reg_mprj_io_6;
-    uint32_t tmp5 = reg_mprj_io_5;
-    uint32_t tmp4 = reg_mprj_io_4;
-    uint32_t tmp3 = reg_mprj_io_3;
-    uint32_t tmp2 = reg_mprj_io_2;
-    uint32_t tmp1 = reg_mprj_io_1;
-    uint32_t tmp0 = reg_mprj_io_0;
+    uint32_t tmp7 = reg_mprj_io_17;
+    uint32_t tmp6 = reg_mprj_io_16;
+    uint32_t tmp5 = reg_mprj_io_15;
+    uint32_t tmp4 = reg_mprj_io_14;
+    uint32_t tmp3 = reg_mprj_io_13;
+    uint32_t tmp2 = reg_mprj_io_12;
+    uint32_t tmp1 = reg_mprj_io_11;
+    uint32_t tmp0 = reg_mprj_io_10;
 
     setup_out();
 
     shift_char(c);
 
-    reg_mprj_io_7 = tmp7;
-    reg_mprj_io_6 = tmp6;
-    reg_mprj_io_5 = tmp5;
-    reg_mprj_io_4 = tmp4;
-    reg_mprj_io_3 = tmp3;
-    reg_mprj_io_2 = tmp2;
-    reg_mprj_io_1 = tmp1;
-    reg_mprj_io_0 = tmp0;
+    reg_mprj_io_17 = tmp7;
+    reg_mprj_io_16 = tmp6;
+    reg_mprj_io_15 = tmp5;
+    reg_mprj_io_14 = tmp4;
+    reg_mprj_io_13 = tmp3;
+    reg_mprj_io_12 = tmp2;
+    reg_mprj_io_11 = tmp1;
+    reg_mprj_io_10 = tmp0;
 
     reg_mprj_xfer = 1;
     while (reg_mprj_xfer == 1);
 }
 
 void printhex(uint32_t x, bool newline) {
-    uint32_t tmp7 = reg_mprj_io_7;
-    uint32_t tmp6 = reg_mprj_io_6;
-    uint32_t tmp5 = reg_mprj_io_5;
-    uint32_t tmp4 = reg_mprj_io_4;
-    uint32_t tmp3 = reg_mprj_io_3;
-    uint32_t tmp2 = reg_mprj_io_2;
-    uint32_t tmp1 = reg_mprj_io_1;
-    uint32_t tmp0 = reg_mprj_io_0;
+    uint32_t tmp7 = reg_mprj_io_17;
+    uint32_t tmp6 = reg_mprj_io_16;
+    uint32_t tmp5 = reg_mprj_io_15;
+    uint32_t tmp4 = reg_mprj_io_14;
+    uint32_t tmp3 = reg_mprj_io_13;
+    uint32_t tmp2 = reg_mprj_io_12;
+    uint32_t tmp1 = reg_mprj_io_11;
+    uint32_t tmp0 = reg_mprj_io_10;
 
     setup_out();
 
@@ -69,42 +69,42 @@
     }
     if(newline) shift_char('\n');
 
-    reg_mprj_io_7 = tmp7;
-    reg_mprj_io_6 = tmp6;
-    reg_mprj_io_5 = tmp5;
-    reg_mprj_io_4 = tmp4;
-    reg_mprj_io_3 = tmp3;
-    reg_mprj_io_2 = tmp2;
-    reg_mprj_io_1 = tmp1;
-    reg_mprj_io_0 = tmp0;
+    reg_mprj_io_17 = tmp7;
+    reg_mprj_io_16 = tmp6;
+    reg_mprj_io_15 = tmp5;
+    reg_mprj_io_14 = tmp4;
+    reg_mprj_io_13 = tmp3;
+    reg_mprj_io_12 = tmp2;
+    reg_mprj_io_11 = tmp1;
+    reg_mprj_io_10 = tmp0;
 
     reg_mprj_xfer = 1;
     while (reg_mprj_xfer == 1);
 }
 
 void printstr(char *str) {
-    uint32_t tmp7 = reg_mprj_io_7;
-    uint32_t tmp6 = reg_mprj_io_6;
-    uint32_t tmp5 = reg_mprj_io_5;
-    uint32_t tmp4 = reg_mprj_io_4;
-    uint32_t tmp3 = reg_mprj_io_3;
-    uint32_t tmp2 = reg_mprj_io_2;
-    uint32_t tmp1 = reg_mprj_io_1;
-    uint32_t tmp0 = reg_mprj_io_0;
+    uint32_t tmp7 = reg_mprj_io_17;
+    uint32_t tmp6 = reg_mprj_io_16;
+    uint32_t tmp5 = reg_mprj_io_15;
+    uint32_t tmp4 = reg_mprj_io_14;
+    uint32_t tmp3 = reg_mprj_io_13;
+    uint32_t tmp2 = reg_mprj_io_12;
+    uint32_t tmp1 = reg_mprj_io_11;
+    uint32_t tmp0 = reg_mprj_io_10;
 
     setup_out();
 
     char c;
     while (*str) shift_char(*str++);
 
-    reg_mprj_io_7 = tmp7;
-    reg_mprj_io_6 = tmp6;
-    reg_mprj_io_5 = tmp5;
-    reg_mprj_io_4 = tmp4;
-    reg_mprj_io_3 = tmp3;
-    reg_mprj_io_2 = tmp2;
-    reg_mprj_io_1 = tmp1;
-    reg_mprj_io_0 = tmp0;
+    reg_mprj_io_17 = tmp7;
+    reg_mprj_io_16 = tmp6;
+    reg_mprj_io_15 = tmp5;
+    reg_mprj_io_14 = tmp4;
+    reg_mprj_io_13 = tmp3;
+    reg_mprj_io_12 = tmp2;
+    reg_mprj_io_11 = tmp1;
+    reg_mprj_io_10 = tmp0;
 
     reg_mprj_xfer = 1;
     while (reg_mprj_xfer == 1);
diff --git a/verilog/gl/user_project_wrapper.v b/verilog/gl/user_project_wrapper.v
index 9966cfd..a944d9c 100644
--- a/verilog/gl/user_project_wrapper.v
+++ b/verilog/gl/user_project_wrapper.v
@@ -1,6 +1,6 @@
 /* Generated by Yosys 0.9+3621 (git sha1 84e9fa7, gcc 8.3.1 -fPIC -Os) */
 
-module user_project_wrapper(user_clock2, wb_clk_i, wb_rst_i, wbs_ack_o, wbs_cyc_i, wbs_stb_i, wbs_we_i, vccd1, vssd1, vccd2, vssd2, vdda1, vssa1, vdda2, vssa2, analog_io, io_in, io_oeb, io_out, la_data_in, la_data_out, la_oen, wbs_adr_i, wbs_dat_i, wbs_dat_o, wbs_sel_i);
+module user_project_wrapper(wb_clk_i, wb_rst_i, wbs_stb_i, wbs_cyc_i, wbs_we_i, wbs_sel_i, wbs_dat_i, wbs_adr_i, wbs_ack_o, wbs_dat_o, la_data_in, la_data_out, la_oen, io_in, io_out, io_oeb, analog_io, user_clock2);
   inout [30:0] analog_io;
   input [37:0] io_in;
   output [37:0] io_oeb;
@@ -9,14 +9,6 @@
   output [127:0] la_data_out;
   input [127:0] la_oen;
   input user_clock2;
-  input vccd1;
-  input vccd2;
-  input vdda1;
-  input vdda2;
-  input vssa1;
-  input vssa2;
-  input vssd1;
-  input vssd2;
   input wb_clk_i;
   input wb_rst_i;
   output wbs_ack_o;
@@ -34,14 +26,6 @@
     .la_data_in(la_data_in),
     .la_data_out(la_data_out),
     .la_oen(la_oen),
-    .vccd1(vccd1),
-    .vccd2(vccd2),
-    .vdda1(vdda1),
-    .vdda2(vdda2),
-    .vssa1(vssa1),
-    .vssa2(vssa2),
-    .vssd1(vssd1),
-    .vssd2(vssd2),
     .wb_clk_i(wb_clk_i),
     .wb_rst_i(wb_rst_i),
     .wbs_ack_o(wbs_ack_o),
diff --git a/verilog/rtl/manifest b/verilog/rtl/manifest
index a79b82a..7d42170 100644
--- a/verilog/rtl/manifest
+++ b/verilog/rtl/manifest
@@ -1,10 +1,11 @@
 b2feeb2a098894d5d731a5b011858a471e855d73  caravel_clocking.v
-c39b4f6a67a044aec105ca83ef1eb6d3f2b06028  caravel.v
+fd381372c7120ced342867572a327fc4e38fc566  caravel.v
 38d2c674ea1f696bf2c9deaeee5f9b044f2445fb  chip_io.v
 d772308bd2a72121d7ed9dcdd40c8e6cbbe4b43c  clock_div.v
 f937b52e53d45bdbe41bcbd07c65b41104c21756  convert_gpio_sigs.v
 a16f89c8efa638eab43641ab7047bb8eeedd6fa6  counter_timer_high.v
 d8eab2f4cef158e3c7800778ffc2367ab4abe130  counter_timer_low.v
+d8e0e88c860f1285e6ac6f4726f0726fc75e4858  defines.v
 dab57f3c5464ce3354219840dae589a3fcd27135  DFFRAMBB.v
 d328f88dd48e015bbaa95e0d7c88954343cc5632  DFFRAM.v
 ce49f9af199b5f16d2c39c417d58e5890bc7bab2  digital_pll_controller.v
@@ -29,9 +30,11 @@
 917aa6e1bb869f973c79fb2c7894eab882ead74c  simple_spi_master.v
 7a949db8a5665540e0125bfb7544852167e821b0  simpleuart.v
 ec5fa62d935e1139de104b9201740020fdea4a17  sky130_fd_sc_hvl__lsbufhv2lv_1_wrapped.v
-b77b7eb6ae4b253abf157a01f6f349719a81628c  spimemio.v
+75dd8e88e3c550d396f6900cd5f335ec30e07fb1  spimemio.v
 3b4c3de623f8af0f0780f1e5b0f2217ef6406a2f  sram_1rw1r_32_256_8_sky130.v
 7e8d789570ed224df49cf61f69593cc738790a5d  storage_bridge_wb.v
 8dea2030f1f59fc58ce50d943c395b8041ff1fb3  storage.v
 5e314e94a13d7291117123395ae088e1d17cf487  sysctrl.v
+ba45c454d03c4798e0cff4ee00fe8ebd1c23d054  user_id_programming.v
+e77f840421d118db4cc3674e453e71ec49754907  user_project_wrapper.v
 e6246df6bbf0860a331b3547d64f7d235b0eca9a  wb_intercon.v
diff --git a/verilog/rtl/spimemio.v b/verilog/rtl/spimemio.v
index dc37126..7a21cb0 100644
--- a/verilog/rtl/spimemio.v
+++ b/verilog/rtl/spimemio.v
@@ -73,6 +73,69 @@
     input  flash_io3_di
 
 );
+
+`ifdef SPOOF_FAST_FLASH
+	assign wb_cfg_ack_o = 0;
+	assign wb_cfg_dat_o = 0;
+
+	assign pass_thru_sdo = 0;
+	assign flash_csb = 0;
+	assign flash_clk = 0;
+	assign flash_csb_oeb = 0;
+	assign flash_clk_oeb = 0;
+	assign flash_io0_oeb = 0;
+	assign flash_io1_oeb = 0;
+	assign flash_io2_oeb = 0;
+	assign flash_io3_oeb = 0;
+	assign flash_csb_ieb = 0;
+	assign flash_clk_ieb = 0;
+	assign flash_io0_ieb = 0;
+	assign flash_io1_ieb = 0;
+	assign flash_io2_ieb = 0;
+	assign flash_io3_ieb = 0;
+	assign flash_io0_do = 0;
+	assign flash_io1_do = 0;
+	assign flash_io2_do = 0;
+	assign flash_io3_do = 0;
+
+	// 16 MB (128Mb) Flash
+	reg [7:0] memory [0:16*1024*1024-1];
+
+	reg ack_reg;
+	reg [31:0] dat_reg;
+
+	assign wb_flash_ack_o = ack_reg;
+	assign wb_flash_dat_o = dat_reg;
+
+	wire [31:0] adr = {7'b0, wb_adr_i[23:0]};
+
+	initial begin
+		$display("============================================================");
+		$display("Spoofing flash from file %s", `SPOOF_FAST_FLASH);
+		$display("Warning: this is experimental and \ndoes not match exact hardware behavior");
+		$display("(assumes that flash base is a multiple of 0x1000000)");
+		$display("============================================================");
+		$readmemh(`SPOOF_FAST_FLASH, memory);
+	end
+
+	always @(posedge wb_clk_i) begin
+		if (wb_cyc_i & wb_cfg_stb_i) $error("wb_cfg_stb_i unsupported in SPOOF_FAST_FLASH mode. Please use normal flash emulation.");
+		if (pass_thru) $error("pass_thru unsupported in SPOOF_FAST_FLASH mode. Please use normal flash emulation.");
+
+		ack_reg <= 0;
+
+		if (wb_cyc_i & wb_flash_stb_i & ~wb_flash_ack_o) begin
+			ack_reg <= 1;
+			dat_reg <= {memory[adr+3], memory[adr+2], memory[adr+1], memory[adr+0]};
+
+			if (wb_we_i & wb_sel_i[0]) memory[adr+0] <= wb_dat_i[7:0];
+			if (wb_we_i & wb_sel_i[1]) memory[adr+1] <= wb_dat_i[15:8];
+			if (wb_we_i & wb_sel_i[2]) memory[adr+2] <= wb_dat_i[23:16];
+			if (wb_we_i & wb_sel_i[3]) memory[adr+3] <= wb_dat_i[31:24];
+		end
+	end
+
+`else
     wire spimem_ready;
     wire [23:0] mem_addr;
     wire [31:0] spimem_rdata;
@@ -141,6 +204,7 @@
 	.pass_thru_sdi(pass_thru_sdi),
 	.pass_thru_sdo(pass_thru_sdo)
     );
+`endif
 
 endmodule
 
