diff --git a/verilog/tlv/warpv.tlv b/verilog/tlv/warpv.tlv
new file mode 100644
index 0000000..dcb76c2
--- /dev/null
+++ b/verilog/tlv/warpv.tlv
@@ -0,0 +1,113 @@
+\m4_TLV_version 1d --bestsv --noline: tl-x.org
+\SV
+   /*
+   Copyright 2022 Redwood EDA
+   
+   Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+   
+   The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+   
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+   */
+m4+definitions(['
+   m4_def(IMEM_STYLE, EXTERN)
+   m4_def(DMEM_STYLE, EXTERN)
+   m4_def(ISA, RISCV)
+   m4_def(EXT_E, 0)
+   m4_def(EXT_M, 0)
+   m4_def(EXT_F, 0)
+   m4_def(EXT_B, 0)
+   m4_def(NUM_CORES, 1)
+   m4_def(NUM_VCS, 2)
+   m4_def(NUM_PRIOS, 2)
+   m4_def(MAX_PACKET_SIZE, 8)
+   m4_def(soft_reset, 1'b0)
+   m4_def(cpu_blocked, 1'b0)
+   m4_def(BRANCH_PRED, fallthrough)
+   m4_def(EXTRA_REPLAY_BUBBLE, 0)
+   m4_def(EXTRA_PRED_TAKEN_BUBBLE, 0)
+   m4_def(EXTRA_JUMP_BUBBLE, 0)
+   m4_def(EXTRA_BRANCH_BUBBLE, 0)
+   m4_def(EXTRA_INDIRECT_JUMP_BUBBLE, 0)
+   m4_def(EXTRA_NON_PIPELINED_BUBBLE, 1)
+   m4_def(EXTRA_TRAP_BUBBLE, 1)
+   m4_def(NEXT_PC_STAGE, 0)
+   m4_def(FETCH_STAGE, 0)
+   m4_def(DECODE_STAGE, 0)
+   m4_def(BRANCH_PRED_STAGE, 0)
+   m4_def(REG_RD_STAGE, 0)
+   m4_def(EXECUTE_STAGE, 0)
+   m4_def(RESULT_STAGE, 0)
+   m4_def(REG_WR_STAGE, 0)
+   m4_def(MEM_WR_STAGE, 0)
+   m4_def(LD_RETURN_ALIGN, 1)
+'])
+\SV
+   // Include WARP-V.
+   
+   m4_include_lib(['https://raw.githubusercontent.com/ALI11-2000/warp-v/caravel/warp-v.tlv'])
+   m4_sv_get_url(['https://raw.githubusercontent.com/ALI11-2000/mpw-waprv/main/verilog/rtl/sky130_sram_1kbyte_1rw1r_32x256_8.v'])
+   m4_sv_get_url(['https://raw.githubusercontent.com/ALI11-2000/mpw-waprv/main/verilog/rtl/sky130_sram_2kbyte_1rw1r_32x512_8.v'])
+   m4_sv_get_url(['https://raw.githubusercontent.com/ALI11-2000/mpw-waprv/main/verilog/rtl/imem.hex'])
+   
+	m4_makerchip_module
+   	logic [31:0] dmem_addra;
+      logic [31:0] dmem_addrb;
+      logic [31:0] dmem_dina ;
+      logic [31:0] dmem_dinb ;
+      logic [3:0]  dmem_wea  ;
+      logic [3:0]  dmem_web  ;
+      logic        dmem_ena  ;
+      logic        dmem_enb  ;
+      logic [31:0] dmem_doutb;
+      logic [31:0] imem_addr ;
+      logic [31:0] imem_data ;
+                  
+      warpv_core dut( dmem_addra,
+                      dmem_addrb,
+                      dmem_dina ,
+                      dmem_dinb ,
+                      dmem_wea  ,
+                      dmem_web  ,
+                      dmem_ena  ,
+                      dmem_enb  ,
+                      dmem_doutb,
+                      imem_addr ,
+                      imem_data ,
+                      clk, reset);
+                  
+     sky130_sram_2kbyte_1rw1r_32x512_8 imem(
+        .clk0(clk),.csb0(1'b1),.web0('0),.wmask0('0),.addr0('0),.din0('0),.dout0(),
+        .clk1(clk),.csb1(1'b0),.addr1(imem_addr),.dout1(imem_data)
+      );
+     
+     sky130_sram_1kbyte_1rw1r_32x256_8 dmem(
+        .clk0(clk),.csb0(!dmem_ena),.web0(!|dmem_wea),.wmask0(dmem_wea),
+        .addr0(dmem_addra),.din0(dmem_dina), .dout0(),
+        .clk1(clk),.csb1(!dmem_enb),.addr1(dmem_addrb),.dout1(dmem_doutb)
+    );
+     initial
+   	begin
+   	$display("Loading RAM from %0s", "./sv_url_inc/imem.hex");
+   	$readmemh("./sv_url_inc/imem.hex", imem.mem);
+   	end
+     
+   endmodule
+                   
+	module warpv_core( output [31:0] dmem_addra,
+                      output [31:0] dmem_addrb,
+                      output [31:0] dmem_dina ,
+                      output [31:0] dmem_dinb ,
+                      output [3:0]  dmem_wea  ,
+                      output [3:0]  dmem_web  ,
+                      output        dmem_ena  ,
+                      output        dmem_enb  ,
+                      input  [31:0] dmem_doutb,
+                      output [31:0] imem_addr ,
+                      input  [31:0] imem_data,
+                      input         clk, reset);
+
+\TLV
+   m4+cpu(/top)
+\SV
+   endmodule
