Remove Sv compilation files
diff --git a/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/surelog.log b/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/surelog.log
deleted file mode 100644
index 097fa38..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/surelog.log
+++ /dev/null
@@ -1,51 +0,0 @@
-********************************************
-*  SURELOG System Verilog Compiler/Linter  *
-********************************************
-
-Copyright (c) 2017-2019 ACE Cloud,
-Authorized used only.
-
-VERSION: 0.05
-BUILT  : Nov  3 2019
-DATE   : 2019-11-03.21:37:16
-COMMAND: -writepp -parse -mt max -nopython -fileunit rtl/aes_cipher_top.v rtl/aes_key_expand_128.v rtl/aes_rcon.v rtl/aes_sbox.v sim/bench.v +incdir+./rtl/+./sim/ -nobuiltin -nocache
-
-[INFO :CM0023] Creating log file ./slpp_unit/surelog.log.
-
-[INFO :CM0024] Executing with 4 threads.
-
-[INFO :CM0020] Separate compilation-unit mode is on.
-
-[INFO :CP0300] Compilation...
-
-[INFO :CP0303] rtl/aes_cipher_top.v:48 Compile module "work@aes_cipher_top".
-
-[INFO :CP0303] rtl/aes_rcon.v:42 Compile module "work@aes_rcon".
-
-[INFO :CP0303] rtl/aes_key_expand_128.v:42 Compile module "work@aes_key_expand_128".
-
-[INFO :CP0303] rtl/aes_sbox.v:43 Compile module "work@aes_sbox".
-
-[INFO :CP0303] sim/bench.v:70 Compile module "work@testbench".
-
-[INFO :EL0526] Design Elaboration...
-
-[NOTE :EL0503] sim/bench.v:70 Top level module "work@testbench".
-
-[NOTE :EL0508] Nb Top level modules: 1.
-
-[NOTE :EL0509] Max instance depth: 4.
-
-[NOTE :EL0510] Nb instances: 44.
-
-[NOTE :EL0511] Nb leaf instances: 40.
-
-[  FATAL] : 0
-[  ERROR] : 0
-[WARNING] : 0
-[   NOTE] : 5
-
-********************************************
-*   End SURELOG SVerilog Compiler/Linter   *
-********************************************
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/work/rtl/aes_cipher_top.v b/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/work/rtl/aes_cipher_top.v
deleted file mode 100644
index ff20ec6..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/work/rtl/aes_cipher_top.v
+++ /dev/null
@@ -1,482 +0,0 @@
-/////////////////////////////////////////////////////////////////////
-////                                                             ////
-////  AES Cipher Top Level                                       ////
-////                                                             ////
-////                                                             ////
-////  Author: Rudolf Usselmann                                   ////
-////          rudi@asics.ws                                      ////
-////                                                             ////
-////                                                             ////
-////  Downloaded from: http://www.opencores.org/cores/aes_core/  ////
-////                                                             ////
-/////////////////////////////////////////////////////////////////////
-////                                                             ////
-//// Copyright (C) 2000-2002 Rudolf Usselmann                    ////
-////                         www.asics.ws                        ////
-////                         rudi@asics.ws                       ////
-////                                                             ////
-//// This source file may be used and distributed without        ////
-//// restriction provided that this copyright statement is not   ////
-//// removed from the file and that any derivative work contains ////
-//// the original copyright notice and the associated disclaimer.////
-////                                                             ////
-////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
-//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
-//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
-//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
-//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
-//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
-//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
-//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
-//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
-//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
-//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
-//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
-//// POSSIBILITY OF SUCH DAMAGE.                                 ////
-////                                                             ////
-/////////////////////////////////////////////////////////////////////
- 
-//// Modified to achieve 5 cycles - stage  functionality 	     ////
-//// By Tariq Bashir Ahmad					     				 //// 	
-////  tariq.bashir@gmail.com					     			 ////
-////  http://www.ecs.umass.edu/~tbashir				    		 ////
-
-
-
-`timescale 1 ns/1 ps
-
-module aes_cipher_top(clk, rst, ld, done, key, text_in, text_out);
-
-input		clk, rst;
-input		ld;
-output		done;
-input	[127:0]	key;
-input	[127:0]	text_in;
-output	[127:0]	text_out;
-
-
-////////////////////////////////////////////////////////////////////
-//
-// Local Wires
-//
-
-wire	[31:0]	w0, w1, w2, w3, w4, w5, w6, w7;
-/*wire	[127:0]	key_odd,key_even;
-*/
-reg	[127:0]	text_in_r;
-reg	[127:0]	text_out;
-
-reg	[127:0]	text_out_temp;
-
-reg	[7:0]	sa00, sa01, sa02, sa03;
-reg	[7:0]	sa10, sa11, sa12, sa13;
-reg	[7:0]	sa20, sa21, sa22, sa23;
-reg	[7:0]	sa30, sa31, sa32, sa33;
-
-wire	[7:0]	sa00_next, sa01_next, sa02_next, sa03_next;
-wire	[7:0]	sa10_next, sa11_next, sa12_next, sa13_next;
-wire	[7:0]	sa20_next, sa21_next, sa22_next, sa23_next;
-wire	[7:0]	sa30_next, sa31_next, sa32_next, sa33_next;
-
-wire	[7:0]	sa00_sub, sa01_sub, sa02_sub, sa03_sub;
-wire	[7:0]	sa10_sub, sa11_sub, sa12_sub, sa13_sub;
-wire  [7:0]	sa20_sub, sa21_sub, sa22_sub, sa23_sub;
-wire	[7:0]	sa30_sub, sa31_sub, sa32_sub, sa33_sub;
-
-wire	[7:0]	sa00_sr, sa01_sr, sa02_sr, sa03_sr;
-wire	[7:0]	sa10_sr, sa11_sr, sa12_sr, sa13_sr;
-wire	[7:0]	sa20_sr, sa21_sr, sa22_sr, sa23_sr;
-wire	[7:0]	sa30_sr, sa31_sr, sa32_sr, sa33_sr;
-
-wire	[7:0]	sa00_mc, sa01_mc, sa02_mc, sa03_mc;
-wire	[7:0]	sa10_mc, sa11_mc, sa12_mc, sa13_mc;
-wire	[7:0]	sa20_mc, sa21_mc, sa22_mc, sa23_mc;
-wire	[7:0]	sa30_mc, sa31_mc, sa32_mc, sa33_mc;
-
-
-wire	[7:0]	sa00_next_round2, sa01_next_round2, sa02_next_round2, sa03_next_round2;
-wire	[7:0]	sa10_next_round2, sa11_next_round2, sa12_next_round2, sa13_next_round2;
-wire	[7:0]	sa20_next_round2, sa21_next_round2, sa22_next_round2, sa23_next_round2;
-wire	[7:0]	sa30_next_round2, sa31_next_round2, sa32_next_round2, sa33_next_round2;
-
-wire	[7:0]	sa00_sub_round2, sa01_sub_round2, sa02_sub_round2, sa03_sub_round2;
-wire	[7:0]	sa10_sub_round2, sa11_sub_round2, sa12_sub_round2, sa13_sub_round2;
-wire  [7:0]	sa20_sub_round2, sa21_sub_round2, sa22_sub_round2, sa23_sub_round2;
-wire	[7:0]	sa30_sub_round2, sa31_sub_round2, sa32_sub_round2, sa33_sub_round2;
-
-wire	[7:0]	sa00_sr_round2, sa01_sr_round2, sa02_sr_round2, sa03_sr_round2;
-wire	[7:0]	sa10_sr_round2, sa11_sr_round2, sa12_sr_round2, sa13_sr_round2;
-wire	[7:0]	sa20_sr_round2, sa21_sr_round2, sa22_sr_round2, sa23_sr_round2;
-wire	[7:0]	sa30_sr_round2, sa31_sr_round2, sa32_sr_round2, sa33_sr_round2;
-
-wire	[7:0]	sa00_mc_round2, sa01_mc_round2, sa02_mc_round2, sa03_mc_round2;
-wire	[7:0]	sa10_mc_round2, sa11_mc_round2, sa12_mc_round2, sa13_mc_round2;
-wire	[7:0]	sa20_mc_round2, sa21_mc_round2, sa22_mc_round2, sa23_mc_round2;
-wire	[7:0]	sa30_mc_round2, sa31_mc_round2, sa32_mc_round2, sa33_mc_round2;
-
-
-
-
-reg		done, ld_r;
-reg	[3:0]	dcnt;
-reg 		done2;
-
-////////////////////////////////////////////////////////////////////
-//
-// Misc Logic
-//
-
-always @(posedge clk)
-begin
-	if(~rst)	begin dcnt <=  4'h0;	 end
-	else
-	if(ld)	begin	dcnt <=  4'h6;	 end
-	else
-	if(|dcnt) begin	dcnt <=  dcnt - 4'h1;  end
-
-end
-
-always @(posedge clk) done <=  !(|dcnt[3:1]) & dcnt[0] & !ld;
-always @(posedge clk) if(ld) text_in_r <=  text_in;
-always @(posedge clk) ld_r <=  ld;
-
-
-
-////////////////////////////////////////////////////////////////////
-// key expansion
-
-
-aes_key_expand_128 u0(
-	.clk(		clk	),
-	.kld(		ld_r	),
-	.key(		key	),
-	.w0(		w0	),
-	.w1(		w1	),
-	.w2(		w2	),
-	.w3(		w3	),
-	.w4_reg(		w4	),
-	.w5_reg(		w5	),
-	.w6_reg(		w6	),
-	.w7_reg(		w7	)
-							);
-/*assign key_odd  = {w0,w1,w2,w3};
-assign key_even = {w4,w5,w6,w7};
-*/
-
-/*assign {w0,w1,w2,w3} = 128'h0;
-
-assign {w4,w5,w6,w7} = 128'h62636363626363636263636362636363;
-*/							
-// Initial Permutation (AddRoundKey)
-//
-/*
-always @(posedge clk)
-begin
-  w0 <= w0_net;
-  w1 <= w1_net;
-  w2 <= w2_net;
-  w3 <= w3_net;
-  w4 <= w4_net;
-  w5 <= w5_net;
-  w6 <= w6_net;
-  w7 <= w7_net;
-end
-*/
-always @(posedge clk) 
-begin
-   	sa33 <=  ld_r ? text_in_r[007:000] ^ w3[07:00] : sa33_mc_round2 ^ w3[07:00];
-    	sa23 <=  ld_r ? text_in_r[015:008] ^ w3[15:08] : sa23_mc_round2 ^ w3[15:08];
-    	sa13 <=  ld_r ? text_in_r[023:016] ^ w3[23:16] : sa13_mc_round2 ^ w3[23:16];
-    	sa03 <=  ld_r ? text_in_r[031:024] ^ w3[31:24] : sa03_mc_round2 ^ w3[31:24];
-    	sa32 <=  ld_r ? text_in_r[039:032] ^ w2[07:00] : sa32_mc_round2 ^ w2[07:00];
-    	sa22 <=  ld_r ? text_in_r[047:040] ^ w2[15:08] : sa22_mc_round2 ^ w2[15:08];
-    	sa12 <=  ld_r ? text_in_r[055:048] ^ w2[23:16] : sa12_mc_round2 ^ w2[23:16];
-    	sa02 <=  ld_r ? text_in_r[063:056] ^ w2[31:24] : sa02_mc_round2 ^ w2[31:24];
-    	sa31 <=  ld_r ? text_in_r[071:064] ^ w1[07:00] : sa31_mc_round2 ^ w1[07:00];
-    	sa21 <=  ld_r ? text_in_r[079:072] ^ w1[15:08] : sa21_mc_round2 ^ w1[15:08];
-    	sa11 <=  ld_r ? text_in_r[087:080] ^ w1[23:16] : sa11_mc_round2 ^ w1[23:16];
-    	sa01 <=  ld_r ? text_in_r[095:088] ^ w1[31:24] : sa01_mc_round2 ^ w1[31:24];
-    	sa30 <=  ld_r ? text_in_r[103:096] ^ w0[07:00] : sa30_mc_round2 ^ w0[07:00];
-    	sa20 <=  ld_r ? text_in_r[111:104] ^ w0[15:08] : sa20_mc_round2 ^ w0[15:08];
-    	sa10 <=  ld_r ? text_in_r[119:112] ^ w0[23:16] : sa10_mc_round2 ^ w0[23:16];
-    	sa00 <=  ld_r ? text_in_r[127:120] ^ w0[31:24] : sa00_mc_round2 ^ w0[31:24];
-		
-		/*$strobe($time,": roundkeyodd = %h\n",{w0,w1,w2,w3});
-		$strobe($time,": state is %h\n",{sa00, sa01, sa02, sa03,
-													 sa10, sa11, sa12, sa13,
-													 sa20, sa21, sa22, sa23,
-													 sa30, sa31, sa32, sa33});*/
-		
-end
-
-////////////////////////////////////////////////////////////////////
-//
-// Modules instantiation
-//
-
-//sbox lookup
-aes_sbox us00(	.a(	sa00	), .d(	sa00_sub	));
-aes_sbox us01(	.a(	sa01	), .d(	sa01_sub	));
-aes_sbox us02(	.a(	sa02	), .d(	sa02_sub	));
-aes_sbox us03(	.a(	sa03	), .d(	sa03_sub	));
-aes_sbox us10(	.a(	sa10	), .d(	sa10_sub	));
-aes_sbox us11(	.a(	sa11	), .d(	sa11_sub	));
-aes_sbox us12(	.a(	sa12	), .d(	sa12_sub	));
-aes_sbox us13(	.a(	sa13	), .d(	sa13_sub	));
-aes_sbox us20(	.a(	sa20	), .d(	sa20_sub	));
-aes_sbox us21(	.a(	sa21	), .d(	sa21_sub	));
-aes_sbox us22(	.a(	sa22	), .d(	sa22_sub	));
-aes_sbox us23(	.a(	sa23	), .d(	sa23_sub	));
-aes_sbox us30(	.a(	sa30	), .d(	sa30_sub	));
-aes_sbox us31(	.a(	sa31	), .d(	sa31_sub	));
-aes_sbox us32(	.a(	sa32	), .d(	sa32_sub	));
-aes_sbox us33(	.a(	sa33	), .d(	sa33_sub	));
-
-////////////////////////////////////////////////////////////////////
-//
-// Round Permutations
-//
-
-assign sa00_sr = sa00_sub;		//
-assign sa01_sr = sa01_sub;		//no shift
-assign sa02_sr = sa02_sub;		//
-assign sa03_sr = sa03_sub;		//
-
-assign sa10_sr = sa11_sub;		//
-assign sa11_sr = sa12_sub;		// left shift by 1
-assign sa12_sr = sa13_sub;		//
-assign sa13_sr = sa10_sub;		//
-
-assign sa20_sr = sa22_sub;		//
-assign sa21_sr = sa23_sub;		//	left shift by 2
-assign sa22_sr = sa20_sub;		//
-assign sa23_sr = sa21_sub;		//
-
-assign sa30_sr = sa33_sub;		//
-assign sa31_sr = sa30_sub;		// left shift by 3
-assign sa32_sr = sa31_sub;		//
-assign sa33_sr = sa32_sub;		//
-
-// mix column operation
-assign {sa00_mc, sa10_mc, sa20_mc, sa30_mc}  = mix_col(sa00_sr,sa10_sr,sa20_sr,sa30_sr);
-assign {sa01_mc, sa11_mc, sa21_mc, sa31_mc}  = mix_col(sa01_sr,sa11_sr,sa21_sr,sa31_sr);
-assign {sa02_mc, sa12_mc, sa22_mc, sa32_mc}  = mix_col(sa02_sr,sa12_sr,sa22_sr,sa32_sr);
-assign {sa03_mc, sa13_mc, sa23_mc, sa33_mc}  = mix_col(sa03_sr,sa13_sr,sa23_sr,sa33_sr);
-
-//// add round key
-assign sa00_next_round2 = sa00_mc ^ w4[31:24];		
-assign sa01_next_round2 = sa01_mc ^ w5[31:24];
-assign sa02_next_round2 = sa02_mc ^ w6[31:24];
-assign sa03_next_round2 = sa03_mc ^ w7[31:24];
-assign sa10_next_round2 = sa10_mc ^ w4[23:16];
-assign sa11_next_round2 = sa11_mc ^ w5[23:16];
-assign sa12_next_round2 = sa12_mc ^ w6[23:16];
-assign sa13_next_round2 = sa13_mc ^ w7[23:16];
-assign sa20_next_round2 = sa20_mc ^ w4[15:08];
-assign sa21_next_round2 = sa21_mc ^ w5[15:08];
-assign sa22_next_round2 = sa22_mc ^ w6[15:08];
-assign sa23_next_round2 = sa23_mc ^ w7[15:08];
-assign sa30_next_round2 = sa30_mc ^ w4[07:00];
-assign sa31_next_round2 = sa31_mc ^ w5[07:00];
-assign sa32_next_round2 = sa32_mc ^ w6[07:00];
-assign sa33_next_round2 = sa33_mc ^ w7[07:00];
-
-
-always @(posedge clk)
-begin 
-	  
-	 /* $strobe($time,": roundkeyodd = %h, text_out_odd is %h\n",{w0,w1,w2,w3},text_out_temp);
-	  $strobe($time,": roundkeyeven is %h\n",{w4,w5,w6,w7}); 	*/
-	  text_out_temp[127:120] <=  sa00_sr ^ w4[31:24];	 
-	  text_out_temp[095:088] <=  sa01_sr ^ w5[31:24];	 
-          text_out_temp[063:056] <=  sa02_sr ^ w6[31:24];	 
-	  text_out_temp[031:024] <=  sa03_sr ^ w7[31:24];	 
-	  text_out_temp[119:112] <=  sa10_sr ^ w4[23:16];	 
-	  text_out_temp[087:080] <=  sa11_sr ^ w5[23:16];	 
-	  text_out_temp[055:048] <=  sa12_sr ^ w6[23:16];	 
-	  text_out_temp[023:016] <=  sa13_sr ^ w7[23:16];	 
-	  text_out_temp[111:104] <=  sa20_sr ^ w4[15:08];	 
-	  text_out_temp[079:072] <=  sa21_sr ^ w5[15:08];	 
-	  text_out_temp[047:040] <=  sa22_sr ^ w6[15:08];	 
-	  text_out_temp[015:008] <=  sa23_sr ^ w7[15:08];	 
-	  text_out_temp[103:096] <=  sa30_sr ^ w4[07:00];	 
-	  text_out_temp[071:064] <=  sa31_sr ^ w5[07:00];	 
-	  text_out_temp[039:032] <=  sa32_sr ^ w6[07:00];	 
-	  text_out_temp[007:000] <=  sa33_sr ^ w7[07:00];    
-end
-
-
-
-
-//////////////////////  round i + 1 //////////////////////////////////
-//sbox lookup
-aes_sbox us00_round2(	.a(	sa00_next_round2	), .d(	sa00_sub_round2	));
-aes_sbox us01_round2(	.a(	sa01_next_round2	), .d(	sa01_sub_round2	));
-aes_sbox us02_round2(	.a(	sa02_next_round2	), .d(	sa02_sub_round2	));
-aes_sbox us03_round2(	.a(	sa03_next_round2	), .d(	sa03_sub_round2	));
-aes_sbox us10_round2(	.a(	sa10_next_round2	), .d(	sa10_sub_round2	));
-aes_sbox us11_round2(	.a(	sa11_next_round2	), .d(	sa11_sub_round2	));
-aes_sbox us12_round2(	.a(	sa12_next_round2	), .d(	sa12_sub_round2	));
-aes_sbox us13_round2(	.a(	sa13_next_round2	), .d(	sa13_sub_round2	));
-aes_sbox us20_round2(	.a(	sa20_next_round2	), .d(	sa20_sub_round2	));
-aes_sbox us21_round2(	.a(	sa21_next_round2	), .d(	sa21_sub_round2	));
-aes_sbox us22_round2(	.a(	sa22_next_round2	), .d(	sa22_sub_round2	));
-aes_sbox us23_round2(	.a(	sa23_next_round2	), .d(	sa23_sub_round2	));
-aes_sbox us30_round2(	.a(	sa30_next_round2	), .d(	sa30_sub_round2	));
-aes_sbox us31_round2(	.a(	sa31_next_round2	), .d(	sa31_sub_round2	));
-aes_sbox us32_round2(	.a(	sa32_next_round2	), .d(	sa32_sub_round2	));
-aes_sbox us33_round2(	.a(	sa33_next_round2	), .d(	sa33_sub_round2	));
-
-
-// Round Permutations
-//
-
-assign sa00_sr_round2 = sa00_sub_round2;		//
-assign sa01_sr_round2 = sa01_sub_round2;		//no shift
-assign sa02_sr_round2 = sa02_sub_round2;		//
-assign sa03_sr_round2 = sa03_sub_round2;		//
-
-assign sa10_sr_round2 = sa11_sub_round2;		//
-assign sa11_sr_round2 = sa12_sub_round2;		// left shift by 1
-assign sa12_sr_round2 = sa13_sub_round2;		//
-assign sa13_sr_round2 = sa10_sub_round2;		//
-
-assign sa20_sr_round2 = sa22_sub_round2;		//
-assign sa21_sr_round2 = sa23_sub_round2;		//	left shift by 2
-assign sa22_sr_round2 = sa20_sub_round2;		//
-assign sa23_sr_round2 = sa21_sub_round2;		//
-
-assign sa30_sr_round2 = sa33_sub_round2;		//
-assign sa31_sr_round2 = sa30_sub_round2;		// left shift by 3
-assign sa32_sr_round2 = sa31_sub_round2;		//
-assign sa33_sr_round2 = sa32_sub_round2;		//
-
-// mix column operation
-assign {sa00_mc_round2, sa10_mc_round2, sa20_mc_round2, sa30_mc_round2}  = mix_col(sa00_sr_round2,sa10_sr_round2,sa20_sr_round2,sa30_sr_round2);
-assign {sa01_mc_round2, sa11_mc_round2, sa21_mc_round2, sa31_mc_round2}  = mix_col(sa01_sr_round2,sa11_sr_round2,sa21_sr_round2,sa31_sr_round2);
-assign {sa02_mc_round2, sa12_mc_round2, sa22_mc_round2, sa32_mc_round2}  = mix_col(sa02_sr_round2,sa12_sr_round2,sa22_sr_round2,sa32_sr_round2);
-assign {sa03_mc_round2, sa13_mc_round2, sa23_mc_round2, sa33_mc_round2}  = mix_col(sa03_sr_round2,sa13_sr_round2,sa23_sr_round2,sa33_sr_round2);
-
-////////////////////////////////////////////////////////////////////
-//
-// Final text output
-//
-
-
-always @(posedge clk)
- begin 
-		/*  $strobe($time,": round_key2 is %h\n",{w4,w5,w6,w7});
-		  $strobe($time,": roundkeyeven = %h, text_out_even is %h\n",{w4,w5,w6,w7},text_out);*/
-		  text_out[127:120] <=  sa00_sr_round2 ^ w0[31:24];	 
-		  text_out[095:088] <=  sa01_sr_round2 ^ w1[31:24];	 
-		  text_out[063:056] <=  sa02_sr_round2 ^ w2[31:24];	 
-		  text_out[031:024] <=  sa03_sr_round2 ^ w3[31:24];	 
-		  text_out[119:112] <=  sa10_sr_round2 ^ w0[23:16];	 
-		  text_out[087:080] <=  sa11_sr_round2 ^ w1[23:16];	 
-		  text_out[055:048] <=  sa12_sr_round2 ^ w2[23:16];	 
-		  text_out[023:016] <=  sa13_sr_round2 ^ w3[23:16];	 
-		  text_out[111:104] <=  sa20_sr_round2 ^ w0[15:08];	 
-		  text_out[079:072] <=  sa21_sr_round2 ^ w1[15:08];	 
-		  text_out[047:040] <=  sa22_sr_round2 ^ w2[15:08];	 
-		  text_out[015:008] <=  sa23_sr_round2 ^ w3[15:08];	 
-		  text_out[103:096] <=  sa30_sr_round2 ^ w0[07:00];	 
-		  text_out[071:064] <=  sa31_sr_round2 ^ w1[07:00];	 
-		  text_out[039:032] <=  sa32_sr_round2 ^ w2[07:00];	 
-		  text_out[007:000] <=  sa33_sr_round2 ^ w3[07:00];
-	end
-
-
-/* -----\/----- EXCLUDED -----\/-----
-always @(posedge clk)
-	begin
-/-*	$strobe($time,": text_out_temp is %h\n",text_out_temp);
-
-
-*-/	/-*
-	$strobe($time,": subbytes is %h\n",{sa00_sub, sa01_sub, sa02_sub, sa03_sub,
-													 sa10_sub, sa11_sub, sa12_sub, sa13_sub,
-													 sa20_sub, sa21_sub, sa22_sub, sa23_sub,
-													 sa30_sub, sa31_sub, sa32_sub, sa33_sub});
-													 
-	$strobe($time,": shiftrows is %h\n",{sa00_sr, sa01_sr, sa02_sr, sa03_sr,
-													  sa10_sr, sa11_sr, sa12_sr, sa13_sr,
-													  sa20_sr, sa21_sr, sa22_sr, sa23_sr,
-													  sa30_sr, sa31_sr, sa32_sr, sa33_sr});
-													  
-	$strobe($time,": mixcolumn is %h\n",{sa00_mc, sa01_mc, sa02_mc, sa03_mc,
-													  sa10_mc, sa11_mc, sa12_mc, sa13_mc,
-													  sa20_mc, sa21_mc, sa22_mc, sa23_mc,
-													  sa30_mc, sa31_mc, sa32_mc, sa33_mc});
-	
-	$strobe($time,": sa_next_into_even is %h\n",{sa00_next_round2, sa01_next_round2, sa02_next_round2, sa03_next_round2,
-																 sa10_next_round2, sa11_next_round2, sa12_next_round2, sa13_next_round2,
-																 sa20_next_round2, sa21_next_round2, sa22_next_round2, sa23_next_round2,
-																 sa30_next_round2, sa31_next_round2, sa32_next_round2, sa33_next_round2});
-																 
-	$strobe($time,": subbytes_e is %h\n",{sa00_sub_round2, sa01_sub_round2, sa02_sub_round2, sa03_sub_round2,
-													 sa10_sub_round2, sa11_sub_round2, sa12_sub_round2, sa13_sub_round2,
-													 sa20_sub_round2, sa21_sub_round2, sa22_sub_round2, sa23_sub_round2,
-													 sa30_sub_round2, sa31_sub_round2, sa32_sub_round2, sa33_sub_round2});
-													 
-	$strobe($time,": shiftrows_e is %h\n",{sa00_sr_round2, sa01_sr_round2, sa02_sr_round2, sa03_sr_round2,
-													  sa10_sr_round2, sa11_sr_round2, sa12_sr_round2, sa13_sr_round2,
-													  sa20_sr_round2, sa21_sr_round2, sa22_sr_round2, sa23_sr_round2,
-													  sa30_sr_round2, sa31_sr_round2, sa32_sr_round2, sa33_sr_round2});
-													  
-	$strobe($time,": mixcolumn_e is %h\n",{sa00_mc_round2, sa01_mc_round2, sa02_mc_round2, sa03_mc_round2,
-													  sa10_mc_round2, sa11_mc_round2, sa12_mc_round2, sa13_mc_round2,
-													  sa20_mc_round2, sa21_mc_round2, sa22_mc_round2, sa23_mc_round2,
-													  sa30_mc_round2, sa31_mc_round2, sa32_mc_round2, sa33_mc_round2});																
-	*-/															 
-	end
-	
-	
-/-*
-always @(posedge clk)
-       begin
-				if(done)
-						begin
-							text_out_64 <= text_out[127:64];
-//							done2 <= 1;
-						end
-				else if(~done)
-							text_out_64 <= text_out[63:0];
-		end
-	*-/	 
-		 
-/-*
-always @(posedge clk)
-			 begin
-				if(done2)
-					begin
-						text_out_64 <= text_out[63:0];
-					end	
-		 end
-*-/		 
- -----/\----- EXCLUDED -----/\----- */
-////////////////////////////////////////////////////////////////////
-//
-// Generic Functions
-//
-
-function [31:0] mix_col;
-input	[7:0]	s0,s1,s2,s3;
-//reg	[7:0]	s0_o,s1_o,s2_o,s3_o;
-begin
-mix_col[31:24]=xtime(s0)^xtime(s1)^s1^s2^s3;
-mix_col[23:16]=s0^xtime(s1)^xtime(s2)^s2^s3;
-mix_col[15:08]=s0^s1^xtime(s2)^xtime(s3)^s3;
-mix_col[07:00]=xtime(s0)^s0^s1^s2^xtime(s3);
-end
-endfunction
-
-function [7:0] xtime;
-input [7:0] b; xtime={b[6:0],1'b0}^(8'h1b&{8{b[7]}});
-endfunction
-
-
-
-endmodule
-
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/work/rtl/aes_key_expand_128.v b/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/work/rtl/aes_key_expand_128.v
deleted file mode 100644
index 21d302c..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/work/rtl/aes_key_expand_128.v
+++ /dev/null
@@ -1,110 +0,0 @@
-/////////////////////////////////////////////////////////////////////
-////                                                             ////
-////  AES Key Expand Block (for 128 bit keys)                    ////
-////                                                             ////
-////                                                             ////
-////  Author: Rudolf Usselmann                                   ////
-////          rudi@asics.ws                                      ////
-////                                                             ////
-////                                                             ////
-////  Downloaded from: http://www.opencores.org/cores/aes_core/  ////
-////                                                             ////
-/////////////////////////////////////////////////////////////////////
-////                                                             ////
-//// Copyright (C) 2000-2002 Rudolf Usselmann                    ////
-////                         www.asics.ws                        ////
-////                         rudi@asics.ws                       ////
-////                                                             ////
-//// This source file may be used and distributed without        ////
-//// restriction provided that this copyright statement is not   ////
-//// removed from the file and that any derivative work contains ////
-//// the original copyright notice and the associated disclaimer.////
-////                                                             ////
-////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
-//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
-//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
-//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
-//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
-//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
-//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
-//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
-//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
-//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
-//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
-//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
-//// POSSIBILITY OF SUCH DAMAGE.                                 ////
-////                                                             ////
-/////////////////////////////////////////////////////////////////////
-
-
-`timescale 1 ns/1 ps
-
-module aes_key_expand_128(clk, kld, key, w0,w1,w2,w3,w4_reg,w5_reg,w6_reg,w7_reg);
-input		clk;
-input		kld;
-input	[127:0]	key;
-output reg	[31:0]	w0,w1,w2,w3;
-		 reg [31:0]	   w4,w5,w6,w7;
-
-output reg   [31:0]   w4_reg,w5_reg,w6_reg,w7_reg;
-wire	[31:0]	tmp_w,tmp_w2;
-wire	[31:0]	subword, subword2;
-wire	[31:0]	rcon, rcon2;			//round constant
-
-
-
-always @(posedge clk)
-begin
-	w4_reg <=  w4;
-	w5_reg <=  w5;
-	w6_reg <=  w6;
-	w7_reg <=  w7;
-/*   $strobe($time,": next round_key is %h\n",{w4_reg,w5_reg,w6_reg,w7_reg}); 
-*/end
-
-		
-always @*
-begin
- 
-w0 =  kld ? key[127:096] :w4_reg^subword2^{rcon[31:24],24'b0};
-w1 =  kld ? key[095:064] :w5_reg^w4_reg^subword2^{rcon[31:24],24'b0};
-w2 =  kld ? key[063:032] :w6_reg^w5_reg^w4_reg^subword2^{rcon[31:24],24'b0};
-w3 =  kld ? key[031:000] :w7_reg^w6_reg^w5_reg^w4_reg^subword2^{rcon[31:24],24'b0};
-
-w4 =  (1'b0)? key[127:096]^subword^{8'h01,24'b0} : w0^subword^{rcon2[31:24],24'b0};
-w5 =  (1'b0)? key[095:064]^key[127:096]^subword^{8'h01,24'b0} :w1^w0^subword^{rcon2[31:24],24'b0};
-w6 =  (1'b0)? key[063:032]^key[095:064]^key[127:096]^subword^{8'h01,24'b0} : w2^w1^w0^subword^{rcon2[31:24],24'b0}; 
-w7 =  (1'b0)? key[127:096]^key[095:064]^key[063:032]^key[031:000]^subword^{8'h01,24'b0} : w3^w2^w1^w0^subword^{rcon2[31:24],24'b0};
-
-/*$display($time,": rcon is %d, rcon2 is %d\n",rcon[31:24],rcon2[31:24]);*/
-/*$display($time,": round_key is %h\n",{w0,w1,w2,w3}); 	
-$display($time,": next_round_key is %h\n",{w4,w5,w6,w7});*/
-end
-
-
-/*assign tmp_w =  w3;  //subword
-assign tmp_w2 = w7 ;  //subword2
-*/
-/*
-assign subword[31:24]     = aes_sbox(tmp_w[23:16]);
-assign subword[23:16]	  = aes_sbox(tmp_w[15:08]);
-assign subword[15:08]	  = aes_sbox(tmp_w[07:00]);
-assign subword[07:00]     = aes_sbox(tmp_w[31:24]);
-*/
-
-aes_sbox inst1(	.a(w3[23:16]), .d(subword[31:24]));
-aes_sbox inst2(	.a(w3[15:08]), .d(subword[23:16]));
-aes_sbox inst3(	.a(w3[07:00]), .d(subword[15:08]));
-aes_sbox inst4(	.a(w3[31:24]), .d(subword[07:00])); 
-aes_rcon inst5(.clk(clk), .kld(kld), .out(rcon[31:24]), .out2(rcon2[31:24]));
-
-
-aes_sbox u4(	.a(w7_reg[23:16]), .d(subword2[31:24]));
-aes_sbox u5(	.a(w7_reg[15:08]), .d(subword2[23:16]));
-aes_sbox u6(	.a(w7_reg[07:00]), .d(subword2[15:08]));
-aes_sbox u7(	.a(w7_reg[31:24]), .d(subword2[07:00])); 
-
-
-
-endmodule
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/work/rtl/aes_rcon.v b/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/work/rtl/aes_rcon.v
deleted file mode 100644
index 7c11e12..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/work/rtl/aes_rcon.v
+++ /dev/null
@@ -1,90 +0,0 @@
-/////////////////////////////////////////////////////////////////////
-////                                                             ////
-////  AES RCON Block                                             ////
-////                                                             ////
-////                                                             ////
-////  Author: Rudolf Usselmann                                   ////
-////          rudi@asics.ws                                      ////
-////                                                             ////
-////                                                             ////
-////  Downloaded from: http://www.opencores.org/cores/aes_core/  ////
-////                                                             ////
-/////////////////////////////////////////////////////////////////////
-////                                                             ////
-//// Copyright (C) 2000-2002 Rudolf Usselmann                    ////
-////                         www.asics.ws                        ////
-////                         rudi@asics.ws                       ////
-////                                                             ////
-//// This source file may be used and distributed without        ////
-//// restriction provided that this copyright statement is not   ////
-//// removed from the file and that any derivative work contains ////
-//// the original copyright notice and the associated disclaimer.////
-////                                                             ////
-////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
-//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
-//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
-//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
-//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
-//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
-//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
-//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
-//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
-//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
-//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
-//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
-//// POSSIBILITY OF SUCH DAMAGE.                                 ////
-////                                                             ////
-/////////////////////////////////////////////////////////////////////
-
-
-`timescale 1 ns/1 ps
-
-module aes_rcon(clk, kld,out,out2);
-
-input		clk;
-input		kld;
-
-output reg  [7:0] out,out2;
-
-reg	[3:0]	rcnt_reg;
-wire	[3:0]	rcnt_next;
-
-
-assign rcnt_next = (kld) ? 0 : rcnt_reg+2;
-
-
-always @*
-begin
-		out  = kld ? 8'h01:frcon(rcnt_next-1);
-		out2 = kld ? 8'h01:frcon(rcnt_next); 
-end		 
-
-
-always @(posedge clk)
-begin
-
-		rcnt_reg <= rcnt_next;
-/*		$strobe($time,": out is %h, out2 is %h\n",out,out2);
-*/	
-end	
-
-
-
-function [7:0]	frcon;
-input	[3:0]	i;
-case(i)	// synopsys parallel_case
-   4'h0: frcon=8'h01;		//1
-   4'h1: frcon=8'h02;		//x
-   4'h2: frcon=8'h04;		//x^2
-   4'h3: frcon=8'h08;		//x^3
-   4'h4: frcon=8'h10;		//x^4
-   4'h5: frcon=8'h20;		//x^5
-   4'h6: frcon=8'h40;		//x^6
-   4'h7: frcon=8'h80;		//x^7
-   4'h8: frcon=8'h1b;		//x^8
-   4'h9: frcon=8'h36;		//x^9
-   default: frcon=8'h00;
-endcase
-endfunction
-
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/work/rtl/aes_sbox.v b/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/work/rtl/aes_sbox.v
deleted file mode 100644
index 251f6bf..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/work/rtl/aes_sbox.v
+++ /dev/null
@@ -1,310 +0,0 @@
-/////////////////////////////////////////////////////////////////////
-////                                                             ////
-////  AES SBOX (ROM)                                             ////
-////                                                             ////
-////                                                             ////
-////  Author: Rudolf Usselmann                                   ////
-////          rudi@asics.ws                                      ////
-////                                                             ////
-////                                                             ////
-////  Downloaded from: http://www.opencores.org/cores/aes_core/  ////
-////                                                             ////
-/////////////////////////////////////////////////////////////////////
-////                                                             ////
-//// Copyright (C) 2000-2002 Rudolf Usselmann                    ////
-////                         www.asics.ws                        ////
-////                         rudi@asics.ws                       ////
-////                                                             ////
-//// This source file may be used and distributed without        ////
-//// restriction provided that this copyright statement is not   ////
-//// removed from the file and that any derivative work contains ////
-//// the original copyright notice and the associated disclaimer.////
-////                                                             ////
-////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
-//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
-//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
-//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
-//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
-//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
-//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
-//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
-//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
-//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
-//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
-//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
-//// POSSIBILITY OF SUCH DAMAGE.                                 ////
-////                                                             ////
-/////////////////////////////////////////////////////////////////////
-
-
-`timescale 1 ns/1 ps
-
-
-module aes_sbox(a,d);
-input	[7:0]	a;
-output	[7:0]	d;
-reg	[7:0]	d;
-
-always @(a)
-	case(a)		// synopsys full_case parallel_case
-	   8'h00: d=8'h63;
-	   8'h01: d=8'h7c;
-	   8'h02: d=8'h77;
-	   8'h03: d=8'h7b;
-	   8'h04: d=8'hf2;
-	   8'h05: d=8'h6b;
-	   8'h06: d=8'h6f;
-	   8'h07: d=8'hc5;
-	   8'h08: d=8'h30;
-	   8'h09: d=8'h01;
-	   8'h0a: d=8'h67;
-	   8'h0b: d=8'h2b;
-	   8'h0c: d=8'hfe;
-	   8'h0d: d=8'hd7;
-	   8'h0e: d=8'hab;
-	   8'h0f: d=8'h76;
-	   8'h10: d=8'hca;
-	   8'h11: d=8'h82;
-	   8'h12: d=8'hc9;
-	   8'h13: d=8'h7d;
-	   8'h14: d=8'hfa;
-	   8'h15: d=8'h59;
-	   8'h16: d=8'h47;
-	   8'h17: d=8'hf0;
-	   8'h18: d=8'had;
-	   8'h19: d=8'hd4;
-	   8'h1a: d=8'ha2;
-	   8'h1b: d=8'haf;
-	   8'h1c: d=8'h9c;
-	   8'h1d: d=8'ha4;
-	   8'h1e: d=8'h72;
-	   8'h1f: d=8'hc0;
-	   8'h20: d=8'hb7;
-	   8'h21: d=8'hfd;
-	   8'h22: d=8'h93;
-	   8'h23: d=8'h26;
-	   8'h24: d=8'h36;
-	   8'h25: d=8'h3f;
-	   8'h26: d=8'hf7;
-	   8'h27: d=8'hcc;
-	   8'h28: d=8'h34;
-	   8'h29: d=8'ha5;
-	   8'h2a: d=8'he5;
-	   8'h2b: d=8'hf1;
-	   8'h2c: d=8'h71;
-	   8'h2d: d=8'hd8;
-	   8'h2e: d=8'h31;
-	   8'h2f: d=8'h15;
-	   8'h30: d=8'h04;
-	   8'h31: d=8'hc7;
-	   8'h32: d=8'h23;
-	   8'h33: d=8'hc3;
-	   8'h34: d=8'h18;
-	   8'h35: d=8'h96;
-	   8'h36: d=8'h05;
-	   8'h37: d=8'h9a;
-	   8'h38: d=8'h07;
-	   8'h39: d=8'h12;
-	   8'h3a: d=8'h80;
-	   8'h3b: d=8'he2;
-	   8'h3c: d=8'heb;
-	   8'h3d: d=8'h27;
-	   8'h3e: d=8'hb2;
-	   8'h3f: d=8'h75;
-	   8'h40: d=8'h09;
-	   8'h41: d=8'h83;
-	   8'h42: d=8'h2c;
-	   8'h43: d=8'h1a;
-	   8'h44: d=8'h1b;
-	   8'h45: d=8'h6e;
-	   8'h46: d=8'h5a;
-	   8'h47: d=8'ha0;
-	   8'h48: d=8'h52;
-	   8'h49: d=8'h3b;
-	   8'h4a: d=8'hd6;
-	   8'h4b: d=8'hb3;
-	   8'h4c: d=8'h29;
-	   8'h4d: d=8'he3;
-	   8'h4e: d=8'h2f;
-	   8'h4f: d=8'h84;
-	   8'h50: d=8'h53;
-	   8'h51: d=8'hd1;
-	   8'h52: d=8'h00;
-	   8'h53: d=8'hed;
-	   8'h54: d=8'h20;
-	   8'h55: d=8'hfc;
-	   8'h56: d=8'hb1;
-	   8'h57: d=8'h5b;
-	   8'h58: d=8'h6a;
-	   8'h59: d=8'hcb;
-	   8'h5a: d=8'hbe;
-	   8'h5b: d=8'h39;
-	   8'h5c: d=8'h4a;
-	   8'h5d: d=8'h4c;
-	   8'h5e: d=8'h58;
-	   8'h5f: d=8'hcf;
-	   8'h60: d=8'hd0;
-	   8'h61: d=8'hef;
-	   8'h62: d=8'haa;
-	   8'h63: d=8'hfb;
-	   8'h64: d=8'h43;
-	   8'h65: d=8'h4d;
-	   8'h66: d=8'h33;
-	   8'h67: d=8'h85;
-	   8'h68: d=8'h45;
-	   8'h69: d=8'hf9;
-	   8'h6a: d=8'h02;
-	   8'h6b: d=8'h7f;
-	   8'h6c: d=8'h50;
-	   8'h6d: d=8'h3c;
-	   8'h6e: d=8'h9f;
-	   8'h6f: d=8'ha8;
-	   8'h70: d=8'h51;
-	   8'h71: d=8'ha3;
-	   8'h72: d=8'h40;
-	   8'h73: d=8'h8f;
-	   8'h74: d=8'h92;
-	   8'h75: d=8'h9d;
-	   8'h76: d=8'h38;
-	   8'h77: d=8'hf5;
-	   8'h78: d=8'hbc;
-	   8'h79: d=8'hb6;
-	   8'h7a: d=8'hda;
-	   8'h7b: d=8'h21;
-	   8'h7c: d=8'h10;
-	   8'h7d: d=8'hff;
-	   8'h7e: d=8'hf3;
-	   8'h7f: d=8'hd2;
-	   8'h80: d=8'hcd;
-	   8'h81: d=8'h0c;
-	   8'h82: d=8'h13;
-	   8'h83: d=8'hec;
-	   8'h84: d=8'h5f;
-	   8'h85: d=8'h97;
-	   8'h86: d=8'h44;
-	   8'h87: d=8'h17;
-	   8'h88: d=8'hc4;
-	   8'h89: d=8'ha7;
-	   8'h8a: d=8'h7e;
-	   8'h8b: d=8'h3d;
-	   8'h8c: d=8'h64;
-	   8'h8d: d=8'h5d;
-	   8'h8e: d=8'h19;
-	   8'h8f: d=8'h73;
-	   8'h90: d=8'h60;
-	   8'h91: d=8'h81;
-	   8'h92: d=8'h4f;
-	   8'h93: d=8'hdc;
-	   8'h94: d=8'h22;
-	   8'h95: d=8'h2a;
-	   8'h96: d=8'h90;
-	   8'h97: d=8'h88;
-	   8'h98: d=8'h46;
-	   8'h99: d=8'hee;
-	   8'h9a: d=8'hb8;
-	   8'h9b: d=8'h14;
-	   8'h9c: d=8'hde;
-	   8'h9d: d=8'h5e;
-	   8'h9e: d=8'h0b;
-	   8'h9f: d=8'hdb;
-	   8'ha0: d=8'he0;
-	   8'ha1: d=8'h32;
-	   8'ha2: d=8'h3a;
-	   8'ha3: d=8'h0a;
-	   8'ha4: d=8'h49;
-	   8'ha5: d=8'h06;
-	   8'ha6: d=8'h24;
-	   8'ha7: d=8'h5c;
-	   8'ha8: d=8'hc2;
-	   8'ha9: d=8'hd3;
-	   8'haa: d=8'hac;
-	   8'hab: d=8'h62;
-	   8'hac: d=8'h91;
-	   8'had: d=8'h95;
-	   8'hae: d=8'he4;
-	   8'haf: d=8'h79;
-	   8'hb0: d=8'he7;
-	   8'hb1: d=8'hc8;
-	   8'hb2: d=8'h37;
-	   8'hb3: d=8'h6d;
-	   8'hb4: d=8'h8d;
-	   8'hb5: d=8'hd5;
-	   8'hb6: d=8'h4e;
-	   8'hb7: d=8'ha9;
-	   8'hb8: d=8'h6c;
-	   8'hb9: d=8'h56;
-	   8'hba: d=8'hf4;
-	   8'hbb: d=8'hea;
-	   8'hbc: d=8'h65;
-	   8'hbd: d=8'h7a;
-	   8'hbe: d=8'hae;
-	   8'hbf: d=8'h08;
-	   8'hc0: d=8'hba;
-	   8'hc1: d=8'h78;
-	   8'hc2: d=8'h25;
-	   8'hc3: d=8'h2e;
-	   8'hc4: d=8'h1c;
-	   8'hc5: d=8'ha6;
-	   8'hc6: d=8'hb4;
-	   8'hc7: d=8'hc6;
-	   8'hc8: d=8'he8;
-	   8'hc9: d=8'hdd;
-	   8'hca: d=8'h74;
-	   8'hcb: d=8'h1f;
-	   8'hcc: d=8'h4b;
-	   8'hcd: d=8'hbd;
-	   8'hce: d=8'h8b;
-	   8'hcf: d=8'h8a;
-	   8'hd0: d=8'h70;
-	   8'hd1: d=8'h3e;
-	   8'hd2: d=8'hb5;
-	   8'hd3: d=8'h66;
-	   8'hd4: d=8'h48;
-	   8'hd5: d=8'h03;
-	   8'hd6: d=8'hf6;
-	   8'hd7: d=8'h0e;
-	   8'hd8: d=8'h61;
-	   8'hd9: d=8'h35;
-	   8'hda: d=8'h57;
-	   8'hdb: d=8'hb9;
-	   8'hdc: d=8'h86;
-	   8'hdd: d=8'hc1;
-	   8'hde: d=8'h1d;
-	   8'hdf: d=8'h9e;
-	   8'he0: d=8'he1;
-	   8'he1: d=8'hf8;
-	   8'he2: d=8'h98;
-	   8'he3: d=8'h11;
-	   8'he4: d=8'h69;
-	   8'he5: d=8'hd9;
-	   8'he6: d=8'h8e;
-	   8'he7: d=8'h94;
-	   8'he8: d=8'h9b;
-	   8'he9: d=8'h1e;
-	   8'hea: d=8'h87;
-	   8'heb: d=8'he9;
-	   8'hec: d=8'hce;
-	   8'hed: d=8'h55;
-	   8'hee: d=8'h28;
-	   8'hef: d=8'hdf;
-	   8'hf0: d=8'h8c;
-	   8'hf1: d=8'ha1;
-	   8'hf2: d=8'h89;
-	   8'hf3: d=8'h0d;
-	   8'hf4: d=8'hbf;
-	   8'hf5: d=8'he6;
-	   8'hf6: d=8'h42;
-	   8'hf7: d=8'h68;
-	   8'hf8: d=8'h41;
-	   8'hf9: d=8'h99;
-	   8'hfa: d=8'h2d;
-	   8'hfb: d=8'h0f;
-	   8'hfc: d=8'hb0;
-	   8'hfd: d=8'h54;
-	   8'hfe: d=8'hbb;
-	   8'hff: d=8'h16;
-	endcase
-
-endmodule
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/work/sim/bench.v b/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/work/sim/bench.v
deleted file mode 100644
index e2411d7..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/aes_5cycle_2stage/slpp_unit/work/sim/bench.v
+++ /dev/null
@@ -1,509 +0,0 @@
-
-///////////////////////////////////////////////////////////////////
-////                                                             ////
-////  AES Test Bench                                             ////
-////                                                             ////
-////                                                             ////
-////  Author: Rudolf Usselmann                                   ////
-////          rudi@asics.ws                                      ////
-////                                                             ////
-////                                                             ////
-////  Downloaded from: http://www.opencores.org/cores/aes_core/  ////
-////                                                             ////
-/////////////////////////////////////////////////////////////////////
-////                                                             ////
-//// Copyright (C) 2000-2002 Rudolf Usselmann                    ////
-////                         www.asics.ws                        ////
-////                         rudi@asics.ws                       ////
-////                                                             ////
-//// This source file may be used and distributed without        ////
-//// restriction provided that this copyright statement is not   ////
-//// removed from the file and that any derivative work contains ////
-//// the original copyright notice and the associated disclaimer.////
-////                                                             ////
-////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
-//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
-//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
-//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
-//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
-//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
-//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
-//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
-//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
-//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
-//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
-//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
-//// POSSIBILITY OF SUCH DAMAGE.                                 ////
-////                                                             ////
-/////////////////////////////////////////////////////////////////////
-
-//  CVS Log
-//
-//  $Id: test_bench_top.v,v 1.1.1.1 2005/08/03 14:59:38 kesava Exp $
-//
-//  $Date: 2005/08/03 14:59:38 $
-//  $Revision: 1.1.1.1 $
-//  $Author: kesava $
-//  $Locker:  $
-//  $State: Exp $
-//
-// Change History:
-//               $Log: test_bench_top.v,v $
-//               Revision 1.1.1.1  2005/08/03 14:59:38  kesava
-//               ssi3Aug05
-//
-//               Revision 1.2  2002/11/12 16:10:12  rudi
-//
-//               Improved test bench, added missing timescale file.
-//
-//               Revision 1.1.1.1  2002/11/09 11:22:56  rudi
-//               Initial Checkin
-//
-//
-//
-//
-//
-//
-`timescale 1ns/1ps
-//`include "timescale.v"
-//`delay_mode_path
-module testbench;
-
-  reg		clk;
-  reg		rst;
-
-  reg [383:0]   tv[512:0];	// Test vectors
-  wire [383:0]  tmp;
-  reg		kld;
-  wire [127:0]  key, plain, ciph;
-  wire [127:0]  text_in;
-  wire [127:0]  text_out;
-  wire [127:0]  text_out2;
-  reg [127:0]   text_exp;
-  wire		done, done2;
-  integer       n, error_cnt;
-
-
-  initial
-    begin
-      $display("\n\n");
-      $display("*****************************************************");
-      $display("* AES Test bench ...");
-      $display("*****************************************************");
-      $display("\n");
-      
-      // while(1)
-        begin
-	  kld = 0;
-	  rst = 0;
-	  error_cnt = 0;
-	  repeat(4)	@(posedge clk);
-	  rst = 1;
-	  repeat(20)	@(posedge clk);
-
-	  $display("");
-	  $display("");
-	  $display("Started random test ...");
-
-          tv[0]= 384'h00000000000000000000000000000000f34481ec3cc627bacd5dc3fb08f273e60336763e966d92595a567cc9ce537f5e;
-          tv[1]= 384'h000000000000000000000000000000009798c4640bad75c7c3227db910174e72a9a1631bf4996954ebc093957b234589;
-          tv[2]= 384'h0000000000000000000000000000000096ab5c2ff612d9dfaae8c31f30c42168ff4f8391a6a40ca5b25d23bedd44a597;
-          tv[3]= 384'h000000000000000000000000000000006a118a874519e64e9963798a503f1d35dc43be40be0e53712f7e2bf5ca707209;
-          tv[4]= 384'h00000000000000000000000000000000cb9fceec81286ca3e989bd979b0cb28492beedab1895a94faa69b632e5cc47ce;
-          tv[5]= 384'h00000000000000000000000000000000b26aeb1874e47ca8358ff22378f09144459264f4798f6a78bacb89c15ed3d601;
-          tv[6]= 384'h0000000000000000000000000000000058c8e00b2631686d54eab84b91f0aca108a4e2efec8a8e3312ca7460b9040bbf;
-          tv[7]= 384'h10a58869d74be5a374cf867cfb473859000000000000000000000000000000006d251e6944b051e04eaa6fb4dbf78465;
-          tv[8]= 384'hcaea65cdbb75e9169ecd22ebe6e54675000000000000000000000000000000006e29201190152df4ee058139def610bb;
-          tv[9]= 384'ha2e2fa9baf7d20822ca9f0542f764a4100000000000000000000000000000000c3b44b95d9d2f25670eee9a0de099fa3;
-          tv[10]= 384'hb6364ac4e1de1e285eaf144a2415f7a0000000000000000000000000000000005d9b05578fc944b3cf1ccf0e746cd581;
-          tv[11]= 384'h64cf9c7abc50b888af65f49d521944b200000000000000000000000000000000f7efc89d5dba578104016ce5ad659c05;
-          tv[12]= 384'h47d6742eefcc0465dc96355e851b64d9000000000000000000000000000000000306194f666d183624aa230a8b264ae7;
-          tv[13]= 384'h3eb39790678c56bee34bbcdeccf6cdb500000000000000000000000000000000858075d536d79ccee571f7d7204b1f67;
-          tv[14]= 384'h64110a924f0743d500ccadae72c134270000000000000000000000000000000035870c6a57e9e92314bcb8087cde72ce;
-          tv[15]= 384'h18d8126516f8a12ab1a36d9f04d68e51000000000000000000000000000000006c68e9be5ec41e22c825b7c7affb4363;
-          tv[16]= 384'hf530357968578480b398a3c251cd109300000000000000000000000000000000f5df39990fc688f1b07224cc03e86cea;
-          tv[17]= 384'hda84367f325d42d601b4326964802e8e00000000000000000000000000000000bba071bcb470f8f6586e5d3add18bc66;
-          tv[18]= 384'he37b1c6aa2846f6fdb413f238b089f230000000000000000000000000000000043c9f7e62f5d288bb27aa40ef8fe1ea8;
-          tv[19]= 384'h6c002b682483e0cabcc731c253be5674000000000000000000000000000000003580d19cff44f1014a7c966a69059de5;
-          tv[20]= 384'h143ae8ed6555aba96110ab58893a8ae100000000000000000000000000000000806da864dd29d48deafbe764f8202aef;
-          tv[21]= 384'hb69418a85332240dc82492353956ae0c00000000000000000000000000000000a303d940ded8f0baff6f75414cac5243;
-          tv[22]= 384'h71b5c08a1993e1362e4d0ce9b22b78d500000000000000000000000000000000c2dabd117f8a3ecabfbb11d12194d9d0;
-          tv[23]= 384'he234cdca2606b81f29408d5f6da2120600000000000000000000000000000000fff60a4740086b3b9c56195b98d91a7b;
-          tv[24]= 384'h13237c49074a3da078dc1d828bb78c6f000000000000000000000000000000008146a08e2357f0caa30ca8c94d1a0544;
-          tv[25]= 384'h3071a2a48fe6cbd04f1a129098e308f8000000000000000000000000000000004b98e06d356deb07ebb824e5713f7be3;
-          tv[26]= 384'h90f42ec0f68385f2ffc5dfc03a654dce000000000000000000000000000000007a20a53d460fc9ce0423a7a0764c6cf2;
-          tv[27]= 384'hfebd9a24d8b65c1c787d50a4ed3619a900000000000000000000000000000000f4a70d8af877f9b02b4c40df57d45b17;
-          tv[28]= 384'h80000000000000000000000000000000000000000000000000000000000000000edd33d3c621e546455bd8ba1418bec8;
-          tv[29]= 384'hc0000000000000000000000000000000000000000000000000000000000000004bc3f883450c113c64ca42e1112a9e87;
-          tv[30]= 384'he00000000000000000000000000000000000000000000000000000000000000072a1da770f5d7ac4c9ef94d822affd97;
-          tv[31]= 384'hf000000000000000000000000000000000000000000000000000000000000000970014d634e2b7650777e8e84d03ccd8;
-          tv[32]= 384'hf800000000000000000000000000000000000000000000000000000000000000f17e79aed0db7e279e955b5f493875a7;
-          tv[33]= 384'hfc000000000000000000000000000000000000000000000000000000000000009ed5a75136a940d0963da379db4af26a;
-          tv[34]= 384'hfe00000000000000000000000000000000000000000000000000000000000000c4295f83465c7755e8fa364bac6a7ea5;
-          tv[35]= 384'hff00000000000000000000000000000000000000000000000000000000000000b1d758256b28fd850ad4944208cf1155;
-          tv[36]= 384'hff8000000000000000000000000000000000000000000000000000000000000042ffb34c743de4d88ca38011c990890b;
-          tv[37]= 384'hffc00000000000000000000000000000000000000000000000000000000000009958f0ecea8b2172c0c1995f9182c0f3;
-          tv[38]= 384'hffe0000000000000000000000000000000000000000000000000000000000000956d7798fac20f82a8823f984d06f7f5;
-          tv[39]= 384'hfff0000000000000000000000000000000000000000000000000000000000000a01bf44f2d16be928ca44aaf7b9b106b;
-          tv[40]= 384'hfff8000000000000000000000000000000000000000000000000000000000000b5f1a33e50d40d103764c76bd4c6b6f8;
-          tv[41]= 384'hfffc0000000000000000000000000000000000000000000000000000000000002637050c9fc0d4817e2d69de878aee8d;
-          tv[42]= 384'hfffe000000000000000000000000000000000000000000000000000000000000113ecbe4a453269a0dd26069467fb5b5;
-          tv[43]= 384'hffff00000000000000000000000000000000000000000000000000000000000097d0754fe68f11b9e375d070a608c884;
-          tv[44]= 384'hffff800000000000000000000000000000000000000000000000000000000000c6a0b3e998d05068a5399778405200b4;
-          tv[45]= 384'hffffc00000000000000000000000000000000000000000000000000000000000df556a33438db87bc41b1752c55e5e49;
-          tv[46]= 384'hffffe0000000000000000000000000000000000000000000000000000000000090fb128d3a1af6e548521bb962bf1f05;
-          tv[47]= 384'hfffff0000000000000000000000000000000000000000000000000000000000026298e9c1db517c215fadfb7d2a8d691;
-          tv[48]= 384'hfffff80000000000000000000000000000000000000000000000000000000000a6cb761d61f8292d0df393a279ad0380;
-          tv[49]= 384'hfffffc000000000000000000000000000000000000000000000000000000000012acd89b13cd5f8726e34d44fd486108;
-          tv[50]= 384'hfffffe000000000000000000000000000000000000000000000000000000000095b1703fc57ba09fe0c3580febdd7ed4;
-          tv[51]= 384'hffffff0000000000000000000000000000000000000000000000000000000000de11722d893e9f9121c381becc1da59a;
-          tv[52]= 384'hffffff80000000000000000000000000000000000000000000000000000000006d114ccb27bf391012e8974c546d9bf2;
-          tv[53]= 384'hffffffc0000000000000000000000000000000000000000000000000000000005ce37e17eb4646ecfac29b9cc38d9340;
-          tv[54]= 384'hffffffe00000000000000000000000000000000000000000000000000000000018c1b6e2157122056d0243d8a165cddb;
-          tv[55]= 384'hfffffff00000000000000000000000000000000000000000000000000000000099693e6a59d1366c74d823562d7e1431;
-          tv[56]= 384'hfffffff8000000000000000000000000000000000000000000000000000000006c7c64dc84a8bba758ed17eb025a57e3;
-          tv[57]= 384'hfffffffc00000000000000000000000000000000000000000000000000000000e17bc79f30eaab2fac2cbbe3458d687a;
-          tv[58]= 384'hfffffffe000000000000000000000000000000000000000000000000000000001114bc2028009b923f0b01915ce5e7c4;
-          tv[59]= 384'hffffffff000000000000000000000000000000000000000000000000000000009c28524a16a1e1c1452971caa8d13476;
-          tv[60]= 384'hffffffff80000000000000000000000000000000000000000000000000000000ed62e16363638360fdd6ad62112794f0;
-          tv[61]= 384'hffffffffc00000000000000000000000000000000000000000000000000000005a8688f0b2a2c16224c161658ffd4044;
-          tv[62]= 384'hffffffffe000000000000000000000000000000000000000000000000000000023f710842b9bb9c32f26648c786807ca;
-          tv[63]= 384'hfffffffff000000000000000000000000000000000000000000000000000000044a98bf11e163f632c47ec6a49683a89;
-          tv[64]= 384'hfffffffff80000000000000000000000000000000000000000000000000000000f18aff94274696d9b61848bd50ac5e5;
-          tv[65]= 384'hfffffffffc00000000000000000000000000000000000000000000000000000082408571c3e2424540207f833b6dda69;
-          tv[66]= 384'hfffffffffe000000000000000000000000000000000000000000000000000000303ff996947f0c7d1f43c8f3027b9b75;
-          tv[67]= 384'hffffffffff0000000000000000000000000000000000000000000000000000007df4daf4ad29a3615a9b6ece5c99518a;
-          tv[68]= 384'hffffffffff800000000000000000000000000000000000000000000000000000c72954a48d0774db0b4971c526260415;
-          tv[69]= 384'hffffffffffc000000000000000000000000000000000000000000000000000001df9b76112dc6531e07d2cfda04411f0;
-          tv[70]= 384'hffffffffffe000000000000000000000000000000000000000000000000000008e4d8e699119e1fc87545a647fb1d34f;
-          tv[71]= 384'hfffffffffff00000000000000000000000000000000000000000000000000000e6c4807ae11f36f091c57d9fb68548d1;
-          tv[72]= 384'hfffffffffff800000000000000000000000000000000000000000000000000008ebf73aad49c82007f77a5c1ccec6ab4;
-          tv[73]= 384'hfffffffffffc00000000000000000000000000000000000000000000000000004fb288cc2040049001d2c7585ad123fc;
-          tv[74]= 384'hfffffffffffe000000000000000000000000000000000000000000000000000004497110efb9dceb13e2b13fb4465564;
-          tv[75]= 384'hffffffffffff000000000000000000000000000000000000000000000000000075550e6cb5a88e49634c9ab69eda0430;
-          tv[76]= 384'hffffffffffff8000000000000000000000000000000000000000000000000000b6768473ce9843ea66a81405dd50b345;
-          tv[77]= 384'hffffffffffffc000000000000000000000000000000000000000000000000000cb2f430383f9084e03a653571e065de6;
-          tv[78]= 384'hffffffffffffe000000000000000000000000000000000000000000000000000ff4e66c07bae3e79fb7d210847a3b0ba;
-          tv[79]= 384'hfffffffffffff0000000000000000000000000000000000000000000000000007b90785125505fad59b13c186dd66ce3;
-          tv[80]= 384'hfffffffffffff8000000000000000000000000000000000000000000000000008b527a6aebdaec9eaef8eda2cb7783e5;
-          tv[81]= 384'hfffffffffffffc0000000000000000000000000000000000000000000000000043fdaf53ebbc9880c228617d6a9b548b;
-          tv[82]= 384'hfffffffffffffe0000000000000000000000000000000000000000000000000053786104b9744b98f052c46f1c850d0b;
-          tv[83]= 384'hffffffffffffff00000000000000000000000000000000000000000000000000b5ab3013dd1e61df06cbaf34ca2aee78;
-          tv[84]= 384'hffffffffffffff800000000000000000000000000000000000000000000000007470469be9723030fdcc73a8cd4fbb10;
-          tv[85]= 384'hffffffffffffffc0000000000000000000000000000000000000000000000000a35a63f5343ebe9ef8167bcb48ad122e;
-          tv[86]= 384'hffffffffffffffe0000000000000000000000000000000000000000000000000fd8687f0757a210e9fdf181204c30863;
-          tv[87]= 384'hfffffffffffffff00000000000000000000000000000000000000000000000007a181e84bd5457d26a88fbae96018fb0;
-          tv[88]= 384'hfffffffffffffff8000000000000000000000000000000000000000000000000653317b9362b6f9b9e1a580e68d494b5;
-          tv[89]= 384'hfffffffffffffffc000000000000000000000000000000000000000000000000995c9dc0b689f03c45867b5faa5c18d1;
-          tv[90]= 384'hfffffffffffffffe00000000000000000000000000000000000000000000000077a4d96d56dda398b9aabecfc75729fd;
-          tv[91]= 384'hffffffffffffffff00000000000000000000000000000000000000000000000084be19e053635f09f2665e7bae85b42d;
-          tv[92]= 384'hffffffffffffffff80000000000000000000000000000000000000000000000032cd652842926aea4aa6137bb2be2b5e;
-          tv[93]= 384'hffffffffffffffffc00000000000000000000000000000000000000000000000493d4a4f38ebb337d10aa84e9171a554;
-          tv[94]= 384'hffffffffffffffffe00000000000000000000000000000000000000000000000d9bff7ff454b0ec5a4a2a69566e2cb84;
-          tv[95]= 384'hfffffffffffffffff000000000000000000000000000000000000000000000003535d565ace3f31eb249ba2cc6765d7a;
-          tv[96]= 384'hfffffffffffffffff80000000000000000000000000000000000000000000000f60e91fc3269eecf3231c6e9945697c6;
-          tv[97]= 384'hfffffffffffffffffc0000000000000000000000000000000000000000000000ab69cfadf51f8e604d9cc37182f6635a;
-          tv[98]= 384'hfffffffffffffffffe00000000000000000000000000000000000000000000007866373f24a0b6ed56e0d96fcdafb877;
-          tv[99]= 384'hffffffffffffffffff00000000000000000000000000000000000000000000001ea448c2aac954f5d812e9d78494446a;
-          tv[100]= 384'hffffffffffffffffff8000000000000000000000000000000000000000000000acc5599dd8ac02239a0fef4a36dd1668;
-          tv[101]= 384'hffffffffffffffffffc000000000000000000000000000000000000000000000d8764468bb103828cf7e1473ce895073;
-          tv[102]= 384'hffffffffffffffffffe0000000000000000000000000000000000000000000001b0d02893683b9f180458e4aa6b73982;
-          tv[103]= 384'hfffffffffffffffffff00000000000000000000000000000000000000000000096d9b017d302df410a937dcdb8bb6e43;
-          tv[104]= 384'hfffffffffffffffffff800000000000000000000000000000000000000000000ef1623cc44313cff440b1594a7e21cc6;
-          tv[105]= 384'hfffffffffffffffffffc00000000000000000000000000000000000000000000284ca2fa35807b8b0ae4d19e11d7dbd7;
-          tv[106]= 384'hfffffffffffffffffffe00000000000000000000000000000000000000000000f2e976875755f9401d54f36e2a23a594;
-          tv[107]= 384'hffffffffffffffffffff00000000000000000000000000000000000000000000ec198a18e10e532403b7e20887c8dd80;
-          tv[108]= 384'hffffffffffffffffffff80000000000000000000000000000000000000000000545d50ebd919e4a6949d96ad47e46a80;
-          tv[109]= 384'hffffffffffffffffffffc0000000000000000000000000000000000000000000dbdfb527060e0a71009c7bb0c68f1d44;
-          tv[110]= 384'hffffffffffffffffffffe00000000000000000000000000000000000000000009cfa1322ea33da2173a024f2ff0d896d;
-          tv[111]= 384'hfffffffffffffffffffff00000000000000000000000000000000000000000008785b1a75b0f3bd958dcd0e29318c521;
-          tv[112]= 384'hfffffffffffffffffffff800000000000000000000000000000000000000000038f67b9e98e4a97b6df030a9fcdd0104;
-          tv[113]= 384'hfffffffffffffffffffffc000000000000000000000000000000000000000000192afffb2c880e82b05926d0fc6c448b;
-          tv[114]= 384'hfffffffffffffffffffffe0000000000000000000000000000000000000000006a7980ce7b105cf530952d74daaf798c;
-          tv[115]= 384'hffffffffffffffffffffff000000000000000000000000000000000000000000ea3695e1351b9d6858bd958cf513ef6c;
-          tv[116]= 384'hffffffffffffffffffffff8000000000000000000000000000000000000000006da0490ba0ba0343b935681d2cce5ba1;
-          tv[117]= 384'hffffffffffffffffffffffc00000000000000000000000000000000000000000f0ea23af08534011c60009ab29ada2f1;
-          tv[118]= 384'hffffffffffffffffffffffe00000000000000000000000000000000000000000ff13806cf19cc38721554d7c0fcdcd4b;
-          tv[119]= 384'hfffffffffffffffffffffff000000000000000000000000000000000000000006838af1f4f69bae9d85dd188dcdf0688;
-          tv[120]= 384'hfffffffffffffffffffffff8000000000000000000000000000000000000000036cf44c92d550bfb1ed28ef583ddf5d7;
-          tv[121]= 384'hfffffffffffffffffffffffc0000000000000000000000000000000000000000d06e3195b5376f109d5c4ec6c5d62ced;
-          tv[122]= 384'hfffffffffffffffffffffffe0000000000000000000000000000000000000000c440de014d3d610707279b13242a5c36;
-          tv[123]= 384'hffffffffffffffffffffffff0000000000000000000000000000000000000000f0c5c6ffa5e0bd3a94c88f6b6f7c16b9;
-          tv[124]= 384'hffffffffffffffffffffffff80000000000000000000000000000000000000003e40c3901cd7effc22bffc35dee0b4d9;
-          tv[125]= 384'hffffffffffffffffffffffffc000000000000000000000000000000000000000b63305c72bedfab97382c406d0c49bc6;
-          tv[126]= 384'hffffffffffffffffffffffffe00000000000000000000000000000000000000036bbaab22a6bd4925a99a2b408d2dbae;
-          tv[127]= 384'hfffffffffffffffffffffffff000000000000000000000000000000000000000307c5b8fcd0533ab98bc51e27a6ce461;
-          tv[128]= 384'hfffffffffffffffffffffffff800000000000000000000000000000000000000829c04ff4c07513c0b3ef05c03e337b5;
-          tv[129]= 384'hfffffffffffffffffffffffffc00000000000000000000000000000000000000f17af0e895dda5eb98efc68066e84c54;
-          tv[130]= 384'hfffffffffffffffffffffffffe00000000000000000000000000000000000000277167f3812afff1ffacb4a934379fc3;
-          tv[131]= 384'hffffffffffffffffffffffffff000000000000000000000000000000000000002cb1dc3a9c72972e425ae2ef3eb597cd;
-          tv[132]= 384'hffffffffffffffffffffffffff8000000000000000000000000000000000000036aeaa3a213e968d4b5b679d3a2c97fe;
-          tv[133]= 384'hffffffffffffffffffffffffffc00000000000000000000000000000000000009241daca4fdd034a82372db50e1a0f3f;
-          tv[134]= 384'hffffffffffffffffffffffffffe0000000000000000000000000000000000000c14574d9cd00cf2b5a7f77e53cd57885;
-          tv[135]= 384'hfffffffffffffffffffffffffff0000000000000000000000000000000000000793de39236570aba83ab9b737cb521c9;
-          tv[136]= 384'hfffffffffffffffffffffffffff800000000000000000000000000000000000016591c0f27d60e29b85a96c33861a7ef;
-          tv[137]= 384'hfffffffffffffffffffffffffffc00000000000000000000000000000000000044fb5c4d4f5cb79be5c174a3b1c97348;
-          tv[138]= 384'hfffffffffffffffffffffffffffe000000000000000000000000000000000000674d2b61633d162be59dde04222f4740;
-          tv[139]= 384'hffffffffffffffffffffffffffff000000000000000000000000000000000000b4750ff263a65e1f9e924ccfd98f3e37;
-          tv[140]= 384'hffffffffffffffffffffffffffff80000000000000000000000000000000000062d0662d6eaeddedebae7f7ea3a4f6b6;
-          tv[141]= 384'hffffffffffffffffffffffffffffc0000000000000000000000000000000000070c46bb30692be657f7eaa93ebad9897;
-          tv[142]= 384'hffffffffffffffffffffffffffffe00000000000000000000000000000000000323994cfb9da285a5d9642e1759b224a;
-          tv[143]= 384'hfffffffffffffffffffffffffffff000000000000000000000000000000000001dbf57877b7b17385c85d0b54851e371;
-          tv[144]= 384'hfffffffffffffffffffffffffffff80000000000000000000000000000000000dfa5c097cdc1532ac071d57b1d28d1bd;
-          tv[145]= 384'hfffffffffffffffffffffffffffffc00000000000000000000000000000000003a0c53fa37311fc10bd2a9981f513174;
-          tv[146]= 384'hfffffffffffffffffffffffffffffe0000000000000000000000000000000000ba4f970c0a25c41814bdae2e506be3b4;
-          tv[147]= 384'hffffffffffffffffffffffffffffff00000000000000000000000000000000002dce3acb727cd13ccd76d425ea56e4f6;
-          tv[148]= 384'hffffffffffffffffffffffffffffff80000000000000000000000000000000005160474d504b9b3eefb68d35f245f4b3;
-          tv[149]= 384'hffffffffffffffffffffffffffffffc00000000000000000000000000000000041a8a947766635dec37553d9a6c0cbb7;
-          tv[150]= 384'hffffffffffffffffffffffffffffffe00000000000000000000000000000000025d6cfe6881f2bf497dd14cd4ddf445b;
-          tv[151]= 384'hfffffffffffffffffffffffffffffff00000000000000000000000000000000041c78c135ed9e98c096640647265da1e;
-          tv[152]= 384'hfffffffffffffffffffffffffffffff8000000000000000000000000000000005a4d404d8917e353e92a21072c3b2305;
-          tv[153]= 384'hfffffffffffffffffffffffffffffffc0000000000000000000000000000000002bc96846b3fdc71643f384cd3cc3eaf;
-          tv[154]= 384'hfffffffffffffffffffffffffffffffe000000000000000000000000000000009ba4a9143f4e5d4048521c4f8877d88e;
-          tv[155]= 384'hffffffffffffffffffffffffffffffff00000000000000000000000000000000a1f6258c877d5fcd8964484538bfc92c;
-          tv[156]= 384'h00000000000000000000000000000000800000000000000000000000000000003ad78e726c1ec02b7ebfe92b23d9ec34;
-          tv[157]= 384'h00000000000000000000000000000000c0000000000000000000000000000000aae5939c8efdf2f04e60b9fe7117b2c2;
-          tv[158]= 384'h00000000000000000000000000000000e0000000000000000000000000000000f031d4d74f5dcbf39daaf8ca3af6e527;
-          tv[159]= 384'h00000000000000000000000000000000f000000000000000000000000000000096d9fd5cc4f07441727df0f33e401a36;
-          tv[160]= 384'h00000000000000000000000000000000f800000000000000000000000000000030ccdb044646d7e1f3ccea3dca08b8c0;
-          tv[161]= 384'h00000000000000000000000000000000fc00000000000000000000000000000016ae4ce5042a67ee8e177b7c587ecc82;
-          tv[162]= 384'h00000000000000000000000000000000fe000000000000000000000000000000b6da0bb11a23855d9c5cb1b4c6412e0a;
-          tv[163]= 384'h00000000000000000000000000000000ff000000000000000000000000000000db4f1aa530967d6732ce4715eb0ee24b;
-          tv[164]= 384'h00000000000000000000000000000000ff800000000000000000000000000000a81738252621dd180a34f3455b4baa2f;
-          tv[165]= 384'h00000000000000000000000000000000ffc0000000000000000000000000000077e2b508db7fd89234caf7939ee5621a;
-          tv[166]= 384'h00000000000000000000000000000000ffe00000000000000000000000000000b8499c251f8442ee13f0933b688fcd19;
-          tv[167]= 384'h00000000000000000000000000000000fff00000000000000000000000000000965135f8a81f25c9d630b17502f68e53;
-          tv[168]= 384'h00000000000000000000000000000000fff800000000000000000000000000008b87145a01ad1c6cede995ea3670454f;
-          tv[169]= 384'h00000000000000000000000000000000fffc00000000000000000000000000008eae3b10a0c8ca6d1d3b0fa61e56b0b2;
-          tv[170]= 384'h00000000000000000000000000000000fffe000000000000000000000000000064b4d629810fda6bafdf08f3b0d8d2c5;
-          tv[171]= 384'h00000000000000000000000000000000ffff0000000000000000000000000000d7e5dbd3324595f8fdc7d7c571da6c2a;
-          tv[172]= 384'h00000000000000000000000000000000ffff8000000000000000000000000000f3f72375264e167fca9de2c1527d9606;
-          tv[173]= 384'h00000000000000000000000000000000ffffc0000000000000000000000000008ee79dd4f401ff9b7ea945d86666c13b;
-          tv[174]= 384'h00000000000000000000000000000000ffffe000000000000000000000000000dd35cea2799940b40db3f819cb94c08b;
-          tv[175]= 384'h00000000000000000000000000000000fffff0000000000000000000000000006941cb6b3e08c2b7afa581ebdd607b87;
-          tv[176]= 384'h00000000000000000000000000000000fffff8000000000000000000000000002c20f439f6bb097b29b8bd6d99aad799;
-          tv[177]= 384'h00000000000000000000000000000000fffffc00000000000000000000000000625d01f058e565f77ae86378bd2c49b3;
-          tv[178]= 384'h00000000000000000000000000000000fffffe00000000000000000000000000c0b5fd98190ef45fbb4301438d095950;
-          tv[179]= 384'h00000000000000000000000000000000ffffff0000000000000000000000000013001ff5d99806efd25da34f56be854b;
-          tv[180]= 384'h00000000000000000000000000000000ffffff800000000000000000000000003b594c60f5c8277a5113677f94208d82;
-          tv[181]= 384'h00000000000000000000000000000000ffffffc0000000000000000000000000e9c0fc1818e4aa46bd2e39d638f89e05;
-          tv[182]= 384'h00000000000000000000000000000000ffffffe0000000000000000000000000f8023ee9c3fdc45a019b4e985c7e1a54;
-          tv[183]= 384'h00000000000000000000000000000000fffffff000000000000000000000000035f40182ab4662f3023baec1ee796b57;
-          tv[184]= 384'h00000000000000000000000000000000fffffff80000000000000000000000003aebbad7303649b4194a6945c6cc3694;
-          tv[185]= 384'h00000000000000000000000000000000fffffffc000000000000000000000000a2124bea53ec2834279bed7f7eb0f938;
-          tv[186]= 384'h00000000000000000000000000000000fffffffe000000000000000000000000b9fb4399fa4facc7309e14ec98360b0a;
-          tv[187]= 384'h00000000000000000000000000000000ffffffff000000000000000000000000c26277437420c5d634f715aea81a9132;
-          tv[188]= 384'h00000000000000000000000000000000ffffffff800000000000000000000000171a0e1b2dd424f0e089af2c4c10f32f;
-          tv[189]= 384'h00000000000000000000000000000000ffffffffc000000000000000000000007cadbe402d1b208fe735edce00aee7ce;
-          tv[190]= 384'h00000000000000000000000000000000ffffffffe0000000000000000000000043b02ff929a1485af6f5c6d6558baa0f;
-          tv[191]= 384'h00000000000000000000000000000000fffffffff00000000000000000000000092faacc9bf43508bf8fa8613ca75dea;
-          tv[192]= 384'h00000000000000000000000000000000fffffffff80000000000000000000000cb2bf8280f3f9742c7ed513fe802629c;
-          tv[193]= 384'h00000000000000000000000000000000fffffffffc0000000000000000000000215a41ee442fa992a6e323986ded3f68;
-          tv[194]= 384'h00000000000000000000000000000000fffffffffe0000000000000000000000f21e99cf4f0f77cea836e11a2fe75fb1;
-          tv[195]= 384'h00000000000000000000000000000000ffffffffff000000000000000000000095e3a0ca9079e646331df8b4e70d2cd6;
-          tv[196]= 384'h00000000000000000000000000000000ffffffffff80000000000000000000004afe7f120ce7613f74fc12a01a828073;
-          tv[197]= 384'h00000000000000000000000000000000ffffffffffc000000000000000000000827f000e75e2c8b9d479beed913fe678;
-          tv[198]= 384'h00000000000000000000000000000000ffffffffffe00000000000000000000035830c8e7aaefe2d30310ef381cbf691;
-          tv[199]= 384'h00000000000000000000000000000000fffffffffff000000000000000000000191aa0f2c8570144f38657ea4085ebe5;
-          tv[200]= 384'h00000000000000000000000000000000fffffffffff80000000000000000000085062c2c909f15d9269b6c18ce99c4f0;
-          tv[201]= 384'h00000000000000000000000000000000fffffffffffc00000000000000000000678034dc9e41b5a560ed239eeab1bc78;
-          tv[202]= 384'h00000000000000000000000000000000fffffffffffe00000000000000000000c2f93a4ce5ab6d5d56f1b93cf19911c1;
-          tv[203]= 384'h00000000000000000000000000000000ffffffffffff000000000000000000001c3112bcb0c1dcc749d799743691bf82;
-          tv[204]= 384'h00000000000000000000000000000000ffffffffffff8000000000000000000000c55bd75c7f9c881989d3ec1911c0d4;
-          tv[205]= 384'h00000000000000000000000000000000ffffffffffffc0000000000000000000ea2e6b5ef182b7dff3629abd6a12045f;
-          tv[206]= 384'h00000000000000000000000000000000ffffffffffffe000000000000000000022322327e01780b17397f24087f8cc6f;
-          tv[207]= 384'h00000000000000000000000000000000fffffffffffff0000000000000000000c9cacb5cd11692c373b2411768149ee7;
-          tv[208]= 384'h00000000000000000000000000000000fffffffffffff8000000000000000000a18e3dbbca577860dab6b80da3139256;
-          tv[209]= 384'h00000000000000000000000000000000fffffffffffffc00000000000000000079b61c37bf328ecca8d743265a3d425c;
-          tv[210]= 384'h00000000000000000000000000000000fffffffffffffe000000000000000000d2d99c6bcc1f06fda8e27e8ae3f1ccc7;
-          tv[211]= 384'h00000000000000000000000000000000ffffffffffffff0000000000000000001bfd4b91c701fd6b61b7f997829d663b;
-          tv[212]= 384'h00000000000000000000000000000000ffffffffffffff80000000000000000011005d52f25f16bdc9545a876a63490a;
-          tv[213]= 384'h00000000000000000000000000000000ffffffffffffffc000000000000000003a4d354f02bb5a5e47d39666867f246a;
-          tv[214]= 384'h00000000000000000000000000000000ffffffffffffffe00000000000000000d451b8d6e1e1a0ebb155fbbf6e7b7dc3;
-          tv[215]= 384'h00000000000000000000000000000000fffffffffffffff000000000000000006898d4f42fa7ba6a10ac05e87b9f2080;
-          tv[216]= 384'h00000000000000000000000000000000fffffffffffffff80000000000000000b611295e739ca7d9b50f8e4c0e754a3f;
-          tv[217]= 384'h00000000000000000000000000000000fffffffffffffffc00000000000000007d33fc7d8abe3ca1936759f8f5deaf20;
-          tv[218]= 384'h00000000000000000000000000000000fffffffffffffffe00000000000000003b5e0f566dc96c298f0c12637539b25c;
-          tv[219]= 384'h00000000000000000000000000000000ffffffffffffffff0000000000000000f807c3e7985fe0f5a50e2cdb25c5109e;
-          tv[220]= 384'h00000000000000000000000000000000ffffffffffffffff800000000000000041f992a856fb278b389a62f5d274d7e9;
-          tv[221]= 384'h00000000000000000000000000000000ffffffffffffffffc00000000000000010d3ed7a6fe15ab4d91acbc7d0767ab1;
-          tv[222]= 384'h00000000000000000000000000000000ffffffffffffffffe00000000000000021feecd45b2e675973ac33bf0c5424fc;
-          tv[223]= 384'h00000000000000000000000000000000fffffffffffffffff0000000000000001480cb3955ba62d09eea668f7c708817;
-          tv[224]= 384'h00000000000000000000000000000000fffffffffffffffff80000000000000066404033d6b72b609354d5496e7eb511;
-          tv[225]= 384'h00000000000000000000000000000000fffffffffffffffffc000000000000001c317a220a7d700da2b1e075b00266e1;
-          tv[226]= 384'h00000000000000000000000000000000fffffffffffffffffe00000000000000ab3b89542233f1271bf8fd0c0f403545;
-          tv[227]= 384'h00000000000000000000000000000000ffffffffffffffffff00000000000000d93eae966fac46dca927d6b114fa3f9e;
-          tv[228]= 384'h00000000000000000000000000000000ffffffffffffffffff800000000000001bdec521316503d9d5ee65df3ea94ddf;
-          tv[229]= 384'h00000000000000000000000000000000ffffffffffffffffffc0000000000000eef456431dea8b4acf83bdae3717f75f;
-          tv[230]= 384'h00000000000000000000000000000000ffffffffffffffffffe000000000000006f2519a2fafaa596bfef5cfa15c21b9;
-          tv[231]= 384'h00000000000000000000000000000000fffffffffffffffffff0000000000000251a7eac7e2fe809e4aa8d0d7012531a;
-          tv[232]= 384'h00000000000000000000000000000000fffffffffffffffffff80000000000003bffc16e4c49b268a20f8d96a60b4058;
-          tv[233]= 384'h00000000000000000000000000000000fffffffffffffffffffc000000000000e886f9281999c5bb3b3e8862e2f7c988;
-          tv[234]= 384'h00000000000000000000000000000000fffffffffffffffffffe000000000000563bf90d61beef39f48dd625fcef1361;
-          tv[235]= 384'h00000000000000000000000000000000ffffffffffffffffffff0000000000004d37c850644563c69fd0acd9a049325b;
-          tv[236]= 384'h00000000000000000000000000000000ffffffffffffffffffff800000000000b87c921b91829ef3b13ca541ee1130a6;
-          tv[237]= 384'h00000000000000000000000000000000ffffffffffffffffffffc000000000002e65eb6b6ea383e109accce8326b0393;
-          tv[238]= 384'h00000000000000000000000000000000ffffffffffffffffffffe000000000009ca547f7439edc3e255c0f4d49aa8990;
-          tv[239]= 384'h00000000000000000000000000000000fffffffffffffffffffff00000000000a5e652614c9300f37816b1f9fd0c87f9;
-          tv[240]= 384'h00000000000000000000000000000000fffffffffffffffffffff8000000000014954f0b4697776f44494fe458d814ed;
-          tv[241]= 384'h00000000000000000000000000000000fffffffffffffffffffffc00000000007c8d9ab6c2761723fe42f8bb506cbcf7;
-          tv[242]= 384'h00000000000000000000000000000000fffffffffffffffffffffe0000000000db7e1932679fdd99742aab04aa0d5a80;
-          tv[243]= 384'h00000000000000000000000000000000ffffffffffffffffffffff00000000004c6a1c83e568cd10f27c2d73ded19c28;
-          tv[244]= 384'h00000000000000000000000000000000ffffffffffffffffffffff800000000090ecbe6177e674c98de412413f7ac915;
-          tv[245]= 384'h00000000000000000000000000000000ffffffffffffffffffffffc00000000090684a2ac55fe1ec2b8ebd5622520b73;
-          tv[246]= 384'h00000000000000000000000000000000ffffffffffffffffffffffe0000000007472f9a7988607ca79707795991035e6;
-          tv[247]= 384'h00000000000000000000000000000000fffffffffffffffffffffff00000000056aff089878bf3352f8df172a3ae47d8;
-          tv[248]= 384'h00000000000000000000000000000000fffffffffffffffffffffff80000000065c0526cbe40161b8019a2a3171abd23;
-          tv[249]= 384'h00000000000000000000000000000000fffffffffffffffffffffffc00000000377be0be33b4e3e310b4aabda173f84f;
-          tv[250]= 384'h00000000000000000000000000000000fffffffffffffffffffffffe000000009402e9aa6f69de6504da8d20c4fcaa2f;
-          tv[251]= 384'h00000000000000000000000000000000ffffffffffffffffffffffff00000000123c1f4af313ad8c2ce648b2e71fb6e1;
-          tv[252]= 384'h00000000000000000000000000000000ffffffffffffffffffffffff800000001ffc626d30203dcdb0019fb80f726cf4;
-          tv[253]= 384'h00000000000000000000000000000000ffffffffffffffffffffffffc000000076da1fbe3a50728c50fd2e621b5ad885;
-          tv[254]= 384'h00000000000000000000000000000000ffffffffffffffffffffffffe0000000082eb8be35f442fb52668e16a591d1d6;
-          tv[255]= 384'h00000000000000000000000000000000fffffffffffffffffffffffff0000000e656f9ecf5fe27ec3e4a73d00c282fb3;
-          tv[256]= 384'h00000000000000000000000000000000fffffffffffffffffffffffff80000002ca8209d63274cd9a29bb74bcd77683a;
-          tv[257]= 384'h00000000000000000000000000000000fffffffffffffffffffffffffc00000079bf5dce14bb7dd73a8e3611de7ce026;
-          tv[258]= 384'h00000000000000000000000000000000fffffffffffffffffffffffffe0000003c849939a5d29399f344c4a0eca8a576;
-          tv[259]= 384'h00000000000000000000000000000000ffffffffffffffffffffffffff000000ed3c0a94d59bece98835da7aa4f07ca2;
-          tv[260]= 384'h00000000000000000000000000000000ffffffffffffffffffffffffff80000063919ed4ce10196438b6ad09d99cd795;
-          tv[261]= 384'h00000000000000000000000000000000ffffffffffffffffffffffffffc000007678f3a833f19fea95f3c6029e2bc610;
-          tv[262]= 384'h00000000000000000000000000000000ffffffffffffffffffffffffffe000003aa426831067d36b92be7c5f81c13c56;
-          tv[263]= 384'h00000000000000000000000000000000fffffffffffffffffffffffffff000009272e2d2cdd11050998c845077a30ea0;
-          tv[264]= 384'h00000000000000000000000000000000fffffffffffffffffffffffffff80000088c4b53f5ec0ff814c19adae7f6246c;
-          tv[265]= 384'h00000000000000000000000000000000fffffffffffffffffffffffffffc00004010a5e401fdf0a0354ddbcc0d012b17;
-          tv[266]= 384'h00000000000000000000000000000000fffffffffffffffffffffffffffe0000a87a385736c0a6189bd6589bd8445a93;
-          tv[267]= 384'h00000000000000000000000000000000ffffffffffffffffffffffffffff0000545f2b83d9616dccf60fa9830e9cd287;
-          tv[268]= 384'h00000000000000000000000000000000ffffffffffffffffffffffffffff80004b706f7f92406352394037a6d4f4688d;
-          tv[269]= 384'h00000000000000000000000000000000ffffffffffffffffffffffffffffc000b7972b3941c44b90afa7b264bfba7387;
-          tv[270]= 384'h00000000000000000000000000000000ffffffffffffffffffffffffffffe0006f45732cf10881546f0fd23896d2bb60;
-          tv[271]= 384'h00000000000000000000000000000000fffffffffffffffffffffffffffff0002e3579ca15af27f64b3c955a5bfc30ba;
-          tv[272]= 384'h00000000000000000000000000000000fffffffffffffffffffffffffffff80034a2c5a91ae2aec99b7d1b5fa6780447;
-          tv[273]= 384'h00000000000000000000000000000000fffffffffffffffffffffffffffffc00a4d6616bd04f87335b0e53351227a9ee;
-          tv[274]= 384'h00000000000000000000000000000000fffffffffffffffffffffffffffffe007f692b03945867d16179a8cefc83ea3f;
-          tv[275]= 384'h00000000000000000000000000000000ffffffffffffffffffffffffffffff003bd141ee84a0e6414a26e7a4f281f8a2;
-          tv[276]= 384'h00000000000000000000000000000000ffffffffffffffffffffffffffffff80d1788f572d98b2b16ec5d5f3922b99bc;
-          tv[277]= 384'h00000000000000000000000000000000ffffffffffffffffffffffffffffffc00833ff6f61d98a57b288e8c3586b85a6;
-          tv[278]= 384'h00000000000000000000000000000000ffffffffffffffffffffffffffffffe08568261797de176bf0b43becc6285afb;
-          tv[279]= 384'h00000000000000000000000000000000fffffffffffffffffffffffffffffff0f9b0fda0c4a898f5b9e6f661c4ce4d07;
-          tv[280]= 384'h00000000000000000000000000000000fffffffffffffffffffffffffffffff88ade895913685c67c5269f8aae42983e;
-          tv[281]= 384'h00000000000000000000000000000000fffffffffffffffffffffffffffffffc39bde67d5c8ed8a8b1c37eb8fa9f5ac0;
-          tv[282]= 384'h00000000000000000000000000000000fffffffffffffffffffffffffffffffe5c005e72c1418c44f569f2ea33ba54f3;
-          tv[283]= 384'h00000000000000000000000000000000ffffffffffffffffffffffffffffffff3f5b8cc9ea855a0afa7347d23e8d664e;
-          
-          
-          // for(n=0;n<284;n=n+1)
-          for(n=0;n<28;n=n+1)
-            begin
-	      @(posedge clk);
-	      #1;
-	      kld = 1;
-	      @(posedge clk);
-	      #1;
-	      kld = 0;
-	      @(posedge clk);
-
-	      while(!done)	@(posedge clk);
-
-	      // $display("INFO: (a) Vector %3d/284: xpected %x, Got %x %t", n, ciph, text_out, $time);
-	      $display("INFO: (a) Vector %2d/28: xpected %x, Got %x %t", n, ciph, text_out, $time);
-
-	      if(text_out != ciph | (|text_out)==1'bx)
-	        begin
-		  $display("ERROR: (a) Vector %0d mismatch. Expected %x, Got %x",
-			   n, ciph, text_out);
-		  error_cnt = error_cnt + 1;
-	        end
-
-
-/* -----\/----- EXCLUDED -----\/-----
-	      while(!done2)	@(posedge clk);
-
-	      //$display("INFO: (b) Vector %0d: xpected %x, Got %x", n, plain, text_out2);
-
-	      if(text_out2 != plain | (|text_out2)==1'bx)
-	        begin
-		  $display("ERROR: (b) Vector %0d mismatch. Expected %x, Got %x",
-			   n, plain, text_out2);
-		  error_cnt = error_cnt + 1;
-	        end
- -----/\----- EXCLUDED -----/\----- */
-              
-
-	      $fflush;
-	      @(posedge clk);
-	      #1;
-            end // for (n=0;n<284;n=n+1)
-          
-
-
-	  $display("");
-	  $display("");
-	  $display("Test Done. Found %0d Errors.", error_cnt);
-	  $display("");
-	  $display("");
-	  repeat(10)	@(posedge clk);
-        end // while (1)
-      
-      	$finish;
-    end // initial begin
-  
-
-  assign tmp = tv[n];
-  assign key     = tmp[383:256]; //kld ? tmp[383:256] : 128'hx;
-  assign text_in = tmp[255:128]; //kld ? tmp[255:128] : 128'hx;
-  assign plain   = tmp[255:128];
-  assign ciph    = tmp[127:0];
-
-  initial begin
-    clk <= 0;
-    forever begin
-      // $display("CLK: %b", clk);
-      #5; clk <= ~clk;
-    end
-  end
-
-  aes_cipher_top	 u0
-    (
-     .clk(		clk		),
-     .rst(		rst		),
-     .ld(		kld		),
-     .done(		done		),
-     .key(		key		),
-     .text_in(	text_in		),
-     .text_out(	text_out	)
-     );
-
-/*
-  initial 
-    begin
-      #107000000
-        $finish;
-    end
-*/
-  
-/* -----\/----- EXCLUDED -----\/-----
-  initial
-    begin
-      $vcdpluson;
-    end
- -----/\----- EXCLUDED -----/\----- */
-  
-  integer cycle = 0;
-  always @(posedge clk) begin
-  	cycle = cycle + 1;
-	// $display("CYCLE %d", cycle);
-	if (cycle == 10000) begin
-		$display("Reached limit of 10000 cycles.");
-		$finish;
-	end
-  end
-
-  initial begin
-    // $dumpfile("bench.vcd");
-    // $dumpvars(0, testbench);
-  end
-  
-endmodule
-// Local Variables:
-// verilog-library-directories:("." "./gl")
-// End:
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/surelog.log b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/surelog.log
deleted file mode 100644
index 8cf1427..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/surelog.log
+++ /dev/null
@@ -1,163 +0,0 @@
-********************************************
-*  SURELOG System Verilog Compiler/Linter  *
-********************************************
-
-Copyright (c) 2017-2019 ACE Cloud,
-Authorized used only.
-
-VERSION: 0.05
-BUILT  : Nov  3 2019
-DATE   : 2019-11-03.21:40:17
-COMMAND: -writepp -parse -mt max -nopython -fileunit rtl/a23_alu.v rtl/a23_barrel_shift.v rtl/a23_barrel_shift_fpga.v rtl/a23_cache.v rtl/a23_config_defines.v rtl/a23_coprocessor.v rtl/a23_core.v rtl/a23_decode.v rtl/a23_decompile.v rtl/a23_execute.v rtl/a23_fetch.v rtl/a23_functions.v rtl/a23_localparams.v rtl/a23_multiply.v rtl/a23_ram_register_bank.v rtl/a23_register_bank.v rtl/a23_wishbone.v rtl/debug_functions.v rtl/generic_sram_byte_en.v rtl/generic_sram_line_en.v rtl/global_defines.v rtl/memory_configuration.v sim/bench.v +incdir+./rtl/+./sim/ -nobuiltin -nocache
-
-[INFO :CM0023] Creating log file ./slpp_unit/surelog.log.
-
-[INFO :CM0024] Executing with 4 threads.
-
-[INFO :CM0020] Separate compilation-unit mode is on.
-
-[ERROR:PA0207] rtl/a23_decode.v:174 Syntax error: mismatched input 'type' expecting {'new', 'byte', 'bit', 'logic', 'signed', 'unsigned', 'var', 'expect', 'soft', 'global', 'do', 'this', 'randomize', 'final', 'sample', Escaped_identifier, Simple_identifier},
-reg     [3:0]          type;
-                       ^-- ./slpp_unit/work/rtl/a23_decode.v:518 col:23.
-
-[WARNI:PA0205] rtl/a23_barrel_shift.v:42 No timescale set for "a23_barrel_shift".
-
-[WARNI:PA0205] rtl/a23_decompile.v:44 No timescale set for "a23_decompile".
-
-[WARNI:PA0205] rtl/a23_alu.v:43 No timescale set for "a23_alu".
-
-[WARNI:PA0205] rtl/a23_fetch.v:45 No timescale set for "a23_fetch".
-
-[WARNI:PA0205] rtl/a23_coprocessor.v:41 No timescale set for "a23_coprocessor".
-
-[WARNI:PA0205] rtl/a23_barrel_shift_fpga.v:46 No timescale set for "a23_barrel_shift_fpga".
-
-[WARNI:PA0205] rtl/a23_core.v:43 No timescale set for "a23_core".
-
-[WARNI:PA0205] rtl/a23_multiply.v:56 No timescale set for "a23_multiply".
-
-[WARNI:PA0205] rtl/a23_execute.v:45 No timescale set for "a23_execute".
-
-[WARNI:PA0205] rtl/a23_register_bank.v:44 No timescale set for "a23_register_bank".
-
-[WARNI:PA0205] rtl/generic_sram_byte_en.v:43 No timescale set for "generic_sram_byte_en".
-
-[WARNI:PA0205] rtl/a23_wishbone.v:58 No timescale set for "a23_wishbone".
-
-[WARNI:PA0205] rtl/generic_sram_line_en.v:42 No timescale set for "generic_sram_line_en".
-
-[WARNI:PA0205] rtl/a23_decode.v:43 No timescale set for "a23_decode".
-
-[WARNI:PA0205] sim/bench.v:2 No timescale set for "testbench".
-
-[WARNI:PA0205] rtl/a23_cache.v:47 No timescale set for "a23_cache".
-
-[WARNI:PA0205] rtl/a23_ram_register_bank.v:44 No timescale set for "a23_ram_register_bank".
-
-[INFO :CP0300] Compilation...
-
-[INFO :CP0303] rtl/a23_alu.v:43 Compile module "work@a23_alu".
-
-[INFO :CP0303] rtl/a23_barrel_shift_fpga.v:46 Compile module "work@a23_barrel_shift_fpga".
-
-[INFO :CP0303] rtl/a23_barrel_shift.v:42 Compile module "work@a23_barrel_shift".
-
-[INFO :CP0303] rtl/a23_coprocessor.v:41 Compile module "work@a23_coprocessor".
-
-[INFO :CP0303] rtl/a23_cache.v:47 Compile module "work@a23_cache".
-
-[INFO :CP0303] rtl/a23_execute.v:45 Compile module "work@a23_execute".
-
-[INFO :CP0303] rtl/a23_decode.v:43 Compile module "work@a23_decode".
-
-[INFO :CP0303] rtl/a23_decompile.v:44 Compile module "work@a23_decompile".
-
-[INFO :CP0303] rtl/a23_core.v:43 Compile module "work@a23_core".
-
-[INFO :CP0303] rtl/a23_ram_register_bank.v:44 Compile module "work@a23_ram_register_bank".
-
-[INFO :CP0303] rtl/a23_fetch.v:45 Compile module "work@a23_fetch".
-
-[INFO :CP0303] rtl/a23_register_bank.v:44 Compile module "work@a23_register_bank".
-
-[INFO :CP0303] rtl/a23_wishbone.v:58 Compile module "work@a23_wishbone".
-
-[INFO :CP0303] rtl/generic_sram_line_en.v:42 Compile module "work@generic_sram_line_en".
-
-[INFO :CP0303] sim/bench.v:2 Compile module "work@testbench".
-
-[INFO :CP0303] rtl/a23_multiply.v:56 Compile module "work@a23_multiply".
-
-[INFO :CP0303] rtl/generic_sram_byte_en.v:43 Compile module "work@generic_sram_byte_en".
-
-[NOTE :CP0309] rtl/a23_alu.v:51 Implicit port type (wire) for "o_out",
-there are 1 more instances of this message.
-
-[NOTE :CP0309] rtl/a23_coprocessor.v:58 Implicit port type (wire) for "o_cache_enable",
-there are 2 more instances of this message.
-
-[NOTE :CP0309] rtl/a23_execute.v:63 Implicit port type (wire) for "o_address_nxt",
-there are 2 more instances of this message.
-
-[NOTE :CP0309] rtl/a23_register_bank.v:71 Implicit port type (wire) for "o_rm",
-there are 2 more instances of this message.
-
-[NOTE :CP0309] rtl/a23_barrel_shift.v:50 Implicit port type (wire) for "o_out",
-there are 1 more instances of this message.
-
-[NOTE :CP0309] rtl/a23_core.v:53 Implicit port type (wire) for "o_wb_adr",
-there are 5 more instances of this message.
-
-[NOTE :CP0309] rtl/a23_fetch.v:54 Implicit port type (wire) for "o_read_data",
-there are 7 more instances of this message.
-
-[NOTE :CP0309] rtl/a23_wishbone.v:70 Implicit port type (wire) for "o_stall".
-
-[NOTE :CP0309] rtl/a23_barrel_shift_fpga.v:54 Implicit port type (wire) for "o_out",
-there are 1 more instances of this message.
-
-[NOTE :CP0309] rtl/a23_decode.v:81 Implicit port type (wire) for "o_rm_sel_nxt",
-there are 8 more instances of this message.
-
-[NOTE :CP0309] rtl/a23_multiply.v:65 Implicit port type (wire) for "o_out",
-there are 1 more instances of this message.
-
-[NOTE :CP0309] rtl/a23_cache.v:98 Implicit port type (wire) for "o_read_data",
-there are 2 more instances of this message.
-
-[NOTE :CP0309] rtl/a23_ram_register_bank.v:69 Implicit port type (wire) for "o_rm",
-there are 4 more instances of this message.
-
-[INFO :EL0526] Design Elaboration...
-
-[NOTE :EL0503] rtl/a23_decompile.v:44 Top level module "work@a23_decompile".
-
-[NOTE :EL0503] rtl/a23_barrel_shift_fpga.v:46 Top level module "work@a23_barrel_shift_fpga".
-
-[NOTE :EL0503] sim/bench.v:2 Top level module "work@testbench".
-
-[NOTE :EL0503] rtl/a23_ram_register_bank.v:44 Top level module "work@a23_ram_register_bank".
-
-[NOTE :EL0504] Multiple top level modules in design.
-
-[ERROR:EL0514] rtl/a23_decode.v:806 Undefined variable: instruction.
-
-[ERROR:EL0514] rtl/a23_decode.v:832 Undefined variable: instruction.
-
-[NOTE :EL0508] Nb Top level modules: 4.
-
-[NOTE :EL0509] Max instance depth: 6.
-
-[NOTE :EL0510] Nb instances: 23.
-
-[NOTE :EL0511] Nb leaf instances: 3.
-
-[  FATAL] : 0
-[  ERROR] : 3
-[WARNING] : 17
-[   NOTE] : 22
-
-********************************************
-*   End SURELOG SVerilog Compiler/Linter   *
-********************************************
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_alu.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_alu.v
deleted file mode 100644
index 6359680..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_alu.v
+++ /dev/null
@@ -1,154 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Arithmetic Logic Unit (ALU) for Amber 2 Core                //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Supported functions: 32-bit add and subtract, AND, OR,      //
-//  XOR, NOT, Zero extent 8-bit numbers                         //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-module a23_alu (
-
-input       [31:0]          i_a_in,
-input       [31:0]          i_b_in,
-input                       i_barrel_shift_carry,
-input                       i_status_bits_carry,
-input       [8:0]           i_function,
-
-output      [31:0]          o_out,
-output      [3:0]           o_flags
-);
-
-wire     [31:0]         a, b, b_not;
-wire     [31:0]         and_out, or_out, xor_out;
-wire     [31:0]         sign_ex8_out, sign_ex_16_out;
-wire     [31:0]         zero_ex8_out, zero_ex_16_out;
-wire     [32:0]         fadder_out;
-wire                    swap_sel;
-wire                    not_sel;
-wire     [1:0]          cin_sel;
-wire                    cout_sel;
-wire     [3:0]          out_sel;
-wire                    carry_in;
-wire                    carry_out;
-wire                    overflow_out;
-wire                    fadder_carry_out;
-
-assign  { swap_sel, not_sel, cin_sel, cout_sel, out_sel } = i_function;
-
-
-// ========================================================
-// A Select
-// ========================================================
-assign a     = (swap_sel ) ? i_b_in : i_a_in ;
-
-// ========================================================
-// B Select
-// ========================================================
-assign b     = (swap_sel ) ? i_a_in : i_b_in ;
-                             
-// ========================================================
-// Not Select
-// ========================================================
-assign b_not     = (not_sel ) ? ~b : b ;
-                             
-// ========================================================
-// Cin Select
-// ========================================================
-assign carry_in  = (cin_sel==2'd0 ) ? 1'd0 :
-                   (cin_sel==2'd1 ) ? 1'd1 :
-                                      i_status_bits_carry    ;  // add with carry
-
-// ========================================================
-// Cout Select
-// ========================================================
-assign carry_out = (cout_sel==1'd0 ) ? fadder_carry_out     :
-                                       i_barrel_shift_carry ;
-
-// For non-addition/subtractions that incorporate a shift 
-// operation, C is set to the last bit
-// shifted out of the value by the shifter.
-
-
-// ========================================================
-// Overflow out
-// ========================================================
-// Only assert the overflow flag when using the adder
-assign  overflow_out    = out_sel == 4'd1 &&
-                            // overflow if adding two positive numbers and get a negative number
-                          ( (!a[31] && !b_not[31] && fadder_out[31]) ||
-                            // or adding two negative numbers and get a positive number
-                            (a[31] && b_not[31] && !fadder_out[31])     );
-
-
-// ========================================================
-// ALU Operations
-// ========================================================
-
-assign fadder_out       = { 1'd0,a} + {1'd0,b_not} + {32'd0,carry_in};
-
-assign fadder_carry_out = fadder_out[32];
-assign and_out          = a & b_not;
-assign or_out           = a | b_not;
-assign xor_out          = a ^ b_not;
-assign zero_ex8_out     = {24'd0,  b_not[7:0]};
-assign zero_ex_16_out   = {16'd0,  b_not[15:0]};
-assign sign_ex8_out     = {{24{b_not[7]}},  b_not[7:0]};
-assign sign_ex_16_out   = {{16{b_not[15]}}, b_not[15:0]};
-                          
-// ========================================================
-// Out Select
-// ========================================================
-assign o_out = out_sel == 4'd0 ? b_not            : 
-               out_sel == 4'd1 ? fadder_out[31:0] : 
-               out_sel == 4'd2 ? zero_ex_16_out   :
-               out_sel == 4'd3 ? zero_ex8_out     :
-               out_sel == 4'd4 ? sign_ex_16_out   :
-               out_sel == 4'd5 ? sign_ex8_out     :
-               out_sel == 4'd6 ? xor_out          :
-               out_sel == 4'd7 ? or_out           :
-                                 and_out          ;
-
-assign o_flags       = {  o_out[31],      // negative
-                         |o_out == 1'd0,  // zero
-                         carry_out,       // carry
-                         overflow_out     // overflow
-                         };
-                         
-                                     
-endmodule
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_barrel_shift.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_barrel_shift.v
deleted file mode 100644
index 54cc19b..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_barrel_shift.v
+++ /dev/null
@@ -1,367 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Barrel Shifter for Amber 2 Core                             //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Provides 32-bit shifts LSL, LSR, ASR and ROR                //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-module a23_barrel_shift (
-
-input       [31:0]          i_in,
-input                       i_carry_in,
-input       [7:0]           i_shift_amount,     // uses 8 LSBs of Rs, or a 5 bit immediate constant
-input                       i_shift_imm_zero,   // high when immediate shift value of zero selected
-input       [1:0]           i_function,
-
-output      [31:0]          o_out,
-output                      o_carry_out
-
-);
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Parameters file for Amber 2 Core                            //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Holds general parameters that are used is several core      //
-//  modules                                                     //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// Instruction Types
-localparam [3:0]    REGOP       = 4'h0, // Data processing
-                    MULT        = 4'h1, // Multiply
-                    SWAP        = 4'h2, // Single Data Swap
-                    TRANS       = 4'h3, // Single data transfer
-                    MTRANS      = 4'h4, // Multi-word data transfer
-                    BRANCH      = 4'h5, // Branch
-                    CODTRANS    = 4'h6, // Co-processor data transfer
-                    COREGOP     = 4'h7, // Co-processor data operation
-                    CORTRANS    = 4'h8, // Co-processor register transfer
-                    SWI         = 4'h9; // software interrupt
-
-
-// Opcodes
-localparam [3:0] AND = 4'h0,        // Logical AND
-                 EOR = 4'h1,        // Logical Exclusive OR
-                 SUB = 4'h2,        // Subtract
-                 RSB = 4'h3,        // Reverse Subtract
-                 ADD = 4'h4,        // Add
-                 ADC = 4'h5,        // Add with Carry
-                 SBC = 4'h6,        // Subtract with Carry
-                 RSC = 4'h7,        // Reverse Subtract with Carry
-                 TST = 4'h8,        // Test  (using AND operator)
-                 TEQ = 4'h9,        // Test Equivalence (using EOR operator)
-                 CMP = 4'ha,       // Compare (using Subtract operator)
-                 CMN = 4'hb,       // Compare Negated
-                 ORR = 4'hc,       // Logical OR
-                 MOV = 4'hd,       // Move
-                 BIC = 4'he,       // Bit Clear (using AND & NOT operators)
-                 MVN = 4'hf;       // Move NOT
-                 
-// Condition Encoding
-localparam [3:0] EQ  = 4'h0,        // Equal            / Z set
-                 NE  = 4'h1,        // Not equal        / Z clear
-                 CS  = 4'h2,        // Carry set        / C set
-                 CC  = 4'h3,        // Carry clear      / C clear
-                 MI  = 4'h4,        // Minus            / N set
-                 PL  = 4'h5,        // Plus             / N clear
-                 VS  = 4'h6,        // Overflow         / V set
-                 VC  = 4'h7,        // No overflow      / V clear
-                 HI  = 4'h8,        // Unsigned higher  / C set and Z clear
-                 LS  = 4'h9,        // Unsigned lower
-                                    // or same          / C clear or Z set
-                 GE  = 4'ha,        // Signed greater 
-                                    // than or equal    / N == V
-                 LT  = 4'hb,        // Signed less than / N != V
-                 GT  = 4'hc,        // Signed greater
-                                    // than             / Z == 0, N == V
-                 LE  = 4'hd,        // Signed less than
-                                    // or equal         / Z == 1, N != V
-                 AL  = 4'he,        // Always
-                 NV  = 4'hf;        // Never
-
-// Any instruction with a condition field of 0b1111 is UNPREDICTABLE.                
-                
-// Shift Types
-localparam [1:0] LSL = 2'h0,
-                 LSR = 2'h1,
-                 ASR = 2'h2,
-                 RRX = 2'h3,
-                 ROR = 2'h3; 
- 
-// Modes
-localparam [1:0] SVC  =  2'b11,  // Supervisor
-                 IRQ  =  2'b10,  // Interrupt
-                 FIRQ =  2'b01,  // Fast Interrupt
-                 USR  =  2'b00;  // User
-
-// One-Hot Mode encodings
-localparam [5:0] OH_USR  = 0,
-                 OH_IRQ  = 1,
-                 OH_FIRQ = 2,
-                 OH_SVC  = 3;
-
-
-
-  // MSB is carry out
-wire [32:0] lsl_out;
-wire [32:0] lsr_out;
-wire [32:0] asr_out;
-wire [32:0] ror_out;
-
-
-// Logical shift right zero is redundant as it is the same as logical shift left zero, so
-// the assembler will convert LSR #0 (and ASR #0 and ROR #0) into LSL #0, and allow
-// lsr #32 to be specified.
-
-// lsl #0 is a special case, where the shifter carry out is the old value of the status flags
-// C flag. The contents of Rm are used directly as the second operand.
-assign lsl_out = i_shift_imm_zero         ? {i_carry_in, i_in              } :  // fall through case 
-
-                 i_shift_amount == 8'd0 ? {i_carry_in, i_in              } :  // fall through case
-                 i_shift_amount == 8'd1 ? {i_in[31],   i_in[30: 0],  1'd0} :
-                 
-                 i_shift_amount == 8'd2 ? {i_in[30],   i_in[29: 0],  2'd0} :
-                 i_shift_amount == 8'd3 ? {i_in[29],   i_in[28: 0],  3'd0} :
-                 i_shift_amount == 8'd4 ? {i_in[28],   i_in[27: 0],  4'd0} :
-                 i_shift_amount == 8'd5 ? {i_in[27],   i_in[26: 0],  5'd0} :
-                 i_shift_amount == 8'd6 ? {i_in[26],   i_in[25: 0],  6'd0} :
-                 i_shift_amount == 8'd7 ? {i_in[25],   i_in[24: 0],  7'd0} :
-                 i_shift_amount == 8'd8 ? {i_in[24],   i_in[23: 0],  8'd0} :
-                 i_shift_amount == 8'd9 ? {i_in[23],   i_in[22: 0],  9'd0} :
-                 i_shift_amount == 8'd10 ? {i_in[22],   i_in[21: 0], 10'd0} :
-                 i_shift_amount == 8'd11 ? {i_in[21],   i_in[20: 0], 11'd0} :
-                    
-                 i_shift_amount == 8'd12 ? {i_in[20],   i_in[19: 0], 12'd0} :
-                 i_shift_amount == 8'd13 ? {i_in[19],   i_in[18: 0], 13'd0} :
-                 i_shift_amount == 8'd14 ? {i_in[18],   i_in[17: 0], 14'd0} :
-                 i_shift_amount == 8'd15 ? {i_in[17],   i_in[16: 0], 15'd0} :
-                 i_shift_amount == 8'd16 ? {i_in[16],   i_in[15: 0], 16'd0} :
-                 i_shift_amount == 8'd17 ? {i_in[15],   i_in[14: 0], 17'd0} :
-                 i_shift_amount == 8'd18 ? {i_in[14],   i_in[13: 0], 18'd0} :
-                 i_shift_amount == 8'd19 ? {i_in[13],   i_in[12: 0], 19'd0} :
-                 i_shift_amount == 8'd20 ? {i_in[12],   i_in[11: 0], 20'd0} :
-                 i_shift_amount == 8'd21 ? {i_in[11],   i_in[10: 0], 21'd0} :
-
-                 i_shift_amount == 8'd22 ? {i_in[10],   i_in[ 9: 0], 22'd0} :
-                 i_shift_amount == 8'd23 ? {i_in[ 9],   i_in[ 8: 0], 23'd0} :
-                 i_shift_amount == 8'd24 ? {i_in[ 8],   i_in[ 7: 0], 24'd0} :
-                 i_shift_amount == 8'd25 ? {i_in[ 7],   i_in[ 6: 0], 25'd0} :
-                 i_shift_amount == 8'd26 ? {i_in[ 6],   i_in[ 5: 0], 26'd0} :
-                 i_shift_amount == 8'd27 ? {i_in[ 5],   i_in[ 4: 0], 27'd0} :
-                 i_shift_amount == 8'd28 ? {i_in[ 4],   i_in[ 3: 0], 28'd0} :
-                 i_shift_amount == 8'd29 ? {i_in[ 3],   i_in[ 2: 0], 29'd0} :
-                 i_shift_amount == 8'd30 ? {i_in[ 2],   i_in[ 1: 0], 30'd0} :
-                 i_shift_amount == 8'd31 ? {i_in[ 1],   i_in[ 0: 0], 31'd0} :
-                 i_shift_amount == 8'd32 ? {i_in[ 0],   32'd0 } :  // 32
-                                            {1'd0,       32'd0 } ;  // > 32
-                                            
-
-// The form of the shift field which might be expected to correspond to LSR #0 is used
-// to encode LSR #32, which has a zero result with bit 31 of Rm as the carry output. 
-                                           // carry out, < -------- out ---------->
-assign lsr_out = i_shift_imm_zero         ? {i_in[31], 32'd0 } :
-
-                 i_shift_amount == 8'd0 ? {i_carry_in, i_in            } :  // fall through case
-                 i_shift_amount == 8'd1 ? {i_in[ 0],  1'd0, i_in[31: 1]} :
-                 i_shift_amount == 8'd2 ? {i_in[ 1],  2'd0, i_in[31: 2]} :
-                 i_shift_amount == 8'd3 ? {i_in[ 2],  3'd0, i_in[31: 3]} :
-                 i_shift_amount == 8'd4 ? {i_in[ 3],  4'd0, i_in[31: 4]} :
-                 i_shift_amount == 8'd5 ? {i_in[ 4],  5'd0, i_in[31: 5]} :
-                 i_shift_amount == 8'd6 ? {i_in[ 5],  6'd0, i_in[31: 6]} :
-                 i_shift_amount == 8'd7 ? {i_in[ 6],  7'd0, i_in[31: 7]} :
-                 i_shift_amount == 8'd8 ? {i_in[ 7],  8'd0, i_in[31: 8]} :
-                 i_shift_amount == 8'd9 ? {i_in[ 8],  9'd0, i_in[31: 9]} :
-                    
-                 i_shift_amount == 8'd10 ? {i_in[ 9], 10'd0, i_in[31:10]} :
-                 i_shift_amount == 8'd11 ? {i_in[10], 11'd0, i_in[31:11]} :
-                 i_shift_amount == 8'd12 ? {i_in[11], 12'd0, i_in[31:12]} :
-                 i_shift_amount == 8'd13 ? {i_in[12], 13'd0, i_in[31:13]} :
-                 i_shift_amount == 8'd14 ? {i_in[13], 14'd0, i_in[31:14]} :
-                 i_shift_amount == 8'd15 ? {i_in[14], 15'd0, i_in[31:15]} :
-                 i_shift_amount == 8'd16 ? {i_in[15], 16'd0, i_in[31:16]} :
-                 i_shift_amount == 8'd17 ? {i_in[16], 17'd0, i_in[31:17]} :
-                 i_shift_amount == 8'd18 ? {i_in[17], 18'd0, i_in[31:18]} :
-                 i_shift_amount == 8'd19 ? {i_in[18], 19'd0, i_in[31:19]} :
-
-                 i_shift_amount == 8'd20 ? {i_in[19], 20'd0, i_in[31:20]} :
-                 i_shift_amount == 8'd21 ? {i_in[20], 21'd0, i_in[31:21]} :
-                 i_shift_amount == 8'd22 ? {i_in[21], 22'd0, i_in[31:22]} :
-                 i_shift_amount == 8'd23 ? {i_in[22], 23'd0, i_in[31:23]} :
-                 i_shift_amount == 8'd24 ? {i_in[23], 24'd0, i_in[31:24]} :
-                 i_shift_amount == 8'd25 ? {i_in[24], 25'd0, i_in[31:25]} :
-                 i_shift_amount == 8'd26 ? {i_in[25], 26'd0, i_in[31:26]} :
-                 i_shift_amount == 8'd27 ? {i_in[26], 27'd0, i_in[31:27]} :
-                 i_shift_amount == 8'd28 ? {i_in[27], 28'd0, i_in[31:28]} :
-                 i_shift_amount == 8'd29 ? {i_in[28], 29'd0, i_in[31:29]} :
-
-                 i_shift_amount == 8'd30 ? {i_in[29], 30'd0, i_in[31:30]} :
-                 i_shift_amount == 8'd31 ? {i_in[30], 31'd0, i_in[31 ]} :
-                 i_shift_amount == 8'd32 ? {i_in[31], 32'd0 } :
-                                            {1'd0,     32'd0 } ;  // > 32
-
-
-// The form of the shift field which might be expected to give ASR #0 is used to encode
-// ASR #32. Bit 31 of Rm is again used as the carry output, and each bit of operand 2 is
-// also equal to bit 31 of Rm. The result is therefore all ones or all zeros, according to
-// the value of bit 31 of Rm.
-
-                                          // carry out, < -------- out ---------->
-assign asr_out = i_shift_imm_zero         ? {i_in[31], {32{i_in[31]}}             } :
-
-                 i_shift_amount == 8'd0 ? {i_carry_in, i_in                     } :  // fall through case
-                 i_shift_amount == 8'd1 ? {i_in[ 0], { 2{i_in[31]}}, i_in[30: 1]} :
-                 i_shift_amount == 8'd2 ? {i_in[ 1], { 3{i_in[31]}}, i_in[30: 2]} :
-                 i_shift_amount == 8'd3 ? {i_in[ 2], { 4{i_in[31]}}, i_in[30: 3]} :
-                 i_shift_amount == 8'd4 ? {i_in[ 3], { 5{i_in[31]}}, i_in[30: 4]} :
-                 i_shift_amount == 8'd5 ? {i_in[ 4], { 6{i_in[31]}}, i_in[30: 5]} :
-                 i_shift_amount == 8'd6 ? {i_in[ 5], { 7{i_in[31]}}, i_in[30: 6]} :
-                 i_shift_amount == 8'd7 ? {i_in[ 6], { 8{i_in[31]}}, i_in[30: 7]} :
-                 i_shift_amount == 8'd8 ? {i_in[ 7], { 9{i_in[31]}}, i_in[30: 8]} :
-                 i_shift_amount == 8'd9 ? {i_in[ 8], {10{i_in[31]}}, i_in[30: 9]} :
-                    
-                 i_shift_amount == 8'd10 ? {i_in[ 9], {11{i_in[31]}}, i_in[30:10]} :
-                 i_shift_amount == 8'd11 ? {i_in[10], {12{i_in[31]}}, i_in[30:11]} :
-                 i_shift_amount == 8'd12 ? {i_in[11], {13{i_in[31]}}, i_in[30:12]} :
-                 i_shift_amount == 8'd13 ? {i_in[12], {14{i_in[31]}}, i_in[30:13]} :
-                 i_shift_amount == 8'd14 ? {i_in[13], {15{i_in[31]}}, i_in[30:14]} :
-                 i_shift_amount == 8'd15 ? {i_in[14], {16{i_in[31]}}, i_in[30:15]} :
-                 i_shift_amount == 8'd16 ? {i_in[15], {17{i_in[31]}}, i_in[30:16]} :
-                 i_shift_amount == 8'd17 ? {i_in[16], {18{i_in[31]}}, i_in[30:17]} :
-                 i_shift_amount == 8'd18 ? {i_in[17], {19{i_in[31]}}, i_in[30:18]} :
-                 i_shift_amount == 8'd19 ? {i_in[18], {20{i_in[31]}}, i_in[30:19]} :
-
-                 i_shift_amount == 8'd20 ? {i_in[19], {21{i_in[31]}}, i_in[30:20]} :
-                 i_shift_amount == 8'd21 ? {i_in[20], {22{i_in[31]}}, i_in[30:21]} :
-                 i_shift_amount == 8'd22 ? {i_in[21], {23{i_in[31]}}, i_in[30:22]} :
-                 i_shift_amount == 8'd23 ? {i_in[22], {24{i_in[31]}}, i_in[30:23]} :
-                 i_shift_amount == 8'd24 ? {i_in[23], {25{i_in[31]}}, i_in[30:24]} :
-                 i_shift_amount == 8'd25 ? {i_in[24], {26{i_in[31]}}, i_in[30:25]} :
-                 i_shift_amount == 8'd26 ? {i_in[25], {27{i_in[31]}}, i_in[30:26]} :
-                 i_shift_amount == 8'd27 ? {i_in[26], {28{i_in[31]}}, i_in[30:27]} :
-                 i_shift_amount == 8'd28 ? {i_in[27], {29{i_in[31]}}, i_in[30:28]} :
-                 i_shift_amount == 8'd29 ? {i_in[28], {30{i_in[31]}}, i_in[30:29]} :
-
-                 i_shift_amount == 8'd30 ? {i_in[29], {31{i_in[31]}}, i_in[30 ]} :
-                 i_shift_amount == 8'd31 ? {i_in[30], {32{i_in[31]}}             } :
-                                            {i_in[31], {32{i_in[31]}}             } ; // >= 32
-                                            
-
-                                          // carry out, < ------- out --------->
-assign ror_out = i_shift_imm_zero              ? {i_in[ 0], i_carry_in,  i_in[31: 1]} :  // RXR, (ROR w/ imm 0)
-
-                 i_shift_amount[7:0] == 8'd0 ? {i_carry_in, i_in                  } :  // fall through case
-                 
-                 i_shift_amount[4:0] == 5'd0 ? {i_in[31], i_in                    } :  // Rs > 31
-                 i_shift_amount[4:0] == 5'd1 ? {i_in[ 0], i_in[    0], i_in[31: 1]} :
-                 i_shift_amount[4:0] == 5'd2 ? {i_in[ 1], i_in[ 1: 0], i_in[31: 2]} :
-                 i_shift_amount[4:0] == 5'd3 ? {i_in[ 2], i_in[ 2: 0], i_in[31: 3]} :
-                 i_shift_amount[4:0] == 5'd4 ? {i_in[ 3], i_in[ 3: 0], i_in[31: 4]} :
-                 i_shift_amount[4:0] == 5'd5 ? {i_in[ 4], i_in[ 4: 0], i_in[31: 5]} :
-                 i_shift_amount[4:0] == 5'd6 ? {i_in[ 5], i_in[ 5: 0], i_in[31: 6]} :
-                 i_shift_amount[4:0] == 5'd7 ? {i_in[ 6], i_in[ 6: 0], i_in[31: 7]} :
-                 i_shift_amount[4:0] == 5'd8 ? {i_in[ 7], i_in[ 7: 0], i_in[31: 8]} :
-                 i_shift_amount[4:0] == 5'd9 ? {i_in[ 8], i_in[ 8: 0], i_in[31: 9]} :
-                    
-                 i_shift_amount[4:0] == 5'd10 ? {i_in[ 9], i_in[ 9: 0], i_in[31:10]} :
-                 i_shift_amount[4:0] == 5'd11 ? {i_in[10], i_in[10: 0], i_in[31:11]} :
-                 i_shift_amount[4:0] == 5'd12 ? {i_in[11], i_in[11: 0], i_in[31:12]} :
-                 i_shift_amount[4:0] == 5'd13 ? {i_in[12], i_in[12: 0], i_in[31:13]} :
-                 i_shift_amount[4:0] == 5'd14 ? {i_in[13], i_in[13: 0], i_in[31:14]} :
-                 i_shift_amount[4:0] == 5'd15 ? {i_in[14], i_in[14: 0], i_in[31:15]} :
-                 i_shift_amount[4:0] == 5'd16 ? {i_in[15], i_in[15: 0], i_in[31:16]} :
-                 i_shift_amount[4:0] == 5'd17 ? {i_in[16], i_in[16: 0], i_in[31:17]} :
-                 i_shift_amount[4:0] == 5'd18 ? {i_in[17], i_in[17: 0], i_in[31:18]} :
-                 i_shift_amount[4:0] == 5'd19 ? {i_in[18], i_in[18: 0], i_in[31:19]} :
-
-                 i_shift_amount[4:0] == 5'd20 ? {i_in[19], i_in[19: 0], i_in[31:20]} :
-                 i_shift_amount[4:0] == 5'd21 ? {i_in[20], i_in[20: 0], i_in[31:21]} :
-                 i_shift_amount[4:0] == 5'd22 ? {i_in[21], i_in[21: 0], i_in[31:22]} :
-                 i_shift_amount[4:0] == 5'd23 ? {i_in[22], i_in[22: 0], i_in[31:23]} :
-                 i_shift_amount[4:0] == 5'd24 ? {i_in[23], i_in[23: 0], i_in[31:24]} :
-                 i_shift_amount[4:0] == 5'd25 ? {i_in[24], i_in[24: 0], i_in[31:25]} :
-                 i_shift_amount[4:0] == 5'd26 ? {i_in[25], i_in[25: 0], i_in[31:26]} :
-                 i_shift_amount[4:0] == 5'd27 ? {i_in[26], i_in[26: 0], i_in[31:27]} :
-                 i_shift_amount[4:0] == 5'd28 ? {i_in[27], i_in[27: 0], i_in[31:28]} :
-                 i_shift_amount[4:0] == 5'd29 ? {i_in[28], i_in[28: 0], i_in[31:29]} :
-
-                 i_shift_amount[4:0] == 5'd30 ? {i_in[29], i_in[29: 0], i_in[31:30]} :
-                                                 {i_in[30], i_in[30: 0], i_in[31:31]} ;
-                 
-
- 
-assign {o_carry_out, o_out} = i_function == LSL ? lsl_out :
-                              i_function == LSR ? lsr_out :
-                              i_function == ASR ? asr_out :
-                                                  ror_out ;
-
-endmodule
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_barrel_shift_fpga.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_barrel_shift_fpga.v
deleted file mode 100644
index 9ffc3e6..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_barrel_shift_fpga.v
+++ /dev/null
@@ -1,417 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Barrel Shifter for Amber 2 Core                             //
-//                                                              //
-//  The design is optimized for Altera family of FPGAs,         //
-//  and it can be used directly or adapted other N-to-1 LUT     //
-//  FPGA platforms.                                             //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Provides 32-bit shifts LSL, LSR, ASR and ROR                //
-//                                                              //
-//  Author(s):                                                  //
-//      - Dmitry Tarnyagin, dmitry.tarnyagin@lockless.no        //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010-2013 Authors and OPENCORES.ORG            //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-module a23_barrel_shift_fpga (
-
-input       [31:0]          i_in,
-input                       i_carry_in,
-input       [7:0]           i_shift_amount,     // uses 8 LSBs of Rs, or a 5 bit immediate constant
-input                       i_shift_imm_zero,   // high when immediate shift value of zero selected
-input       [1:0]           i_function,
-
-output      [31:0]          o_out,
-output                      o_carry_out
-
-);
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Parameters file for Amber 2 Core                            //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Holds general parameters that are used is several core      //
-//  modules                                                     //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// Instruction Types
-localparam [3:0]    REGOP       = 4'h0, // Data processing
-                    MULT        = 4'h1, // Multiply
-                    SWAP        = 4'h2, // Single Data Swap
-                    TRANS       = 4'h3, // Single data transfer
-                    MTRANS      = 4'h4, // Multi-word data transfer
-                    BRANCH      = 4'h5, // Branch
-                    CODTRANS    = 4'h6, // Co-processor data transfer
-                    COREGOP     = 4'h7, // Co-processor data operation
-                    CORTRANS    = 4'h8, // Co-processor register transfer
-                    SWI         = 4'h9; // software interrupt
-
-
-// Opcodes
-localparam [3:0] AND = 4'h0,        // Logical AND
-                 EOR = 4'h1,        // Logical Exclusive OR
-                 SUB = 4'h2,        // Subtract
-                 RSB = 4'h3,        // Reverse Subtract
-                 ADD = 4'h4,        // Add
-                 ADC = 4'h5,        // Add with Carry
-                 SBC = 4'h6,        // Subtract with Carry
-                 RSC = 4'h7,        // Reverse Subtract with Carry
-                 TST = 4'h8,        // Test  (using AND operator)
-                 TEQ = 4'h9,        // Test Equivalence (using EOR operator)
-                 CMP = 4'ha,       // Compare (using Subtract operator)
-                 CMN = 4'hb,       // Compare Negated
-                 ORR = 4'hc,       // Logical OR
-                 MOV = 4'hd,       // Move
-                 BIC = 4'he,       // Bit Clear (using AND & NOT operators)
-                 MVN = 4'hf;       // Move NOT
-                 
-// Condition Encoding
-localparam [3:0] EQ  = 4'h0,        // Equal            / Z set
-                 NE  = 4'h1,        // Not equal        / Z clear
-                 CS  = 4'h2,        // Carry set        / C set
-                 CC  = 4'h3,        // Carry clear      / C clear
-                 MI  = 4'h4,        // Minus            / N set
-                 PL  = 4'h5,        // Plus             / N clear
-                 VS  = 4'h6,        // Overflow         / V set
-                 VC  = 4'h7,        // No overflow      / V clear
-                 HI  = 4'h8,        // Unsigned higher  / C set and Z clear
-                 LS  = 4'h9,        // Unsigned lower
-                                    // or same          / C clear or Z set
-                 GE  = 4'ha,        // Signed greater 
-                                    // than or equal    / N == V
-                 LT  = 4'hb,        // Signed less than / N != V
-                 GT  = 4'hc,        // Signed greater
-                                    // than             / Z == 0, N == V
-                 LE  = 4'hd,        // Signed less than
-                                    // or equal         / Z == 1, N != V
-                 AL  = 4'he,        // Always
-                 NV  = 4'hf;        // Never
-
-// Any instruction with a condition field of 0b1111 is UNPREDICTABLE.                
-                
-// Shift Types
-localparam [1:0] LSL = 2'h0,
-                 LSR = 2'h1,
-                 ASR = 2'h2,
-                 RRX = 2'h3,
-                 ROR = 2'h3; 
- 
-// Modes
-localparam [1:0] SVC  =  2'b11,  // Supervisor
-                 IRQ  =  2'b10,  // Interrupt
-                 FIRQ =  2'b01,  // Fast Interrupt
-                 USR  =  2'b00;  // User
-
-// One-Hot Mode encodings
-localparam [5:0] OH_USR  = 0,
-                 OH_IRQ  = 1,
-                 OH_FIRQ = 2,
-                 OH_SVC  = 3;
-
-
-
-wire [31:0] rot_prod;                           // Input rotated by the shift amount
-
-wire [1:0]  lsl_out;                            // LSL: {carry, bit_31}
-wire [1:0]  lsr_out;                            // LSR: {carry, bit_31}
-wire [1:0]  asr_out;                            // ASR: {carry, bit_31}
-wire [1:0]  ror_out;                            // ROR: {carry, bit_31}
-
-reg [32:0]  lsl_mask;                           // Left-hand mask
-reg [32:0]  lsr_mask;                           // Right-hand mask
-reg [15:0]  low_mask;                           // Mask calculation helper
-
-reg [4:0]   shift_amount;                       // Shift amount for the low-level shifter
-
-reg [2:0]   lsl_selector;                       // Left shift {shift_32, shift_over, shift_amount[4]}
-reg [2:0]   lsr_selector;                       // Right shift {shift_32, shift_over, shift_amount[4]}
-reg [3:0]   low_selector;                       // {shift_amount[3:0]}
-
-reg         shift_nzero;                        // Amount is not zero
-reg         shift_over;                         // Amount is 32 or higher
-reg         shift_32;                           // Amount is exactly 32
-reg         asr_sign;                           // Sign for ASR shift
-reg         direction;                          // Shift direction
-
-wire [31:0] p_r;                                // 1 bit rotated rot_prod
-wire [31:0] p_l;                                // Alias for the rot_prod 
-
-
-// Implementation details:
-// Design is based on masking of rotated input by a left- and right- hand masks.
-// Rotated product calculation requires 5 levels of combinational logic, and masks
-// must be ready before the product is ready. In fact masks require just 3 to 4 levels
-// of logic cells using 4-to-1/2x3-to-1 Altera.
-
-always @*
-begin
-	shift_32 = i_shift_amount == 32;
-
-	shift_over = |i_shift_amount[7:5];
-
-	shift_nzero = |i_shift_amount[7:0];
-
-	shift_amount = i_shift_amount[4:0];
-
-	if (i_shift_imm_zero) begin
-		if (i_function == LSR || i_function == ASR) begin
-			// The form of the shift field which might be
-			// expected to correspond to LSR #0 is used
-			// to encode LSR #32, which has a zero result
-			// with bit 31 of Rm as the carry output. 
-			shift_nzero = 1'b1;
-			shift_over = 1'b1;
-			// Redundant and can be optimized out
-			// shift_32 = 1'b1;
-		end else if (i_function == ROR) begin
-			// RXR, (ROR w/ imm 0)
-			shift_amount[0] = 1'b1;
-			shift_nzero = 1'b1;
-		end
-	end
-
-	// LSB sub-selector calculation. Usually it is taken
-	// directly from the shift_amount, but ROR requires
-	// no masking at all.
-	case (i_function)
-		LSL: low_selector = shift_amount[3:0];
-		LSR: low_selector = shift_amount[3:0];
-		ASR: low_selector = shift_amount[3:0];
-		ROR: low_selector = 4'b0000;
-	endcase
-
-	// Left-hand MSB sub-selector calculation. Opaque for every function but LSL.
-	case (i_function)
-		LSL: lsl_selector = {shift_32, shift_over, shift_amount[4]};
-		LSR: lsl_selector = 3'b0_1_0; // Opaque mask selector
-		ASR: lsl_selector = 3'b0_1_0; // Opaque mask selector
-		ROR: lsl_selector = 3'b0_1_0; // Opaque mask selector
-	endcase
-
-	// Right-hand MSB sub-selector calculation. Opaque for LSL, transparent for ROR.
-	case (i_function)
-		LSL: lsr_selector = 3'b0_1_0; // Opaque mask selector
-		LSR: lsr_selector = {shift_32, shift_over, shift_amount[4]};
-		ASR: lsr_selector = {shift_32, shift_over, shift_amount[4]};
-		ROR: lsr_selector = 3'b0_0_0; // Transparent mask selector
-	endcase
-
-	// Direction
-	case (i_function)
-		LSL: direction = 1'b0; // Left shift
-		LSR: direction = 1'b1; // Right shift
-		ASR: direction = 1'b1; // Right shift
-		ROR: direction = 1'b1; // Right shift
-	endcase
-
-	// Sign for ASR shift
-	asr_sign = 1'b0;
-	if (i_function == ASR && i_in[31])
-		asr_sign = 1'b1;
-end
-
-// Generic rotate. Theoretical cost: 32x5 4-to-1 LUTs.
-// Practically a bit higher due to high fanout of "direction".
-generate
-genvar i, j;
-	for (i = 0; i < 5; i = i + 1)
-	begin : netgen
-		wire [31:0] in;
-		reg [31:0] out;
-		for (j = 0; j < 32; j = j + 1)
-		begin : net
-			always @*
-				out[j] = in[j] & (~shift_amount[i] ^ direction) |
-					 in[wrap(j, i)] & (shift_amount[i] ^ direction);
-		end
-	end
-
-	// Order is reverted with respect to volatile shift_amount[0]
-	assign netgen[4].in = i_in;
-	for (i = 1; i < 5; i = i + 1)
-	begin : router
-		assign netgen[i-1].in = netgen[i].out;
-	end
-endgenerate
-
-// Aliasing
-assign rot_prod = netgen[0].out;
-
-// Submask calculated from LSB sub-selector.
-// Cost: 16 4-to-1 LUTs.
-always @*
-case (low_selector) // synthesis full_case parallel_case
-	4'b0000:	low_mask = 16'hffff;
-	4'b0001:	low_mask = 16'hfffe;
-	4'b0010:	low_mask = 16'hfffc;
-	4'b0011:	low_mask = 16'hfff8;
-	4'b0100:	low_mask = 16'hfff0;
-	4'b0101:	low_mask = 16'hffe0;
-	4'b0110:	low_mask = 16'hffc0;
-	4'b0111:	low_mask = 16'hff80;
-	4'b1000:	low_mask = 16'hff00;
-	4'b1001:	low_mask = 16'hfe00;
-	4'b1010:	low_mask = 16'hfc00;
-	4'b1011:	low_mask = 16'hf800;
-	4'b1100:	low_mask = 16'hf000;
-	4'b1101:	low_mask = 16'he000;
-	4'b1110:	low_mask = 16'hc000;
-	4'b1111:	low_mask = 16'h8000;
-endcase
-
-// Left-hand mask calculation.
-// Cost: 33 4-to-1 LUTs.
-always @*
-casez (lsl_selector) // synthesis full_case parallel_case
-	7'b1??:	lsl_mask =  33'h1_0000_0000;
-	7'b01?:	lsl_mask =  33'h0_0000_0000;
-	7'b001:	lsl_mask = { 1'h1, low_mask, 16'h0000};
-	7'b000:	lsl_mask = {17'h1_ffff, low_mask};
-endcase
-
-// Right-hand mask calculation.
-// Cost: 33 4-to-1 LUTs.
-always @*
-casez (lsr_selector) // synthesis full_case parallel_case
-	7'b1??:	lsr_mask =  33'h1_0000_0000;
-	7'b01?:	lsr_mask =  33'h0_0000_0000;
-	7'b000:	lsr_mask = { 1'h1, bit_swap(low_mask), 16'hffff};
-	7'b001:	lsr_mask = {17'h1_0000, bit_swap(low_mask)};
-endcase
-
-// Alias: right-rotated
-assign p_r = {rot_prod[30:0], rot_prod[31]};
-
-// Alias: left-rotated
-assign p_l = rot_prod[31:0];
-
-// ROR MSB, handling special cases
-assign ror_out[0] = i_shift_imm_zero ?	i_carry_in :
-					p_r[31];
-
-// ROR carry, handling special cases
-assign ror_out[1] = i_shift_imm_zero ?	i_in[0] :
-			shift_nzero ?	p_r[31] :
-					i_carry_in;
-
-// LSL MSB
-assign lsl_out[0] = 	p_l[31] & lsl_mask[31];
-
-// LSL carry, handling special cases
-assign lsl_out[1] = 	shift_nzero ?	p_l[0] & lsl_mask[32]:
-					i_carry_in;
-
-// LSR MSB
-assign lsr_out[0] = 	p_r[31] & lsr_mask[31];
-
-// LSR carry, handling special cases
-assign lsr_out[1] = i_shift_imm_zero ?	i_in[31] :
-			shift_nzero ?	p_r[31] & lsr_mask[32]:
-					i_carry_in;
-
-// ASR MSB
-assign asr_out[0] = 	i_in[31] ?	i_in[31] :
-					p_r[31] & lsr_mask[31] ;
-
-// LSR carry, handling special cases
-assign asr_out[1] =	shift_over ?	i_in[31] :
-			shift_nzero ?	p_r[31] :
-					i_carry_in;
-
-// Carry and MSB are calculated as above
-assign {o_carry_out, o_out[31]} = i_function == LSL ? lsl_out :
-                              i_function == LSR ? lsr_out :
-                              i_function == ASR ? asr_out :
-                                                  ror_out ;
-
-// And the rest of result is the masked rotated input.
-assign o_out[30:0] =	(p_l[30:0] & lsl_mask[30:0]) |
-			(p_r[30:0] & lsr_mask[30:0]) |
-			(~lsr_mask[30:0] & {31{asr_sign}});
-
-// Rotate: calculate bit pos for level "level" and offset "pos"
-function [4:0] wrap;
-input integer pos;
-input integer level;
-integer out;
-begin
-	out = pos - (1 << level);
-	wrap = out[4:0];
-end
-endfunction
-
-// Swap bits in the input 16-bit value
-function [15:0] bit_swap;
-input [15:0] value;
-integer i;
-begin
-	for (i = 0; i < 16; i = i + 1)
-		bit_swap[i] = value[15 - i];
-end
-endfunction
-
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_cache.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_cache.v
deleted file mode 100644
index 45792bb..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_cache.v
+++ /dev/null
@@ -1,1296 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  L1 Cache for Amber 2 Core                                   //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Synthesizable L1 Unified Data and Instruction Cache         //
-//  Cache is 4-way, 256 line and 16 bytes per line for          //
-//  a total of 16KB. The cache policy is write-through and      //
-//  read allocate. For swap instructions (SWP and SWPB) the     //
-//  location is evicted from the cache and read from main       //
-//  memory.                                                     //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Global testbench defines                                    //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Contains a set of defines for each module so if the module  //
-//  hierarchy changes, hierarchical references to signals       //
-//  will still work as long as this file is updated.            //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-// ---------------------------------------------------------------
-// Module hierarchy defines
-// ---------------------------------------------------------------
-
-    
-
-
-        // ---------------------------------------------------------------
-
-
-
-// Simplified Main Memory Model
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Amber Configuration and Debug for the AMber 2 Core          //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Contains a set of defines used to configure and debug       //
-//  the Amber core                                              //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// Cache Ways
-// Changing this parameter is the recommended
-// way to change the Amber cache size; 2, 3, 4 and 8 ways are supported.
-//   2 ways -> 8KB  cache
-//   3 ways -> 12KB cache
-//   4 ways -> 16KB cache
-//   8 ways -> 32KB cache
-
-// Use ram-based register bank implementation
-// `define A23_RAM_REGISTER_BANK
-
-// --------------------------------------------------------------------
-// Debug switches 
-// --------------------------------------------------------------------
-
-// Enable the decompiler. The default output file is amber.dis
-//`define A23_DECOMPILE
-
-// Co-processor 15 debug. Registers in here control the cache
-//`define A23_COPRO15_DEBUG
-
-// Cache debug
-//`define A23_CACHE_DEBUG
-
-// --------------------------------------------------------------------
-
-
-// --------------------------------------------------------------------
-// File Names
-// --------------------------------------------------------------------
-    
-
-
-module a23_cache 
-#(
-
-// ---------------------------------------------------------
-// Cache Configuration
-
-// Limited to Linux 4k page sizes -> 256 lines
-parameter CACHE_LINES          = 256,  
-
-// This cannot be changed without some major surgeory on
-// this module                                       
-parameter CACHE_WORDS_PER_LINE = 4,
-
-// Changing this parameter is the recommended
-// way to change the overall cache size; 2, 4 and 8 ways are supported.
-//   2 ways -> 8KB  cache
-//   4 ways -> 16KB cache
-//   8 ways -> 32KB cache
-parameter WAYS              = 4 ,
-
-// derived configuration parameters
-parameter CACHE_ADDR_WIDTH  = 8, // log2 ( CACHE_LINES ),                  // = 8
-parameter WORD_SEL_WIDTH    = 2, // log2 ( CACHE_WORDS_PER_LINE ),         // = 2
-parameter TAG_ADDR_WIDTH    = 32 - CACHE_ADDR_WIDTH - WORD_SEL_WIDTH - 2,  // = 20
-parameter TAG_WIDTH         = TAG_ADDR_WIDTH + 1,                          // = 21, including Valid flag
-parameter CACHE_LINE_WIDTH  = CACHE_WORDS_PER_LINE * 32,                   // = 128
-parameter TAG_ADDR32_LSB    = CACHE_ADDR_WIDTH + WORD_SEL_WIDTH + 2,       // = 12
-parameter CACHE_ADDR32_MSB  = CACHE_ADDR_WIDTH + WORD_SEL_WIDTH + 2 - 1,   // = 11
-parameter CACHE_ADDR32_LSB  =                    WORD_SEL_WIDTH + 2 ,   // = 4
-parameter WORD_SEL_MSB      = WORD_SEL_WIDTH + 2 - 1,                      // = 3
-parameter WORD_SEL_LSB      =                  2 // = 2
-// ---------------------------------------------------------
-)
-
-
-(
-input                               i_clk,
-
-// Read / Write requests from core
-input                               i_select,
-input                               i_exclusive,        // exclusive access, part of swap instruction
-input      [31:0]                   i_write_data,
-input                               i_write_enable,     // core issued write request
-input      [31:0]                   i_address,          // registered address from execute
-input      [31:0]                   i_address_nxt,      // un-registered version of address from execute stage
-input      [3:0]                    i_byte_enable,
-input                               i_cache_enable,     // from co-processor 15 configuration register
-input                               i_cache_flush,      // from co-processor 15 register
-
-output      [31:0]                  o_read_data,                                                       
-input                               i_core_stall,
-output                              o_stall,
-
-// WB Read Request                                                          
-output                              o_wb_req,          // Read Request
-input      [31:0]                   i_wb_address,      // wb bus                                 
-input      [31:0]                   i_wb_read_data,    // wb bus                              
-input                               i_wb_stall         // wb_stb && !wb_ack
-);
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Parameters file for Amber 2 Core                            //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Holds general parameters that are used is several core      //
-//  modules                                                     //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// Instruction Types
-localparam [3:0]    REGOP       = 4'h0, // Data processing
-                    MULT        = 4'h1, // Multiply
-                    SWAP        = 4'h2, // Single Data Swap
-                    TRANS       = 4'h3, // Single data transfer
-                    MTRANS      = 4'h4, // Multi-word data transfer
-                    BRANCH      = 4'h5, // Branch
-                    CODTRANS    = 4'h6, // Co-processor data transfer
-                    COREGOP     = 4'h7, // Co-processor data operation
-                    CORTRANS    = 4'h8, // Co-processor register transfer
-                    SWI         = 4'h9; // software interrupt
-
-
-// Opcodes
-localparam [3:0] AND = 4'h0,        // Logical AND
-                 EOR = 4'h1,        // Logical Exclusive OR
-                 SUB = 4'h2,        // Subtract
-                 RSB = 4'h3,        // Reverse Subtract
-                 ADD = 4'h4,        // Add
-                 ADC = 4'h5,        // Add with Carry
-                 SBC = 4'h6,        // Subtract with Carry
-                 RSC = 4'h7,        // Reverse Subtract with Carry
-                 TST = 4'h8,        // Test  (using AND operator)
-                 TEQ = 4'h9,        // Test Equivalence (using EOR operator)
-                 CMP = 4'ha,       // Compare (using Subtract operator)
-                 CMN = 4'hb,       // Compare Negated
-                 ORR = 4'hc,       // Logical OR
-                 MOV = 4'hd,       // Move
-                 BIC = 4'he,       // Bit Clear (using AND & NOT operators)
-                 MVN = 4'hf;       // Move NOT
-                 
-// Condition Encoding
-localparam [3:0] EQ  = 4'h0,        // Equal            / Z set
-                 NE  = 4'h1,        // Not equal        / Z clear
-                 CS  = 4'h2,        // Carry set        / C set
-                 CC  = 4'h3,        // Carry clear      / C clear
-                 MI  = 4'h4,        // Minus            / N set
-                 PL  = 4'h5,        // Plus             / N clear
-                 VS  = 4'h6,        // Overflow         / V set
-                 VC  = 4'h7,        // No overflow      / V clear
-                 HI  = 4'h8,        // Unsigned higher  / C set and Z clear
-                 LS  = 4'h9,        // Unsigned lower
-                                    // or same          / C clear or Z set
-                 GE  = 4'ha,        // Signed greater 
-                                    // than or equal    / N == V
-                 LT  = 4'hb,        // Signed less than / N != V
-                 GT  = 4'hc,        // Signed greater
-                                    // than             / Z == 0, N == V
-                 LE  = 4'hd,        // Signed less than
-                                    // or equal         / Z == 1, N != V
-                 AL  = 4'he,        // Always
-                 NV  = 4'hf;        // Never
-
-// Any instruction with a condition field of 0b1111 is UNPREDICTABLE.                
-                
-// Shift Types
-localparam [1:0] LSL = 2'h0,
-                 LSR = 2'h1,
-                 ASR = 2'h2,
-                 RRX = 2'h3,
-                 ROR = 2'h3; 
- 
-// Modes
-localparam [1:0] SVC  =  2'b11,  // Supervisor
-                 IRQ  =  2'b10,  // Interrupt
-                 FIRQ =  2'b01,  // Fast Interrupt
-                 USR  =  2'b00;  // User
-
-// One-Hot Mode encodings
-localparam [5:0] OH_USR  = 0,
-                 OH_IRQ  = 1,
-                 OH_FIRQ = 2,
-                 OH_SVC  = 3;
-
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Functions for Amber 2 Core                                  //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Functions used in more than one module                      //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// ========================================================
-// PC Filter - Remove the status bits 
-// ========================================================
-function [31:0] pcf;
-input [31:0] pc_reg;
-    begin
-    pcf = {6'd0, pc_reg[25:2], 2'd0};
-    end
-endfunction
-
-
-// ========================================================
-// 4-bit to 16-bit 1-hot decode
-// ========================================================
-function [14:0] decode;
-input [3:0] reg_sel;
-begin
-case ( reg_sel )
-    4'h0:    decode = 15'h0001;
-    4'h1:    decode = 15'h0002;
-    4'h2:    decode = 15'h0004;
-    4'h3:    decode = 15'h0008;
-    4'h4:    decode = 15'h0010;
-    4'h5:    decode = 15'h0020;
-    4'h6:    decode = 15'h0040;
-    4'h7:    decode = 15'h0080;
-    4'h8:    decode = 15'h0100;
-    4'h9:    decode = 15'h0200;
-    4'ha:    decode = 15'h0400;
-    4'hb:    decode = 15'h0800;
-    4'hc:    decode = 15'h1000;
-    4'hd:    decode = 15'h2000;
-    4'he:    decode = 15'h4000;
-    default: decode = 15'h0000;
-endcase
-end
-endfunction
-
-
-// ========================================================
-// Convert Stats Bits Mode to one-hot encoded version
-// ========================================================
-function [3:0] oh_status_bits_mode;
-input [1:0] fn_status_bits_mode;
-begin
-oh_status_bits_mode = 
-    fn_status_bits_mode == SVC  ? 1'd1 << OH_SVC  :
-    fn_status_bits_mode == IRQ  ? 1'd1 << OH_IRQ  :
-    fn_status_bits_mode == FIRQ ? 1'd1 << OH_FIRQ :
-                                  1'd1 << OH_USR  ;
-end
-endfunction
-
-// ========================================================
-// Convert mode into ascii name
-// ========================================================
-function [(14*8)-1:0]  mode_name;
-input [4:0] mode;
-begin
-
-mode_name    = mode == USR  ? "User          " :
-               mode == SVC  ? "Supervisor    " :
-               mode == IRQ  ? "Interrupt     " :
-               mode == FIRQ ? "Fast Interrupt" :
-                              "UNKNOWN       " ;
-end
-endfunction
-
-
-// ========================================================
-// Conditional Execution Function
-// ========================================================
-// EQ Z set
-// NE Z clear
-// CS C set
-// CC C clear
-// MI N set
-// PL N clear
-// VS V set
-// VC V clear
-// HI C set and Z clear
-// LS C clear or Z set
-// GE N == V
-// LT N != V
-// GT Z == 0,N == V
-// LE Z == 1 or N != V
-// AL Always (unconditional)
-// NV Never
-
-function conditional_execute;
-input [3:0] condition;
-input [3:0] flags;
-begin
-conditional_execute  
-               = ( condition == AL                                        ) ||
-                 ( condition == EQ  &&  flags[2]                          ) ||
-                 ( condition == NE  && !flags[2]                          ) ||
-                 ( condition == CS  &&  flags[1]                          ) ||
-                 ( condition == CC  && !flags[1]                          ) ||
-                 ( condition == MI  &&  flags[3]                          ) ||
-                 ( condition == PL  && !flags[3]                          ) ||
-                 ( condition == VS  &&  flags[0]                          ) ||
-                 ( condition == VC  && !flags[0]                          ) ||
-            
-                 ( condition == HI  &&    flags[1] && !flags[2]           ) ||
-                 ( condition == LS  &&  (!flags[1] ||  flags[2])          ) ||
-            
-                 ( condition == GE  &&  flags[3] == flags[0]              ) ||
-                 ( condition == LT  &&  flags[3] != flags[0]              ) ||
-
-                 ( condition == GT  &&  !flags[2] && flags[3] == flags[0] ) ||
-                 ( condition == LE  &&  (flags[2] || flags[3] != flags[0])) ;
-            
-end
-endfunction
-
-
-// ========================================================
-// Log 2
-// ========================================================
-
-function [31:0] log2;
-input    [31:0] num;
-integer i;
-integer out;
-begin
-  out = 32'd0;
-  for (i=0; i<30; i=i+1)
-    if ((2**i > num) && (out == 0))
-      out = i-1;
-  log2 = out;
-end
-endfunction
-
-// One-hot encoded
-localparam       C_INIT   = 0,
-                 C_CORE   = 1,
-                 C_FILL   = 2,
-                 C_INVA   = 3,
-                 C_STATES = 4;
-                 
-localparam [3:0] CS_INIT            = 4'd0,
-                 CS_IDLE            = 4'd1,
-                 CS_FILL1           = 4'd2,
-                 CS_FILL2           = 4'd3,
-                 CS_FILL3           = 4'd4,
-                 CS_FILL4           = 4'd5,
-                 CS_FILL_COMPLETE   = 4'd6,
-                 CS_TURN_AROUND     = 4'd7,
-                 CS_WRITE_HIT1      = 4'd8,
-                 CS_EX_DELETE       = 4'd9;
-                 
-
-reg  [3:0]                  c_state    = CS_IDLE;
-reg  [C_STATES-1:0]         source_sel = 1'd1 << C_CORE;
-reg  [CACHE_ADDR_WIDTH:0]   init_count = 'd0;
-                 
-wire [TAG_WIDTH-1:0]        tag_rdata_way [WAYS-1:0];
-wire [CACHE_LINE_WIDTH-1:0] data_rdata_way[WAYS-1:0];
-wire [WAYS-1:0]             data_wenable_way;
-wire [WAYS-1:0]             data_hit_way;
-wire [WAYS-1:0]             tag_wenable_way;
-reg  [WAYS-1:0]             select_way = 'd0;
-wire [WAYS-1:0]             next_way;
-reg  [WAYS-1:0]             valid_bits_r = 'd0;
-
-reg  [3:0]                  random_num = 4'hf;
-
-wire [CACHE_ADDR_WIDTH-1:0] tag_address;
-wire [TAG_WIDTH-1:0]        tag_wdata;
-wire                        tag_wenable;
-
-wire [CACHE_LINE_WIDTH-1:0] read_miss_wdata;
-wire [CACHE_LINE_WIDTH-1:0] write_hit_wdata;
-wire [CACHE_LINE_WIDTH-1:0] data_wdata;
-wire [CACHE_ADDR_WIDTH-1:0] data_address;
-wire [31:0]                 write_data_word;
-
-wire                        hit;
-wire                        read_miss;
-wire                        write_miss;
-wire                        write_hit;
-
-reg  [31:0]                 miss_address = 'd0;
-wire [CACHE_LINE_WIDTH-1:0] hit_rdata;
-
-wire                        write_stall;
-wire                        cache_busy_stall;
-wire                        read_stall;
-
-wire                        enable;
-wire [CACHE_ADDR_WIDTH-1:0] address;
-
-reg  [CACHE_LINE_WIDTH-1:0] wb_rdata_burst = 'd0;
-reg                         wb_read_buf_valid = 'd0;
-reg  [31:0]                 wb_read_buf_address = 'd0;
-reg  [31:0]                 wb_read_buf_data = 'd0;
-wire                        wb_read_buf_hit;
-
-wire                        exclusive_access;
-wire                        ex_read_hit;
-reg                         ex_read_hit_r = 'd0;
-reg  [WAYS-1:0]             ex_read_hit_way = 'd0;
-reg  [CACHE_ADDR_WIDTH-1:0] ex_read_address;
-wire                        ex_read_hit_clear;
-wire                        ex_read_cache_busy;
-
-genvar                      i;
-
-// ======================================
-// Address to use for cache access
-// ======================================
-// If currently stalled then the address for the next
-// cycle will be the same as it is in the current cycle
-//
-assign address = i_core_stall ? i_address    [CACHE_ADDR32_MSB:CACHE_ADDR32_LSB] :
-                                i_address_nxt[CACHE_ADDR32_MSB:CACHE_ADDR32_LSB] ;
-
-// ======================================
-// Outputs
-// ======================================
-assign o_read_data      = wb_read_buf_hit                              ? wb_read_buf_data   :
-                          i_address[WORD_SEL_MSB:WORD_SEL_LSB] == 2'd0 ? hit_rdata [31:0]   :
-                          i_address[WORD_SEL_MSB:WORD_SEL_LSB] == 2'd1 ? hit_rdata [63:32]  :
-                          i_address[WORD_SEL_MSB:WORD_SEL_LSB] == 2'd2 ? hit_rdata [95:64]  :
-                                                                         hit_rdata [127:96] ;
-
-// Don't allow the cache to stall the wb i/f for an exclusive access
-// The cache needs a couple of cycles to flush a potential copy of the exclusive
-// address, but the wb can do the access in parallel. So there is no
-// stall in the state CS_EX_DELETE, even though the cache is out of action. 
-// This works fine as long as the wb is stalling the core
-assign o_stall          = read_stall || write_stall || cache_busy_stall || ex_read_cache_busy;
-
-assign o_wb_req        = (( read_miss || write_miss ) && c_state == CS_IDLE ) || 
-                          c_state == CS_WRITE_HIT1;
-
-     
-// ======================================
-// Cache State Machine
-// ======================================
-
-// Little State Machine to Flush Tag RAMS
-always @ ( posedge i_clk )
-    if ( i_cache_flush )
-        begin
-        c_state     <= C_INIT;
-        source_sel  <= 1'd1 << C_INIT;
-        init_count  <= 'd0;
-                end
-    else    
-        case ( c_state )
-            CS_INIT :
-                if ( init_count < CACHE_LINES [CACHE_ADDR_WIDTH:0] )
-                    begin
-                    init_count  <= init_count + 1'd1;
-                    source_sel  <= 1'd1 << C_INIT;
-                    end
-                else
-                    begin
-                    source_sel  <= 1'd1 << C_CORE;
-                    c_state     <= CS_TURN_AROUND;
-                    end 
-                       
-             CS_IDLE :
-                begin
-                source_sel  <= 1'd1 << C_CORE;
-                
-                if ( ex_read_hit || ex_read_hit_r )
-                    begin
-                    select_way  <= data_hit_way | ex_read_hit_way;
-                    c_state     <= CS_EX_DELETE;        
-                    source_sel  <= 1'd1 << C_INVA;
-                    end
-                else if ( read_miss ) 
-                    begin
-                    // wb read request asserted, wait for ack
-                    if ( !i_wb_stall )   
-                        c_state <= CS_FILL1; 
-                    end           
-                else if ( write_hit )
-                    c_state <= CS_WRITE_HIT1;        
-               end
-                   
-                   
-             CS_FILL1 :
-                begin
-                // wb read request asserted, wait for ack
-                if ( !i_wb_stall )
-                    c_state <= CS_FILL2;
-                end
-                
-                
-             CS_FILL2 :
-                // first read of burst of 4
-                // wb read request asserted, wait for ack
-                if ( !i_wb_stall )
-                    c_state <= CS_FILL3;
-
-
-             CS_FILL3 :
-                // second read of burst of 4
-                // wb read request asserted, wait for ack
-                if ( !i_wb_stall )
-                    c_state <= CS_FILL4;
-                
-                
-             CS_FILL4 :
-                // third read of burst of 4
-                // wb read request asserted, wait for ack
-                if ( !i_wb_stall ) 
-                    begin
-                    c_state     <= CS_FILL_COMPLETE;
-                    source_sel  <= 1'd1 << C_FILL;
-                
-                    // Pick a way to write the cache update into
-                    // Either pick one of the invalid caches, or if all are valid, then pick
-                    // one randomly
-                    
-                    select_way  <= next_way; 
-                    random_num  <= {random_num[2], random_num[1], random_num[0], 
-                                     random_num[3]^random_num[2]};
-                    end
-
-
-             // Write the read fetch data in this cycle
-             CS_FILL_COMPLETE : 
-                // fourth read of burst of 4
-                // wb read request asserted, wait for ack
-                if ( !i_wb_stall )
-                    begin
-                    // Back to normal cache operations, but
-                    // use physical address for first read as
-                    // address moved before the stall was asserted for the read_miss
-                    // However don't use it if its a non-cached address!
-                    source_sel  <= 1'd1 << C_CORE;              
-                    c_state     <= CS_TURN_AROUND;    
-                    end                                 
-                                                        
-
-             // Ignore the tag read data in this cycle   
-             // Wait 1 cycle to pre-read the cache and return to normal operation                 
-             CS_TURN_AROUND : 
-                begin
-                c_state     <= CS_IDLE;
-                end
-                
-
-             // Flush the entry matching an exclusive access         
-             CS_EX_DELETE:       
-                begin
-                                c_state    <= CS_TURN_AROUND;
-                source_sel <= 1'd1 << C_CORE;
-                end
-                
-                                 
-             CS_WRITE_HIT1:
-                begin
-                // wait for an ack on the wb bus to complete the write
-                if ( !i_wb_stall )           
-                    c_state     <= CS_IDLE;
-                    
-                end
-        endcase                       
-
-
-// ======================================
-// Capture WB Block Read - burst of 4 words
-// ======================================
-always @ ( posedge i_clk )
-    if ( !i_wb_stall )
-        wb_rdata_burst <= {i_wb_read_data, wb_rdata_burst[127:32]};
-
-
-// ======================================
-// WB Read Buffer
-// ======================================
-always @ ( posedge i_clk )
-    begin
-    if ( c_state == CS_FILL1 || c_state == CS_FILL2 || 
-         c_state == CS_FILL3 || c_state == CS_FILL4 )
-        begin
-        if ( !i_wb_stall )
-            begin
-            wb_read_buf_valid   <= 1'd1;
-            wb_read_buf_address <= i_wb_address;
-            wb_read_buf_data    <= i_wb_read_data;
-            end
-        end
-    else    
-        wb_read_buf_valid   <= 1'd0;
-    end
-        
-
-// ======================================
-// Miss Address
-// ======================================
-always @ ( posedge i_clk )
-    if ( o_wb_req )
-        miss_address <= i_address;
-        
-
-// ======================================
-// Remember Read-Modify-Write Hit
-// ======================================
-assign ex_read_hit_clear = c_state == CS_EX_DELETE;
-
-always @ ( posedge i_clk )
-    if ( ex_read_hit_clear )
-        begin
-        ex_read_hit_r   <= 1'd0;
-        ex_read_hit_way <= 'd0;
-        end
-    else if ( ex_read_hit )
-        begin
-        
-                
-        ex_read_hit_r   <= 1'd1;
-        ex_read_hit_way <= data_hit_way;
-        end
-    else if ( c_state == CS_FILL_COMPLETE && ex_read_hit_r )
-        ex_read_hit_way <= select_way;
-
-        
-always @ (posedge i_clk)
-    if ( ex_read_hit )
-        ex_read_address <= i_address[CACHE_ADDR32_MSB:CACHE_ADDR32_LSB];
-
-
-assign tag_address      = source_sel[C_FILL] ? miss_address      [CACHE_ADDR32_MSB:CACHE_ADDR32_LSB] :
-                          source_sel[C_INVA] ? ex_read_address                                       :
-                          source_sel[C_INIT] ? init_count[CACHE_ADDR_WIDTH-1:0]                      :
-                          source_sel[C_CORE] ? address                                               :
-                                               {CACHE_ADDR_WIDTH{1'd0}}                              ;
-
-
-assign data_address     = write_hit          ? i_address   [CACHE_ADDR32_MSB:CACHE_ADDR32_LSB] :
-                          source_sel[C_FILL] ? miss_address[CACHE_ADDR32_MSB:CACHE_ADDR32_LSB] : 
-                          source_sel[C_CORE] ? address                                         :
-                                               {CACHE_ADDR_WIDTH{1'd0}}                        ;
-
-                                                          
-assign tag_wdata        = source_sel[C_FILL] ? {1'd1, miss_address[31:TAG_ADDR32_LSB]} :
-                                               {TAG_WIDTH{1'd0}}                       ;
-
-
-    // Data comes in off the WB bus in wrap4 with the missed data word first
-assign data_wdata       = write_hit && c_state == CS_IDLE ? write_hit_wdata : read_miss_wdata;
-
-assign read_miss_wdata  = miss_address[3:2] == 2'd0 ? wb_rdata_burst                              :
-                          miss_address[3:2] == 2'd1 ? { wb_rdata_burst[95:0], wb_rdata_burst[127:96] }:
-                          miss_address[3:2] == 2'd2 ? { wb_rdata_burst[63:0], wb_rdata_burst[127:64] }:
-                                                      { wb_rdata_burst[31:0], wb_rdata_burst[127:32] };
-
-
-assign write_hit_wdata  = i_address[3:2] == 2'd0 ? {hit_rdata[127:32], write_data_word                   } :
-                          i_address[3:2] == 2'd1 ? {hit_rdata[127:64], write_data_word, hit_rdata[31:0]  } :
-                          i_address[3:2] == 2'd2 ? {hit_rdata[127:96], write_data_word, hit_rdata[63:0]  } :
-                                                   {                   write_data_word, hit_rdata[95:0]  } ;
-
-// Use Byte Enables
-assign write_data_word  = i_byte_enable == 4'b0001 ? { o_read_data[31: 8], i_write_data[ 7: 0]                   } :
-                          i_byte_enable == 4'b0010 ? { o_read_data[31:16], i_write_data[15: 8], o_read_data[ 7:0]} :
-                          i_byte_enable == 4'b0100 ? { o_read_data[31:24], i_write_data[23:16], o_read_data[15:0]} :
-                          i_byte_enable == 4'b1000 ? {                     i_write_data[31:24], o_read_data[23:0]} :
-                          i_byte_enable == 4'b0011 ? { o_read_data[31:16], i_write_data[15: 0]                   } :
-                          i_byte_enable == 4'b1100 ? {                     i_write_data[31:16], o_read_data[15:0]} :
-                                                     i_write_data                                                  ;
-                          
-
-assign tag_wenable      = source_sel[C_INVA] ? 1'd1 :
-                          source_sel[C_FILL] ? 1'd1 :
-                          source_sel[C_INIT] ? 1'd1 :
-                          source_sel[C_CORE] ? 1'd0 :
-                                               1'd0 ;
-
-                          
-assign enable           = i_select && i_cache_enable;
-
-assign exclusive_access = i_exclusive && i_cache_enable;
-
-
-                          // the wb read buffer returns data directly from the wb bus to the
-                          // core during a read miss operation
-assign wb_read_buf_hit  = enable && wb_read_buf_address == i_address && wb_read_buf_valid;
-
-assign hit              = |data_hit_way;
-
-assign write_hit        = enable &&  i_write_enable && hit;
-                                                           
-assign write_miss       = enable &&  i_write_enable && !hit && c_state != CS_WRITE_HIT1;
-                                                           
-assign read_miss        = enable && !i_write_enable && !(hit || wb_read_buf_hit);
-
-                          // Exclusive read hit
-assign ex_read_hit      = exclusive_access && !i_write_enable && (hit || wb_read_buf_hit);
-
-                          // Added to fix rare swap bug which occurs when the cache starts
-                          // a fill just as the swap instruction starts to execute. The cache
-                          // fails to check for a read hit on the swap read cycle.
-                          // This signal stalls the core in that case until after the
-                          // fill has completed.
-assign ex_read_cache_busy = exclusive_access && !i_write_enable && c_state != CS_IDLE;
-
-                          // Need to stall for a write miss to wait for the current wb 
-                          // read miss access to complete. Also for a write hit, need 
-                          // to stall for 1 cycle while the data cache is being written to
-assign write_stall      = ( write_hit  && c_state != CS_WRITE_HIT1 ) ||
-                          ( write_miss && ( c_state != CS_IDLE ) )   ||
-                           i_wb_stall                                ;
-
-assign read_stall       = read_miss;
-
-                          // Core may or may not be trying to access cache memory during
-                          // this phase of the read fetch. It could be doing e.g. a wb access
-assign cache_busy_stall = ((c_state == CS_TURN_AROUND || c_state == CS_FILL1) && enable) ||
-                           c_state == CS_INIT;
-
-
-// ======================================
-// Instantiate RAMS
-// ======================================
-
-generate
-    for ( i=0; i<WAYS;i=i+1 ) begin : rams
-
-        // Tag RAMs 
-        
-        
-                generic_sram_line_en 
-        
-            #(
-            .DATA_WIDTH                 ( TAG_WIDTH             ),
-            .INITIALIZE_TO_ZERO         ( 1 ),
-            .ADDRESS_WIDTH              ( CACHE_ADDR_WIDTH      ))
-        u_tag (
-            .i_clk                      ( i_clk                 ),
-            .i_write_data               ( tag_wdata             ),
-            .i_write_enable             ( tag_wenable_way[i]    ),
-            .i_address                  ( tag_address           ),
-
-            .o_read_data                ( tag_rdata_way[i]      )
-            );
-            
-        // Data RAMs 
-        
-        
-                generic_sram_byte_en
-        
-            #(
-            .DATA_WIDTH    ( CACHE_LINE_WIDTH) ,
-            .ADDRESS_WIDTH ( CACHE_ADDR_WIDTH) )
-        u_data (
-            .i_clk                      ( i_clk                         ),
-            .i_write_data               ( data_wdata                    ),
-            .i_write_enable             ( data_wenable_way[i]           ),
-            .i_address                  ( data_address                  ),
-            .i_byte_enable              ( {CACHE_LINE_WIDTH/8{1'd1}}    ),
-            .o_read_data                ( data_rdata_way[i]             )
-            );                                                     
-
-
-        // Per tag-ram write-enable
-        assign tag_wenable_way[i]  = tag_wenable && ( select_way[i] || source_sel[C_INIT] );
-
-        // Per data-ram write-enable
-        assign data_wenable_way[i] = (source_sel[C_FILL] && select_way[i]) || 
-                                     (write_hit && data_hit_way[i] && c_state == CS_IDLE);
-        // Per data-ram hit flag
-        assign data_hit_way[i]     = tag_rdata_way[i][TAG_WIDTH-1] &&                                                  
-                                     tag_rdata_way[i][TAG_ADDR_WIDTH-1:0] == i_address[31:TAG_ADDR32_LSB] &&  
-                                     c_state == CS_IDLE;                                                               
-    end                                                         
-endgenerate
-
-
-// ======================================
-// Register Valid Bits
-// ======================================
-generate
-if ( WAYS == 2 ) begin : valid_bits_2ways
-
-    always @ ( posedge i_clk )
-        if ( c_state == CS_IDLE )
-            valid_bits_r <= {tag_rdata_way[1][TAG_WIDTH-1], 
-                             tag_rdata_way[0][TAG_WIDTH-1]};
-                           
-end
-else if ( WAYS == 3 ) begin : valid_bits_3ways
-
-    always @ ( posedge i_clk )
-        if ( c_state == CS_IDLE )
-            valid_bits_r <= {tag_rdata_way[2][TAG_WIDTH-1], 
-                             tag_rdata_way[1][TAG_WIDTH-1], 
-                             tag_rdata_way[0][TAG_WIDTH-1]};
-                           
-end
-else if ( WAYS == 4 ) begin : valid_bits_4ways
-
-    always @ ( posedge i_clk )
-        if ( c_state == CS_IDLE )
-            valid_bits_r <= {tag_rdata_way[3][TAG_WIDTH-1], 
-                             tag_rdata_way[2][TAG_WIDTH-1], 
-                             tag_rdata_way[1][TAG_WIDTH-1], 
-                             tag_rdata_way[0][TAG_WIDTH-1]};
-                           
-end
-else begin : valid_bits_8ways
-
-    always @ ( posedge i_clk )
-        if ( c_state == CS_IDLE )
-            valid_bits_r <= {tag_rdata_way[7][TAG_WIDTH-1], 
-                             tag_rdata_way[6][TAG_WIDTH-1], 
-                             tag_rdata_way[5][TAG_WIDTH-1], 
-                             tag_rdata_way[4][TAG_WIDTH-1], 
-                             tag_rdata_way[3][TAG_WIDTH-1], 
-                             tag_rdata_way[2][TAG_WIDTH-1], 
-                             tag_rdata_way[1][TAG_WIDTH-1], 
-                             tag_rdata_way[0][TAG_WIDTH-1]};
-                           
-end
-endgenerate
-
-
-// ======================================
-// Select read hit data
-// ======================================
-generate
-if ( WAYS == 2 ) begin : read_data_2ways
-
-    assign hit_rdata    = data_hit_way[0] ? data_rdata_way[0] :
-                          data_hit_way[1] ? data_rdata_way[1] :
-                                     {CACHE_LINE_WIDTH{1'd1}} ;  // all 1's for debug
-                           
-end
-else if ( WAYS == 3 ) begin : read_data_3ways
-
-    assign hit_rdata    = data_hit_way[0] ? data_rdata_way[0] :
-                          data_hit_way[1] ? data_rdata_way[1] :
-                          data_hit_way[2] ? data_rdata_way[2] :
-                                     {CACHE_LINE_WIDTH{1'd1}} ;  // all 1's for debug
-                           
-end
-else if ( WAYS == 4 ) begin : read_data_4ways
-
-    assign hit_rdata    = data_hit_way[0] ? data_rdata_way[0] :
-                          data_hit_way[1] ? data_rdata_way[1] :
-                          data_hit_way[2] ? data_rdata_way[2] :
-                          data_hit_way[3] ? data_rdata_way[3] :
-                                     {CACHE_LINE_WIDTH{1'd1}} ;  // all 1's for debug
-                           
-end
-else begin : read_data_8ways
-
-    assign hit_rdata    = data_hit_way[0] ? data_rdata_way[0] :
-                          data_hit_way[1] ? data_rdata_way[1] :
-                          data_hit_way[2] ? data_rdata_way[2] :
-                          data_hit_way[3] ? data_rdata_way[3] :
-                          data_hit_way[4] ? data_rdata_way[4] :
-                          data_hit_way[5] ? data_rdata_way[5] :
-                          data_hit_way[6] ? data_rdata_way[6] :
-                          data_hit_way[7] ? data_rdata_way[7] :
-                                     {CACHE_LINE_WIDTH{1'd1}} ;  // all 1's for debug
-                           
-end
-endgenerate
-
-
-// ======================================
-// Function to select the way to use
-// for fills
-// ======================================
-generate
-if ( WAYS == 2 ) begin : pick_way_2ways
-
-    assign next_way = pick_way ( valid_bits_r, random_num );
-
-    function [WAYS-1:0] pick_way;
-    input [WAYS-1:0] valid_bits;
-    input [3:0]      random_num;
-    begin
-        if (      valid_bits[0] == 1'd0 )
-            // way 0 not occupied so use it
-            pick_way     = 2'b01;
-        else if ( valid_bits[1] == 1'd0 )
-            // way 1 not occupied so use it
-            pick_way     = 2'b10;
-        else
-            begin
-            // All ways occupied so pick one randomly
-            case (random_num[3:1])
-                3'd0, 3'd3,
-                3'd5, 3'd6: pick_way = 2'b10;
-                default:    pick_way = 2'b01;
-            endcase
-            end
-    end
-    endfunction
-                                                      
-end
-else if ( WAYS == 3 ) begin : pick_way_3ways
-
-    assign next_way = pick_way ( valid_bits_r, random_num );
-
-    function [WAYS-1:0] pick_way;
-    input [WAYS-1:0] valid_bits;
-    input [3:0]      random_num;
-    begin
-        if (      valid_bits[0] == 1'd0 )
-            // way 0 not occupied so use it
-            pick_way     = 3'b001;
-        else if ( valid_bits[1] == 1'd0 )
-            // way 1 not occupied so use it
-            pick_way     = 3'b010;
-        else if ( valid_bits[2] == 1'd0 )
-            // way 2 not occupied so use it
-            pick_way     = 3'b100;
-        else
-            begin
-            // All ways occupied so pick one randomly
-            case (random_num[3:1])
-                3'd0, 3'd1, 3'd2: pick_way = 3'b010;
-                3'd2, 3'd3, 3'd4: pick_way = 3'b100;
-                default:          pick_way = 3'b001;
-            endcase
-            end
-    end
-    endfunction
-                           
-end
-else if ( WAYS == 4 ) begin : pick_way_4ways
-
-    assign next_way = pick_way ( valid_bits_r, random_num );
-
-    function [WAYS-1:0] pick_way;
-    input [WAYS-1:0] valid_bits;
-    input [3:0]      random_num;
-    begin
-        if (      valid_bits[0] == 1'd0 )
-            // way 0 not occupied so use it
-            pick_way     = 4'b0001;
-        else if ( valid_bits[1] == 1'd0 )
-            // way 1 not occupied so use it
-            pick_way     = 4'b0010;
-        else if ( valid_bits[2] == 1'd0 )
-            // way 2 not occupied so use it
-            pick_way     = 4'b0100;
-        else if ( valid_bits[3] == 1'd0 )
-            // way 3 not occupied so use it
-            pick_way     = 4'b1000;
-        else
-            begin
-            // All ways occupied so pick one randomly
-            case (random_num[3:1])
-                3'd0, 3'd1: pick_way = 4'b0100;
-                3'd2, 3'd3: pick_way = 4'b1000;
-                3'd4, 3'd5: pick_way = 4'b0001;
-                default:    pick_way = 4'b0010;
-            endcase
-            end
-    end
-    endfunction
-                           
-end
-else begin : pick_way_8ways
-
-    assign next_way = pick_way ( valid_bits_r, random_num );
-
-    function [WAYS-1:0] pick_way;
-    input [WAYS-1:0] valid_bits;
-    input [3:0]      random_num;
-    begin
-        if (      valid_bits[0] == 1'd0 )
-            // way 0 not occupied so use it
-            pick_way     = 8'b00000001;
-        else if ( valid_bits[1] == 1'd0 )
-            // way 1 not occupied so use it
-            pick_way     = 8'b00000010;
-        else if ( valid_bits[2] == 1'd0 )
-            // way 2 not occupied so use it
-            pick_way     = 8'b00000100;
-        else if ( valid_bits[3] == 1'd0 )
-            // way 3 not occupied so use it
-            pick_way     = 8'b00001000;
-        else if ( valid_bits[4] == 1'd0 )
-            // way 3 not occupied so use it
-            pick_way     = 8'b00010000;
-        else if ( valid_bits[5] == 1'd0 )
-            // way 3 not occupied so use it
-            pick_way     = 8'b00100000;
-        else if ( valid_bits[6] == 1'd0 )
-            // way 3 not occupied so use it
-            pick_way     = 8'b01000000;
-        else if ( valid_bits[7] == 1'd0 )
-            // way 3 not occupied so use it
-            pick_way     = 8'b10000000;
-        else
-            begin
-            // All ways occupied so pick one randomly
-            case (random_num[3:1])
-                3'd0:       pick_way = 8'b00010000;
-                3'd1:       pick_way = 8'b00100000;
-                3'd2:       pick_way = 8'b01000000;
-                3'd3:       pick_way = 8'b10000000;
-                3'd4:       pick_way = 8'b00000001;
-                3'd5:       pick_way = 8'b00000010;
-                3'd6:       pick_way = 8'b00000100;
-                default:    pick_way = 8'b00001000;
-            endcase
-            end
-    end
-    endfunction
-                           
-end
-endgenerate
-
-
-// ========================================================
-// Debug WB bus - not synthesizable
-// ========================================================
-//synopsys translate_off
-wire    [(6*8)-1:0]     xSOURCE_SEL;
-wire    [(20*8)-1:0]    xC_STATE;
-
-assign xSOURCE_SEL = source_sel[C_CORE]            ? "C_CORE"           :
-                     source_sel[C_INIT]            ? "C_INIT"           :
-                     source_sel[C_FILL]            ? "C_FILL"           :
-                     source_sel[C_INVA]            ? "C_INVA"           :
-                                                     "UNKNON"           ;
- 
-assign xC_STATE    = c_state == CS_INIT            ? "CS_INIT"          :
-                     c_state == CS_IDLE            ? "CS_IDLE"          :
-                     c_state == CS_FILL1           ? "CS_FILL1"         :
-                     c_state == CS_FILL2           ? "CS_FILL2"         :
-                     c_state == CS_FILL3           ? "CS_FILL3"         :
-                     c_state == CS_FILL4           ? "CS_FILL4"         :
-                     c_state == CS_FILL_COMPLETE   ? "CS_FILL_COMPLETE" :
-                     c_state == CS_EX_DELETE       ? "CS_EX_DELETE"     :
-                     c_state == CS_TURN_AROUND     ? "CS_TURN_AROUND"   :
-                     c_state == CS_WRITE_HIT1      ? "CS_WRITE_HIT1"    :
-                                                     "UNKNOWN"          ;
-
-
-generate
-if ( WAYS == 2 ) begin : check_hit_2ways
-
-    always @( posedge i_clk )
-        if ( (data_hit_way[0] + data_hit_way[1] ) > 4'd1 )
-            begin
-            $display("FATAL ERROR"); $stop;
-            $display("Hit in more than one cache ways!");                                                  
-            end
-                                                      
-end
-else if ( WAYS == 3 ) begin : check_hit_3ways
-
-    always @( posedge i_clk )
-        if ( (data_hit_way[0] + data_hit_way[1] + data_hit_way[2] ) > 4'd1 )
-            begin
-            $display("FATAL ERROR"); $stop;
-            $display("Hit in more than one cache ways!");                                                  
-            end
-                           
-end
-else if ( WAYS == 4 ) begin : check_hit_4ways
-
-    always @( posedge i_clk )
-        if ( (data_hit_way[0] + data_hit_way[1] + 
-              data_hit_way[2] + data_hit_way[3] ) > 4'd1 )
-            begin
-            $display("FATAL ERROR"); $stop;
-            $display("Hit in more than one cache ways!");                                                  
-            end
-                           
-end
-else if ( WAYS == 8 )  begin : check_hit_8ways
-
-    always @( posedge i_clk )
-        if ( (data_hit_way[0] + data_hit_way[1] + 
-              data_hit_way[2] + data_hit_way[3] +
-              data_hit_way[4] + data_hit_way[5] +
-              data_hit_way[6] + data_hit_way[7] ) > 4'd1 )
-            begin
-            $display("FATAL ERROR"); $stop;
-            $display("Hit in more than one cache ways!");                                                  
-            end
-                           
-end
-else begin : check_hit_nways
-
-    initial
-        begin
-        $display("FATAL ERROR"); $stop;
-        $display("Unsupported number of ways %0d", WAYS);
-        $display("Set A23_CACHE_WAYS in a23_config_defines.v to either 2,3,4 or 8");
-        end
-
-end
-endgenerate
-    
-//synopsys translate_on
-    
-endmodule
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_config_defines.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_config_defines.v
deleted file mode 100644
index 0888dde..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_config_defines.v
+++ /dev/null
@@ -1,74 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Amber Configuration and Debug for the AMber 2 Core          //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Contains a set of defines used to configure and debug       //
-//  the Amber core                                              //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// Cache Ways
-// Changing this parameter is the recommended
-// way to change the Amber cache size; 2, 3, 4 and 8 ways are supported.
-//   2 ways -> 8KB  cache
-//   3 ways -> 12KB cache
-//   4 ways -> 16KB cache
-//   8 ways -> 32KB cache
-
-// Use ram-based register bank implementation
-// `define A23_RAM_REGISTER_BANK
-
-// --------------------------------------------------------------------
-// Debug switches 
-// --------------------------------------------------------------------
-
-// Enable the decompiler. The default output file is amber.dis
-//`define A23_DECOMPILE
-
-// Co-processor 15 debug. Registers in here control the cache
-//`define A23_COPRO15_DEBUG
-
-// Cache debug
-//`define A23_CACHE_DEBUG
-
-// --------------------------------------------------------------------
-
-
-// --------------------------------------------------------------------
-// File Names
-// --------------------------------------------------------------------
-    
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_coprocessor.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_coprocessor.v
deleted file mode 100644
index 1e839c2..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_coprocessor.v
+++ /dev/null
@@ -1,156 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Co-processor module for Amber 2 Core                        //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Co_processor 15 registers and control signals               //                                                           //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-module a23_coprocessor
-(
-input                       i_clk,
-input                       i_fetch_stall,    // stall all stages of the cpu at the same time
-input       [2:0]           i_copro_opcode1,
-input       [2:0]           i_copro_opcode2,
-input       [3:0]           i_copro_crn,      // Register Number 
-input       [3:0]           i_copro_crm,
-input       [3:0]           i_copro_num,
-input       [1:0]           i_copro_operation,
-input       [31:0]          i_copro_write_data,
-
-input                       i_fault,          // high to latch the fault address and status
-input       [7:0]           i_fault_status,
-input       [31:0]          i_fault_address,  // the address that caused the fault
-
-output reg  [31:0]          o_copro_read_data,
-output                      o_cache_enable,
-output                      o_cache_flush,
-output      [31:0]          o_cacheable_area 
-);
-
-// Bit 0 - Cache on(1)/off
-// Bit 1 - Shared (1) or seperate User/Supervisor address space
-// Bit 2 - address monitor mode(1)
-reg [2:0]  cache_control = 3'b000;
-
-// Bit 0 - 2MB memory from 0 to 0x01fffff cacheable(1)/not cachable
-// Bit 1 - next 2MB region etc.
-reg [31:0] cacheable_area = 32'h0;
-
-// Marks memory regions as read only so writes are ignored by the cache
-// Bit 0 - 2MB memory from 0 to 0x01fffff updateable(1)/not updateable
-// Bit 1 - next 2MB region etc.
-reg [31:0] updateable_area = 32'h0;
-
-// Accesses to a region with a flag set in this register cause the
-// cache to flush
-// Bit 0 - 2MB memory from 0 to 0x01fffff
-// Bit 1 - next 2MB region etc.
-reg [31:0] disruptive_area = 32'h0;
-
-
-reg [7:0]  fault_status  = 'd0;
-reg [31:0] fault_address = 'd0;  // the address that caused the fault
-
-wire       copro15_reg1_write;
-
-
-// ---------------------------
-// Outputs
-// ---------------------------
-assign o_cache_enable   = cache_control[0];
-assign o_cache_flush    = copro15_reg1_write;
-assign o_cacheable_area = cacheable_area;
-              
-// ---------------------------
-// Capture an access fault address and status
-// ---------------------------
-always @ ( posedge i_clk )
-    if ( !i_fetch_stall )
-        begin
-        if ( i_fault )
-            begin
-            
-                        fault_status    <= i_fault_status;
-            fault_address   <= i_fault_address;
-            end
-        end
-
-
-// ---------------------------
-// Register Writes
-// ---------------------------
-always @ ( posedge i_clk )
-    if ( !i_fetch_stall )         
-        begin
-        if ( i_copro_operation == 2'd2 )
-            case ( i_copro_crn )
-                4'd2: cache_control   <= i_copro_write_data[2:0];
-                4'd3: cacheable_area  <= i_copro_write_data[31:0];
-                4'd4: updateable_area <= i_copro_write_data[31:0];
-                4'd5: disruptive_area <= i_copro_write_data[31:0];
-            endcase
-        end
-
-// Flush the cache
-assign copro15_reg1_write = !i_fetch_stall && i_copro_operation == 2'd2 && i_copro_crn == 4'd1;
-
-
-// ---------------------------
-// Register Reads   
-// ---------------------------
-always @ ( posedge i_clk )        
-    if ( !i_fetch_stall )
-        case ( i_copro_crn )
-            // ID Register - [31:24] Company id, [23:16] Manuf id, [15:8] Part type, [7:0] revision
-            4'd0:    o_copro_read_data <= 32'h4156_0300;
-            4'd2:    o_copro_read_data <= {29'd0, cache_control}; 
-            4'd3:    o_copro_read_data <= cacheable_area; 
-            4'd4:    o_copro_read_data <= updateable_area; 
-            4'd5:    o_copro_read_data <= disruptive_area; 
-            4'd6:    o_copro_read_data <= {24'd0, fault_status };
-            4'd7:    o_copro_read_data <= fault_address;
-            default: o_copro_read_data <= 32'd0;
-        endcase
-
-
-
-// ========================================================
-// Debug code - not synthesizable
-// ========================================================
-
-
-endmodule
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_core.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_core.v
deleted file mode 100644
index 021e0d8..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_core.v
+++ /dev/null
@@ -1,358 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Amber 2 Core top-Level module                               //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Instantiates the core consisting of fetch, instruction      //
-//  decode, execute, and co-processor.                          //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-module a23_core
-(
-input                       i_clk,
-
-input                       i_irq,              // Interrupt request, active high
-input                       i_firq,             // Fast Interrupt request, active high
-
-input                       i_system_rdy,       // Amber is stalled when this is low
-
-// Wishbone Master I/F
-output      [31:0]          o_wb_adr,
-output      [3:0]           o_wb_sel,
-output                      o_wb_we,
-input       [31:0]          i_wb_dat,
-output      [31:0]          o_wb_dat,
-output                      o_wb_cyc,
-output                      o_wb_stb,
-input                       i_wb_ack,
-input                       i_wb_err,
-
-// Global Reset
-input                       globrst
-);
-
-wire      [31:0]          execute_address;
-wire                      execute_address_valid;
-wire      [31:0]          execute_address_nxt;  // un-registered version of execute_address to the cache rams
-wire      [31:0]          write_data;
-wire                      write_enable;
-wire      [31:0]          read_data;
-wire                      priviledged;
-wire                      exclusive_exec;
-wire                      data_access_exec;
-wire      [3:0]           byte_enable;
-wire                      data_access;          // high for data petch, low for instruction fetch
-wire                      exclusive;            // swap access
-wire                      cache_enable;         // Enabel the cache
-wire                      cache_flush;          // Flush the cache
-wire      [31:0]          cacheable_area;
-
-wire                      fetch_stall;          // when this is asserted all registers in all 3 pipeline 
-                                                // stages are held
-                                                // at their current values
-wire     [1:0]            status_bits_mode;               
-wire                      status_bits_irq_mask;           
-wire                      status_bits_firq_mask;           
-wire                      status_bits_flags_wen;          
-wire                      status_bits_mode_wen;           
-wire                      status_bits_irq_mask_wen;       
-wire                      status_bits_firq_mask_wen;       
-wire     [31:0]           execute_status_bits;
-                 
-wire     [31:0]           imm32;                   
-wire     [4:0]            imm_shift_amount; 
-wire                      shift_imm_zero;      
-wire     [3:0]            condition;               
-wire     [31:0]           read_data_s2;            
-wire     [4:0]            read_data_alignment;     
-
-wire     [3:0]            rm_sel;                  
-wire     [3:0]            rds_sel;                 
-wire     [3:0]            rn_sel;                  
-wire     [3:0]            rm_sel_nxt;
-wire     [3:0]            rds_sel_nxt;
-wire     [3:0]            rn_sel_nxt;
-wire     [1:0]            barrel_shift_amount_sel; 
-wire     [1:0]            barrel_shift_data_sel;   
-wire     [1:0]            barrel_shift_function;   
-wire     [8:0]            alu_function;            
-wire     [1:0]            multiply_function;       
-wire     [2:0]            interrupt_vector_sel;    
-wire     [3:0]            address_sel;             
-wire     [1:0]            pc_sel;                  
-wire     [1:0]            byte_enable_sel;         
-wire     [2:0]            status_bits_sel;                
-wire     [2:0]            reg_write_sel;           
-wire                      user_mode_regs_load;     
-wire                      user_mode_regs_store_nxt;    
-wire                      firq_not_user_mode;
-
-wire                      write_data_wen;          
-wire                      copro_write_data_wen;          
-wire                      base_address_wen;        
-wire                      pc_wen;                  
-wire     [14:0]           reg_bank_wen;            
-wire     [3:0]            reg_bank_wsel;            
-
-wire     [2:0]            copro_opcode1;
-wire     [2:0]            copro_opcode2;
-wire     [3:0]            copro_crn;    
-wire     [3:0]            copro_crm;
-wire     [3:0]            copro_num;
-wire     [1:0]            copro_operation;
-wire     [31:0]           copro_read_data;
-wire     [31:0]           copro_write_data;
-wire                      multiply_done;
-
-wire                      decode_fault;
-wire                      iabt_trigger;
-wire                      dabt_trigger;
-
-wire     [7:0]            decode_fault_status;
-wire     [7:0]            iabt_fault_status;
-wire     [7:0]            dabt_fault_status;
-
-wire     [31:0]           decode_fault_address;
-wire     [31:0]           iabt_fault_address;
-wire     [31:0]           dabt_fault_address;
-
-wire                      adex;
-
-
-// data abort has priority
-assign decode_fault_status  = dabt_trigger ? dabt_fault_status  : iabt_fault_status;
-assign decode_fault_address = dabt_trigger ? dabt_fault_address : iabt_fault_address;
-assign decode_fault         = dabt_trigger | iabt_trigger;
-
-
-a23_fetch u_fetch (
-    .i_clk                              ( i_clk                             ),
-
-    .i_address                          ( {execute_address[31:2], 2'd0}     ),
-    .i_address_valid                    ( execute_address_valid             ), 
-    .i_address_nxt                      ( execute_address_nxt               ),
-    .i_write_data                       ( write_data                        ),
-    .i_write_enable                     ( write_enable                      ),
-    .o_read_data                        ( read_data                         ),
-    .i_priviledged                      ( priviledged                       ),
-    .i_byte_enable                      ( byte_enable                       ),
-    .i_data_access                      ( data_access                       ),      
-    .i_exclusive                        ( exclusive                         ),
-    .i_cache_enable                     ( cache_enable                      ),     
-    .i_cache_flush                      ( cache_flush                       ), 
-    .i_cacheable_area                   ( cacheable_area                    ),
-
-    .i_system_rdy                       ( i_system_rdy                      ),
-    .o_fetch_stall                      ( fetch_stall                       ),
-    
-    .o_wb_adr                           ( o_wb_adr                          ),
-    .o_wb_sel                           ( o_wb_sel                          ),
-    .o_wb_we                            ( o_wb_we                           ),
-    .i_wb_dat                           ( i_wb_dat                          ),
-    .o_wb_dat                           ( o_wb_dat                          ),
-    .o_wb_cyc                           ( o_wb_cyc                          ),
-    .o_wb_stb                           ( o_wb_stb                          ),
-    .i_wb_ack                           ( i_wb_ack                          ),
-    .i_wb_err                           ( i_wb_err                          )
-);
-
-
-a23_decode u_decode (
-    .i_clk                              ( i_clk                             ),
-    
-    // Instruction fetch or data read signals
-    .i_read_data                        ( read_data                         ),                                          
-    .i_execute_address                  ( execute_address                   ),
-    .i_adex                             ( adex                              ),
-    .i_iabt                             ( 1'd0 ),
-    .i_dabt                             ( 1'd0 ),
-    .i_abt_status                       ( 8'd0 ),                                          
-    
-    .o_read_data                        ( read_data_s2                      ),                                          
-    .o_read_data_alignment              ( read_data_alignment               ),                                          
-    
-    .i_irq                              ( i_irq                             ),                                          
-    .i_firq                             ( i_firq                            ),                                          
-    .i_fetch_stall                      ( fetch_stall                       ),                                          
-    .i_execute_status_bits              ( execute_status_bits               ),                                          
-    .i_multiply_done                    ( multiply_done                     ),                                          
-    
-    .o_status_bits_mode                 ( status_bits_mode                  ),
-    .o_status_bits_irq_mask             ( status_bits_irq_mask              ),  
-    .o_status_bits_firq_mask            ( status_bits_firq_mask             ),  
-    .o_imm32                            ( imm32                             ),
-    .o_imm_shift_amount                 ( imm_shift_amount                  ),
-    .o_shift_imm_zero                   ( shift_imm_zero                    ),
-    .o_condition                        ( condition                         ),
-    .o_exclusive_exec                   ( exclusive_exec                    ), 
-    .o_data_access_exec                 ( data_access_exec                  ),
-    .o_rm_sel                           ( rm_sel                            ),
-    .o_rds_sel                          ( rds_sel                           ),
-    .o_rn_sel                           ( rn_sel                            ),
-    .o_rm_sel_nxt                       ( rm_sel_nxt                        ),
-    .o_rds_sel_nxt                      ( rds_sel_nxt                       ),
-    .o_rn_sel_nxt                       ( rn_sel_nxt                        ),
-    .o_barrel_shift_amount_sel          ( barrel_shift_amount_sel           ),
-    .o_barrel_shift_data_sel            ( barrel_shift_data_sel             ),
-    .o_barrel_shift_function            ( barrel_shift_function             ),
-    .o_alu_function                     ( alu_function                      ),
-    .o_multiply_function                ( multiply_function                 ),
-    .o_interrupt_vector_sel             ( interrupt_vector_sel              ),
-    .o_address_sel                      ( address_sel                       ),
-    .o_pc_sel                           ( pc_sel                            ),
-    .o_byte_enable_sel                  ( byte_enable_sel                   ),
-    .o_status_bits_sel                  ( status_bits_sel                   ),
-    .o_reg_write_sel                    ( reg_write_sel                     ),
-    .o_user_mode_regs_load              ( user_mode_regs_load               ),
-    .o_user_mode_regs_store_nxt         ( user_mode_regs_store_nxt          ),
-    .o_firq_not_user_mode               ( firq_not_user_mode                ),
-    .o_write_data_wen                   ( write_data_wen                    ),
-    .o_base_address_wen                 ( base_address_wen                  ),
-    .o_pc_wen                           ( pc_wen                            ),
-    .o_reg_bank_wen                     ( reg_bank_wen                      ),
-    .o_reg_bank_wsel                    ( reg_bank_wsel                     ),
-    .o_status_bits_flags_wen            ( status_bits_flags_wen             ),
-    .o_status_bits_mode_wen             ( status_bits_mode_wen              ),
-    .o_status_bits_irq_mask_wen         ( status_bits_irq_mask_wen          ),
-    .o_status_bits_firq_mask_wen        ( status_bits_firq_mask_wen         ),
-    
-    .o_copro_opcode1                    ( copro_opcode1                     ),                                        
-    .o_copro_opcode2                    ( copro_opcode2                     ),                                        
-    .o_copro_crn                        ( copro_crn                         ),                                        
-    .o_copro_crm                        ( copro_crm                         ),                                        
-    .o_copro_num                        ( copro_num                         ),                                        
-    .o_copro_operation                  ( copro_operation                   ), 
-    .o_copro_write_data_wen             ( copro_write_data_wen              ),                                        
-    
-    .o_iabt_trigger                     ( iabt_trigger                      ),
-    .o_iabt_address                     ( iabt_fault_address                ),
-    .o_iabt_status                      ( iabt_fault_status                 ),
-    .o_dabt_trigger                     ( dabt_trigger                      ),
-    .o_dabt_address                     ( dabt_fault_address                ),
-    .o_dabt_status                      ( dabt_fault_status                 ) 
-);
-
-
-a23_execute u_execute (
-    .i_clk                              ( i_clk                             ),
-    
-    .i_read_data                        ( read_data_s2                      ),
-    .i_read_data_alignment              ( read_data_alignment               ), 
-    .i_copro_read_data                  ( copro_read_data                   ),
-    
-    .o_write_data                       ( write_data                        ),
-    .o_copro_write_data                 ( copro_write_data                  ),
-    .o_address                          ( execute_address                   ),
-    .o_address_valid                    ( execute_address_valid             ),
-    .o_address_nxt                      ( execute_address_nxt               ),
-    .o_adex                             ( adex                              ),
-
-    .o_byte_enable                      ( byte_enable                       ),
-    .o_data_access                      ( data_access                       ),
-    .o_write_enable                     ( write_enable                      ),
-    .o_exclusive                        ( exclusive                         ),
-    .o_priviledged                      ( priviledged                       ),
-    .o_status_bits                      ( execute_status_bits               ),
-    .o_multiply_done                    ( multiply_done                     ),
-
-    .i_fetch_stall                      ( fetch_stall                       ),   
-    .i_status_bits_mode                 ( status_bits_mode                  ),   
-    .i_status_bits_irq_mask             ( status_bits_irq_mask              ),   
-    .i_status_bits_firq_mask            ( status_bits_firq_mask             ),   
-    .i_imm32                            ( imm32                             ),   
-    .i_imm_shift_amount                 ( imm_shift_amount                  ),   
-    .i_shift_imm_zero                   ( shift_imm_zero                    ),   
-    .i_condition                        ( condition                         ),   
-    .i_exclusive_exec                   ( exclusive_exec                    ),   
-    .i_data_access_exec                 ( data_access_exec                  ),   
-    .i_rm_sel                           ( rm_sel                            ),   
-    .i_rds_sel                          ( rds_sel                           ),   
-    .i_rn_sel                           ( rn_sel                            ),   
-    .i_rm_sel_nxt                       ( rm_sel_nxt                        ),
-    .i_rds_sel_nxt                      ( rds_sel_nxt                       ),
-    .i_rn_sel_nxt                       ( rn_sel_nxt                        ),
-    .i_barrel_shift_amount_sel          ( barrel_shift_amount_sel           ),   
-    .i_barrel_shift_data_sel            ( barrel_shift_data_sel             ),   
-    .i_barrel_shift_function            ( barrel_shift_function             ),   
-    .i_alu_function                     ( alu_function                      ),   
-    .i_multiply_function                ( multiply_function                 ),   
-    .i_interrupt_vector_sel             ( interrupt_vector_sel              ),   
-    .i_address_sel                      ( address_sel                       ),   
-    .i_pc_sel                           ( pc_sel                            ),   
-    .i_byte_enable_sel                  ( byte_enable_sel                   ),   
-    .i_status_bits_sel                  ( status_bits_sel                   ),   
-    .i_reg_write_sel                    ( reg_write_sel                     ),   
-    .i_user_mode_regs_load              ( user_mode_regs_load               ),   
-    .i_user_mode_regs_store_nxt         ( user_mode_regs_store_nxt          ),   
-    .i_firq_not_user_mode               ( firq_not_user_mode                ),   
-    .i_write_data_wen                   ( write_data_wen                    ),   
-    .i_base_address_wen                 ( base_address_wen                  ),   
-    .i_pc_wen                           ( pc_wen                            ),   
-    .i_reg_bank_wen                     ( reg_bank_wen                      ),   
-    .i_reg_bank_wsel                    ( reg_bank_wsel                     ),
-    .i_status_bits_flags_wen            ( status_bits_flags_wen             ),   
-    .i_status_bits_mode_wen             ( status_bits_mode_wen              ),   
-    .i_status_bits_irq_mask_wen         ( status_bits_irq_mask_wen          ),   
-    .i_status_bits_firq_mask_wen        ( status_bits_firq_mask_wen         ),   
-    .i_copro_write_data_wen             ( copro_write_data_wen              )
-);
-
-
-a23_coprocessor u_coprocessor (
-    .i_clk                              ( i_clk                             ),
-    
-    .i_fetch_stall                      ( fetch_stall                       ),
-    .i_copro_opcode1                    ( copro_opcode1                     ),
-    .i_copro_opcode2                    ( copro_opcode2                     ),
-    .i_copro_crn                        ( copro_crn                         ),    
-    .i_copro_crm                        ( copro_crm                         ),
-    .i_copro_num                        ( copro_num                         ),
-    .i_copro_operation                  ( copro_operation                   ),
-    .i_copro_write_data                 ( copro_write_data                  ),
-    
-    .i_fault                            ( decode_fault                      ),
-    .i_fault_status                     ( decode_fault_status               ),
-    .i_fault_address                    ( decode_fault_address              ), 
-    
-    .o_copro_read_data                  ( copro_read_data                   ),
-    .o_cache_enable                     ( cache_enable                      ),
-    .o_cache_flush                      ( cache_flush                       ),
-    .o_cacheable_area                   ( cacheable_area                    )
-);
-
-
-endmodule
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_decode.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_decode.v
deleted file mode 100644
index 35f6d8e..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_decode.v
+++ /dev/null
@@ -1,1981 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Decode stage of Amber 2 Core                                //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  This module is the most complex part of the Amber core      //
-//  It decodes and sequences all instructions and handles all   //
-//  interrupts                                                  //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Global testbench defines                                    //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Contains a set of defines for each module so if the module  //
-//  hierarchy changes, hierarchical references to signals       //
-//  will still work as long as this file is updated.            //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-// ---------------------------------------------------------------
-// Module hierarchy defines
-// ---------------------------------------------------------------
-
-    
-
-
-        // ---------------------------------------------------------------
-
-
-
-// Simplified Main Memory Model
-
-
-module a23_decode
-(
-input                       i_clk,
-input       [31:0]          i_read_data,
-input                       i_fetch_stall,                  // stall all stages of the cpu at the same time
-input                       i_irq,                          // interrupt request
-input                       i_firq,                         // Fast interrupt request
-input                       i_dabt,                         // data abort interrupt request
-input                       i_iabt,                         // instruction pre-fetch abort flag
-input                       i_adex,                         // Address Exception
-input       [31:0]          i_execute_address,              // Registered address output by execute stage
-                                                            // 2 LSBs of read address used for calculating 
-                                                            // shift in LDRB ops
-input       [7:0]           i_abt_status,                   // Abort status
-input       [31:0]          i_execute_status_bits,          // current status bits values in execute stage
-input                       i_multiply_done,                // multiply unit is nearly done
-
-
-// --------------------------------------------------
-// Control signals to execute stage
-// --------------------------------------------------
-output reg  [31:0]          o_read_data = 1'd0,
-output reg  [4:0]           o_read_data_alignment = 1'd0,  // 2 LSBs of read address used for calculating shift in LDRB ops
-
-output reg  [31:0]          o_imm32 = 'd0,
-output reg  [4:0]           o_imm_shift_amount = 'd0,
-output reg                  o_shift_imm_zero = 'd0,
-output reg  [3:0]           o_condition = 4'he,             // 4'he = al
-output reg                  o_exclusive_exec = 'd0,         // exclusive access request ( swap instruction )
-output reg                  o_data_access_exec = 'd0,       // high means the memory access is a read 
-                                                            // read or write, low for instruction
-output reg  [1:0]           o_status_bits_mode = 2'b11,     // SVC
-output reg                  o_status_bits_irq_mask = 1'd1,
-output reg                  o_status_bits_firq_mask = 1'd1,
-
-output reg  [3:0]           o_rm_sel = 'd0,
-output reg  [3:0]           o_rds_sel = 'd0,
-output reg  [3:0]           o_rn_sel = 'd0,
-output      [3:0]           o_rm_sel_nxt,
-output      [3:0]           o_rds_sel_nxt,
-output      [3:0]           o_rn_sel_nxt,
-output reg  [1:0]           o_barrel_shift_amount_sel = 'd0,
-output reg  [1:0]           o_barrel_shift_data_sel = 'd0,
-output reg  [1:0]           o_barrel_shift_function = 'd0,
-output reg  [8:0]           o_alu_function = 'd0,
-output reg  [1:0]           o_multiply_function = 'd0,
-output reg  [2:0]           o_interrupt_vector_sel = 'd0,
-output reg  [3:0]           o_address_sel = 4'd2,
-output reg  [1:0]           o_pc_sel = 2'd2,
-output reg  [1:0]           o_byte_enable_sel = 'd0,        // byte, halfword or word write
-output reg  [2:0]           o_status_bits_sel = 'd0,
-output reg  [2:0]           o_reg_write_sel,
-output reg                  o_user_mode_regs_load,
-output reg                  o_user_mode_regs_store_nxt,
-output reg                  o_firq_not_user_mode,
-
-output reg                  o_write_data_wen = 'd0,
-output reg                  o_base_address_wen = 'd0,       // save LDM base address register
-                                                            // in case of data abort
-output reg                  o_pc_wen = 1'd1,
-output reg  [14:0]          o_reg_bank_wen = 'd0,
-output reg  [3:0]           o_reg_bank_wsel = 'd0,
-output reg                  o_status_bits_flags_wen = 'd0,
-output reg                  o_status_bits_mode_wen = 'd0,
-output reg                  o_status_bits_irq_mask_wen = 'd0,
-output reg                  o_status_bits_firq_mask_wen = 'd0,
-
-// --------------------------------------------------
-// Co-Processor interface
-// --------------------------------------------------
-output reg  [2:0]           o_copro_opcode1 = 'd0,
-output reg  [2:0]           o_copro_opcode2 = 'd0,
-output reg  [3:0]           o_copro_crn = 'd0,    
-output reg  [3:0]           o_copro_crm = 'd0,
-output reg  [3:0]           o_copro_num = 'd0,
-output reg  [1:0]           o_copro_operation = 'd0, // 0 = no operation, 
-                                                     // 1 = Move to Amber Core Register from Coprocessor
-                                                     // 2 = Move to Coprocessor from Amber Core Register
-output reg                  o_copro_write_data_wen = 'd0,
-output                      o_iabt_trigger,
-output      [31:0]          o_iabt_address,
-output      [7:0]           o_iabt_status,
-output                      o_dabt_trigger,
-output      [31:0]          o_dabt_address,
-output      [7:0]           o_dabt_status 
-
-
-);
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Parameters file for Amber 2 Core                            //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Holds general parameters that are used is several core      //
-//  modules                                                     //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// Instruction Types
-localparam [3:0]    REGOP       = 4'h0, // Data processing
-                    MULT        = 4'h1, // Multiply
-                    SWAP        = 4'h2, // Single Data Swap
-                    TRANS       = 4'h3, // Single data transfer
-                    MTRANS      = 4'h4, // Multi-word data transfer
-                    BRANCH      = 4'h5, // Branch
-                    CODTRANS    = 4'h6, // Co-processor data transfer
-                    COREGOP     = 4'h7, // Co-processor data operation
-                    CORTRANS    = 4'h8, // Co-processor register transfer
-                    SWI         = 4'h9; // software interrupt
-
-
-// Opcodes
-localparam [3:0] AND = 4'h0,        // Logical AND
-                 EOR = 4'h1,        // Logical Exclusive OR
-                 SUB = 4'h2,        // Subtract
-                 RSB = 4'h3,        // Reverse Subtract
-                 ADD = 4'h4,        // Add
-                 ADC = 4'h5,        // Add with Carry
-                 SBC = 4'h6,        // Subtract with Carry
-                 RSC = 4'h7,        // Reverse Subtract with Carry
-                 TST = 4'h8,        // Test  (using AND operator)
-                 TEQ = 4'h9,        // Test Equivalence (using EOR operator)
-                 CMP = 4'ha,       // Compare (using Subtract operator)
-                 CMN = 4'hb,       // Compare Negated
-                 ORR = 4'hc,       // Logical OR
-                 MOV = 4'hd,       // Move
-                 BIC = 4'he,       // Bit Clear (using AND & NOT operators)
-                 MVN = 4'hf;       // Move NOT
-                 
-// Condition Encoding
-localparam [3:0] EQ  = 4'h0,        // Equal            / Z set
-                 NE  = 4'h1,        // Not equal        / Z clear
-                 CS  = 4'h2,        // Carry set        / C set
-                 CC  = 4'h3,        // Carry clear      / C clear
-                 MI  = 4'h4,        // Minus            / N set
-                 PL  = 4'h5,        // Plus             / N clear
-                 VS  = 4'h6,        // Overflow         / V set
-                 VC  = 4'h7,        // No overflow      / V clear
-                 HI  = 4'h8,        // Unsigned higher  / C set and Z clear
-                 LS  = 4'h9,        // Unsigned lower
-                                    // or same          / C clear or Z set
-                 GE  = 4'ha,        // Signed greater 
-                                    // than or equal    / N == V
-                 LT  = 4'hb,        // Signed less than / N != V
-                 GT  = 4'hc,        // Signed greater
-                                    // than             / Z == 0, N == V
-                 LE  = 4'hd,        // Signed less than
-                                    // or equal         / Z == 1, N != V
-                 AL  = 4'he,        // Always
-                 NV  = 4'hf;        // Never
-
-// Any instruction with a condition field of 0b1111 is UNPREDICTABLE.                
-                
-// Shift Types
-localparam [1:0] LSL = 2'h0,
-                 LSR = 2'h1,
-                 ASR = 2'h2,
-                 RRX = 2'h3,
-                 ROR = 2'h3; 
- 
-// Modes
-localparam [1:0] SVC  =  2'b11,  // Supervisor
-                 IRQ  =  2'b10,  // Interrupt
-                 FIRQ =  2'b01,  // Fast Interrupt
-                 USR  =  2'b00;  // User
-
-// One-Hot Mode encodings
-localparam [5:0] OH_USR  = 0,
-                 OH_IRQ  = 1,
-                 OH_FIRQ = 2,
-                 OH_SVC  = 3;
-
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Functions for Amber 2 Core                                  //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Functions used in more than one module                      //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// ========================================================
-// PC Filter - Remove the status bits 
-// ========================================================
-function [31:0] pcf;
-input [31:0] pc_reg;
-    begin
-    pcf = {6'd0, pc_reg[25:2], 2'd0};
-    end
-endfunction
-
-
-// ========================================================
-// 4-bit to 16-bit 1-hot decode
-// ========================================================
-function [14:0] decode;
-input [3:0] reg_sel;
-begin
-case ( reg_sel )
-    4'h0:    decode = 15'h0001;
-    4'h1:    decode = 15'h0002;
-    4'h2:    decode = 15'h0004;
-    4'h3:    decode = 15'h0008;
-    4'h4:    decode = 15'h0010;
-    4'h5:    decode = 15'h0020;
-    4'h6:    decode = 15'h0040;
-    4'h7:    decode = 15'h0080;
-    4'h8:    decode = 15'h0100;
-    4'h9:    decode = 15'h0200;
-    4'ha:    decode = 15'h0400;
-    4'hb:    decode = 15'h0800;
-    4'hc:    decode = 15'h1000;
-    4'hd:    decode = 15'h2000;
-    4'he:    decode = 15'h4000;
-    default: decode = 15'h0000;
-endcase
-end
-endfunction
-
-
-// ========================================================
-// Convert Stats Bits Mode to one-hot encoded version
-// ========================================================
-function [3:0] oh_status_bits_mode;
-input [1:0] fn_status_bits_mode;
-begin
-oh_status_bits_mode = 
-    fn_status_bits_mode == SVC  ? 1'd1 << OH_SVC  :
-    fn_status_bits_mode == IRQ  ? 1'd1 << OH_IRQ  :
-    fn_status_bits_mode == FIRQ ? 1'd1 << OH_FIRQ :
-                                  1'd1 << OH_USR  ;
-end
-endfunction
-
-// ========================================================
-// Convert mode into ascii name
-// ========================================================
-function [(14*8)-1:0]  mode_name;
-input [4:0] mode;
-begin
-
-mode_name    = mode == USR  ? "User          " :
-               mode == SVC  ? "Supervisor    " :
-               mode == IRQ  ? "Interrupt     " :
-               mode == FIRQ ? "Fast Interrupt" :
-                              "UNKNOWN       " ;
-end
-endfunction
-
-
-// ========================================================
-// Conditional Execution Function
-// ========================================================
-// EQ Z set
-// NE Z clear
-// CS C set
-// CC C clear
-// MI N set
-// PL N clear
-// VS V set
-// VC V clear
-// HI C set and Z clear
-// LS C clear or Z set
-// GE N == V
-// LT N != V
-// GT Z == 0,N == V
-// LE Z == 1 or N != V
-// AL Always (unconditional)
-// NV Never
-
-function conditional_execute;
-input [3:0] condition;
-input [3:0] flags;
-begin
-conditional_execute  
-               = ( condition == AL                                        ) ||
-                 ( condition == EQ  &&  flags[2]                          ) ||
-                 ( condition == NE  && !flags[2]                          ) ||
-                 ( condition == CS  &&  flags[1]                          ) ||
-                 ( condition == CC  && !flags[1]                          ) ||
-                 ( condition == MI  &&  flags[3]                          ) ||
-                 ( condition == PL  && !flags[3]                          ) ||
-                 ( condition == VS  &&  flags[0]                          ) ||
-                 ( condition == VC  && !flags[0]                          ) ||
-            
-                 ( condition == HI  &&    flags[1] && !flags[2]           ) ||
-                 ( condition == LS  &&  (!flags[1] ||  flags[2])          ) ||
-            
-                 ( condition == GE  &&  flags[3] == flags[0]              ) ||
-                 ( condition == LT  &&  flags[3] != flags[0]              ) ||
-
-                 ( condition == GT  &&  !flags[2] && flags[3] == flags[0] ) ||
-                 ( condition == LE  &&  (flags[2] || flags[3] != flags[0])) ;
-            
-end
-endfunction
-
-
-// ========================================================
-// Log 2
-// ========================================================
-
-function [31:0] log2;
-input    [31:0] num;
-integer i;
-integer out;
-begin
-  out = 32'd0;
-  for (i=0; i<30; i=i+1)
-    if ((2**i > num) && (out == 0))
-      out = i-1;
-  log2 = out;
-end
-endfunction
-
-localparam [4:0] RST_WAIT1      = 5'd0,
-                 RST_WAIT2      = 5'd1,
-                 INT_WAIT1      = 5'd2,
-                 INT_WAIT2      = 5'd3,
-                 EXECUTE        = 5'd4,
-                 PRE_FETCH_EXEC = 5'd5,  // Execute the Pre-Fetched Instruction
-                 MEM_WAIT1      = 5'd6,  // conditionally decode current instruction, in case
-                                         // previous instruction does not execute in S2
-                 MEM_WAIT2      = 5'd7,
-                 PC_STALL1      = 5'd8,  // Program Counter altered
-                                         // conditionally decude current instruction, in case
-                                         // previous instruction does not execute in S2
-                 PC_STALL2      = 5'd9,
-                 MTRANS_EXEC1   = 5'd10,
-                 MTRANS_EXEC2   = 5'd11,
-                 MTRANS_EXEC3   = 5'd12,
-                 MTRANS_EXEC3B  = 5'd13,
-                 MTRANS_EXEC4   = 5'd14,
-                 MTRANS5_ABORT  = 5'd15,
-                 MULT_PROC1     = 5'd16,  // first cycle, save pre fetch instruction
-                 MULT_PROC2     = 5'd17,  // do multiplication
-                 MULT_STORE     = 5'd19,  // save RdLo
-                 MULT_ACCUMU    = 5'd20,  // Accumulate add lower 32 bits
-                 SWAP_WRITE     = 5'd22,
-                 SWAP_WAIT1     = 5'd23,
-                 SWAP_WAIT2     = 5'd24,
-                 COPRO_WAIT     = 5'd25;
-                 
-                 
-// ========================================================
-// Internal signals
-// ========================================================
-wire    [31:0]         instruction;
-wire                   instruction_iabt;        // abort flag, follows the instruction
-wire                   instruction_adex;        // address exception flag, follows the instruction
-wire    [31:0]         instruction_address;     // instruction virtual address, follows 
-                                                // the instruction
-wire    [7:0]          instruction_iabt_status; // abort status, follows the instruction
-wire    [1:0]          instruction_sel;
-reg     [3:0]          type;
-wire    [3:0]          opcode;
-wire    [7:0]          imm8;
-wire    [31:0]         offset12;
-wire    [31:0]         offset24;
-wire    [4:0]          shift_imm;
-
-wire                   opcode_compare;
-wire                   mem_op;
-wire                   load_op;
-wire                   store_op;
-wire                   write_pc;
-wire                   immediate_shifter_operand;
-wire                   rds_use_rs;
-wire                   branch;
-wire                   mem_op_pre_indexed;
-wire                   mem_op_post_indexed;
-
-// Flop inputs
-wire    [31:0]         imm32_nxt;
-wire    [4:0]          imm_shift_amount_nxt;
-wire                   shift_imm_zero_nxt;
-wire    [3:0]          condition_nxt;
-reg                    exclusive_exec_nxt;
-reg                    data_access_exec_nxt;
-
-reg     [1:0]          barrel_shift_function_nxt;
-wire    [8:0]          alu_function_nxt;
-reg     [1:0]          multiply_function_nxt;
-reg     [1:0]          status_bits_mode_nxt;
-reg                    status_bits_irq_mask_nxt;
-reg                    status_bits_firq_mask_nxt;
-
-reg     [1:0]          barrel_shift_amount_sel_nxt;
-reg     [1:0]          barrel_shift_data_sel_nxt;
-reg     [3:0]          address_sel_nxt;
-reg     [1:0]          pc_sel_nxt;
-reg     [1:0]          byte_enable_sel_nxt;
-reg     [2:0]          status_bits_sel_nxt;
-reg     [2:0]          reg_write_sel_nxt;
-reg                    user_mode_regs_load_nxt;
-wire                   firq_not_user_mode_nxt;
-
-// ALU Function signals
-reg                    alu_swap_sel_nxt;
-reg                    alu_not_sel_nxt;
-reg     [1:0]          alu_cin_sel_nxt;
-reg                    alu_cout_sel_nxt;
-reg     [3:0]          alu_out_sel_nxt;
-
-reg                    write_data_wen_nxt;
-reg                    copro_write_data_wen_nxt;
-reg                    base_address_wen_nxt;
-reg                    pc_wen_nxt;
-reg     [3:0]          reg_bank_wsel_nxt;
-reg                    status_bits_flags_wen_nxt;
-reg                    status_bits_mode_wen_nxt;
-reg                    status_bits_irq_mask_wen_nxt;
-reg                    status_bits_firq_mask_wen_nxt;
-
-reg                    saved_current_instruction_wen;   // saved load instruction
-reg                    pre_fetch_instruction_wen;       // pre-fetch instruction
-
-reg     [4:0]          control_state = RST_WAIT1;
-reg     [4:0]          control_state_nxt;
-
-
-wire                   dabt;
-reg                    dabt_reg = 'd0;
-reg                    dabt_reg_d1;
-reg                    iabt_reg = 'd0;
-reg                    adex_reg = 'd0;
-reg     [31:0]         abt_address_reg = 'd0;
-reg     [7:0]          abt_status_reg = 'd0;
-reg     [31:0]         saved_current_instruction = 'd0;
-reg                    saved_current_instruction_iabt = 'd0;          // access abort flag
-reg                    saved_current_instruction_adex = 'd0;          // address exception
-reg     [31:0]         saved_current_instruction_address = 'd0;       // virtual address of abort instruction
-reg     [7:0]          saved_current_instruction_iabt_status = 'd0;   // status of abort instruction
-reg     [31:0]         pre_fetch_instruction = 'd0;
-reg                    pre_fetch_instruction_iabt = 'd0;              // access abort flag
-reg                    pre_fetch_instruction_adex = 'd0;              // address exception
-reg     [31:0]         pre_fetch_instruction_address = 'd0;           // virtual address of abort instruction
-reg     [7:0]          pre_fetch_instruction_iabt_status = 'd0;       // status of abort instruction
-
-wire                   instruction_valid;
-wire                   instruction_execute;
-
-reg     [3:0]          mtrans_reg;              // the current register being accessed as part of STM/LDM
-reg     [3:0]          mtrans_reg_d1 = 'd0;     // delayed by 1 period
-reg     [3:0]          mtrans_reg_d2 = 'd0;     // delayed by 2 periods
-reg     [31:0]         mtrans_instruction_nxt;
-
-wire   [31:0]          mtrans_base_reg_change;
-wire   [4:0]           mtrans_num_registers;
-wire                   use_saved_current_instruction;
-wire                   use_pre_fetch_instruction;
-wire                   interrupt;
-wire   [1:0]           interrupt_mode;
-wire   [2:0]           next_interrupt;
-reg                    irq = 'd0;
-reg                    firq = 'd0;
-wire                   firq_request;
-wire                   irq_request;
-wire                   swi_request;
-wire                   und_request;
-wire                   dabt_request;
-reg    [1:0]           copro_operation_nxt;
-reg                    mtrans_r15 = 'd0;
-reg                    mtrans_r15_nxt;
-reg                    restore_base_address = 'd0;
-reg                    restore_base_address_nxt;
-
-wire                   regop_set_flags;
-
-
-// ========================================================
-// Instruction Abort and Data Abort outputs
-// ========================================================
-
-assign o_iabt_trigger     = instruction_iabt && o_status_bits_mode == SVC && control_state == INT_WAIT1;
-assign o_iabt_address     = instruction_address;
-assign o_iabt_status      = instruction_iabt_status;
-
-assign o_dabt_trigger     = dabt_reg && !dabt_reg_d1;
-assign o_dabt_address     = abt_address_reg;
-assign o_dabt_status      = abt_status_reg;
-
-
-// ========================================================
-// Instruction Decode
-// ========================================================
-
-// for instructions that take more than one cycle
-// the instruction is saved in the 'saved_mem_instruction'
-// register and then that register is used for the rest of
-// the execution of the instruction.
-// But if the instruction does not execute because of the
-// condition, then need to select the next instruction to
-// decode
-assign use_saved_current_instruction =  instruction_execute &&
-                          ( control_state == MEM_WAIT1     ||
-                            control_state == MEM_WAIT2     ||
-                            control_state == MTRANS_EXEC1  ||
-                            control_state == MTRANS_EXEC2  || 
-                            control_state == MTRANS_EXEC3  ||
-                            control_state == MTRANS_EXEC3B ||
-                            control_state == MTRANS_EXEC4  ||
-                            control_state == MTRANS5_ABORT ||
-                            control_state == MULT_PROC1    ||
-                            control_state == MULT_PROC2    ||
-                            control_state == MULT_ACCUMU   ||
-                            control_state == MULT_STORE    ||
-                            control_state == INT_WAIT1     ||
-                            control_state == INT_WAIT2     ||
-                            control_state == SWAP_WRITE    ||
-                            control_state == SWAP_WAIT1    ||
-                            control_state == SWAP_WAIT2    ||
-                            control_state == COPRO_WAIT     );
-
-assign use_pre_fetch_instruction = control_state == PRE_FETCH_EXEC;
-
-
-assign instruction_sel  =         use_saved_current_instruction  ? 2'd1 :  // saved_current_instruction 
-                                  use_pre_fetch_instruction      ? 2'd2 :  // pre_fetch_instruction     
-                                                                   2'd0 ;  // o_read_data               
-
-assign instruction      =         instruction_sel == 2'd0 ? o_read_data               :
-                                  instruction_sel == 2'd1 ? saved_current_instruction :
-                                                            pre_fetch_instruction     ;
-
-// abort flag
-assign instruction_iabt =         instruction_sel == 2'd0 ? iabt_reg                       :
-                                  instruction_sel == 2'd1 ? saved_current_instruction_iabt :
-                                                            pre_fetch_instruction_iabt     ;
-                                                     
-assign instruction_address =      instruction_sel == 2'd0 ? abt_address_reg                   :
-                                  instruction_sel == 2'd1 ? saved_current_instruction_address :
-                                                            pre_fetch_instruction_address     ;
-
-assign instruction_iabt_status =  instruction_sel == 2'd0 ? abt_status_reg                        :
-                                  instruction_sel == 2'd1 ? saved_current_instruction_iabt_status :
-                                                            pre_fetch_instruction_iabt_status     ;
-
-// instruction address exception
-assign instruction_adex =         instruction_sel == 2'd0 ? adex_reg                       :
-                                  instruction_sel == 2'd1 ? saved_current_instruction_adex :
-                                                            pre_fetch_instruction_adex     ;
-
-// Instruction Decode - Order is important!
-always @*
-    casez ({instruction[27:20], instruction[7:4]})
-        12'b00010?001001 : type = SWAP;
-        12'b000000??1001 : type = MULT;
-        12'b00?????????? : type = REGOP;
-        12'b01?????????? : type = TRANS;   
-        12'b100????????? : type = MTRANS;  
-        12'b101????????? : type = BRANCH; 
-        12'b110????????? : type = CODTRANS;
-        12'b1110???????0 : type = COREGOP;         
-        12'b1110???????1 : type = CORTRANS;       
-        default:           type = SWI;
-    endcase
-
-    
-// ========================================================
-// Fixed fields within the instruction
-// ========================================================
-                       
-assign opcode        = instruction[24:21];
-assign condition_nxt = instruction[31:28];
-
-assign o_rm_sel_nxt    = instruction[3:0];
-                                                      
-assign o_rn_sel_nxt    = branch  ? 4'd15 : // Use PC to calculate branch destination
-                                 instruction[19:16] ;
-
-assign o_rds_sel_nxt   = control_state == SWAP_WRITE  ? instruction[3:0]   : // Rm gets written out to memory
-                       type == MTRANS               ? mtrans_reg      :
-                       branch                       ? 4'd15 : // Update the PC
-                       rds_use_rs                   ? instruction[11:8]  : 
-                                                      instruction[15:12] ;
-                                                     
-
-assign shift_imm     = instruction[11:7];
-assign offset12      = { 20'h0, instruction[11:0]};
-assign offset24      = {{6{instruction[23]}}, instruction[23:0], 2'd0 }; // sign extend
-assign imm8          = instruction[7:0];
-
-assign immediate_shifter_operand = instruction[25];
-assign rds_use_rs                = (type == REGOP && !instruction[25] && instruction[4]) ||
-                                   (type == MULT && 
-                                    (control_state == MULT_PROC1  || 
-                                     control_state == MULT_PROC2  ||
-                                     instruction_valid && !interrupt )) ;
-assign branch                    = type == BRANCH;
-assign opcode_compare =
-            opcode == CMP || 
-            opcode == CMN || 
-            opcode == TEQ || 
-            opcode == TST ;
-            
-            
-assign mem_op               = type == TRANS;
-assign load_op              = mem_op && instruction[20];
-assign store_op             = mem_op && !instruction[20];
-assign write_pc             = pc_wen_nxt && pc_sel_nxt != 2'd0;
-assign regop_set_flags      = type == REGOP && instruction[20]; 
-
-assign mem_op_pre_indexed   =  instruction[24] && instruction[21];
-assign mem_op_post_indexed  = !instruction[24];
-
-assign imm32_nxt            =  // add 0 to Rm
-                               type == MULT               ? {  32'd0 } :
-                               
-                               // 4 x number of registers
-                               type == MTRANS             ? {  mtrans_base_reg_change     } :
-                               type == BRANCH             ? {  offset24                   } :
-                               type == TRANS              ? {  offset12                   } :
-                               instruction[11:8] == 4'h0 ? {            24'h0, imm8[7:0] } :
-                               instruction[11:8] == 4'h1 ? { imm8[1:0], 24'h0, imm8[7:2] } :
-                               instruction[11:8] == 4'h2 ? { imm8[3:0], 24'h0, imm8[7:4] } :
-                               instruction[11:8] == 4'h3 ? { imm8[5:0], 24'h0, imm8[7:6] } :
-                               instruction[11:8] == 4'h4 ? { imm8[7:0], 24'h0 } :
-                               instruction[11:8] == 4'h5 ? { 2'h0,  imm8[7:0], 22'h0 } :
-                               instruction[11:8] == 4'h6 ? { 4'h0,  imm8[7:0], 20'h0 } :
-                               instruction[11:8] == 4'h7 ? { 6'h0,  imm8[7:0], 18'h0 } :
-                               instruction[11:8] == 4'h8 ? { 8'h0,  imm8[7:0], 16'h0 } :
-                               instruction[11:8] == 4'h9 ? { 10'h0, imm8[7:0], 14'h0 } :
-                               instruction[11:8] == 4'ha ? { 12'h0, imm8[7:0], 12'h0 } :
-                               instruction[11:8] == 4'hb ? { 14'h0, imm8[7:0], 10'h0 } :
-                               instruction[11:8] == 4'hc ? { 16'h0, imm8[7:0], 8'h0 } :
-                               instruction[11:8] == 4'hd ? { 18'h0, imm8[7:0], 6'h0 } :
-                               instruction[11:8] == 4'he ? { 20'h0, imm8[7:0], 4'h0 } :
-                                                            { 22'h0, imm8[7:0], 2'h0 } ;
-
-
-assign imm_shift_amount_nxt = shift_imm ;
-
-       // This signal is encoded in the decode stage because 
-       // it is on the critical path in the execute stage
-assign shift_imm_zero_nxt   = imm_shift_amount_nxt == 5'd0 &&       // immediate amount = 0
-                              barrel_shift_amount_sel_nxt == 2'd2;  // shift immediate amount
-
-assign alu_function_nxt     = { alu_swap_sel_nxt, 
-                                alu_not_sel_nxt, 
-                                alu_cin_sel_nxt,
-                                alu_cout_sel_nxt, 
-                                alu_out_sel_nxt  };
-                            
-                            
-// ========================================================
-// MTRANS Operations
-// ========================================================
-   
-   // Bit 15 = r15
-   // Bit 0  = R0
-   // In LDM and STM instructions R0 is loaded or stored first 
-always @*
-    casez (instruction[15:0])
-    16'b???????????????1 : mtrans_reg = 4'h0 ;
-    16'b??????????????10 : mtrans_reg = 4'h1 ;
-    16'b?????????????100 : mtrans_reg = 4'h2 ;
-    16'b????????????1000 : mtrans_reg = 4'h3 ;
-    16'b???????????10000 : mtrans_reg = 4'h4 ;
-    16'b??????????100000 : mtrans_reg = 4'h5 ;
-    16'b?????????1000000 : mtrans_reg = 4'h6 ;
-    16'b????????10000000 : mtrans_reg = 4'h7 ;
-    16'b???????100000000 : mtrans_reg = 4'h8 ;
-    16'b??????1000000000 : mtrans_reg = 4'h9 ;
-    16'b?????10000000000 : mtrans_reg = 4'ha ;
-    16'b????100000000000 : mtrans_reg = 4'hb ;
-    16'b???1000000000000 : mtrans_reg = 4'hc ;
-    16'b??10000000000000 : mtrans_reg = 4'hd ;
-    16'b?100000000000000 : mtrans_reg = 4'he ;
-    default              : mtrans_reg = 4'hf ;
-    endcase
-
-always @*
-    casez (instruction[15:0])
-    16'b???????????????1 : mtrans_instruction_nxt = {instruction[31:16], instruction[15: 1],  1'd0};
-    16'b??????????????10 : mtrans_instruction_nxt = {instruction[31:16], instruction[15: 2],  2'd0}; 
-    16'b?????????????100 : mtrans_instruction_nxt = {instruction[31:16], instruction[15: 3],  3'd0}; 
-    16'b????????????1000 : mtrans_instruction_nxt = {instruction[31:16], instruction[15: 4],  4'd0}; 
-    16'b???????????10000 : mtrans_instruction_nxt = {instruction[31:16], instruction[15: 5],  5'd0}; 
-    16'b??????????100000 : mtrans_instruction_nxt = {instruction[31:16], instruction[15: 6],  6'd0}; 
-    16'b?????????1000000 : mtrans_instruction_nxt = {instruction[31:16], instruction[15: 7],  7'd0}; 
-    16'b????????10000000 : mtrans_instruction_nxt = {instruction[31:16], instruction[15: 8],  8'd0}; 
-    16'b???????100000000 : mtrans_instruction_nxt = {instruction[31:16], instruction[15: 9],  9'd0}; 
-    16'b??????1000000000 : mtrans_instruction_nxt = {instruction[31:16], instruction[15:10], 10'd0}; 
-    16'b?????10000000000 : mtrans_instruction_nxt = {instruction[31:16], instruction[15:11], 11'd0}; 
-    16'b????100000000000 : mtrans_instruction_nxt = {instruction[31:16], instruction[15:12], 12'd0}; 
-    16'b???1000000000000 : mtrans_instruction_nxt = {instruction[31:16], instruction[15:13], 13'd0}; 
-    16'b??10000000000000 : mtrans_instruction_nxt = {instruction[31:16], instruction[15:14], 14'd0}; 
-    16'b?100000000000000 : mtrans_instruction_nxt = {instruction[31:16], instruction[15 ], 15'd0}; 
-    default              : mtrans_instruction_nxt = {instruction[31:16],                     16'd0}; 
-    endcase
-
-
-// number of registers to be stored
-assign mtrans_num_registers =   {4'd0, instruction[15]} + 
-                                {4'd0, instruction[14]} + 
-                                {4'd0, instruction[13]} + 
-                                {4'd0, instruction[12]} +
-                                {4'd0, instruction[11]} +
-                                {4'd0, instruction[10]} +
-                                {4'd0, instruction[ 9]} +
-                                {4'd0, instruction[ 8]} +
-                                {4'd0, instruction[ 7]} +
-                                {4'd0, instruction[ 6]} +
-                                {4'd0, instruction[ 5]} +
-                                {4'd0, instruction[ 4]} +
-                                {4'd0, instruction[ 3]} +
-                                {4'd0, instruction[ 2]} +
-                                {4'd0, instruction[ 1]} +
-                                {4'd0, instruction[ 0]} ;
-                                
-// 4 x number of registers to be stored
-assign mtrans_base_reg_change = {25'd0, mtrans_num_registers, 2'd0};
-
-// ========================================================
-// Interrupts
-// ========================================================
-
-assign firq_request = firq && !i_execute_status_bits[26];
-assign irq_request  = irq  && !i_execute_status_bits[27];
-assign swi_request  = type == SWI;
-assign dabt_request = dabt_reg;
-
-// copro15 and copro13 only supports reg trans opcodes
-// all other opcodes involving co-processors cause an 
-// undefined instrution interrupt
-assign und_request  =   type == CODTRANS || 
-                        type == COREGOP  || 
-                      ( type == CORTRANS && instruction[11:8] != 4'd15 );
-
-
-  // in order of priority !!                 
-  // Highest 
-  // 1 Reset
-  // 2 Data Abort (including data TLB miss)
-  // 3 FIRQ
-  // 4 IRQ
-  // 5 Prefetch Abort (including prefetch TLB miss)
-  // 6 Undefined instruction, SWI
-  // Lowest                        
-assign next_interrupt = dabt_request     ? 3'd1 :  // Data Abort
-                        firq_request     ? 3'd2 :  // FIRQ
-                        irq_request      ? 3'd3 :  // IRQ
-                        instruction_adex ? 3'd4 :  // Address Exception 
-                        instruction_iabt ? 3'd5 :  // PreFetch Abort, only triggered 
-                                                   // if the instruction is used
-                        und_request      ? 3'd6 :  // Undefined Instruction
-                        swi_request      ? 3'd7 :  // SWI
-                                           3'd0 ;  // none             
-
-        // SWI and undefined instructions do not cause an interrupt in the decode
-        // stage. They only trigger interrupts if they arfe executed, so the
-        // interrupt is triggered if the execute condition is met in the execute stage
-assign interrupt      = next_interrupt != 3'd0 && 
-                        next_interrupt != 3'd7 &&  // SWI
-                        next_interrupt != 3'd6 ;   // undefined interrupt
-
-
-assign interrupt_mode = next_interrupt == 3'd2 ? FIRQ :
-                        next_interrupt == 3'd3 ? IRQ  :
-                        next_interrupt == 3'd4 ? SVC  :
-                        next_interrupt == 3'd5 ? SVC  :
-                        next_interrupt == 3'd6 ? SVC  :
-                        next_interrupt == 3'd7 ? SVC  :
-                        next_interrupt == 3'd1 ? SVC  :
-                                                 USR  ;
-
-
-
-
-// ========================================================
-// Generate control signals
-// ========================================================
-always @*
-    begin
-    // default mode
-    status_bits_mode_nxt            = i_execute_status_bits[1:0];   // change to mode in execute stage get reflected
-                                                                    // back to this stage automatically
-    status_bits_irq_mask_nxt        = o_status_bits_irq_mask;
-    status_bits_firq_mask_nxt       = o_status_bits_firq_mask;
-    exclusive_exec_nxt              = 1'd0;
-    data_access_exec_nxt            = 1'd0;
-    copro_operation_nxt             = 'd0;
-    
-    // Save an instruction to use later
-    saved_current_instruction_wen   = 1'd0;
-    pre_fetch_instruction_wen       = 1'd0;
-    mtrans_r15_nxt                  = mtrans_r15;
-    restore_base_address_nxt        = restore_base_address;
-    
-    // default Mux Select values
-    barrel_shift_amount_sel_nxt     = 'd0;  // don't shift the input
-    barrel_shift_data_sel_nxt       = 'd0;  // immediate value
-    barrel_shift_function_nxt       = 'd0;
-    multiply_function_nxt           = 'd0;
-    address_sel_nxt                 = 'd0;  
-    pc_sel_nxt                      = 'd0;  
-    byte_enable_sel_nxt             = 'd0;  
-    status_bits_sel_nxt             = 'd0;  
-    reg_write_sel_nxt               = 'd0;  
-    user_mode_regs_load_nxt         = 'd0;
-    o_user_mode_regs_store_nxt      = 'd0;  
-           
-    // ALU Muxes
-    alu_swap_sel_nxt                = 'd0;  
-    alu_not_sel_nxt                 = 'd0;  
-    alu_cin_sel_nxt                 = 'd0;  
-    alu_cout_sel_nxt                = 'd0;  
-    alu_out_sel_nxt                 = 'd0;  
-    
-    // default Flop Write Enable values
-    write_data_wen_nxt              = 'd0;
-    copro_write_data_wen_nxt        = 'd0;
-    base_address_wen_nxt            = 'd0;
-    pc_wen_nxt                      = 'd1;
-    reg_bank_wsel_nxt               = 'hF;  // Don't select any
-    status_bits_flags_wen_nxt       = 'd0;
-    status_bits_mode_wen_nxt        = 'd0;
-    status_bits_irq_mask_wen_nxt    = 'd0;
-    status_bits_firq_mask_wen_nxt   = 'd0;
-    
-    if ( instruction_valid && !interrupt )
-        begin
-        if ( type == REGOP )
-            begin
-            if ( !opcode_compare )
-                begin
-                // Check is the load destination is the PC
-                if (instruction[15:12]  == 4'd15)
-                    begin
-                    pc_sel_nxt      = 2'd1; // alu_out
-                    address_sel_nxt = 4'd1; // alu_out
-                    end
-                else                     
-                    reg_bank_wsel_nxt = instruction[15:12];
-                end
-                
-            if ( !immediate_shifter_operand )
-                barrel_shift_function_nxt  = instruction[6:5];
-                          
-            if ( !immediate_shifter_operand )
-                barrel_shift_data_sel_nxt = 2'd2; // Shift value from Rm register
-                
-            if ( !immediate_shifter_operand && instruction[4] )
-                barrel_shift_amount_sel_nxt = 2'd1; // Shift amount from Rs registter
-                
-            if ( !immediate_shifter_operand && !instruction[4] ) 
-                barrel_shift_amount_sel_nxt = 2'd2; // Shift immediate amount 
-                
-            if ( opcode == ADD || opcode == CMN )   // CMN is just like an ADD
-                begin
-                alu_out_sel_nxt  = 4'd1; // Add
-                end
-                
-            if ( opcode == ADC ) // Add with Carry
-                begin
-                alu_out_sel_nxt  = 4'd1; // Add
-                alu_cin_sel_nxt  = 2'd2; // carry in from status_bits
-                end
-                
-            if ( opcode == SUB || opcode == CMP ) // Subtract
-                begin
-                alu_out_sel_nxt  = 4'd1; // Add
-                alu_cin_sel_nxt  = 2'd1; // cin = 1
-                alu_not_sel_nxt  = 1'd1; // invert B
-                end
-                
-            // SBC (Subtract with Carry) subtracts the value of its 
-            // second operand and the value of NOT(Carry flag) from
-            // the value of its first operand.
-            //  Rd = Rn - shifter_operand - NOT(C Flag)
-            if ( opcode == SBC ) // Subtract with Carry
-                begin
-                alu_out_sel_nxt  = 4'd1; // Add
-                alu_cin_sel_nxt  = 2'd2; // carry in from status_bits
-                alu_not_sel_nxt  = 1'd1; // invert B
-                end
-                
-            if ( opcode == RSB ) // Reverse Subtract
-                begin
-                alu_out_sel_nxt  = 4'd1; // Add
-                alu_cin_sel_nxt  = 2'd1; // cin = 1
-                alu_not_sel_nxt  = 1'd1; // invert B
-                alu_swap_sel_nxt = 1'd1; // swap A and B
-                end
-                
-            if ( opcode == RSC ) // Reverse Subtract with carry
-                begin
-                alu_out_sel_nxt  = 4'd1; // Add
-                alu_cin_sel_nxt  = 2'd2; // carry in from status_bits
-                alu_not_sel_nxt  = 1'd1; // invert B
-                alu_swap_sel_nxt = 1'd1; // swap A and B
-                end
-                
-            if ( opcode == AND || opcode == TST ) // Logical AND, Test  (using AND operator)
-                begin
-                alu_out_sel_nxt  = 4'd8;  // AND
-                alu_cout_sel_nxt = 1'd1;  // i_barrel_shift_carry
-                end
-                
-            if ( opcode == EOR || opcode == TEQ ) // Logical Exclusive OR, Test Equivalence (using EOR operator)
-                begin
-                alu_out_sel_nxt = 4'd6;  // XOR
-                alu_cout_sel_nxt = 1'd1; // i_barrel_shift_carry
-                end
-
-            if ( opcode == ORR )
-                begin
-                alu_out_sel_nxt  = 4'd7; // OR
-                alu_cout_sel_nxt = 1'd1;  // i_barrel_shift_carry
-                end
-                
-            if ( opcode == BIC ) // Bit Clear (using AND & NOT operators)
-                begin
-                alu_out_sel_nxt  = 4'd8;  // AND
-                alu_not_sel_nxt  = 1'd1;  // invert B
-                alu_cout_sel_nxt = 1'd1;  // i_barrel_shift_carry
-                end
-                
-            if ( opcode == MOV ) // Move
-                begin
-                alu_cout_sel_nxt = 1'd1;  // i_barrel_shift_carry
-                end
-                
-            if ( opcode == MVN ) // Move NOT
-                begin
-                alu_not_sel_nxt  = 1'd1; // invert B
-                alu_cout_sel_nxt = 1'd1;  // i_barrel_shift_carry
-                end
-            end
-        
-        // Load & Store instructions
-        if ( mem_op )
-            begin
-            saved_current_instruction_wen   = 1'd1; // Save the memory access instruction to refer back to later
-            pc_wen_nxt                      = 1'd0; // hold current PC value
-            data_access_exec_nxt            = 1'd1; // indicate that its a data read or write, 
-                                                    // rather than an instruction fetch
-            alu_out_sel_nxt                 = 4'd1; // Add
-            
-            if ( !instruction[23] )  // U: Subtract offset
-                begin
-                alu_cin_sel_nxt  = 2'd1; // cin = 1
-                alu_not_sel_nxt  = 1'd1; // invert B
-                end
-            
-            if ( store_op )
-                begin
-                write_data_wen_nxt = 1'd1;
-                if ( type == TRANS && instruction[22] )
-                    byte_enable_sel_nxt = 2'd1;         // Save byte
-                end
-                
-                // need to update the register holding the address ?
-                // This is Rn bits [19:16]
-            if ( mem_op_pre_indexed || mem_op_post_indexed )
-                begin
-                // Check is the load destination is the PC
-                if ( o_rn_sel_nxt  == 4'd15 )
-                    pc_sel_nxt = 2'd1; 
-                else                     
-                    reg_bank_wsel_nxt = o_rn_sel_nxt;
-                end
-                
-                // if post-indexed, then use Rn rather than ALU output, as address
-            if ( mem_op_post_indexed )
-               address_sel_nxt = 4'd4; // Rn
-            else   
-               address_sel_nxt = 4'd1; // alu out
-               
-            if ( instruction[25] && type ==  TRANS )
-                barrel_shift_data_sel_nxt = 2'd2; // Shift value from Rm register
-                
-            if ( type == TRANS && instruction[25] && shift_imm != 5'd0 ) 
-                begin   
-                barrel_shift_function_nxt   = instruction[6:5];
-                barrel_shift_amount_sel_nxt = 2'd2; // imm_shift_amount
-                end
-            end
-            
-        if ( type == BRANCH )
-            begin
-            pc_sel_nxt      = 2'd1; // alu_out
-            address_sel_nxt = 4'd1; // alu_out
-            alu_out_sel_nxt = 4'd1; // Add
-            
-            if ( instruction[24] ) // Link
-                begin
-                reg_bank_wsel_nxt  = 4'd14;  // Save PC to LR
-                reg_write_sel_nxt = 3'd1;            // pc - 32'd4
-                end
-            end
-            
-        if ( type == MTRANS )
-            begin
-            saved_current_instruction_wen   = 1'd1; // Save the memory access instruction to refer back to later
-            pc_wen_nxt                      = 1'd0; // hold current PC value
-            data_access_exec_nxt            = 1'd1; // indicate that its a data read or write, 
-                                                    // rather than an instruction fetch
-            alu_out_sel_nxt                 = 4'd1; // Add
-            mtrans_r15_nxt                  = instruction[15];  // load or save r15 ?
-            base_address_wen_nxt            = 1'd1; // Save the value of the register used for the base address,
-                                                    // in case of a data abort, and need to restore the value        
-
-            // The spec says -
-            // If the instruction would have overwritten the base with data 
-            // (that is, it has the base in the transfer list), the overwriting is prevented.
-            // This is true even when the abort occurs after the base word gets loaded
-            restore_base_address_nxt        = instruction[20] && 
-                                                (instruction[15:0] & (1'd1 << instruction[19:16]));
-
-            // Increment or Decrement
-            if ( instruction[23] ) // increment
-                begin
-                if ( instruction[24] )    // increment before
-                    address_sel_nxt = 4'd7; // Rn + 4
-                else    
-                    address_sel_nxt = 4'd4; // Rn
-                end
-            else // decrement
-                begin
-                alu_cin_sel_nxt  = 2'd1; // cin = 1
-                alu_not_sel_nxt  = 1'd1; // invert B
-                if ( !instruction[24] )    // decrement after
-                    address_sel_nxt  = 4'd6; // alu out + 4
-                else
-                    address_sel_nxt  = 4'd1; // alu out
-                end
-                
-            // Load or store ?
-            if ( !instruction[20] )  // Store
-                write_data_wen_nxt = 1'd1; 
-                
-            // LDM: load into user mode registers, when in priviledged mode  
-            // DOnt use mtrans_r15 here because its not loaded yet   
-            if ( {instruction[22:20],instruction[15]} == 4'b1010 )
-                user_mode_regs_load_nxt = 1'd1;
-                
-            // SDM: store the user mode registers, when in priviledged mode     
-            if ( {instruction[22:20]} == 3'b100 )  
-                o_user_mode_regs_store_nxt = 1'd1;
-                                
-            // update the base register ?
-            if ( instruction[21] )  // the W bit
-                reg_bank_wsel_nxt  = o_rn_sel_nxt;
-            end
-            
-            
-        if ( type == MULT )
-            begin
-            multiply_function_nxt[0]        = 1'd1; // set enable
-                                                    // some bits can be changed just below
-            saved_current_instruction_wen   = 1'd1; // Save the Multiply instruction to 
-                                                    // refer back to later
-            pc_wen_nxt                      = 1'd0; // hold current PC value
-            
-            if ( instruction[21] )
-                multiply_function_nxt[1]    = 1'd1; // accumulate
-            end
-                       
-            
-        // swp - do read part first
-        if ( type == SWAP )
-            begin
-            saved_current_instruction_wen   = 1'd1; // Save the memory access instruction to refer back to later
-            pc_wen_nxt                      = 1'd0; // hold current PC value
-            data_access_exec_nxt            = 1'd1; // indicate that its a data read or write, 
-                                                    // rather than an instruction fetch
-            barrel_shift_data_sel_nxt       = 2'd2; // Shift value from Rm register
-            address_sel_nxt                 = 4'd4; // Rn
-            exclusive_exec_nxt              = 1'd1; // signal an exclusive access
-            end
-
-
-        // mcr & mrc - takes two cycles
-        if ( type == CORTRANS && !und_request )
-            begin
-            saved_current_instruction_wen   = 1'd1; // Save the memory access instruction to refer back to later
-            pc_wen_nxt                      = 1'd0; // hold current PC value
-            address_sel_nxt                 = 4'd3; // pc  (not pc + 4)
-            
-            if ( instruction[20] ) // MRC
-                copro_operation_nxt         = 2'd1;  // Register transfer from Co-Processor
-            else // MCR
-                begin
-                 // Don't enable operation to Co-Processor until next period
-                 // So it gets the Rd value from the execution stage at the same time
-                copro_operation_nxt      = 2'd0;
-                copro_write_data_wen_nxt = 1'd1;  // Rd register value to co-processor
-                end
-            end
-
-        
-        if ( type == SWI || und_request )
-            begin
-            // save address of next instruction to Supervisor Mode LR
-            reg_write_sel_nxt               = 3'd1;            // pc -4
-            reg_bank_wsel_nxt               = 4'd14;  // LR
-        
-            address_sel_nxt                 = 4'd2;            // interrupt_vector
-            pc_sel_nxt                      = 2'd2;            // interrupt_vector
-        
-            status_bits_mode_nxt            = interrupt_mode;  // e.g. Supervisor mode
-            status_bits_mode_wen_nxt        = 1'd1;
-        
-            // disable normal interrupts
-            status_bits_irq_mask_nxt        = 1'd1;
-            status_bits_irq_mask_wen_nxt    = 1'd1;
-            end
-
-        
-        if ( regop_set_flags )
-            begin
-            status_bits_flags_wen_nxt = 1'd1;
-            
-            // If <Rd> is r15, the ALU output is copied to the Status Bits. 
-            // Not allowed to use r15 for mul or lma instructions           
-            if ( instruction[15:12] == 4'd15 )
-                begin
-                status_bits_sel_nxt       = 3'd1; // alu out
-                
-                // Priviledged mode? Then also update the other status bits
-                if ( i_execute_status_bits[1:0] != USR )
-                    begin
-                    status_bits_mode_wen_nxt      = 1'd1;
-                    status_bits_irq_mask_wen_nxt  = 1'd1;
-                    status_bits_firq_mask_wen_nxt = 1'd1;
-                    end
-                end
-            end
-            
-        end    
-
-    // Handle asynchronous interrupts.
-    // interrupts are processed only during execution states
-    // multicycle instructions must complete before the interrupt starts
-    // SWI, Address Exception and Undefined Instruction interrupts are only executed if the
-    // instruction that causes the interrupt is conditionally executed so
-    // its not handled here
-    if ( instruction_valid && interrupt &&  next_interrupt != 3'd6 )
-        begin
-        // Save the interrupt causing instruction to refer back to later
-        // This also saves the instruction abort vma and status, in the case of an
-        // instruction abort interrupt
-        saved_current_instruction_wen   = 1'd1; 
-        
-        // save address of next instruction to Supervisor Mode LR
-        // Address Exception ?
-        if ( next_interrupt == 3'd4 )
-            reg_write_sel_nxt               = 3'd7;            // pc
-        else
-            reg_write_sel_nxt               = 3'd1;            // pc -4
-            
-        reg_bank_wsel_nxt               = 4'd14;           // LR
-        
-        address_sel_nxt                 = 4'd2;            // interrupt_vector
-        pc_sel_nxt                      = 2'd2;            // interrupt_vector
-        
-        status_bits_mode_nxt            = interrupt_mode;  // e.g. Supervisor mode
-        status_bits_mode_wen_nxt        = 1'd1;
-        
-        // disable normal interrupts
-        status_bits_irq_mask_nxt        = 1'd1;
-        status_bits_irq_mask_wen_nxt    = 1'd1;
-
-        // disable fast interrupts
-        if ( next_interrupt == 3'd2 ) // FIRQ
-            begin
-            status_bits_firq_mask_nxt        = 1'd1;
-            status_bits_firq_mask_wen_nxt    = 1'd1;
-            end
-        end
-        
-
-    // previous instruction was either ldr or sdr
-    // if it is currently executing in the execute stage do the following    
-    if ( control_state == MEM_WAIT1 )
-        begin
-        // Save the next instruction to execute later
-        // Do this even if this instruction does not execute because of Condition
-        pre_fetch_instruction_wen   = 1'd1;
-        
-        if ( instruction_execute ) // conditional execution state
-            begin
-            address_sel_nxt             = 4'd3; // pc  (not pc + 4)
-            pc_wen_nxt                  = 1'd0; // hold current PC value
-            end
-        end
-            
-    
-    // completion of load operation        
-    if ( control_state == MEM_WAIT2 && load_op )
-        begin
-        barrel_shift_data_sel_nxt   = 2'd1;  // load word from memory
-        barrel_shift_amount_sel_nxt = 2'd3;  // shift by address[1:0] x 8
-        
-        // shift needed
-        if ( i_execute_address[1:0] != 2'd0 )
-            barrel_shift_function_nxt = ROR;
-            
-        // load a byte            
-        if ( type == TRANS && instruction[22] )
-            alu_out_sel_nxt             = 4'd3;  // zero_extend8
-            
-        if ( !dabt )  // dont load data there is an abort on the data read
-            begin    
-            // Check if the load destination is the PC
-            if (instruction[15:12]  == 4'd15)
-                begin
-                pc_sel_nxt      = 2'd1; // alu_out
-                address_sel_nxt = 4'd1; // alu_out
-                end
-            else                     
-                reg_bank_wsel_nxt = instruction[15:12];
-            end
-        end
-        
-        
-    // second cycle of multiple load or store
-    if ( control_state == MTRANS_EXEC1 )
-        begin
-        // Save the next instruction to execute later
-        // Do this even if this instruction does not execute because of Condition
-        pre_fetch_instruction_wen   = 1'd1;
-        
-        if ( instruction_execute ) // conditional execution state
-            begin
-            address_sel_nxt             = 4'd5;  // o_address
-            pc_wen_nxt                  = 1'd0;  // hold current PC value
-            data_access_exec_nxt        = 1'd1;  // indicate that its a data read or write, 
-                                                 // rather than an instruction fetch
-        
-            if ( !instruction[20] ) // Store
-                write_data_wen_nxt = 1'd1;
-                
-            // LDM: load into user mode registers, when in priviledged mode     
-            if ( {instruction[22:20],mtrans_r15} == 4'b1010 )
-                user_mode_regs_load_nxt = 1'd1;
-                
-            // SDM: store the user mode registers, when in priviledged mode     
-            if ( {instruction[22:20]} == 3'b100 )  
-                o_user_mode_regs_store_nxt = 1'd1;
-            end    
-        end    
-       
-        
-        // third cycle of multiple load or store
-    if ( control_state == MTRANS_EXEC2 )
-        begin
-        address_sel_nxt             = 4'd5;  // o_address
-        pc_wen_nxt                  = 1'd0;  // hold current PC value
-        data_access_exec_nxt        = 1'd1;  // indicate that its a data read or write, 
-                                             // rather than an instruction fetch
-        barrel_shift_data_sel_nxt   = 2'd1;  // load word from memory
-        
-        // Load or Store
-        if ( instruction[20] ) // Load
-            begin
-            // Can never be loading the PC in this state, as the PC is always
-            // the last register in the set to be loaded
-            if ( !dabt )
-                reg_bank_wsel_nxt = mtrans_reg_d2;
-            end
-        else // Store
-            write_data_wen_nxt = 1'd1;
-            
-        // LDM: load into user mode registers, when in priviledged mode     
-        if ( {instruction[22:20],mtrans_r15} == 4'b1010 )
-            user_mode_regs_load_nxt = 1'd1;
-            
-        // SDM: store the user mode registers, when in priviledged mode     
-        if ( {instruction[22:20]} == 3'b100 )  
-            o_user_mode_regs_store_nxt = 1'd1;
-        end
-        
-        
-        // second or fourth cycle of multiple load or store
-    if ( control_state == MTRANS_EXEC3 && instruction_execute )
-        begin
-        address_sel_nxt             = 4'd3; // pc  (not pc + 4)
-        pc_wen_nxt                  = 1'd0;  // hold current PC value
-        barrel_shift_data_sel_nxt   = 2'd1;  // load word from memory
-        
-        // Can never be loading the PC in this state, as the PC is always
-        // the last register in the set to be loaded
-        if ( instruction[20] && !dabt ) // Load
-            reg_bank_wsel_nxt = mtrans_reg_d2;
-            
-        // LDM: load into user mode registers, when in priviledged mode     
-        if ( {instruction[22:20],mtrans_r15} == 4'b1010 )
-            user_mode_regs_load_nxt = 1'd1;
-           
-        // SDM: store the user mode registers, when in priviledged mode     
-        if ( {instruction[22:20]} == 3'b100 )  
-            o_user_mode_regs_store_nxt = 1'd1;
-       end
-
-    // state is used for LMD/STM of a single register
-    if ( control_state == MTRANS_EXEC3B && instruction_execute )
-        begin
-        // Save the next instruction to execute later
-        // Do this even if this instruction does not execute because of Condition
-        pre_fetch_instruction_wen   = 1'd1;
-            
-        address_sel_nxt             = 4'd3;  // pc  (not pc + 4)
-        pc_wen_nxt                  = 1'd0;  // hold current PC value
-        
-        // LDM: load into user mode registers, when in priviledged mode     
-        if ( {instruction[22:20],mtrans_r15} == 4'b1010 )
-            user_mode_regs_load_nxt = 1'd1;
-            
-        // SDM: store the user mode registers, when in priviledged mode     
-        if ( {instruction[22:20]} == 3'b100 )  
-            o_user_mode_regs_store_nxt = 1'd1;
-        end
-          
-    if ( control_state == MTRANS_EXEC4 )
-        begin
-        barrel_shift_data_sel_nxt   = 2'd1;  // load word from memory
-        
-        if ( instruction[20] ) // Load
-            begin
-            if (!dabt) // dont overwrite registers or status if theres a data abort
-                begin
-                if ( mtrans_reg_d2 == 4'd15 ) // load new value into PC
-                    begin
-                    address_sel_nxt = 4'd1; // alu_out - read instructions using new PC value
-                    pc_sel_nxt      = 2'd1; // alu_out
-                    pc_wen_nxt      = 1'd1; // write PC
-                    
-                    // ldm with S bit and pc: the Status bits are updated
-                    // Node this must be done only at the end
-                    // so the register set is the set in the mode before it
-                    // gets changed. 
-                    if ( instruction[22] ) 
-                         begin
-                         status_bits_sel_nxt           = 3'd1; // alu out
-                         status_bits_flags_wen_nxt     = 1'd1;
-                         
-                         // Can't change the mode or mask bits in User mode
-                         if ( i_execute_status_bits[1:0] != USR ) 
-                            begin
-                            status_bits_mode_wen_nxt      = 1'd1;
-                            status_bits_irq_mask_wen_nxt  = 1'd1;
-                            status_bits_firq_mask_wen_nxt = 1'd1;
-                            end
-                         end
-                    end
-                else
-                    begin
-                    reg_bank_wsel_nxt = mtrans_reg_d2;
-                    end
-                end
-            end
-           
-           // we have a data abort interrupt
-        if ( dabt )
-            begin    
-            pc_wen_nxt = 1'd0;  // hold current PC value
-            end
-            
-        // LDM: load into user mode registers, when in priviledged mode     
-        if ( {instruction[22:20],mtrans_r15} == 4'b1010 )
-            user_mode_regs_load_nxt = 1'd1;
-            
-        // SDM: store the user mode registers, when in priviledged mode     
-        if ( {instruction[22:20]} == 3'b100 )  
-            o_user_mode_regs_store_nxt = 1'd1;
-        end
-        
-        
-    // state is for when a data abort interrupt is triggered during an LDM
-    if ( control_state == MTRANS5_ABORT )
-        begin
-        // Restore the Base Address, if the base register is included in the
-        // list of registers being loaded
-        if (restore_base_address) // LDM with base address in register list
-            begin
-            reg_write_sel_nxt = 3'd6;                        // write base_register
-            reg_bank_wsel_nxt  = instruction[19:16];         // to Rn
-            end
-        end
-        
-        
-        // Multiply or Multiply-Accumulate
-    if ( control_state == MULT_PROC1 && instruction_execute )
-        begin
-        // Save the next instruction to execute later
-        // Do this even if this instruction does not execute because of Condition
-        pre_fetch_instruction_wen   = 1'd1;
-        pc_wen_nxt                  = 1'd0;  // hold current PC value
-        multiply_function_nxt       = o_multiply_function;
-        end
-
-        
-        // Multiply or Multiply-Accumulate
-        // Do multiplication
-        // Wait for done or accumulate signal
-    if ( control_state == MULT_PROC2 )
-        begin
-        // Save the next instruction to execute later
-        // Do this even if this instruction does not execute because of Condition
-        pc_wen_nxt              = 1'd0;  // hold current PC value
-        address_sel_nxt         = 4'd3;  // pc  (not pc + 4)
-        multiply_function_nxt   = o_multiply_function;
-        end
-
-                
-    // Save RdLo
-    // always last cycle of all multiply or multiply accumulate operations
-    if ( control_state == MULT_STORE )
-        begin
-        reg_write_sel_nxt     = 3'd2; // multiply_out
-        multiply_function_nxt = o_multiply_function;
-        
-        if ( type == MULT ) // 32-bit
-            reg_bank_wsel_nxt      = instruction[19:16]; // Rd
-        else  // 64-bit / Long
-            reg_bank_wsel_nxt      = instruction[15:12]; // RdLo
-            
-        if ( instruction[20] )  // the 'S' bit
-            begin
-            status_bits_sel_nxt       = 3'd4; // { multiply_flags, status_bits_flags[1:0] } 
-            status_bits_flags_wen_nxt = 1'd1;
-            end
-        end
-        
-        // Add lower 32 bits to multiplication product
-    if ( control_state == MULT_ACCUMU )
-        begin
-        multiply_function_nxt = o_multiply_function;
-        pc_wen_nxt            = 1'd0;  // hold current PC value
-        address_sel_nxt       = 4'd3;  // pc  (not pc + 4)
-        end
-                
-    // swp - do write request in 2nd cycle
-    if ( control_state == SWAP_WRITE && instruction_execute )
-        begin
-        barrel_shift_data_sel_nxt       = 2'd2; // Shift value from Rm register
-        address_sel_nxt                 = 4'd4; // Rn
-        write_data_wen_nxt              = 1'd1;
-        data_access_exec_nxt            = 1'd1; // indicate that its a data read or write, 
-                                                // rather than an instruction fetch
-        
-        if ( instruction[22] )
-            byte_enable_sel_nxt = 2'd1;         // Save byte
-            
-        if ( instruction_execute )                         // conditional execution state
-            pc_wen_nxt                  = 1'd0; // hold current PC value
-            
-        // Save the next instruction to execute later
-        // Do this even if this instruction does not execute because of Condition
-        pre_fetch_instruction_wen   = 1'd1;
-        
-        end
-
-           
-    // swp - receive read response in 3rd cycle
-    if ( control_state == SWAP_WAIT1 ) 
-        begin
-        barrel_shift_data_sel_nxt   = 2'd1;  // load word from memory
-        barrel_shift_amount_sel_nxt = 2'd3;  // shift by address[1:0] x 8
-        
-        // shift needed
-        if ( i_execute_address[1:0] != 2'd0 )
-            barrel_shift_function_nxt = ROR;
-        
-        if ( instruction_execute ) // conditional execution state
-            begin
-            address_sel_nxt             = 4'd3; // pc  (not pc + 4)
-            pc_wen_nxt                  = 1'd0; // hold current PC value
-            end
-            
-        // load a byte            
-        if ( instruction[22] )
-            alu_out_sel_nxt = 4'd3;  // zero_extend8
-        
-        if ( !dabt )
-            begin    
-            // Check is the load destination is the PC
-            if ( instruction[15:12]  == 4'd15 )
-                begin
-                pc_sel_nxt      = 2'd1; // alu_out
-                address_sel_nxt = 4'd1; // alu_out
-                end
-            else                     
-                reg_bank_wsel_nxt = instruction[15:12];
-            end
-        end
-        
-    // 1 cycle delay for Co-Processor Register access
-    if ( control_state == COPRO_WAIT && instruction_execute )
-        begin
-        pre_fetch_instruction_wen = 1'd1;
-        
-        if ( instruction[20] ) // mrc instruction
-            begin
-            // Check is the load destination is the PC
-            if ( instruction[15:12]  == 4'd15 )
-                begin
-                // If r15 is specified for <Rd>, the condition code flags are 
-                // updated instead of a general-purpose register.
-                status_bits_sel_nxt           = 3'd3;  // i_copro_data
-                status_bits_flags_wen_nxt     = 1'd1;
-                
-                // Can't change these in USR mode
-                if ( i_execute_status_bits[1:0] != USR )
-                   begin
-                   status_bits_mode_wen_nxt      = 1'd1;
-                   status_bits_irq_mask_wen_nxt  = 1'd1;
-                   status_bits_firq_mask_wen_nxt = 1'd1;
-                   end
-                end
-            else                     
-                reg_bank_wsel_nxt = instruction[15:12];
-                        
-            reg_write_sel_nxt = 3'd5;     // i_copro_data
-            end
-        else // mcr instruction
-            begin
-            copro_operation_nxt      = 2'd2;  // Register transfer to Co-Processor 
-            end 
-        end
-        
-
-    // Have just changed the status_bits mode but this
-    // creates a 1 cycle gap with the old mode
-    // coming back from execute into instruction_decode
-    // So squash that old mode value during this
-    // cycle of the interrupt transition    
-    if ( control_state == INT_WAIT1 ) 
-        status_bits_mode_nxt            = o_status_bits_mode;   // Supervisor mode
-
-    end
-
-
-// Speed up the long path from u_decode/o_read_data to u_register_bank/r8_firq
-// This pre-encodes the firq_s3 signal thats used in u_register_bank
-assign firq_not_user_mode_nxt = !user_mode_regs_load_nxt && status_bits_mode_nxt == FIRQ;
-
-
-// ========================================================
-// Next State Logic
-// ========================================================
-
-// this replicates the current value of the execute signal in the execute stage
-assign instruction_execute = conditional_execute ( o_condition, i_execute_status_bits[31:28] );
-
-assign instruction_valid = (control_state == EXECUTE || control_state == PRE_FETCH_EXEC) ||
-                     // when last instruction was multi-cycle instruction but did not execute
-                     // because condition was false then act like you're in the execute state
-                    (!instruction_execute && (control_state == PC_STALL1    || 
-                                              control_state == MEM_WAIT1    ||
-                                              control_state == COPRO_WAIT   ||
-                                              control_state == SWAP_WRITE   ||
-                                              control_state == MULT_PROC1   ||
-                                              control_state == MTRANS_EXEC1 ||
-                                              control_state == MTRANS_EXEC3 ||
-                                              control_state == MTRANS_EXEC3B  ) );
-
-
- always @*
-    begin
-    // default is to hold the current state
-    control_state_nxt = control_state;
-    
-    // Note: The order is important here
-    if ( control_state == RST_WAIT1 )     control_state_nxt = RST_WAIT2;
-    if ( control_state == RST_WAIT2 )     control_state_nxt = EXECUTE;
-    if ( control_state == INT_WAIT1 )     control_state_nxt = INT_WAIT2;
-    if ( control_state == INT_WAIT2 )     control_state_nxt = EXECUTE;
-    if ( control_state == COPRO_WAIT )    control_state_nxt = PRE_FETCH_EXEC;
-    if ( control_state == PC_STALL1 )     control_state_nxt = PC_STALL2;
-    if ( control_state == PC_STALL2 )     control_state_nxt = EXECUTE; 
-    if ( control_state == SWAP_WRITE )    control_state_nxt = SWAP_WAIT1; 
-    if ( control_state == SWAP_WAIT1 )    control_state_nxt = SWAP_WAIT2; 
-    if ( control_state == MULT_STORE )    control_state_nxt = PRE_FETCH_EXEC;  
-    if ( control_state == MTRANS5_ABORT ) control_state_nxt = PRE_FETCH_EXEC;
-
-    if ( control_state == MEM_WAIT1 )
-        control_state_nxt = MEM_WAIT2;
-
-    if ( control_state == MEM_WAIT2   || 
-        control_state == SWAP_WAIT2    )
-        begin
-        if ( write_pc ) // writing to the PC!! 
-            control_state_nxt = PC_STALL1;
-        else
-            control_state_nxt = PRE_FETCH_EXEC;
-        end
-        
-    if ( control_state == MTRANS_EXEC1 )  
-        begin 
-        if (mtrans_instruction_nxt[15:0] != 16'd0)
-            control_state_nxt = MTRANS_EXEC2;
-        else   // if the register list holds a single register 
-            control_state_nxt = MTRANS_EXEC3;
-        end
-        
-        // Stay in State MTRANS_EXEC2 until the full list of registers to
-        // load or store has been processed
-    if ( control_state == MTRANS_EXEC2 && mtrans_num_registers == 5'd1 )
-        control_state_nxt = MTRANS_EXEC3;
-        
-    if ( control_state == MTRANS_EXEC3 )     control_state_nxt = MTRANS_EXEC4; 
-    
-    if ( control_state == MTRANS_EXEC3B )    control_state_nxt = MTRANS_EXEC4;
-
-    if ( control_state == MTRANS_EXEC4  )
-        begin
-        if ( dabt ) // data abort
-            control_state_nxt = MTRANS5_ABORT;
-        else if (write_pc) // writing to the PC!! 
-            control_state_nxt = PC_STALL1;
-        else
-            control_state_nxt = PRE_FETCH_EXEC;
-        end
-    
-    if ( control_state == MULT_PROC1 )
-        begin
-        if (!instruction_execute)
-            control_state_nxt = PRE_FETCH_EXEC;
-        else
-            control_state_nxt = MULT_PROC2;
-        end
-        
-    if ( control_state == MULT_PROC2 )
-        begin
-        if ( i_multiply_done )
-            if      ( o_multiply_function[1] )  // Accumulate ?
-                control_state_nxt = MULT_ACCUMU;
-            else    
-                control_state_nxt = MULT_STORE;
-        end
-        
-        
-    if ( control_state == MULT_ACCUMU )
-        begin
-        control_state_nxt = MULT_STORE;
-        end
-        
-            
-    // This should come at the end, so that conditional execution works
-    // correctly
-    if ( instruction_valid )
-        begin
-        // default is to stay in execute state, or to move into this
-        // state from a conditional execute state
-        control_state_nxt = EXECUTE;
-        
-        if ( mem_op )  // load or store word or byte
-             control_state_nxt = MEM_WAIT1;
-        if ( write_pc )     
-             control_state_nxt = PC_STALL1;
-        if ( type == MTRANS )
-            begin
-            if ( mtrans_num_registers != 5'd0 )
-                begin
-                // check for LDM/STM of a single register
-                if ( mtrans_num_registers == 5'd1 )
-                    control_state_nxt = MTRANS_EXEC3B;
-                else
-                    control_state_nxt = MTRANS_EXEC1;
-                end
-            else    
-                control_state_nxt = MTRANS_EXEC3;
-            end
-
-        if ( type == MULT )
-                control_state_nxt = MULT_PROC1;
-
-        if ( type == SWAP )        
-                control_state_nxt = SWAP_WRITE;
-
-        if ( type == CORTRANS && !und_request )        
-                control_state_nxt = COPRO_WAIT;
-                
-         // interrupt overrides everything else so its last       
-        if ( interrupt )        
-                control_state_nxt = INT_WAIT1;
-        end
-    end
-
-
-// ========================================================
-// Register Update
-// ========================================================
-always @ ( posedge i_clk )
-    if (!i_fetch_stall) 
-        begin                                                                                                                 
-        o_read_data                 <= i_read_data;
-        o_read_data_alignment       <= {i_execute_address[1:0], 3'd0};  
-        abt_address_reg             <= i_execute_address;
-        iabt_reg                    <= i_iabt;
-        adex_reg                    <= i_adex;
-        abt_status_reg              <= i_abt_status;
-        o_status_bits_mode          <= status_bits_mode_nxt;
-        o_status_bits_irq_mask      <= status_bits_irq_mask_nxt;
-        o_status_bits_firq_mask     <= status_bits_firq_mask_nxt;
-        o_imm32                     <= imm32_nxt;
-        o_imm_shift_amount          <= imm_shift_amount_nxt;
-        o_shift_imm_zero            <= shift_imm_zero_nxt;
-        
-                                        // when have an interrupt, execute the interrupt operation
-                                        // unconditionally in the execute stage
-                                        // ensures that status_bits register gets updated correctly
-                                        // Likewise when in middle of multi-cycle instructions
-                                        // execute them unconditionally
-        o_condition                 <= instruction_valid && !interrupt ? condition_nxt : AL;
-        o_exclusive_exec            <= exclusive_exec_nxt;
-        o_data_access_exec          <= data_access_exec_nxt;
-        
-        o_rm_sel                    <= o_rm_sel_nxt;
-        o_rds_sel                   <= o_rds_sel_nxt;
-        o_rn_sel                    <= o_rn_sel_nxt;
-        o_barrel_shift_amount_sel   <= barrel_shift_amount_sel_nxt;
-        o_barrel_shift_data_sel     <= barrel_shift_data_sel_nxt;
-        o_barrel_shift_function     <= barrel_shift_function_nxt;
-        o_alu_function              <= alu_function_nxt;
-        o_multiply_function         <= multiply_function_nxt;
-        o_interrupt_vector_sel      <= next_interrupt;
-        o_address_sel               <= address_sel_nxt;
-        o_pc_sel                    <= pc_sel_nxt;
-        o_byte_enable_sel           <= byte_enable_sel_nxt;
-        o_status_bits_sel           <= status_bits_sel_nxt;
-        o_reg_write_sel             <= reg_write_sel_nxt;
-        o_user_mode_regs_load       <= user_mode_regs_load_nxt;
-        o_firq_not_user_mode        <= firq_not_user_mode_nxt;
-        o_write_data_wen            <= write_data_wen_nxt;
-        o_base_address_wen          <= base_address_wen_nxt;
-        o_pc_wen                    <= pc_wen_nxt;
-        o_reg_bank_wsel             <= reg_bank_wsel_nxt;
-        o_reg_bank_wen              <= decode ( reg_bank_wsel_nxt );
-        o_status_bits_flags_wen     <= status_bits_flags_wen_nxt;
-        o_status_bits_mode_wen      <= status_bits_mode_wen_nxt;
-        o_status_bits_irq_mask_wen  <= status_bits_irq_mask_wen_nxt;
-        o_status_bits_firq_mask_wen <= status_bits_firq_mask_wen_nxt;
-        
-        o_copro_opcode1             <= instruction[23:21];
-        o_copro_opcode2             <= instruction[7:5];
-        o_copro_crn                 <= instruction[19:16];
-        o_copro_crm                 <= instruction[3:0];
-        o_copro_num                 <= instruction[11:8];
-        o_copro_operation           <= copro_operation_nxt;
-        o_copro_write_data_wen      <= copro_write_data_wen_nxt;
-        mtrans_r15                  <= mtrans_r15_nxt;
-        restore_base_address        <= restore_base_address_nxt;
-        control_state               <= control_state_nxt;
-        mtrans_reg_d1               <= mtrans_reg;
-        mtrans_reg_d2               <= mtrans_reg_d1;
-        end
-
-
-
-always @ ( posedge i_clk )
-    if ( !i_fetch_stall )
-        begin
-        // sometimes this is a pre-fetch instruction
-        // e.g. two ldr instructions in a row. The second ldr will be saved
-        // to the pre-fetch instruction register
-        // then when its decoded, a copy is saved to the saved_current_instruction
-        // register
-        if      (type == MTRANS)
-            begin           
-            saved_current_instruction              <= mtrans_instruction_nxt;
-            saved_current_instruction_iabt         <= instruction_iabt;
-            saved_current_instruction_adex         <= instruction_adex;
-            saved_current_instruction_address      <= instruction_address;
-            saved_current_instruction_iabt_status  <= instruction_iabt_status;
-            end
-        else if (saved_current_instruction_wen) 
-            begin           
-            saved_current_instruction              <= instruction;
-            saved_current_instruction_iabt         <= instruction_iabt;
-            saved_current_instruction_adex         <= instruction_adex;
-            saved_current_instruction_address      <= instruction_address;
-            saved_current_instruction_iabt_status  <= instruction_iabt_status;
-            end
-
-        if      (pre_fetch_instruction_wen)     
-            begin
-            pre_fetch_instruction                  <= o_read_data;      
-            pre_fetch_instruction_iabt             <= iabt_reg; 
-            pre_fetch_instruction_adex             <= adex_reg; 
-            pre_fetch_instruction_address          <= abt_address_reg; 
-            pre_fetch_instruction_iabt_status      <= abt_status_reg; 
-            end       
-        end
-
-
-        
-always @ ( posedge i_clk )
-    if ( !i_fetch_stall )
-        begin
-        irq   <= i_irq;  
-        firq  <= i_firq; 
-        
-        if ( control_state == INT_WAIT1 && o_status_bits_mode == SVC )
-            begin
-            dabt_reg  <= 1'd0;
-            end
-        else
-            begin
-            dabt_reg  <= dabt_reg || i_dabt;  
-            end
-        
-        dabt_reg_d1  <= dabt_reg;   
-        end  
-
-assign dabt = dabt_reg || i_dabt;
-
-// ========================================================
-// Decompiler for debugging core - not synthesizable
-// ========================================================
-
-endmodule
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_decompile.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_decompile.v
deleted file mode 100644
index e06a930..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_decompile.v
+++ /dev/null
@@ -1,308 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Decompiler for Amber 2 Core                                  //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Decompiler for debugging core - not synthesizable           //
-//  Shows instruction in Execute Stage at last clock of         //
-//  the instruction                                             //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Global testbench defines                                    //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Contains a set of defines for each module so if the module  //
-//  hierarchy changes, hierarchical references to signals       //
-//  will still work as long as this file is updated.            //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-// ---------------------------------------------------------------
-// Module hierarchy defines
-// ---------------------------------------------------------------
-
-    
-
-
-        // ---------------------------------------------------------------
-
-
-
-// Simplified Main Memory Model
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Amber Configuration and Debug for the AMber 2 Core          //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Contains a set of defines used to configure and debug       //
-//  the Amber core                                              //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// Cache Ways
-// Changing this parameter is the recommended
-// way to change the Amber cache size; 2, 3, 4 and 8 ways are supported.
-//   2 ways -> 8KB  cache
-//   3 ways -> 12KB cache
-//   4 ways -> 16KB cache
-//   8 ways -> 32KB cache
-
-// Use ram-based register bank implementation
-// `define A23_RAM_REGISTER_BANK
-
-// --------------------------------------------------------------------
-// Debug switches 
-// --------------------------------------------------------------------
-
-// Enable the decompiler. The default output file is amber.dis
-//`define A23_DECOMPILE
-
-// Co-processor 15 debug. Registers in here control the cache
-//`define A23_COPRO15_DEBUG
-
-// Cache debug
-//`define A23_CACHE_DEBUG
-
-// --------------------------------------------------------------------
-
-
-// --------------------------------------------------------------------
-// File Names
-// --------------------------------------------------------------------
-    
-
-
-module a23_decompile
-(
-input                       i_clk,
-input                       i_fetch_stall,
-input       [31:0]          i_instruction,
-input                       i_instruction_valid,
-input                       i_instruction_undefined,
-input                       i_instruction_execute,
-input       [2:0]           i_interrupt,            // non-zero value means interrupt triggered
-input                       i_interrupt_state,
-input       [31:0]          i_instruction_address,
-input       [1:0]           i_pc_sel,
-input                       i_pc_wen
-
-);
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Parameters file for Amber 2 Core                            //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Holds general parameters that are used is several core      //
-//  modules                                                     //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// Instruction Types
-localparam [3:0]    REGOP       = 4'h0, // Data processing
-                    MULT        = 4'h1, // Multiply
-                    SWAP        = 4'h2, // Single Data Swap
-                    TRANS       = 4'h3, // Single data transfer
-                    MTRANS      = 4'h4, // Multi-word data transfer
-                    BRANCH      = 4'h5, // Branch
-                    CODTRANS    = 4'h6, // Co-processor data transfer
-                    COREGOP     = 4'h7, // Co-processor data operation
-                    CORTRANS    = 4'h8, // Co-processor register transfer
-                    SWI         = 4'h9; // software interrupt
-
-
-// Opcodes
-localparam [3:0] AND = 4'h0,        // Logical AND
-                 EOR = 4'h1,        // Logical Exclusive OR
-                 SUB = 4'h2,        // Subtract
-                 RSB = 4'h3,        // Reverse Subtract
-                 ADD = 4'h4,        // Add
-                 ADC = 4'h5,        // Add with Carry
-                 SBC = 4'h6,        // Subtract with Carry
-                 RSC = 4'h7,        // Reverse Subtract with Carry
-                 TST = 4'h8,        // Test  (using AND operator)
-                 TEQ = 4'h9,        // Test Equivalence (using EOR operator)
-                 CMP = 4'ha,       // Compare (using Subtract operator)
-                 CMN = 4'hb,       // Compare Negated
-                 ORR = 4'hc,       // Logical OR
-                 MOV = 4'hd,       // Move
-                 BIC = 4'he,       // Bit Clear (using AND & NOT operators)
-                 MVN = 4'hf;       // Move NOT
-                 
-// Condition Encoding
-localparam [3:0] EQ  = 4'h0,        // Equal            / Z set
-                 NE  = 4'h1,        // Not equal        / Z clear
-                 CS  = 4'h2,        // Carry set        / C set
-                 CC  = 4'h3,        // Carry clear      / C clear
-                 MI  = 4'h4,        // Minus            / N set
-                 PL  = 4'h5,        // Plus             / N clear
-                 VS  = 4'h6,        // Overflow         / V set
-                 VC  = 4'h7,        // No overflow      / V clear
-                 HI  = 4'h8,        // Unsigned higher  / C set and Z clear
-                 LS  = 4'h9,        // Unsigned lower
-                                    // or same          / C clear or Z set
-                 GE  = 4'ha,        // Signed greater 
-                                    // than or equal    / N == V
-                 LT  = 4'hb,        // Signed less than / N != V
-                 GT  = 4'hc,        // Signed greater
-                                    // than             / Z == 0, N == V
-                 LE  = 4'hd,        // Signed less than
-                                    // or equal         / Z == 1, N != V
-                 AL  = 4'he,        // Always
-                 NV  = 4'hf;        // Never
-
-// Any instruction with a condition field of 0b1111 is UNPREDICTABLE.                
-                
-// Shift Types
-localparam [1:0] LSL = 2'h0,
-                 LSR = 2'h1,
-                 ASR = 2'h2,
-                 RRX = 2'h3,
-                 ROR = 2'h3; 
- 
-// Modes
-localparam [1:0] SVC  =  2'b11,  // Supervisor
-                 IRQ  =  2'b10,  // Interrupt
-                 FIRQ =  2'b01,  // Fast Interrupt
-                 USR  =  2'b00;  // User
-
-// One-Hot Mode encodings
-localparam [5:0] OH_USR  = 0,
-                 OH_IRQ  = 1,
-                 OH_FIRQ = 2,
-                 OH_SVC  = 3;
-
-
-        
-
-endmodule
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_execute.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_execute.v
deleted file mode 100644
index ae6c24b..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_execute.v
+++ /dev/null
@@ -1,914 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Execute stage of Amber 2 Core                               //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Executes instructions. Instantiates the register file, ALU  //
-//  multiplication unit and barrel shifter. This stage is       //
-//  relitively simple. All the complex stuff is done in the     //
-//  decode stage.                                               //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Amber Configuration and Debug for the AMber 2 Core          //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Contains a set of defines used to configure and debug       //
-//  the Amber core                                              //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// Cache Ways
-// Changing this parameter is the recommended
-// way to change the Amber cache size; 2, 3, 4 and 8 ways are supported.
-//   2 ways -> 8KB  cache
-//   3 ways -> 12KB cache
-//   4 ways -> 16KB cache
-//   8 ways -> 32KB cache
-
-// Use ram-based register bank implementation
-// `define A23_RAM_REGISTER_BANK
-
-// --------------------------------------------------------------------
-// Debug switches 
-// --------------------------------------------------------------------
-
-// Enable the decompiler. The default output file is amber.dis
-//`define A23_DECOMPILE
-
-// Co-processor 15 debug. Registers in here control the cache
-//`define A23_COPRO15_DEBUG
-
-// Cache debug
-//`define A23_CACHE_DEBUG
-
-// --------------------------------------------------------------------
-
-
-// --------------------------------------------------------------------
-// File Names
-// --------------------------------------------------------------------
-    
-
-
-module a23_execute (
-
-input                       i_clk,
-input       [31:0]          i_read_data,
-input       [4:0]           i_read_data_alignment,  // 2 LSBs of address in [4:3], appended 
-                                                    // with 3 zeros
-input       [31:0]          i_copro_read_data,      // From Co-Processor, to either Register 
-                                                    // or Memory
-input                       i_data_access_exec,     // from Instruction Decode stage
-                                                    // high means the memory access is a read 
-                                                    // read or write, low for instruction
-
-output reg  [31:0]          o_copro_write_data = 'd0,
-output reg  [31:0]          o_write_data = 'd0,
-output reg  [31:0]          o_address = 32'hdead_dead,
-output reg                  o_adex = 'd0,           // Address Exception
-output reg                  o_address_valid = 'd0,  // Prevents the reset address value being a 
-                                                    // wishbone access
-output      [31:0]          o_address_nxt,          // un-registered version of address to the 
-                                                    // cache rams address ports
-output reg                  o_priviledged = 'd0,    // Priviledged access
-output reg                  o_exclusive = 'd0,      // swap access
-output reg                  o_write_enable = 'd0,
-output reg  [3:0]           o_byte_enable = 'd0,
-output reg                  o_data_access = 'd0,    // To Fetch stage. high = data fetch, 
-                                                    // low = instruction fetch
-output      [31:0]          o_status_bits,          // Full PC will all status bits, but PC part zero'ed out
-output                      o_multiply_done,
-
-
-// --------------------------------------------------
-// Control signals from Instruction Decode stage
-// --------------------------------------------------
-input                       i_fetch_stall,          // stall all stages of the cpu at the same time
-input      [1:0]            i_status_bits_mode,
-input                       i_status_bits_irq_mask,
-input                       i_status_bits_firq_mask,
-input      [31:0]           i_imm32,
-input      [4:0]            i_imm_shift_amount,
-input                       i_shift_imm_zero,
-input      [3:0]            i_condition,
-input                       i_exclusive_exec,       // swap access
-
-input      [3:0]            i_rm_sel,
-input      [3:0]            i_rds_sel,
-input      [3:0]            i_rn_sel,
-input      [3:0]            i_rm_sel_nxt,
-input      [3:0]            i_rds_sel_nxt,
-input      [3:0]            i_rn_sel_nxt,
-input      [1:0]            i_barrel_shift_amount_sel,
-input      [1:0]            i_barrel_shift_data_sel,
-input      [1:0]            i_barrel_shift_function,
-input      [8:0]            i_alu_function,
-input      [1:0]            i_multiply_function,
-input      [2:0]            i_interrupt_vector_sel,
-input      [3:0]            i_address_sel,
-input      [1:0]            i_pc_sel,
-input      [1:0]            i_byte_enable_sel,
-input      [2:0]            i_status_bits_sel,
-input      [2:0]            i_reg_write_sel,
-input                       i_user_mode_regs_load,
-input                       i_user_mode_regs_store_nxt,
-input                       i_firq_not_user_mode,
-input                       i_firq_not_user_mode_nxt,
-
-input                       i_write_data_wen,
-input                       i_base_address_wen,     // save LDM base address register, 
-                                                    // in case of data abort
-input                       i_pc_wen,
-input      [14:0]           i_reg_bank_wen,
-input      [3:0]            i_reg_bank_wsel,
-input                       i_status_bits_flags_wen,
-input                       i_status_bits_mode_wen,
-input                       i_status_bits_irq_mask_wen,
-input                       i_status_bits_firq_mask_wen,
-input                       i_copro_write_data_wen
-
-);
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Parameters file for Amber 2 Core                            //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Holds general parameters that are used is several core      //
-//  modules                                                     //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// Instruction Types
-localparam [3:0]    REGOP       = 4'h0, // Data processing
-                    MULT        = 4'h1, // Multiply
-                    SWAP        = 4'h2, // Single Data Swap
-                    TRANS       = 4'h3, // Single data transfer
-                    MTRANS      = 4'h4, // Multi-word data transfer
-                    BRANCH      = 4'h5, // Branch
-                    CODTRANS    = 4'h6, // Co-processor data transfer
-                    COREGOP     = 4'h7, // Co-processor data operation
-                    CORTRANS    = 4'h8, // Co-processor register transfer
-                    SWI         = 4'h9; // software interrupt
-
-
-// Opcodes
-localparam [3:0] AND = 4'h0,        // Logical AND
-                 EOR = 4'h1,        // Logical Exclusive OR
-                 SUB = 4'h2,        // Subtract
-                 RSB = 4'h3,        // Reverse Subtract
-                 ADD = 4'h4,        // Add
-                 ADC = 4'h5,        // Add with Carry
-                 SBC = 4'h6,        // Subtract with Carry
-                 RSC = 4'h7,        // Reverse Subtract with Carry
-                 TST = 4'h8,        // Test  (using AND operator)
-                 TEQ = 4'h9,        // Test Equivalence (using EOR operator)
-                 CMP = 4'ha,       // Compare (using Subtract operator)
-                 CMN = 4'hb,       // Compare Negated
-                 ORR = 4'hc,       // Logical OR
-                 MOV = 4'hd,       // Move
-                 BIC = 4'he,       // Bit Clear (using AND & NOT operators)
-                 MVN = 4'hf;       // Move NOT
-                 
-// Condition Encoding
-localparam [3:0] EQ  = 4'h0,        // Equal            / Z set
-                 NE  = 4'h1,        // Not equal        / Z clear
-                 CS  = 4'h2,        // Carry set        / C set
-                 CC  = 4'h3,        // Carry clear      / C clear
-                 MI  = 4'h4,        // Minus            / N set
-                 PL  = 4'h5,        // Plus             / N clear
-                 VS  = 4'h6,        // Overflow         / V set
-                 VC  = 4'h7,        // No overflow      / V clear
-                 HI  = 4'h8,        // Unsigned higher  / C set and Z clear
-                 LS  = 4'h9,        // Unsigned lower
-                                    // or same          / C clear or Z set
-                 GE  = 4'ha,        // Signed greater 
-                                    // than or equal    / N == V
-                 LT  = 4'hb,        // Signed less than / N != V
-                 GT  = 4'hc,        // Signed greater
-                                    // than             / Z == 0, N == V
-                 LE  = 4'hd,        // Signed less than
-                                    // or equal         / Z == 1, N != V
-                 AL  = 4'he,        // Always
-                 NV  = 4'hf;        // Never
-
-// Any instruction with a condition field of 0b1111 is UNPREDICTABLE.                
-                
-// Shift Types
-localparam [1:0] LSL = 2'h0,
-                 LSR = 2'h1,
-                 ASR = 2'h2,
-                 RRX = 2'h3,
-                 ROR = 2'h3; 
- 
-// Modes
-localparam [1:0] SVC  =  2'b11,  // Supervisor
-                 IRQ  =  2'b10,  // Interrupt
-                 FIRQ =  2'b01,  // Fast Interrupt
-                 USR  =  2'b00;  // User
-
-// One-Hot Mode encodings
-localparam [5:0] OH_USR  = 0,
-                 OH_IRQ  = 1,
-                 OH_FIRQ = 2,
-                 OH_SVC  = 3;
-
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Functions for Amber 2 Core                                  //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Functions used in more than one module                      //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// ========================================================
-// PC Filter - Remove the status bits 
-// ========================================================
-function [31:0] pcf;
-input [31:0] pc_reg;
-    begin
-    pcf = {6'd0, pc_reg[25:2], 2'd0};
-    end
-endfunction
-
-
-// ========================================================
-// 4-bit to 16-bit 1-hot decode
-// ========================================================
-function [14:0] decode;
-input [3:0] reg_sel;
-begin
-case ( reg_sel )
-    4'h0:    decode = 15'h0001;
-    4'h1:    decode = 15'h0002;
-    4'h2:    decode = 15'h0004;
-    4'h3:    decode = 15'h0008;
-    4'h4:    decode = 15'h0010;
-    4'h5:    decode = 15'h0020;
-    4'h6:    decode = 15'h0040;
-    4'h7:    decode = 15'h0080;
-    4'h8:    decode = 15'h0100;
-    4'h9:    decode = 15'h0200;
-    4'ha:    decode = 15'h0400;
-    4'hb:    decode = 15'h0800;
-    4'hc:    decode = 15'h1000;
-    4'hd:    decode = 15'h2000;
-    4'he:    decode = 15'h4000;
-    default: decode = 15'h0000;
-endcase
-end
-endfunction
-
-
-// ========================================================
-// Convert Stats Bits Mode to one-hot encoded version
-// ========================================================
-function [3:0] oh_status_bits_mode;
-input [1:0] fn_status_bits_mode;
-begin
-oh_status_bits_mode = 
-    fn_status_bits_mode == SVC  ? 1'd1 << OH_SVC  :
-    fn_status_bits_mode == IRQ  ? 1'd1 << OH_IRQ  :
-    fn_status_bits_mode == FIRQ ? 1'd1 << OH_FIRQ :
-                                  1'd1 << OH_USR  ;
-end
-endfunction
-
-// ========================================================
-// Convert mode into ascii name
-// ========================================================
-function [(14*8)-1:0]  mode_name;
-input [4:0] mode;
-begin
-
-mode_name    = mode == USR  ? "User          " :
-               mode == SVC  ? "Supervisor    " :
-               mode == IRQ  ? "Interrupt     " :
-               mode == FIRQ ? "Fast Interrupt" :
-                              "UNKNOWN       " ;
-end
-endfunction
-
-
-// ========================================================
-// Conditional Execution Function
-// ========================================================
-// EQ Z set
-// NE Z clear
-// CS C set
-// CC C clear
-// MI N set
-// PL N clear
-// VS V set
-// VC V clear
-// HI C set and Z clear
-// LS C clear or Z set
-// GE N == V
-// LT N != V
-// GT Z == 0,N == V
-// LE Z == 1 or N != V
-// AL Always (unconditional)
-// NV Never
-
-function conditional_execute;
-input [3:0] condition;
-input [3:0] flags;
-begin
-conditional_execute  
-               = ( condition == AL                                        ) ||
-                 ( condition == EQ  &&  flags[2]                          ) ||
-                 ( condition == NE  && !flags[2]                          ) ||
-                 ( condition == CS  &&  flags[1]                          ) ||
-                 ( condition == CC  && !flags[1]                          ) ||
-                 ( condition == MI  &&  flags[3]                          ) ||
-                 ( condition == PL  && !flags[3]                          ) ||
-                 ( condition == VS  &&  flags[0]                          ) ||
-                 ( condition == VC  && !flags[0]                          ) ||
-            
-                 ( condition == HI  &&    flags[1] && !flags[2]           ) ||
-                 ( condition == LS  &&  (!flags[1] ||  flags[2])          ) ||
-            
-                 ( condition == GE  &&  flags[3] == flags[0]              ) ||
-                 ( condition == LT  &&  flags[3] != flags[0]              ) ||
-
-                 ( condition == GT  &&  !flags[2] && flags[3] == flags[0] ) ||
-                 ( condition == LE  &&  (flags[2] || flags[3] != flags[0])) ;
-            
-end
-endfunction
-
-
-// ========================================================
-// Log 2
-// ========================================================
-
-function [31:0] log2;
-input    [31:0] num;
-integer i;
-integer out;
-begin
-  out = 32'd0;
-  for (i=0; i<30; i=i+1)
-    if ((2**i > num) && (out == 0))
-      out = i-1;
-  log2 = out;
-end
-endfunction
-
-// ========================================================
-// Internal signals
-// ========================================================
-wire [31:0]         write_data_nxt;
-wire [3:0]          byte_enable_nxt;
-wire [31:0]         pc_plus4;
-wire [31:0]         pc_minus4;
-wire [31:0]         address_plus4;
-wire [31:0]         alu_plus4;
-wire [31:0]         rn_plus4;
-wire [31:0]         alu_out;
-wire [3:0]          alu_flags;
-wire [31:0]         rm;
-wire [31:0]         rs;
-wire [31:0]         rd;
-wire [31:0]         rn;
-wire [31:0]         pc;
-wire [31:0]         pc_nxt;
-wire                write_enable_nxt;
-wire [31:0]         interrupt_vector;
-wire [7:0]          shift_amount;
-wire [31:0]         barrel_shift_in;
-wire [31:0]         barrel_shift_out;
-wire                barrel_shift_carry;
-
-wire [3:0]          status_bits_flags_nxt;
-reg  [3:0]          status_bits_flags = 'd0;
-wire [1:0]          status_bits_mode_nxt;
-wire [1:0]          status_bits_mode_nr;
-reg  [1:0]          status_bits_mode = SVC;
-                    // raw rs select
-wire [1:0]          status_bits_mode_rds_nxt;
-wire [1:0]          status_bits_mode_rds_nr;
-reg  [1:0]          status_bits_mode_rds;
-                    // one-hot encoded rs select
-wire [3:0]          status_bits_mode_rds_oh_nxt;
-reg  [3:0]          status_bits_mode_rds_oh = 1'd1 << OH_SVC;
-wire                status_bits_mode_rds_oh_update;
-wire                status_bits_irq_mask_nxt;
-reg                 status_bits_irq_mask = 1'd1;
-wire                status_bits_firq_mask_nxt;
-reg                 status_bits_firq_mask = 1'd1;
-
-wire                execute;           // high when condition execution is true
-wire [31:0]         reg_write_nxt;
-wire                pc_wen;
-wire [14:0]         reg_bank_wen;
-wire [3:0]          reg_bank_wsel;
-wire [31:0]         multiply_out;
-wire [1:0]          multiply_flags;
-reg  [31:0]         base_address = 'd0;    // Saves base address during LDM instruction in 
-                                           // case of data abort
-
-wire                priviledged_nxt;      
-wire                priviledged_update;
-wire                address_update;
-wire                base_address_update;
-wire                write_data_update;
-wire                copro_write_data_update;
-wire                byte_enable_update;
-wire                data_access_update;
-wire                write_enable_update;
-wire                exclusive_update;
-wire                status_bits_flags_update;
-wire                status_bits_mode_update;
-wire                status_bits_irq_mask_update;
-wire                status_bits_firq_mask_update;
-
-wire [31:0]         alu_out_pc_filtered;
-wire                adex_nxt;
-
-// ========================================================
-// Status Bits in PC register
-// ========================================================
-wire [1:0] status_bits_out;
-assign status_bits_out = (i_status_bits_mode_wen && i_status_bits_sel == 3'd1) ? 
-                            alu_out[1:0] : status_bits_mode ;
-
-
-assign o_status_bits = {   status_bits_flags,           // 31:28
-                           status_bits_irq_mask,        // 7
-                           status_bits_firq_mask,       // 6
-                           24'd0,
-                           status_bits_out};          // 1:0 = mode
-
-// ========================================================
-// Status Bits Select
-// ========================================================
-assign status_bits_flags_nxt     = i_status_bits_sel == 3'd0 ? alu_flags                           :
-                                   i_status_bits_sel == 3'd1 ? alu_out          [31:28]            :
-                                   i_status_bits_sel == 3'd3 ? i_copro_read_data[31:28]            :
-                                   // 4 = update flags after a multiply operation
-                                                        { multiply_flags, status_bits_flags[1:0] } ;
-
-assign status_bits_mode_nxt      = i_status_bits_sel == 3'd0 ? i_status_bits_mode       :
-                                   i_status_bits_sel == 3'd1 ? alu_out            [1:0] :
-                                                               i_copro_read_data  [1:0] ;
-
-
-// Used for the Rds output of register_bank - this special version of
-// status_bits_mode speeds up the critical path from status_bits_mode through the
-// register_bank, barrel_shifter and alu. It moves a mux needed for the
-// i_user_mode_regs_store_nxt signal back into the previous stage -
-// so its really part of the decode stage even though the logic is right here
-// In addition the signal is one-hot encoded to further speed up the logic
-// Raw version is also kept for ram-based register bank implementation.
-
-assign status_bits_mode_rds_nxt  = i_user_mode_regs_store_nxt ? USR                  :
-                                   status_bits_mode_update    ? status_bits_mode_nxt :
-                                                                status_bits_mode     ;
-
-assign status_bits_mode_rds_oh_nxt    = oh_status_bits_mode(status_bits_mode_rds_nxt);
-
-
-assign status_bits_irq_mask_nxt  = i_status_bits_sel == 3'd0 ? i_status_bits_irq_mask      :
-                                   i_status_bits_sel == 3'd1 ? alu_out                [27] :
-                                                               i_copro_read_data      [27] ;
-                            
-assign status_bits_firq_mask_nxt = i_status_bits_sel == 3'd0 ? i_status_bits_firq_mask     :
-                                   i_status_bits_sel == 3'd1 ? alu_out                [26] :
-                                                               i_copro_read_data      [26] ;
-
-
-
-// ========================================================
-// Adders
-// ========================================================
-assign pc_plus4      = pc        + 32'd4;
-assign pc_minus4     = pc        - 32'd4;
-assign address_plus4 = o_address + 32'd4;
-assign alu_plus4     = alu_out   + 32'd4;
-assign rn_plus4      = rn        + 32'd4;
-
-// ========================================================
-// Barrel Shift Amount Select
-// ========================================================
-// An immediate shift value of 0 is translated into 32
-assign shift_amount = i_barrel_shift_amount_sel == 2'd0 ? 8'd0 :
-                      i_barrel_shift_amount_sel == 2'd1 ? rs[7:0]                       :
-                      i_barrel_shift_amount_sel == 2'd2 ? {3'd0, i_imm_shift_amount    } :
-                                                          {3'd0, i_read_data_alignment } ;
-
-// ========================================================
-// Barrel Shift Data Select
-// ========================================================
-assign barrel_shift_in = i_barrel_shift_data_sel == 2'd0 ? i_imm32       :
-                         i_barrel_shift_data_sel == 2'd1 ? i_read_data   :
-                                                           rm            ;
-                            
-// ========================================================
-// Interrupt vector Select
-// ========================================================
-
-assign interrupt_vector = // Reset vector
-                          (i_interrupt_vector_sel == 3'd0) ? 32'h00000000 :  
-                          // Data abort interrupt vector                 
-                          (i_interrupt_vector_sel == 3'd1) ? 32'h00000010 :
-                          // Fast interrupt vector  
-                          (i_interrupt_vector_sel == 3'd2) ? 32'h0000001c :
-                          // Regular interrupt vector
-                          (i_interrupt_vector_sel == 3'd3) ? 32'h00000018 :
-                          // Prefetch abort interrupt vector
-                          (i_interrupt_vector_sel == 3'd5) ? 32'h0000000c :
-                          // Undefined instruction interrupt vector
-                          (i_interrupt_vector_sel == 3'd6) ? 32'h00000004 :
-                          // Software (SWI) interrupt vector
-                          (i_interrupt_vector_sel == 3'd7) ? 32'h00000008 :
-                          // Default is the address exception interrupt
-                                                             32'h00000014 ;
-
-
-// ========================================================
-// Address Select
-// ========================================================
-
-// If rd is the pc, then seperate the address bits from the status bits for
-// generating the next address to fetch
-assign alu_out_pc_filtered = pc_wen && i_pc_sel == 2'd1 ? pcf(alu_out) : alu_out;
-
-// if current instruction does not execute because it does not meet the condition
-// then address advances to next instruction
-assign o_address_nxt = (!execute)              ? pc_plus4              : 
-                       (i_address_sel == 4'd0) ? pc_plus4              :
-                       (i_address_sel == 4'd1) ? alu_out_pc_filtered   :
-                       (i_address_sel == 4'd2) ? interrupt_vector      :
-                       (i_address_sel == 4'd3) ? pc                    :
-                       (i_address_sel == 4'd4) ? rn                    :
-                       (i_address_sel == 4'd5) ? address_plus4         :  // MTRANS address incrementer
-                       (i_address_sel == 4'd6) ? alu_plus4             :  // MTRANS decrement after
-                                                 rn_plus4              ;  // MTRANS increment before
-
-// Data accesses use 32-bit address space, but instruction
-// accesses are restricted to 26 bit space
-assign adex_nxt      = |o_address_nxt[31:26] && !i_data_access_exec;
-
-// ========================================================
-// Program Counter Select
-// ========================================================
-// If current instruction does not execute because it does not meet the condition
-// then PC advances to next instruction
-assign pc_nxt = (!execute)       ? pc_plus4              :
-                i_pc_sel == 2'd0 ? pc_plus4              :
-                i_pc_sel == 2'd1 ? alu_out               :
-                                   interrupt_vector      ;
-
-
-// ========================================================
-// Register Write Select
-// ========================================================
-wire [31:0] save_int_pc;
-wire [31:0] save_int_pc_m4;
-
-assign save_int_pc    = { status_bits_flags, 
-                          status_bits_irq_mask, 
-                          status_bits_firq_mask, 
-                          pc[25:2], 
-                          status_bits_mode      };
-
-
-assign save_int_pc_m4 = { status_bits_flags, 
-                          status_bits_irq_mask, 
-                          status_bits_firq_mask, 
-                          pc_minus4[25:2], 
-                          status_bits_mode      };
-
-
-assign reg_write_nxt = i_reg_write_sel == 3'd0 ? alu_out               :
-                       // save pc to lr on an interrupt                    
-                       i_reg_write_sel == 3'd1 ? save_int_pc_m4        :
-                       // to update Rd at the end of Multiplication
-                       i_reg_write_sel == 3'd2 ? multiply_out          :
-                       i_reg_write_sel == 3'd3 ? o_status_bits         :
-                       i_reg_write_sel == 3'd5 ? i_copro_read_data     :  // mrc
-                       i_reg_write_sel == 3'd6 ? base_address          :
-                                                 save_int_pc           ;  
-
-
-// ========================================================
-// Byte Enable Select
-// ========================================================
-assign byte_enable_nxt = i_byte_enable_sel == 2'd0 ? 4'b1111 :  // word write
-                         i_byte_enable_sel == 2'd2 ?            // halfword write
-                         ( o_address_nxt[1] == 1'd0 ? 4'b0011 : 
-                                                      4'b1100 ) :
-                           
-                         o_address_nxt[1:0] == 2'd0 ? 4'b0001 :  // byte write
-                         o_address_nxt[1:0] == 2'd1 ? 4'b0010 :
-                         o_address_nxt[1:0] == 2'd2 ? 4'b0100 :
-                                                      4'b1000 ;
-
-
-// ========================================================
-// Write Data Select
-// ========================================================
-assign write_data_nxt = i_byte_enable_sel == 2'd0 ? rd            :
-                                                    {4{rd[ 7:0]}} ;
-
-
-// ========================================================
-// Conditional Execution
-// ========================================================
-assign execute = conditional_execute ( i_condition, status_bits_flags );
-            
-// allow the PC to increment to the next instruction when current
-// instruction does not execute
-assign pc_wen       = i_pc_wen || !execute;
-
-// only update register bank if current instruction executes
-assign reg_bank_wen = {{15{execute}} & i_reg_bank_wen};
-
-assign reg_bank_wsel = {{4{~execute}} | i_reg_bank_wsel};
-
-
-// ========================================================
-// Priviledged output flag
-// ========================================================
-// Need to look at status_bits_mode_nxt so switch to priviledged mode
-// at the same time as assert interrupt vector address
-assign priviledged_nxt  = ( i_status_bits_mode_wen ? status_bits_mode_nxt : status_bits_mode ) != USR ;
-
-
-// ========================================================
-// Write Enable
-// ========================================================
-// This must be de-asserted when execute is fault
-assign write_enable_nxt = execute && i_write_data_wen;
-
-
-// ========================================================
-// Register Update
-// ========================================================
-
-assign priviledged_update              = !i_fetch_stall;       
-assign data_access_update              = !i_fetch_stall && execute;
-assign write_enable_update             = !i_fetch_stall;
-assign write_data_update               = !i_fetch_stall && execute && i_write_data_wen;
-assign exclusive_update                = !i_fetch_stall && execute;
-assign address_update                  = !i_fetch_stall;
-assign byte_enable_update              = !i_fetch_stall && execute && i_write_data_wen;
-assign copro_write_data_update         = !i_fetch_stall && execute && i_copro_write_data_wen;
-
-assign base_address_update             = !i_fetch_stall && execute && i_base_address_wen; 
-assign status_bits_flags_update        = !i_fetch_stall && execute && i_status_bits_flags_wen;
-assign status_bits_mode_update         = !i_fetch_stall && execute && i_status_bits_mode_wen;
-assign status_bits_mode_rds_oh_update  = !i_fetch_stall;
-assign status_bits_irq_mask_update     = !i_fetch_stall && execute && i_status_bits_irq_mask_wen;
-assign status_bits_firq_mask_update    = !i_fetch_stall && execute && i_status_bits_firq_mask_wen;
-
-assign status_bits_mode_rds_nr         =  status_bits_mode_rds_oh_update ? status_bits_mode_rds_nxt :
-                                                                           status_bits_mode_rds     ;
-
-assign status_bits_mode_nr             =  status_bits_mode_update        ? status_bits_mode_nxt     :
-                                                                           status_bits_mode         ;
-
-always @( posedge i_clk )
-    begin                                                                                                             
-    o_priviledged           <= priviledged_update             ? priviledged_nxt              : o_priviledged;
-    o_exclusive             <= exclusive_update               ? i_exclusive_exec             : o_exclusive;
-    o_data_access           <= data_access_update             ? i_data_access_exec           : o_data_access;
-    o_write_enable          <= write_enable_update            ? write_enable_nxt             : o_write_enable;
-    o_write_data            <= write_data_update              ? write_data_nxt               : o_write_data; 
-    o_address               <= address_update                 ? o_address_nxt                : o_address;    
-    o_adex                  <= address_update                 ? adex_nxt                     : o_adex;    
-    o_address_valid         <= address_update                 ? 1'd1 : o_address_valid;
-    o_byte_enable           <= byte_enable_update             ? byte_enable_nxt              : o_byte_enable;
-    o_copro_write_data      <= copro_write_data_update        ? write_data_nxt               : o_copro_write_data; 
-
-    base_address            <= base_address_update            ? rn                           : base_address;    
-
-    status_bits_flags       <= status_bits_flags_update       ? status_bits_flags_nxt        : status_bits_flags;
-    status_bits_mode        <=  status_bits_mode_nr;
-    status_bits_mode_rds_oh <= status_bits_mode_rds_oh_update ? status_bits_mode_rds_oh_nxt  : status_bits_mode_rds_oh;
-    status_bits_mode_rds    <= status_bits_mode_rds_nr;
-    status_bits_irq_mask    <= status_bits_irq_mask_update    ? status_bits_irq_mask_nxt     : status_bits_irq_mask;
-    status_bits_firq_mask   <= status_bits_firq_mask_update   ? status_bits_firq_mask_nxt    : status_bits_firq_mask;
-    end
-
-
-// ========================================================
-// Instantiate Barrel Shift
-// ========================================================
-a23_barrel_shift u_barrel_shift  (
-    .i_in             ( barrel_shift_in           ),
-    .i_carry_in       ( status_bits_flags[1]      ),
-    .i_shift_amount   ( shift_amount              ),
-    .i_shift_imm_zero ( i_shift_imm_zero          ),
-    .i_function       ( i_barrel_shift_function   ),
-
-    .o_out            ( barrel_shift_out          ),
-    .o_carry_out      ( barrel_shift_carry        )
-);
-
-
-// ========================================================
-// Instantiate ALU
-// ========================================================
-a23_alu u_alu (
-    .i_a_in                 ( rn                    ),
-    .i_b_in                 ( barrel_shift_out      ),
-    .i_barrel_shift_carry   ( barrel_shift_carry    ),
-    .i_status_bits_carry    ( status_bits_flags[1]  ),
-    .i_function             ( i_alu_function        ),
-
-    .o_out                  ( alu_out               ),
-    .o_flags                ( alu_flags             )
-);
-
-
-// ========================================================
-// Instantiate Booth 64-bit Multiplier-Accumulator
-// ========================================================
-a23_multiply u_multiply (
-    .i_clk          ( i_clk                 ),
-    .i_fetch_stall  ( i_fetch_stall         ),
-    .i_a_in         ( rs                    ),
-    .i_b_in         ( rm                    ),
-    .i_function     ( i_multiply_function   ),
-    .i_execute      ( execute               ),
-    .o_out          ( multiply_out          ),
-    .o_flags        ( multiply_flags        ),  // [1] = N, [0] = Z
-    .o_done         ( o_multiply_done       )     
-);
-
-
-// ========================================================
-// Instantiate Register Bank
-// ========================================================
-a23_register_bank u_register_bank(
-    .i_clk                   ( i_clk                     ),
-    .i_fetch_stall           ( i_fetch_stall             ),
-    .i_rm_sel                ( i_rm_sel                  ),
-    .i_rds_sel               ( i_rds_sel                 ),
-    .i_rn_sel                ( i_rn_sel                  ),
-    .i_pc_wen                ( pc_wen                    ),
-    .i_reg_bank_wen          ( reg_bank_wen              ),
-    .i_pc                    ( pc_nxt[25:2]              ),
-    .i_reg                   ( reg_write_nxt             ),
-    .i_mode_idec             ( i_status_bits_mode        ),
-    .i_mode_exec             ( status_bits_mode          ),
-
-    .i_status_bits_flags     ( status_bits_flags         ),
-    .i_status_bits_irq_mask  ( status_bits_irq_mask      ),
-    .i_status_bits_firq_mask ( status_bits_firq_mask     ),
-
-    // pre-encoded in decode stage to speed up long path
-    .i_firq_not_user_mode    ( i_firq_not_user_mode      ),
-    
-    // use one-hot version for speed, combine with i_user_mode_regs_store
-    .i_mode_rds_exec         ( status_bits_mode_rds_oh   ),  
-    
-    .i_user_mode_regs_load   ( i_user_mode_regs_load     ),
-    .o_rm                    ( rm                        ),
-    .o_rs                    ( rs                        ),
-    .o_rd                    ( rd                        ),
-    .o_rn                    ( rn                        ),
-    .o_pc                    ( pc                        )
-);
-
-// ========================================================
-// Debug - non-synthesizable code
-// ========================================================
-
-endmodule
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_fetch.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_fetch.v
deleted file mode 100644
index 93c8227..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_fetch.v
+++ /dev/null
@@ -1,331 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Fetch - Instantiates the fetch stage sub-modules of         //
-//  the Amber 2 Core                                            //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Instantiates the Cache and Wishbone I/F                     //
-//  Also contains a little bit of logic to decode memory        //
-//  accesses to decide if they are cached or not                //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-module a23_fetch
-(
-input                       i_clk,
-
-input       [31:0]          i_address,
-input                       i_address_valid,
-input       [31:0]          i_address_nxt,      // un-registered version of address to the cache rams
-input       [31:0]          i_write_data,
-input                       i_write_enable,
-output       [31:0]         o_read_data,
-input                       i_priviledged,
-input                       i_exclusive,        // high for read part of swap access
-input       [3:0]           i_byte_enable,
-input                       i_data_access,      // high for data petch, low for instruction fetch
-input                       i_cache_enable,     // cache enable
-input                       i_cache_flush,      // cache flush
-input       [31:0]          i_cacheable_area,   // each bit corresponds to 2MB address space
-input                       i_system_rdy,
-output                      o_fetch_stall,      // when this is asserted all registers 
-                                                // in all 3 pipeline stages are held
-                                                // at their current values
-
-// Wishbone Master I/F
-output      [31:0]          o_wb_adr,
-output      [3:0]           o_wb_sel,
-output                      o_wb_we,
-input       [31:0]          i_wb_dat,
-output      [31:0]          o_wb_dat,
-output                      o_wb_cyc,
-output                      o_wb_stb,
-input                       i_wb_ack,
-input                       i_wb_err
-
-);
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Memory configuration and Wishbone address decoding          //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  This module provides a set of functions that are used to    //
-//  decode memory addresses so other modules know if an address //
-//  is for example in main memory, or boot memory, or a UART    //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-// e.g. 24 for 32MBytes, 26 for 128MBytes
-localparam MAIN_MSB             = 26; 
-
-// e.g. 13 for 4k words
-localparam BOOT_MSB             = 13;  
-
-localparam MAIN_BASE            = 32'h0000_0000; /*  Main Memory            */
-localparam BOOT_BASE            = 32'h0000_0000; /*  Cachable Boot Memory   */
-localparam AMBER_TM_BASE        = 16'h1300;      /*  Timers Module          */
-localparam AMBER_IC_BASE        = 16'h1400;      /*  Interrupt Controller   */
-localparam AMBER_UART0_BASE     = 16'h1600;      /*  UART 0                 */
-localparam AMBER_UART1_BASE     = 16'h1700;      /*  UART 1                 */
-localparam ETHMAC_BASE          = 16'h2000;      /*  Ethernet MAC           */
-localparam HIBOOT_BASE          = 32'h2800_0000; /*  Uncachable Boot Memory */
-localparam TEST_BASE            = 16'hf000;      /*  Test Module            */
-
-
-
-function in_loboot_mem;
-    input [31:0] address;
-begin
-in_loboot_mem  = (address >= BOOT_BASE   && 
-                 address < (BOOT_BASE   + 2**(BOOT_MSB+1)-1));
-end
-endfunction
-
-
-function in_hiboot_mem;
-    input [31:0] address;
-begin
-in_hiboot_mem  = (address[31:BOOT_MSB+1] == HIBOOT_BASE[31:BOOT_MSB+1]);
-end
-endfunction
-
-
-function in_boot_mem;
-    input [31:0] address;
-begin
-in_boot_mem  =  in_loboot_mem(address) || in_hiboot_mem(address);
-end
-endfunction
-
-
-function in_main_mem;
-    input [31:0] address;
-begin
-in_main_mem  = (address >= MAIN_BASE   && 
-                address < (MAIN_BASE   + 2**(MAIN_MSB+1)-1)) &&
-                !in_boot_mem ( address );
-end
-endfunction
-
-
-// UART 0 address space
-function in_uart0;
-    input [31:0] address;
-begin
-    in_uart0 = address [31:16] == AMBER_UART0_BASE;
-end
-endfunction
-
-
-// UART 1 address space
-function in_uart1;
-    input [31:0] address;
-begin
-    in_uart1 = address [31:16] == AMBER_UART1_BASE;
-end
-endfunction
-
-
-// Interrupt Controller address space
-function in_ic;
-    input [31:0] address;
-begin
-    in_ic = address [31:16] == AMBER_IC_BASE;
-end
-endfunction
-
-
-// Timer Module address space
-function in_tm;
-    input [31:0] address;
-begin
-    in_tm = address [31:16] == AMBER_TM_BASE;
-end
-endfunction
-
-
-// Test module
-function in_test;
-    input [31:0] address;
-begin
-    in_test = address [31:16] == TEST_BASE;
-end
-endfunction
-
-
-// Ethernet MAC
-function in_ethmac;
-    input [31:0] address;
-begin
-    in_ethmac = address [31:16] == ETHMAC_BASE;
-end
-endfunction
-
-
-// Used in fetch.v and l2cache.v to allow accesses to these addresses
-// to be cached
-function in_cachable_mem;
-    input [31:0] address;
-begin
-    in_cachable_mem = in_loboot_mem     ( address ) || 
-                      in_main_mem       ( address ) ; 
-end
-endfunction
-
-
-wire                        cache_stall;
-wire                        wb_stall;
-wire    [31:0]              cache_read_data;
-wire                        sel_cache;
-wire                        sel_wb;
-wire                        cache_wb_req;
-wire                        address_cachable;
-
-// ======================================
-// Memory Decode
-// ======================================
-assign address_cachable  = in_cachable_mem( i_address ) && i_cacheable_area[i_address[25:21]];
-
-assign sel_cache         = address_cachable && i_address_valid && i_cache_enable &&  !i_exclusive;
-
-// Don't start wishbone transfers when the cache is stalling the core
-// The cache stalls the core during its initialization sequence
-assign sel_wb            = !sel_cache && i_address_valid && !(cache_stall);
-
-// Return read data either from the wishbone bus or the cache
-assign o_read_data       = sel_cache  ? cache_read_data : 
-                           sel_wb     ? i_wb_dat        :
-                                        32'hffeeddcc ;
-
-// Stall the instruction decode and execute stages of the core
-// when the fetch stage needs more than 1 cycle to return the requested
-// read data
-assign o_fetch_stall     = !i_system_rdy || wb_stall || cache_stall;
-
-
-// ======================================
-// L1 Cache (Unified Instruction and Data)
-// ======================================
-a23_cache u_cache (
-    .i_clk                      ( i_clk                 ),
-     
-    .i_select                   ( sel_cache             ),
-    .i_exclusive                ( i_exclusive           ),
-    .i_write_data               ( i_write_data          ),
-    .i_write_enable             ( i_write_enable        ),
-    .i_address                  ( i_address             ),
-    .i_address_nxt              ( i_address_nxt         ),
-    .i_byte_enable              ( i_byte_enable         ),
-    .i_cache_enable             ( i_cache_enable        ),
-    .i_cache_flush              ( i_cache_flush         ),
-    .o_read_data                ( cache_read_data       ),
-    
-    .o_stall                    ( cache_stall           ),
-    .i_core_stall               ( o_fetch_stall         ),
-    .o_wb_req                   ( cache_wb_req          ),
-    .i_wb_address               ( o_wb_adr              ),
-    .i_wb_read_data             ( i_wb_dat              ),
-    .i_wb_stall                 ( o_wb_stb & ~i_wb_ack  )
-);
-
-
-
-// ======================================
-//  Wishbone Master I/F
-// ======================================
-a23_wishbone u_wishbone (
-    // CPU Side
-    .i_clk                      ( i_clk                 ),
-    
-    // Core Accesses to Wishbone bus
-    .i_select                   ( sel_wb                ),
-    .i_write_data               ( i_write_data          ),
-    .i_write_enable             ( i_write_enable        ),
-    .i_byte_enable              ( i_byte_enable         ),
-    .i_data_access              ( i_data_access         ),
-    .i_exclusive                ( i_exclusive           ),
-    .i_address                  ( i_address             ),
-    .o_stall                    ( wb_stall              ),
-
-    // Cache Accesses to Wishbone bus 
-    // L1 Cache enable - used for hprot
-    .i_cache_req                ( cache_wb_req          ),
-
-    .o_wb_adr                   ( o_wb_adr              ),
-    .o_wb_sel                   ( o_wb_sel              ),
-    .o_wb_we                    ( o_wb_we               ),
-    .i_wb_dat                   ( i_wb_dat              ),
-    .o_wb_dat                   ( o_wb_dat              ),
-    .o_wb_cyc                   ( o_wb_cyc              ),
-    .o_wb_stb                   ( o_wb_stb              ),
-    .i_wb_ack                   ( i_wb_ack              ),
-    .i_wb_err                   ( i_wb_err              )
-);
-
-
-endmodule
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_functions.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_functions.v
deleted file mode 100644
index b4d9081..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_functions.v
+++ /dev/null
@@ -1,174 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Functions for Amber 2 Core                                  //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Functions used in more than one module                      //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// ========================================================
-// PC Filter - Remove the status bits 
-// ========================================================
-function [31:0] pcf;
-input [31:0] pc_reg;
-    begin
-    pcf = {6'd0, pc_reg[25:2], 2'd0};
-    end
-endfunction
-
-
-// ========================================================
-// 4-bit to 16-bit 1-hot decode
-// ========================================================
-function [14:0] decode;
-input [3:0] reg_sel;
-begin
-case ( reg_sel )
-    4'h0:    decode = 15'h0001;
-    4'h1:    decode = 15'h0002;
-    4'h2:    decode = 15'h0004;
-    4'h3:    decode = 15'h0008;
-    4'h4:    decode = 15'h0010;
-    4'h5:    decode = 15'h0020;
-    4'h6:    decode = 15'h0040;
-    4'h7:    decode = 15'h0080;
-    4'h8:    decode = 15'h0100;
-    4'h9:    decode = 15'h0200;
-    4'ha:    decode = 15'h0400;
-    4'hb:    decode = 15'h0800;
-    4'hc:    decode = 15'h1000;
-    4'hd:    decode = 15'h2000;
-    4'he:    decode = 15'h4000;
-    default: decode = 15'h0000;
-endcase
-end
-endfunction
-
-
-// ========================================================
-// Convert Stats Bits Mode to one-hot encoded version
-// ========================================================
-function [3:0] oh_status_bits_mode;
-input [1:0] fn_status_bits_mode;
-begin
-oh_status_bits_mode = 
-    fn_status_bits_mode == SVC  ? 1'd1 << OH_SVC  :
-    fn_status_bits_mode == IRQ  ? 1'd1 << OH_IRQ  :
-    fn_status_bits_mode == FIRQ ? 1'd1 << OH_FIRQ :
-                                  1'd1 << OH_USR  ;
-end
-endfunction
-
-// ========================================================
-// Convert mode into ascii name
-// ========================================================
-function [(14*8)-1:0]  mode_name;
-input [4:0] mode;
-begin
-
-mode_name    = mode == USR  ? "User          " :
-               mode == SVC  ? "Supervisor    " :
-               mode == IRQ  ? "Interrupt     " :
-               mode == FIRQ ? "Fast Interrupt" :
-                              "UNKNOWN       " ;
-end
-endfunction
-
-
-// ========================================================
-// Conditional Execution Function
-// ========================================================
-// EQ Z set
-// NE Z clear
-// CS C set
-// CC C clear
-// MI N set
-// PL N clear
-// VS V set
-// VC V clear
-// HI C set and Z clear
-// LS C clear or Z set
-// GE N == V
-// LT N != V
-// GT Z == 0,N == V
-// LE Z == 1 or N != V
-// AL Always (unconditional)
-// NV Never
-
-function conditional_execute;
-input [3:0] condition;
-input [3:0] flags;
-begin
-conditional_execute  
-               = ( condition == AL                                        ) ||
-                 ( condition == EQ  &&  flags[2]                          ) ||
-                 ( condition == NE  && !flags[2]                          ) ||
-                 ( condition == CS  &&  flags[1]                          ) ||
-                 ( condition == CC  && !flags[1]                          ) ||
-                 ( condition == MI  &&  flags[3]                          ) ||
-                 ( condition == PL  && !flags[3]                          ) ||
-                 ( condition == VS  &&  flags[0]                          ) ||
-                 ( condition == VC  && !flags[0]                          ) ||
-            
-                 ( condition == HI  &&    flags[1] && !flags[2]           ) ||
-                 ( condition == LS  &&  (!flags[1] ||  flags[2])          ) ||
-            
-                 ( condition == GE  &&  flags[3] == flags[0]              ) ||
-                 ( condition == LT  &&  flags[3] != flags[0]              ) ||
-
-                 ( condition == GT  &&  !flags[2] && flags[3] == flags[0] ) ||
-                 ( condition == LE  &&  (flags[2] || flags[3] != flags[0])) ;
-            
-end
-endfunction
-
-
-// ========================================================
-// Log 2
-// ========================================================
-
-function [31:0] log2;
-input    [31:0] num;
-integer i;
-integer out;
-begin
-  out = 32'd0;
-  for (i=0; i<30; i=i+1)
-    if ((2**i > num) && (out == 0))
-      out = i-1;
-  log2 = out;
-end
-endfunction
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_localparams.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_localparams.v
deleted file mode 100644
index 33c8845..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_localparams.v
+++ /dev/null
@@ -1,117 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Parameters file for Amber 2 Core                            //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Holds general parameters that are used is several core      //
-//  modules                                                     //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// Instruction Types
-localparam [3:0]    REGOP       = 4'h0, // Data processing
-                    MULT        = 4'h1, // Multiply
-                    SWAP        = 4'h2, // Single Data Swap
-                    TRANS       = 4'h3, // Single data transfer
-                    MTRANS      = 4'h4, // Multi-word data transfer
-                    BRANCH      = 4'h5, // Branch
-                    CODTRANS    = 4'h6, // Co-processor data transfer
-                    COREGOP     = 4'h7, // Co-processor data operation
-                    CORTRANS    = 4'h8, // Co-processor register transfer
-                    SWI         = 4'h9; // software interrupt
-
-
-// Opcodes
-localparam [3:0] AND = 4'h0,        // Logical AND
-                 EOR = 4'h1,        // Logical Exclusive OR
-                 SUB = 4'h2,        // Subtract
-                 RSB = 4'h3,        // Reverse Subtract
-                 ADD = 4'h4,        // Add
-                 ADC = 4'h5,        // Add with Carry
-                 SBC = 4'h6,        // Subtract with Carry
-                 RSC = 4'h7,        // Reverse Subtract with Carry
-                 TST = 4'h8,        // Test  (using AND operator)
-                 TEQ = 4'h9,        // Test Equivalence (using EOR operator)
-                 CMP = 4'ha,       // Compare (using Subtract operator)
-                 CMN = 4'hb,       // Compare Negated
-                 ORR = 4'hc,       // Logical OR
-                 MOV = 4'hd,       // Move
-                 BIC = 4'he,       // Bit Clear (using AND & NOT operators)
-                 MVN = 4'hf;       // Move NOT
-                 
-// Condition Encoding
-localparam [3:0] EQ  = 4'h0,        // Equal            / Z set
-                 NE  = 4'h1,        // Not equal        / Z clear
-                 CS  = 4'h2,        // Carry set        / C set
-                 CC  = 4'h3,        // Carry clear      / C clear
-                 MI  = 4'h4,        // Minus            / N set
-                 PL  = 4'h5,        // Plus             / N clear
-                 VS  = 4'h6,        // Overflow         / V set
-                 VC  = 4'h7,        // No overflow      / V clear
-                 HI  = 4'h8,        // Unsigned higher  / C set and Z clear
-                 LS  = 4'h9,        // Unsigned lower
-                                    // or same          / C clear or Z set
-                 GE  = 4'ha,        // Signed greater 
-                                    // than or equal    / N == V
-                 LT  = 4'hb,        // Signed less than / N != V
-                 GT  = 4'hc,        // Signed greater
-                                    // than             / Z == 0, N == V
-                 LE  = 4'hd,        // Signed less than
-                                    // or equal         / Z == 1, N != V
-                 AL  = 4'he,        // Always
-                 NV  = 4'hf;        // Never
-
-// Any instruction with a condition field of 0b1111 is UNPREDICTABLE.                
-                
-// Shift Types
-localparam [1:0] LSL = 2'h0,
-                 LSR = 2'h1,
-                 ASR = 2'h2,
-                 RRX = 2'h3,
-                 ROR = 2'h3; 
- 
-// Modes
-localparam [1:0] SVC  =  2'b11,  // Supervisor
-                 IRQ  =  2'b10,  // Interrupt
-                 FIRQ =  2'b01,  // Fast Interrupt
-                 USR  =  2'b00;  // User
-
-// One-Hot Mode encodings
-localparam [5:0] OH_USR  = 0,
-                 OH_IRQ  = 1,
-                 OH_FIRQ = 2,
-                 OH_SVC  = 3;
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_multiply.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_multiply.v
deleted file mode 100644
index c6922ed..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_multiply.v
+++ /dev/null
@@ -1,160 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Multiplication Module for Amber 2 Core                      //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  64-bit Booth signed or unsigned multiply and                //
-//  multiply-accumulate supported. It takes about 38 clock      //
-//  cycles to complete an operation.                            //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-
-// bit 0 go, bit 1 accumulate
-// Command:
-//  4'b01 :  MUL   - 32 bit multiplication
-//  4'b11 :  MLA   - 32 bit multiply and accumulate
-//
-//  34-bit Booth adder
-//  The adder needs to be 34 bit to deal with signed and unsigned 32-bit
-//  multiplication inputs. This adds 1 extra bit. Then to deal with the
-//  case of two max negative numbers another bit is required.
-//
-
-module a23_multiply (
-input                       i_clk,
-input                       i_fetch_stall,
-
-input       [31:0]          i_a_in,         // Rds
-input       [31:0]          i_b_in,         // Rm
-input       [1:0]           i_function,
-input                       i_execute,
-
-output      [31:0]          o_out,
-output      [1:0]           o_flags,        // [1] = N, [0] = Z
-output reg                  o_done = 'd0 // goes high 2 cycles before completion                                          
-);
-
-
-wire        enable;
-wire        accumulate;
-wire [33:0] multiplier;
-wire [33:0] multiplier_bar;
-wire [33:0] sum;
-wire [33:0] sum34_b;
-
-reg  [5:0]  count = 'd0;
-reg  [5:0]  count_nxt;
-reg  [67:0] product = 'd0;
-reg  [67:0] product_nxt;
-reg  [1:0]  flags_nxt;
-wire [32:0] sum_acc1;           // the MSB is the carry out for the upper 32 bit addition
-
-
-assign enable         = i_function[0];
-assign accumulate     = i_function[1];
- 
-assign multiplier     =  { 2'd0, i_a_in} ;
-assign multiplier_bar = ~{ 2'd0, i_a_in} + 34'd1 ;
-
-assign sum34_b        =  product[1:0] == 2'b01 ? multiplier     :
-                         product[1:0] == 2'b10 ? multiplier_bar :
-                                                 34'd0 ;
-
-
-// Use DSP modules from Xilinx Spartan6 FPGA devices
- 
-    // -----------------------------------
-    // 34-bit adder - booth multiplication
-    // -----------------------------------
-    assign sum =  product[67:34] + sum34_b;
-     
-    // ------------------------------------
-    // 33-bit adder - accumulate operations
-    // ------------------------------------
-    assign sum_acc1 = {1'd0, product[32:1]} + {1'd0, i_a_in};
-     
-
-
-always @*
-    begin
-    // Defaults
-    count_nxt           = count;
-    product_nxt         = product;
-    
-    // update Negative and Zero flags
-    // Use registered value of product so this adds an extra cycle
-    // but this avoids having the 64-bit zero comparator on the
-    // main adder path
-    flags_nxt   = { product[32], product[32:1] == 32'd0 }; 
-    
-
-    if ( count == 6'd0 )
-        product_nxt = {33'd0, 1'd0, i_b_in, 1'd0 } ;
-    else if ( count <= 6'd33 )
-        product_nxt = { sum[33], sum, product[33:1]} ;
-    else if ( count == 6'd34 && accumulate )
-        begin
-        // Note that bit 0 is not part of the product. It is used during the booth
-        // multiplication algorithm
-        product_nxt         = { product[64:33], sum_acc1[31:0], 1'd0}; // Accumulate
-        end
-        
-    // Multiplication state counter
-    if (count == 6'd0)  // start
-        count_nxt   = enable ? 6'd1 : 6'd0;
-    else if ((count == 6'd34 && !accumulate) ||  // MUL
-             (count == 6'd35 &&  accumulate)  )  // MLA
-        count_nxt   = 6'd0;
-    else
-        count_nxt   = count + 1'd1;
-    end
-
-
-always @ ( posedge i_clk )
-    if ( !i_fetch_stall )
-        begin
-        count           <= i_execute ? count_nxt          : count;           
-        product         <= i_execute ? product_nxt        : product;        
-        o_done          <= i_execute ? count == 6'd31 : o_done;          
-        end
-
-// Outputs
-assign o_out   = product[32:1]; 
-assign o_flags = flags_nxt;
-                     
-endmodule
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_ram_register_bank.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_ram_register_bank.v
deleted file mode 100644
index b5c97ac..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_ram_register_bank.v
+++ /dev/null
@@ -1,615 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  RAM-based register Bank for Amber Core                      //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Contains 37 32-bit registers, 16 of which are visible       //
-//  ina any one operating mode.                                 //
-//  The block is designed using syncronous RAM primitive,       //
-//  and fits well into an FPGA design                           //
-//                                                              //
-//  Author(s):                                                  //
-//      - Dmitry Tarnyagin, dmitry.tarnyagin@lockless.no        //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-module a23_ram_register_bank (
-
-input                       i_clk,
-input                       i_fetch_stall,
-
-input       [1:0]           i_mode_exec,            // registered cpu mode from execution stage
-input       [1:0]           i_mode_exec_nxt,        // 1 periods delayed from i_mode_idec
-                                                    // Used for register reads
-input       [1:0]           i_mode_rds_exec,        // Use raw version in this implementation,
-                                                    // includes i_user_mode_regs_store
-input                       i_user_mode_regs_load,
-input       [3:0]           i_rm_sel,
-input       [3:0]           i_rds_sel,
-input       [3:0]           i_rn_sel,
-
-input                       i_pc_wen,
-input       [3:0]           i_reg_bank_wsel,
-
-input       [23:0]          i_pc,                   // program counter [25:2]
-input       [31:0]          i_reg,
-
-input       [3:0]           i_status_bits_flags,
-input                       i_status_bits_irq_mask,
-input                       i_status_bits_firq_mask,
-
-output      [31:0]          o_rm,
-output      [31:0]          o_rs,
-output      [31:0]          o_rd,
-output      [31:0]          o_rn,
-output      [31:0]          o_pc
-
-);
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Parameters file for Amber 2 Core                            //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Holds general parameters that are used is several core      //
-//  modules                                                     //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// Instruction Types
-localparam [3:0]    REGOP       = 4'h0, // Data processing
-                    MULT        = 4'h1, // Multiply
-                    SWAP        = 4'h2, // Single Data Swap
-                    TRANS       = 4'h3, // Single data transfer
-                    MTRANS      = 4'h4, // Multi-word data transfer
-                    BRANCH      = 4'h5, // Branch
-                    CODTRANS    = 4'h6, // Co-processor data transfer
-                    COREGOP     = 4'h7, // Co-processor data operation
-                    CORTRANS    = 4'h8, // Co-processor register transfer
-                    SWI         = 4'h9; // software interrupt
-
-
-// Opcodes
-localparam [3:0] AND = 4'h0,        // Logical AND
-                 EOR = 4'h1,        // Logical Exclusive OR
-                 SUB = 4'h2,        // Subtract
-                 RSB = 4'h3,        // Reverse Subtract
-                 ADD = 4'h4,        // Add
-                 ADC = 4'h5,        // Add with Carry
-                 SBC = 4'h6,        // Subtract with Carry
-                 RSC = 4'h7,        // Reverse Subtract with Carry
-                 TST = 4'h8,        // Test  (using AND operator)
-                 TEQ = 4'h9,        // Test Equivalence (using EOR operator)
-                 CMP = 4'ha,       // Compare (using Subtract operator)
-                 CMN = 4'hb,       // Compare Negated
-                 ORR = 4'hc,       // Logical OR
-                 MOV = 4'hd,       // Move
-                 BIC = 4'he,       // Bit Clear (using AND & NOT operators)
-                 MVN = 4'hf;       // Move NOT
-                 
-// Condition Encoding
-localparam [3:0] EQ  = 4'h0,        // Equal            / Z set
-                 NE  = 4'h1,        // Not equal        / Z clear
-                 CS  = 4'h2,        // Carry set        / C set
-                 CC  = 4'h3,        // Carry clear      / C clear
-                 MI  = 4'h4,        // Minus            / N set
-                 PL  = 4'h5,        // Plus             / N clear
-                 VS  = 4'h6,        // Overflow         / V set
-                 VC  = 4'h7,        // No overflow      / V clear
-                 HI  = 4'h8,        // Unsigned higher  / C set and Z clear
-                 LS  = 4'h9,        // Unsigned lower
-                                    // or same          / C clear or Z set
-                 GE  = 4'ha,        // Signed greater 
-                                    // than or equal    / N == V
-                 LT  = 4'hb,        // Signed less than / N != V
-                 GT  = 4'hc,        // Signed greater
-                                    // than             / Z == 0, N == V
-                 LE  = 4'hd,        // Signed less than
-                                    // or equal         / Z == 1, N != V
-                 AL  = 4'he,        // Always
-                 NV  = 4'hf;        // Never
-
-// Any instruction with a condition field of 0b1111 is UNPREDICTABLE.                
-                
-// Shift Types
-localparam [1:0] LSL = 2'h0,
-                 LSR = 2'h1,
-                 ASR = 2'h2,
-                 RRX = 2'h3,
-                 ROR = 2'h3; 
- 
-// Modes
-localparam [1:0] SVC  =  2'b11,  // Supervisor
-                 IRQ  =  2'b10,  // Interrupt
-                 FIRQ =  2'b01,  // Fast Interrupt
-                 USR  =  2'b00;  // User
-
-// One-Hot Mode encodings
-localparam [5:0] OH_USR  = 0,
-                 OH_IRQ  = 1,
-                 OH_FIRQ = 2,
-                 OH_SVC  = 3;
-
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Functions for Amber 2 Core                                  //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Functions used in more than one module                      //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// ========================================================
-// PC Filter - Remove the status bits 
-// ========================================================
-function [31:0] pcf;
-input [31:0] pc_reg;
-    begin
-    pcf = {6'd0, pc_reg[25:2], 2'd0};
-    end
-endfunction
-
-
-// ========================================================
-// 4-bit to 16-bit 1-hot decode
-// ========================================================
-function [14:0] decode;
-input [3:0] reg_sel;
-begin
-case ( reg_sel )
-    4'h0:    decode = 15'h0001;
-    4'h1:    decode = 15'h0002;
-    4'h2:    decode = 15'h0004;
-    4'h3:    decode = 15'h0008;
-    4'h4:    decode = 15'h0010;
-    4'h5:    decode = 15'h0020;
-    4'h6:    decode = 15'h0040;
-    4'h7:    decode = 15'h0080;
-    4'h8:    decode = 15'h0100;
-    4'h9:    decode = 15'h0200;
-    4'ha:    decode = 15'h0400;
-    4'hb:    decode = 15'h0800;
-    4'hc:    decode = 15'h1000;
-    4'hd:    decode = 15'h2000;
-    4'he:    decode = 15'h4000;
-    default: decode = 15'h0000;
-endcase
-end
-endfunction
-
-
-// ========================================================
-// Convert Stats Bits Mode to one-hot encoded version
-// ========================================================
-function [3:0] oh_status_bits_mode;
-input [1:0] fn_status_bits_mode;
-begin
-oh_status_bits_mode = 
-    fn_status_bits_mode == SVC  ? 1'd1 << OH_SVC  :
-    fn_status_bits_mode == IRQ  ? 1'd1 << OH_IRQ  :
-    fn_status_bits_mode == FIRQ ? 1'd1 << OH_FIRQ :
-                                  1'd1 << OH_USR  ;
-end
-endfunction
-
-// ========================================================
-// Convert mode into ascii name
-// ========================================================
-function [(14*8)-1:0]  mode_name;
-input [4:0] mode;
-begin
-
-mode_name    = mode == USR  ? "User          " :
-               mode == SVC  ? "Supervisor    " :
-               mode == IRQ  ? "Interrupt     " :
-               mode == FIRQ ? "Fast Interrupt" :
-                              "UNKNOWN       " ;
-end
-endfunction
-
-
-// ========================================================
-// Conditional Execution Function
-// ========================================================
-// EQ Z set
-// NE Z clear
-// CS C set
-// CC C clear
-// MI N set
-// PL N clear
-// VS V set
-// VC V clear
-// HI C set and Z clear
-// LS C clear or Z set
-// GE N == V
-// LT N != V
-// GT Z == 0,N == V
-// LE Z == 1 or N != V
-// AL Always (unconditional)
-// NV Never
-
-function conditional_execute;
-input [3:0] condition;
-input [3:0] flags;
-begin
-conditional_execute  
-               = ( condition == AL                                        ) ||
-                 ( condition == EQ  &&  flags[2]                          ) ||
-                 ( condition == NE  && !flags[2]                          ) ||
-                 ( condition == CS  &&  flags[1]                          ) ||
-                 ( condition == CC  && !flags[1]                          ) ||
-                 ( condition == MI  &&  flags[3]                          ) ||
-                 ( condition == PL  && !flags[3]                          ) ||
-                 ( condition == VS  &&  flags[0]                          ) ||
-                 ( condition == VC  && !flags[0]                          ) ||
-            
-                 ( condition == HI  &&    flags[1] && !flags[2]           ) ||
-                 ( condition == LS  &&  (!flags[1] ||  flags[2])          ) ||
-            
-                 ( condition == GE  &&  flags[3] == flags[0]              ) ||
-                 ( condition == LT  &&  flags[3] != flags[0]              ) ||
-
-                 ( condition == GT  &&  !flags[2] && flags[3] == flags[0] ) ||
-                 ( condition == LE  &&  (flags[2] || flags[3] != flags[0])) ;
-            
-end
-endfunction
-
-
-// ========================================================
-// Log 2
-// ========================================================
-
-function [31:0] log2;
-input    [31:0] num;
-integer i;
-integer out;
-begin
-  out = 32'd0;
-  for (i=0; i<30; i=i+1)
-    if ((2**i > num) && (out == 0))
-      out = i-1;
-  log2 = out;
-end
-endfunction
-
-wire  [1:0]  mode_idec;
-wire  [1:0]  mode_exec;
-wire  [1:0]  mode_rds;
-
-wire  [4:0]  rm_addr;
-wire  [4:0]  rds_addr;
-wire  [4:0]  rn_addr;
-wire  [4:0]  wr_addr;
-
-// Register pool in embedded ram memory
-reg   [31:0] reg_ram_n[31:0];
-reg   [31:0] reg_ram_m[31:0];
-reg   [31:0] reg_ram_ds[31:0];
-
-wire  [31:0] rds_out;
-wire  [31:0] rm_out;
-wire  [31:0] rn_out;
-
-// Synchronous ram input buffering
-reg   [4:0]  rm_addr_reg;
-reg   [4:0]  rds_addr_reg;
-reg   [4:0]  rn_addr_reg;
-
-// User Mode Registers
-reg   [23:0] r15 = 24'hc0_ffee;
-
-wire  [31:0] r15_out_rm;
-wire  [31:0] r15_out_rm_nxt;
-wire  [31:0] r15_out_rn;
-
-// r15 selectors
-reg          rn_15 = 1'b0;   
-reg          rm_15 = 1'b0;
-reg          rds_15 = 1'b0;
-
-// Write Enables from execute stage
-assign mode_idec = i_mode_exec_nxt & ~{2{i_user_mode_regs_load}};
-assign wr_addr = reg_addr(mode_idec, i_reg_bank_wsel);
-
-// Read Enables from stage 1 (fetch)
-assign mode_exec = i_mode_exec_nxt;
-assign rm_addr = reg_addr(mode_exec, i_rm_sel);
-assign rn_addr = reg_addr(mode_exec, i_rn_sel);
-
-// Rds
-assign mode_rds = i_mode_rds_exec;
-assign rds_addr = reg_addr(mode_rds, i_rds_sel);
-
-    
-// ========================================================
-// r15 Register Read based on Mode
-// ========================================================
-assign r15_out_rm     = { i_status_bits_flags, 
-                          i_status_bits_irq_mask, 
-                          i_status_bits_firq_mask, 
-                          r15, 
-                          i_mode_exec};
-
-assign r15_out_rm_nxt = { i_status_bits_flags, 
-                          i_status_bits_irq_mask, 
-                          i_status_bits_firq_mask, 
-                          i_pc, 
-                          i_mode_exec};
-                      
-assign r15_out_rn     = {6'd0, r15, 2'd0};
-
-
-// ========================================================
-// Program Counter out
-// ========================================================
-assign o_pc = r15_out_rn;
-
-// ========================================================
-// Rm Selector
-// ========================================================
-assign rm_out = reg_ram_m[rm_addr_reg];
-
-assign o_rm =	rm_15 ?				r15_out_rm :
-						rm_out;
-
-// ========================================================
-// Rds Selector
-// ========================================================
-assign rds_out = reg_ram_ds[rds_addr_reg];
-
-assign o_rs =	rds_15  ?			r15_out_rn :
-						rds_out;
-
-// ========================================================
-// Rd Selector
-// ========================================================
-assign o_rd =	rds_15  ? 			r15_out_rm_nxt :
-						rds_out;
-
-// ========================================================
-// Rn Selector
-// ========================================================
-assign rn_out = reg_ram_n[rn_addr_reg];
-
-assign o_rn =	rn_15  ?			r15_out_rn :
-						rn_out;
-// ========================================================
-// Register Update
-// ========================================================
-always @ ( posedge i_clk )
-    if (!i_fetch_stall)
-        begin
-
-        // Register write.
-        // Actually the code is synthesed as a syncronous ram
-        // with an additional  pass-through multiplexor for
-        // read-when-write handling.
-        reg_ram_n[wr_addr]      <= i_reg;
-        reg_ram_m[wr_addr]      <= i_reg;
-        reg_ram_ds[wr_addr]     <= i_reg;
-        r15                     <= i_pc_wen ? i_pc : r15;
-
-        // The latching is actually implemented in a hard block.
-        rn_addr_reg             <= rn_addr;
-        rm_addr_reg             <= rm_addr;
-        rds_addr_reg            <= rds_addr;
-
-        rn_15                   <= i_rn_sel == 4'hF;
-        rm_15                   <= i_rm_sel == 4'hF;
-        rds_15                  <= i_rds_sel == 4'hF;
-        end
-    
-// ========================================================
-// Register mapping:
-// ========================================================
-// 0xxxx : r0 - r14
-// 10xxx : r8_firq - r14_firq
-// 110xx : r13_irq - r14_irq
-// 111xx : r13_svc - r14_svc
-
-function [4:0] reg_addr;
-input [1:0] mode;
-input [3:0] sel;
-begin
-	casez ({mode, sel}) // synthesis full_case parallel_case
-		6'b??0???:	reg_addr = {1'b0, sel};		// r0 - r7
-		6'b1?1100:	reg_addr = {1'b0, sel};		// irq and svc r12
-		6'b001???:	reg_addr = {1'b0, sel};		// user r8 - r14
-		6'b011???:	reg_addr = {2'b10, sel[2:0]};	// fiq r8-r14
-		6'b1?10??:	reg_addr = {1'b0, sel};		// irq and svc r8-r11
-		6'b101101:	reg_addr = {3'b110, sel[1:0]};	// irq r13
-		6'b101110:	reg_addr = {3'b110, sel[1:0]};	// irq r14
-		6'b101111:	reg_addr = {3'b110, sel[1:0]};	// irq r15, just to make the case full
-		6'b111101:	reg_addr = {3'b111, sel[1:0]};	// svc r13
-		6'b111110:	reg_addr = {3'b111, sel[1:0]};	// svc r14
-		6'b111111:	reg_addr = {3'b111, sel[1:0]};	// svc r15, just to make the case full
-	endcase
-end
-endfunction
-
-// `ifdef A23_SIMULATION
-// synthesis translate_off
-// To be used as probes...
-wire [31:0] r0;
-wire [31:0] r1;
-wire [31:0] r2;
-wire [31:0] r3;
-wire [31:0] r4;
-wire [31:0] r5;
-wire [31:0] r6;
-wire [31:0] r7;
-wire [31:0] r8;
-wire [31:0] r9;
-wire [31:0] r10;
-wire [31:0] r11;
-wire [31:0] r12;
-wire [31:0] r13;
-wire [31:0] r14;
-wire [31:0] r13_svc;
-wire [31:0] r14_svc;
-wire [31:0] r13_irq;
-wire [31:0] r14_irq;
-wire [31:0] r8_firq;
-wire [31:0] r9_firq;
-wire [31:0] r10_firq;
-wire [31:0] r11_firq;
-wire [31:0] r12_firq;
-wire [31:0] r13_firq;
-wire [31:0] r14_firq;
-wire [31:0] r0_out;
-wire [31:0] r1_out;
-wire [31:0] r2_out;
-wire [31:0] r3_out;
-wire [31:0] r4_out;
-wire [31:0] r5_out;
-wire [31:0] r6_out;
-wire [31:0] r7_out;
-wire [31:0] r8_out;
-wire [31:0] r9_out;
-wire [31:0] r10_out;
-wire [31:0] r11_out;
-wire [31:0] r12_out;
-wire [31:0] r13_out;
-wire [31:0] r14_out;
-
-assign r0  = reg_ram_m[ 0];
-assign r1  = reg_ram_m[ 1];
-assign r2  = reg_ram_m[ 2];
-assign r3  = reg_ram_m[ 3];
-assign r4  = reg_ram_m[ 4];
-assign r5  = reg_ram_m[ 5];
-assign r6  = reg_ram_m[ 6];
-assign r7  = reg_ram_m[ 7];
-assign r8  = reg_ram_m[ 8];
-assign r9  = reg_ram_m[ 9];
-assign r10 = reg_ram_m[10];
-assign r11 = reg_ram_m[11];
-assign r12 = reg_ram_m[12];
-assign r13 = reg_ram_m[13];
-assign r14 = reg_ram_m[14];
-assign r13_svc  = reg_ram_m[29];
-assign r14_svc  = reg_ram_m[30];
-assign r13_irq  = reg_ram_m[25];
-assign r14_irq  = reg_ram_m[26];
-assign r8_firq  = reg_ram_m[16];
-assign r9_firq  = reg_ram_m[17];
-assign r10_firq = reg_ram_m[18];
-assign r11_firq = reg_ram_m[19];
-assign r12_firq = reg_ram_m[20];
-assign r13_firq = reg_ram_m[21];
-assign r14_firq = reg_ram_m[22];
-assign r0_out  = reg_ram_m[reg_addr(mode_exec,  0)];
-assign r1_out  = reg_ram_m[reg_addr(mode_exec,  1)];
-assign r2_out  = reg_ram_m[reg_addr(mode_exec,  2)];
-assign r3_out  = reg_ram_m[reg_addr(mode_exec,  3)];
-assign r4_out  = reg_ram_m[reg_addr(mode_exec,  4)];
-assign r5_out  = reg_ram_m[reg_addr(mode_exec,  5)];
-assign r6_out  = reg_ram_m[reg_addr(mode_exec,  6)];
-assign r7_out  = reg_ram_m[reg_addr(mode_exec,  7)];
-assign r8_out  = reg_ram_m[reg_addr(mode_exec,  8)];
-assign r9_out  = reg_ram_m[reg_addr(mode_exec,  9)];
-assign r10_out = reg_ram_m[reg_addr(mode_exec, 10)];
-assign r11_out = reg_ram_m[reg_addr(mode_exec, 11)];
-assign r12_out = reg_ram_m[reg_addr(mode_exec, 12)];
-assign r13_out = reg_ram_m[reg_addr(mode_exec, 13)];
-assign r14_out = reg_ram_m[reg_addr(mode_exec, 14)];
-// synthesis translate_on
-// `endif
-
-endmodule
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_register_bank.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_register_bank.v
deleted file mode 100644
index 8b2779f..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_register_bank.v
+++ /dev/null
@@ -1,663 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Register Bank for Amber Core                                //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Contains 37 32-bit registers, 16 of which are visible       //
-//  ina any one operating mode. Registers use real flipflops,   //
-//  rather than SRAM. This makes sense for an FPGA              //
-//  implementation, where flipflops are plentiful.              //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-module a23_register_bank (
-
-input                       i_clk,
-input                       i_fetch_stall,
-
-input       [1:0]           i_mode_idec,            // user, supervisor, irq_idec, firq_idec etc.
-                                                    // Used for register writes
-input       [1:0]           i_mode_exec,            // 1 periods delayed from i_mode_idec
-                                                    // Used for register reads
-input       [3:0]           i_mode_rds_exec,        // Use one-hot version specifically for rds, 
-                                                    // includes i_user_mode_regs_store
-input                       i_user_mode_regs_load,
-input                       i_firq_not_user_mode,
-input       [3:0]           i_rm_sel,
-input       [3:0]           i_rds_sel,
-input       [3:0]           i_rn_sel,
-
-input                       i_pc_wen,
-input       [14:0]          i_reg_bank_wen,
-
-input       [23:0]          i_pc,                   // program counter [25:2]
-input       [31:0]          i_reg,
-
-input       [3:0]           i_status_bits_flags,
-input                       i_status_bits_irq_mask,
-input                       i_status_bits_firq_mask,
-
-output      [31:0]          o_rm,
-output reg  [31:0]          o_rs,
-output reg  [31:0]          o_rd,
-output      [31:0]          o_rn,
-output      [31:0]          o_pc
-
-);
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Parameters file for Amber 2 Core                            //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Holds general parameters that are used is several core      //
-//  modules                                                     //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// Instruction Types
-localparam [3:0]    REGOP       = 4'h0, // Data processing
-                    MULT        = 4'h1, // Multiply
-                    SWAP        = 4'h2, // Single Data Swap
-                    TRANS       = 4'h3, // Single data transfer
-                    MTRANS      = 4'h4, // Multi-word data transfer
-                    BRANCH      = 4'h5, // Branch
-                    CODTRANS    = 4'h6, // Co-processor data transfer
-                    COREGOP     = 4'h7, // Co-processor data operation
-                    CORTRANS    = 4'h8, // Co-processor register transfer
-                    SWI         = 4'h9; // software interrupt
-
-
-// Opcodes
-localparam [3:0] AND = 4'h0,        // Logical AND
-                 EOR = 4'h1,        // Logical Exclusive OR
-                 SUB = 4'h2,        // Subtract
-                 RSB = 4'h3,        // Reverse Subtract
-                 ADD = 4'h4,        // Add
-                 ADC = 4'h5,        // Add with Carry
-                 SBC = 4'h6,        // Subtract with Carry
-                 RSC = 4'h7,        // Reverse Subtract with Carry
-                 TST = 4'h8,        // Test  (using AND operator)
-                 TEQ = 4'h9,        // Test Equivalence (using EOR operator)
-                 CMP = 4'ha,       // Compare (using Subtract operator)
-                 CMN = 4'hb,       // Compare Negated
-                 ORR = 4'hc,       // Logical OR
-                 MOV = 4'hd,       // Move
-                 BIC = 4'he,       // Bit Clear (using AND & NOT operators)
-                 MVN = 4'hf;       // Move NOT
-                 
-// Condition Encoding
-localparam [3:0] EQ  = 4'h0,        // Equal            / Z set
-                 NE  = 4'h1,        // Not equal        / Z clear
-                 CS  = 4'h2,        // Carry set        / C set
-                 CC  = 4'h3,        // Carry clear      / C clear
-                 MI  = 4'h4,        // Minus            / N set
-                 PL  = 4'h5,        // Plus             / N clear
-                 VS  = 4'h6,        // Overflow         / V set
-                 VC  = 4'h7,        // No overflow      / V clear
-                 HI  = 4'h8,        // Unsigned higher  / C set and Z clear
-                 LS  = 4'h9,        // Unsigned lower
-                                    // or same          / C clear or Z set
-                 GE  = 4'ha,        // Signed greater 
-                                    // than or equal    / N == V
-                 LT  = 4'hb,        // Signed less than / N != V
-                 GT  = 4'hc,        // Signed greater
-                                    // than             / Z == 0, N == V
-                 LE  = 4'hd,        // Signed less than
-                                    // or equal         / Z == 1, N != V
-                 AL  = 4'he,        // Always
-                 NV  = 4'hf;        // Never
-
-// Any instruction with a condition field of 0b1111 is UNPREDICTABLE.                
-                
-// Shift Types
-localparam [1:0] LSL = 2'h0,
-                 LSR = 2'h1,
-                 ASR = 2'h2,
-                 RRX = 2'h3,
-                 ROR = 2'h3; 
- 
-// Modes
-localparam [1:0] SVC  =  2'b11,  // Supervisor
-                 IRQ  =  2'b10,  // Interrupt
-                 FIRQ =  2'b01,  // Fast Interrupt
-                 USR  =  2'b00;  // User
-
-// One-Hot Mode encodings
-localparam [5:0] OH_USR  = 0,
-                 OH_IRQ  = 1,
-                 OH_FIRQ = 2,
-                 OH_SVC  = 3;
-
-
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Functions for Amber 2 Core                                  //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Functions used in more than one module                      //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-// ========================================================
-// PC Filter - Remove the status bits 
-// ========================================================
-function [31:0] pcf;
-input [31:0] pc_reg;
-    begin
-    pcf = {6'd0, pc_reg[25:2], 2'd0};
-    end
-endfunction
-
-
-// ========================================================
-// 4-bit to 16-bit 1-hot decode
-// ========================================================
-function [14:0] decode;
-input [3:0] reg_sel;
-begin
-case ( reg_sel )
-    4'h0:    decode = 15'h0001;
-    4'h1:    decode = 15'h0002;
-    4'h2:    decode = 15'h0004;
-    4'h3:    decode = 15'h0008;
-    4'h4:    decode = 15'h0010;
-    4'h5:    decode = 15'h0020;
-    4'h6:    decode = 15'h0040;
-    4'h7:    decode = 15'h0080;
-    4'h8:    decode = 15'h0100;
-    4'h9:    decode = 15'h0200;
-    4'ha:    decode = 15'h0400;
-    4'hb:    decode = 15'h0800;
-    4'hc:    decode = 15'h1000;
-    4'hd:    decode = 15'h2000;
-    4'he:    decode = 15'h4000;
-    default: decode = 15'h0000;
-endcase
-end
-endfunction
-
-
-// ========================================================
-// Convert Stats Bits Mode to one-hot encoded version
-// ========================================================
-function [3:0] oh_status_bits_mode;
-input [1:0] fn_status_bits_mode;
-begin
-oh_status_bits_mode = 
-    fn_status_bits_mode == SVC  ? 1'd1 << OH_SVC  :
-    fn_status_bits_mode == IRQ  ? 1'd1 << OH_IRQ  :
-    fn_status_bits_mode == FIRQ ? 1'd1 << OH_FIRQ :
-                                  1'd1 << OH_USR  ;
-end
-endfunction
-
-// ========================================================
-// Convert mode into ascii name
-// ========================================================
-function [(14*8)-1:0]  mode_name;
-input [4:0] mode;
-begin
-
-mode_name    = mode == USR  ? "User          " :
-               mode == SVC  ? "Supervisor    " :
-               mode == IRQ  ? "Interrupt     " :
-               mode == FIRQ ? "Fast Interrupt" :
-                              "UNKNOWN       " ;
-end
-endfunction
-
-
-// ========================================================
-// Conditional Execution Function
-// ========================================================
-// EQ Z set
-// NE Z clear
-// CS C set
-// CC C clear
-// MI N set
-// PL N clear
-// VS V set
-// VC V clear
-// HI C set and Z clear
-// LS C clear or Z set
-// GE N == V
-// LT N != V
-// GT Z == 0,N == V
-// LE Z == 1 or N != V
-// AL Always (unconditional)
-// NV Never
-
-function conditional_execute;
-input [3:0] condition;
-input [3:0] flags;
-begin
-conditional_execute  
-               = ( condition == AL                                        ) ||
-                 ( condition == EQ  &&  flags[2]                          ) ||
-                 ( condition == NE  && !flags[2]                          ) ||
-                 ( condition == CS  &&  flags[1]                          ) ||
-                 ( condition == CC  && !flags[1]                          ) ||
-                 ( condition == MI  &&  flags[3]                          ) ||
-                 ( condition == PL  && !flags[3]                          ) ||
-                 ( condition == VS  &&  flags[0]                          ) ||
-                 ( condition == VC  && !flags[0]                          ) ||
-            
-                 ( condition == HI  &&    flags[1] && !flags[2]           ) ||
-                 ( condition == LS  &&  (!flags[1] ||  flags[2])          ) ||
-            
-                 ( condition == GE  &&  flags[3] == flags[0]              ) ||
-                 ( condition == LT  &&  flags[3] != flags[0]              ) ||
-
-                 ( condition == GT  &&  !flags[2] && flags[3] == flags[0] ) ||
-                 ( condition == LE  &&  (flags[2] || flags[3] != flags[0])) ;
-            
-end
-endfunction
-
-
-// ========================================================
-// Log 2
-// ========================================================
-
-function [31:0] log2;
-input    [31:0] num;
-integer i;
-integer out;
-begin
-  out = 32'd0;
-  for (i=0; i<30; i=i+1)
-    if ((2**i > num) && (out == 0))
-      out = i-1;
-  log2 = out;
-end
-endfunction
-
-
-// User Mode Registers
-reg  [31:0] r0  = 32'hdead_beef;
-reg  [31:0] r1  = 32'hdead_beef;
-reg  [31:0] r2  = 32'hdead_beef;
-reg  [31:0] r3  = 32'hdead_beef;
-reg  [31:0] r4  = 32'hdead_beef;
-reg  [31:0] r5  = 32'hdead_beef;
-reg  [31:0] r6  = 32'hdead_beef;
-reg  [31:0] r7  = 32'hdead_beef;
-reg  [31:0] r8  = 32'hdead_beef;
-reg  [31:0] r9  = 32'hdead_beef;
-reg  [31:0] r10 = 32'hdead_beef;
-reg  [31:0] r11 = 32'hdead_beef;
-reg  [31:0] r12 = 32'hdead_beef;
-reg  [31:0] r13 = 32'hdead_beef;
-reg  [31:0] r14 = 32'hdead_beef;
-reg  [23:0] r15 = 24'hc0_ffee;
-
-wire  [31:0] r0_out;
-wire  [31:0] r1_out;
-wire  [31:0] r2_out;
-wire  [31:0] r3_out;
-wire  [31:0] r4_out;
-wire  [31:0] r5_out;
-wire  [31:0] r6_out;
-wire  [31:0] r7_out;
-wire  [31:0] r8_out;
-wire  [31:0] r9_out;
-wire  [31:0] r10_out;
-wire  [31:0] r11_out;
-wire  [31:0] r12_out;
-wire  [31:0] r13_out;
-wire  [31:0] r14_out;
-wire  [31:0] r15_out_rm;
-wire  [31:0] r15_out_rm_nxt;
-wire  [31:0] r15_out_rn;
-
-wire  [31:0] r8_rds;
-wire  [31:0] r9_rds;
-wire  [31:0] r10_rds;
-wire  [31:0] r11_rds;
-wire  [31:0] r12_rds;
-wire  [31:0] r13_rds;
-wire  [31:0] r14_rds;
-
-// Supervisor Mode Registers
-reg  [31:0] r13_svc = 32'hdead_beef;
-reg  [31:0] r14_svc = 32'hdead_beef;
-
-// Interrupt Mode Registers
-reg  [31:0] r13_irq = 32'hdead_beef;
-reg  [31:0] r14_irq = 32'hdead_beef;
-
-// Fast Interrupt Mode Registers
-reg  [31:0] r8_firq  = 32'hdead_beef;
-reg  [31:0] r9_firq  = 32'hdead_beef;
-reg  [31:0] r10_firq = 32'hdead_beef;
-reg  [31:0] r11_firq = 32'hdead_beef;
-reg  [31:0] r12_firq = 32'hdead_beef;
-reg  [31:0] r13_firq = 32'hdead_beef;
-reg  [31:0] r14_firq = 32'hdead_beef;
-
-wire        usr_exec;
-wire        svc_exec;
-wire        irq_exec;
-wire        firq_exec;
-
-wire        usr_idec;
-wire        svc_idec;
-wire        irq_idec;
-wire        firq_idec;
-
-    // Write Enables from execute stage
-assign usr_idec  =  i_user_mode_regs_load || i_mode_idec == USR;
-assign svc_idec  = !i_user_mode_regs_load && i_mode_idec == SVC;
-assign irq_idec  = !i_user_mode_regs_load && i_mode_idec == IRQ;
-
-// pre-encoded in decode stage to speed up long path
-assign firq_idec = i_firq_not_user_mode;
-
-    // Read Enables from stage 1 (fetch)
-assign usr_exec  = i_mode_exec == USR;
-assign svc_exec  = i_mode_exec == SVC;
-assign irq_exec  = i_mode_exec == IRQ;
-assign firq_exec = i_mode_exec == FIRQ;
-
-
-// ========================================================
-// Register Update
-// ========================================================
-always @ ( posedge i_clk )
-    if (!i_fetch_stall)
-        begin
-        r0       <=  i_reg_bank_wen[0 ]              ? i_reg : r0;  
-        r1       <=  i_reg_bank_wen[1 ]              ? i_reg : r1;  
-        r2       <=  i_reg_bank_wen[2 ]              ? i_reg : r2;  
-        r3       <=  i_reg_bank_wen[3 ]              ? i_reg : r3;  
-        r4       <=  i_reg_bank_wen[4 ]              ? i_reg : r4;  
-        r5       <=  i_reg_bank_wen[5 ]              ? i_reg : r5;  
-        r6       <=  i_reg_bank_wen[6 ]              ? i_reg : r6;  
-        r7       <=  i_reg_bank_wen[7 ]              ? i_reg : r7;  
-        
-        r8       <= (i_reg_bank_wen[8 ] && !firq_idec) ? i_reg : r8;  
-        r9       <= (i_reg_bank_wen[9 ] && !firq_idec) ? i_reg : r9;  
-        r10      <= (i_reg_bank_wen[10] && !firq_idec) ? i_reg : r10; 
-        r11      <= (i_reg_bank_wen[11] && !firq_idec) ? i_reg : r11; 
-        r12      <= (i_reg_bank_wen[12] && !firq_idec) ? i_reg : r12; 
-        
-        r8_firq  <= (i_reg_bank_wen[8 ] &&  firq_idec) ? i_reg : r8_firq;
-        r9_firq  <= (i_reg_bank_wen[9 ] &&  firq_idec) ? i_reg : r9_firq;
-        r10_firq <= (i_reg_bank_wen[10] &&  firq_idec) ? i_reg : r10_firq;
-        r11_firq <= (i_reg_bank_wen[11] &&  firq_idec) ? i_reg : r11_firq;
-        r12_firq <= (i_reg_bank_wen[12] &&  firq_idec) ? i_reg : r12_firq;
-
-        r13      <= (i_reg_bank_wen[13] &&  usr_idec)  ? i_reg : r13;
-        r14      <= (i_reg_bank_wen[14] &&  usr_idec)  ? i_reg : r14;
-     
-        r13_svc  <= (i_reg_bank_wen[13] &&  svc_idec)  ? i_reg : r13_svc;
-        r14_svc  <= (i_reg_bank_wen[14] &&  svc_idec)  ? i_reg : r14_svc;   
-       
-        r13_irq  <= (i_reg_bank_wen[13] &&  irq_idec)  ? i_reg : r13_irq;
-        r14_irq  <= (i_reg_bank_wen[14] &&  irq_idec)  ? i_reg : r14_irq;       
-      
-        r13_firq <= (i_reg_bank_wen[13] &&  firq_idec) ? i_reg : r13_firq;
-        r14_firq <= (i_reg_bank_wen[14] &&  firq_idec) ? i_reg : r14_firq;  
-        
-        r15      <=  i_pc_wen                          ?  i_pc : r15;
-        end
-    
-    
-// ========================================================
-// Register Read based on Mode
-// ========================================================
-assign r0_out = r0;
-assign r1_out = r1;
-assign r2_out = r2;
-assign r3_out = r3;
-assign r4_out = r4;
-assign r5_out = r5;
-assign r6_out = r6;
-assign r7_out = r7;
-
-assign r8_out  = firq_exec ? r8_firq  : r8;
-assign r9_out  = firq_exec ? r9_firq  : r9;
-assign r10_out = firq_exec ? r10_firq : r10;
-assign r11_out = firq_exec ? r11_firq : r11;
-assign r12_out = firq_exec ? r12_firq : r12;
-
-assign r13_out = usr_exec ? r13      :
-                 svc_exec ? r13_svc  :
-                 irq_exec ? r13_irq  :
-                          r13_firq ;
-                       
-assign r14_out = usr_exec ? r14      :
-                 svc_exec ? r14_svc  :
-                 irq_exec ? r14_irq  :
-                          r14_firq ;
- 
-
-assign r15_out_rm     = { i_status_bits_flags, 
-                          i_status_bits_irq_mask, 
-                          i_status_bits_firq_mask, 
-                          r15, 
-                          i_mode_exec};
-
-assign r15_out_rm_nxt = { i_status_bits_flags, 
-                          i_status_bits_irq_mask, 
-                          i_status_bits_firq_mask, 
-                          i_pc, 
-                          i_mode_exec};
-                      
-assign r15_out_rn     = {6'd0, r15, 2'd0};
-
-
-// rds outputs
-assign r8_rds  = i_mode_rds_exec[OH_FIRQ] ? r8_firq  : r8;
-assign r9_rds  = i_mode_rds_exec[OH_FIRQ] ? r9_firq  : r9;
-assign r10_rds = i_mode_rds_exec[OH_FIRQ] ? r10_firq : r10;
-assign r11_rds = i_mode_rds_exec[OH_FIRQ] ? r11_firq : r11;
-assign r12_rds = i_mode_rds_exec[OH_FIRQ] ? r12_firq : r12;
-
-assign r13_rds = i_mode_rds_exec[OH_USR]  ? r13      :
-                 i_mode_rds_exec[OH_SVC]  ? r13_svc  :
-                 i_mode_rds_exec[OH_IRQ]  ? r13_irq  :
-                                            r13_firq ;
-                       
-assign r14_rds = i_mode_rds_exec[OH_USR]  ? r14      :
-                 i_mode_rds_exec[OH_SVC]  ? r14_svc  :
-                 i_mode_rds_exec[OH_IRQ]  ? r14_irq  :
-                                            r14_firq ;
-
-// ========================================================
-// Program Counter out
-// ========================================================
-assign o_pc = r15_out_rn;
-
-// ========================================================
-// Rm Selector
-// ========================================================
-assign o_rm = i_rm_sel == 4'd0 ? r0_out  :
-              i_rm_sel == 4'd1 ? r1_out  : 
-              i_rm_sel == 4'd2 ? r2_out  : 
-              i_rm_sel == 4'd3 ? r3_out  : 
-              i_rm_sel == 4'd4 ? r4_out  : 
-              i_rm_sel == 4'd5 ? r5_out  : 
-              i_rm_sel == 4'd6 ? r6_out  : 
-              i_rm_sel == 4'd7 ? r7_out  : 
-              i_rm_sel == 4'd8 ? r8_out  : 
-              i_rm_sel == 4'd9 ? r9_out  : 
-              i_rm_sel == 4'd10 ? r10_out : 
-              i_rm_sel == 4'd11 ? r11_out : 
-              i_rm_sel == 4'd12 ? r12_out : 
-              i_rm_sel == 4'd13 ? r13_out : 
-              i_rm_sel == 4'd14 ? r14_out : 
-                                  r15_out_rm ; 
-
-
-
-
-// ========================================================
-// Rds Selector
-// ========================================================
-always @*
-    case (i_rds_sel)
-       4'd0 :  o_rs = r0_out  ;
-       4'd1 :  o_rs = r1_out  ; 
-       4'd2 :  o_rs = r2_out  ; 
-       4'd3 :  o_rs = r3_out  ; 
-       4'd4 :  o_rs = r4_out  ; 
-       4'd5 :  o_rs = r5_out  ; 
-       4'd6 :  o_rs = r6_out  ; 
-       4'd7 :  o_rs = r7_out  ; 
-       4'd8 :  o_rs = r8_rds  ; 
-       4'd9 :  o_rs = r9_rds  ; 
-       4'd10 :  o_rs = r10_rds ; 
-       4'd11 :  o_rs = r11_rds ; 
-       4'd12 :  o_rs = r12_rds ; 
-       4'd13 :  o_rs = r13_rds ; 
-       4'd14 :  o_rs = r14_rds ; 
-       default: o_rs = r15_out_rn ; 
-    endcase
-
-                                    
-
-// ========================================================
-// Rd Selector
-// ========================================================
-always @*
-    case (i_rds_sel)
-       4'd0 :  o_rd = r0_out  ;
-       4'd1 :  o_rd = r1_out  ; 
-       4'd2 :  o_rd = r2_out  ; 
-       4'd3 :  o_rd = r3_out  ; 
-       4'd4 :  o_rd = r4_out  ; 
-       4'd5 :  o_rd = r5_out  ; 
-       4'd6 :  o_rd = r6_out  ; 
-       4'd7 :  o_rd = r7_out  ; 
-       4'd8 :  o_rd = r8_rds  ; 
-       4'd9 :  o_rd = r9_rds  ; 
-       4'd10 :  o_rd = r10_rds ; 
-       4'd11 :  o_rd = r11_rds ; 
-       4'd12 :  o_rd = r12_rds ; 
-       4'd13 :  o_rd = r13_rds ; 
-       4'd14 :  o_rd = r14_rds ; 
-       default: o_rd = r15_out_rm_nxt ; 
-    endcase
-
-                                    
-// ========================================================
-// Rn Selector
-// ========================================================
-assign o_rn = i_rn_sel == 4'd0 ? r0_out  :
-              i_rn_sel == 4'd1 ? r1_out  : 
-              i_rn_sel == 4'd2 ? r2_out  : 
-              i_rn_sel == 4'd3 ? r3_out  : 
-              i_rn_sel == 4'd4 ? r4_out  : 
-              i_rn_sel == 4'd5 ? r5_out  : 
-              i_rn_sel == 4'd6 ? r6_out  : 
-              i_rn_sel == 4'd7 ? r7_out  : 
-              i_rn_sel == 4'd8 ? r8_out  : 
-              i_rn_sel == 4'd9 ? r9_out  : 
-              i_rn_sel == 4'd10 ? r10_out : 
-              i_rn_sel == 4'd11 ? r11_out : 
-              i_rn_sel == 4'd12 ? r12_out : 
-              i_rn_sel == 4'd13 ? r13_out : 
-              i_rn_sel == 4'd14 ? r14_out : 
-                                  r15_out_rn ; 
-
-
-endmodule
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_wishbone.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_wishbone.v
deleted file mode 100644
index 40560f4..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/a23_wishbone.v
+++ /dev/null
@@ -1,292 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Wishbone master interface for the Amber core                //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Turns memory access requests from the execute stage and     //
-//  cache into wishbone bus cycles. For 4-word read requests    //
-//  from the cache and swap accesses ( read followed by write   //
-//  to the same address) from the execute stage,                //
-//  a block transfer is done. All other requests result in      //
-//  single word transfers.                                      //
-//                                                              //
-//  Write accesses can be done in a single clock cycle on       //
-//  the wishbone bus, is the destination allows it. The         //
-//  next transfer will begin immediately on the                 //
-//  next cycle on the bus. This looks like a block transfer     //
-//  and does hold ownership of the wishbone bus, preventing     //
-//  the other master ( the ethernet MAC) from gaining           //
-//  ownership between those two cycles. But otherwise it would  //
-//  be necessary to insert a wait cycle after every write,      //
-//  slowing down the performance of the core by around 5 to     //
-//  10%.                                                        //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-module a23_wishbone
-(
-input                       i_clk,
-
-// Core Accesses to Wishbone bus
-input                       i_select,
-input       [31:0]          i_write_data,
-input                       i_write_enable,
-input       [3:0]           i_byte_enable,    // valid for writes only
-input                       i_data_access,
-input                       i_exclusive,      // high for read part of swap access
-input       [31:0]          i_address,
-output                      o_stall,
-
-// Cache Accesses to Wishbone bus
-input                       i_cache_req,
-
-// Wishbone Bus
-output reg  [31:0]          o_wb_adr = 'd0,
-output reg  [3:0]           o_wb_sel = 'd0,
-output reg                  o_wb_we  = 'd0,
-input       [31:0]          i_wb_dat,
-output reg  [31:0]          o_wb_dat = 'd0,
-output reg                  o_wb_cyc = 'd0,
-output reg                  o_wb_stb = 'd0,
-input                       i_wb_ack,
-input                       i_wb_err
-
-);
-
-
-localparam [3:0] WB_IDLE            = 3'd0,
-                 WB_BURST1          = 3'd1,
-                 WB_BURST2          = 3'd2,
-                 WB_BURST3          = 3'd3,
-                 WB_WAIT_ACK        = 3'd4;
-
-reg     [2:0]               wishbone_st = WB_IDLE;
-
-wire                        core_read_request;
-wire                        core_write_request;
-wire                        cache_read_request;
-wire                        cache_write_request;
-wire                        start_access;
-reg                         servicing_cache = 'd0;
-wire    [3:0]               byte_enable;
-reg                         exclusive_access = 'd0;
-wire                        read_ack;
-wire                        wait_write_ack;
-wire                        wb_wait;
-
-// Write buffer
-reg     [31:0]              wbuf_addr_r = 'd0;
-reg     [3:0]               wbuf_sel_r  = 'd0;
-reg                         wbuf_busy_r = 'd0;
-
-
-assign read_ack             = !o_wb_we && i_wb_ack;
-assign o_stall              = ( core_read_request  && !read_ack )       || 
-                              ( core_read_request  && servicing_cache ) ||
-                              ( core_write_request && servicing_cache ) ||
-                              ( core_write_request && wishbone_st == WB_WAIT_ACK) ||
-                              ( cache_write_request && wishbone_st == WB_WAIT_ACK) ||
-                              wbuf_busy_r;
-
-                              // Don't stall on writes
-                              // Wishbone is doing burst read so make core wait to execute the write
-                              // ( core_write_request && !i_wb_ack )  ;
-                              
-assign core_read_request    = i_select && !i_write_enable;
-assign core_write_request   = i_select &&  i_write_enable;
-
-assign cache_read_request   = i_cache_req && !i_write_enable;
-assign cache_write_request  = i_cache_req &&  i_write_enable;
-
-assign wb_wait              = o_wb_stb && !i_wb_ack;
-assign start_access         = (core_read_request || core_write_request || i_cache_req) && !wb_wait ;
-
-// For writes the byte enable is always 4'hf
-assign byte_enable          = wbuf_busy_r                                   ? wbuf_sel_r    :
-                              ( core_write_request || cache_write_request ) ? i_byte_enable : 
-                                                                              4'hf ;
-                                    
-
-
-// ======================================
-// Write buffer
-// ======================================
-
-
-always @( posedge i_clk )
-    if ( wb_wait && !wbuf_busy_r && (core_write_request || cache_write_request) )
-        begin
-        wbuf_addr_r <= i_address;
-        wbuf_sel_r  <= i_byte_enable;
-        wbuf_busy_r <= 1'd1;
-        end
-    else if (!o_wb_stb)
-        wbuf_busy_r <= 1'd0;
-    
-// ======================================
-// Register Accesses
-// ======================================
-always @( posedge i_clk )
-    if ( start_access )
-        o_wb_dat <= i_write_data;
-
-
-assign wait_write_ack = o_wb_stb && o_wb_we && !i_wb_ack;
-
-
-always @( posedge i_clk )
-    case ( wishbone_st )
-        WB_IDLE :
-            begin 
-                
-            if ( start_access )
-                begin
-                o_wb_stb            <= 1'd1; 
-                o_wb_cyc            <= 1'd1; 
-                o_wb_sel            <= byte_enable;
-                end
-            else if ( !wait_write_ack )
-                begin
-                o_wb_stb            <= 1'd0;
-                
-                // Hold cyc high after an exclusive access
-                // to hold ownership of the wishbone bus
-                o_wb_cyc            <= exclusive_access;
-                end
-
-            // cache has priority over the core                     
-            servicing_cache <= cache_read_request && !wait_write_ack;
-
-            if ( wait_write_ack )
-                begin
-                // still waiting for last (write) access to complete
-                wishbone_st      <= WB_WAIT_ACK;
-                end  
-            // do a burst of 4 read to fill a cache line                   
-            else if ( cache_read_request )
-                begin
-                wishbone_st         <= WB_BURST1;
-                exclusive_access    <= 1'd0;
-                end                    
-            else if ( core_read_request )
-                begin
-                wishbone_st         <= WB_WAIT_ACK;
-                exclusive_access    <= i_exclusive;
-                end                    
-           // The core does not currently issue exclusive write requests
-           // but there's no reason why this might not be added some
-           // time in the future so allow for it here
-            else if ( core_write_request )
-                exclusive_access <= i_exclusive;
-
-                            
-            if ( start_access )
-                begin
-                if (wbuf_busy_r)
-                    begin
-                    o_wb_we              <= 1'd1;
-                    o_wb_adr[31:2]       <= wbuf_addr_r[31:2];
-                    end
-                else
-                    begin
-                    o_wb_we              <= core_write_request || cache_write_request;
-                    // only update these on new wb access to make debug easier
-                    o_wb_adr[31:2]       <= i_address[31:2];
-                    end
-                    
-                o_wb_adr[1:0]        <= byte_enable == 4'b0001 ? 2'd0 :
-                                        byte_enable == 4'b0010 ? 2'd1 :
-                                        byte_enable == 4'b0100 ? 2'd2 :
-                                        byte_enable == 4'b1000 ? 2'd3 :
-                                       
-                                        byte_enable == 4'b0011 ? 2'd0 :
-                                        byte_enable == 4'b1100 ? 2'd2 :
-                                       
-                                                                 2'd0 ;
-                end
-            end
-                    
-
-        // Read burst, wait for first ack
-        WB_BURST1:  
-            if ( i_wb_ack )
-                begin
-                // burst of 4 that wraps
-                o_wb_adr[3:2]   <= o_wb_adr[3:2] + 1'd1;
-                wishbone_st     <= WB_BURST2;
-                end
-            
-            
-        // Read burst, wait for second ack
-        WB_BURST2:  
-            if ( i_wb_ack )
-                begin
-                // burst of 4 that wraps
-                o_wb_adr[3:2]   <= o_wb_adr[3:2] + 1'd1;
-                wishbone_st     <= WB_BURST3;
-                end
-            
-            
-        // Read burst, wait for third ack
-        WB_BURST3:  
-            if ( i_wb_ack )
-                begin
-                // burst of 4 that wraps
-                o_wb_adr[3:2]   <= o_wb_adr[3:2] + 1'd1;
-                wishbone_st     <= WB_WAIT_ACK;
-                end
-
-
-        // Wait for the wishbone ack to be asserted
-        WB_WAIT_ACK:   
-            if ( i_wb_ack )
-                begin
-                wishbone_st         <= WB_IDLE;
-                o_wb_stb            <= 1'd0; 
-                o_wb_cyc            <= exclusive_access; 
-                o_wb_we             <= 1'd0;
-                servicing_cache     <= 1'd0;
-                end
-                         
-    endcase
-        
-        
-
-// ========================================================
-// Debug Wishbone bus - not synthesizable
-// ========================================================
-    
-endmodule
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/debug_functions.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/debug_functions.v
deleted file mode 100644
index dc20575..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/debug_functions.v
+++ /dev/null
@@ -1,228 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Debug Functions                                             //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  A bunch of non-synthesizable testbench functions            //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-// Testbench Functions used in more than one module
-
-
-function [31:0] hex_chars_to_32bits;
-input [8*8-1:0] hex_chars;
-begin
-hex_chars_to_32bits[31:28] = hex_chars_to_4bits (hex_chars[8*8-1:7*8]);
-hex_chars_to_32bits[27:24] = hex_chars_to_4bits (hex_chars[7*8-1:6*8]);
-hex_chars_to_32bits[23:20] = hex_chars_to_4bits (hex_chars[6*8-1:5*8]);
-hex_chars_to_32bits[19:16] = hex_chars_to_4bits (hex_chars[5*8-1:4*8]);
-hex_chars_to_32bits[15:12] = hex_chars_to_4bits (hex_chars[4*8-1:3*8]);
-hex_chars_to_32bits[11: 8] = hex_chars_to_4bits (hex_chars[3*8-1:2*8]);
-hex_chars_to_32bits[ 7: 4] = hex_chars_to_4bits (hex_chars[2*8-1:1*8]);
-hex_chars_to_32bits[ 3: 0] = hex_chars_to_4bits (hex_chars[1*8-1:  0]);
-end
-endfunction
-
-
-function [7:0] hex_chars_to_8bits;
-input [8*2-1:0] hex_chars;
-begin
-hex_chars_to_8bits[ 7: 4] = hex_chars_to_4bits (hex_chars[2*8-1:1*8]);
-hex_chars_to_8bits[ 3: 0] = hex_chars_to_4bits (hex_chars[1*8-1:  0]);
-end
-endfunction
-
-
-function [3:0] hex_chars_to_4bits;
-input [7:0] hex_chars;
-begin
-case (hex_chars)
-    "0" : hex_chars_to_4bits  = 4'h0;
-    "1" : hex_chars_to_4bits  = 4'h1;
-    "2" : hex_chars_to_4bits  = 4'h2;
-    "3" : hex_chars_to_4bits  = 4'h3;
-    "4" : hex_chars_to_4bits  = 4'h4;
-    "5" : hex_chars_to_4bits  = 4'h5;
-    "6" : hex_chars_to_4bits  = 4'h6;
-    "7" : hex_chars_to_4bits  = 4'h7;
-    "8" : hex_chars_to_4bits  = 4'h8;
-    "9" : hex_chars_to_4bits  = 4'h9;
-    "a" : hex_chars_to_4bits  = 4'ha;
-    "b" : hex_chars_to_4bits  = 4'hb;
-    "c" : hex_chars_to_4bits  = 4'hc;
-    "d" : hex_chars_to_4bits  = 4'hd;
-    "e" : hex_chars_to_4bits  = 4'he;
-    "f" : hex_chars_to_4bits  = 4'hf;
-    "A" : hex_chars_to_4bits  = 4'ha;
-    "B" : hex_chars_to_4bits  = 4'hb;
-    "C" : hex_chars_to_4bits  = 4'hc;
-    "D" : hex_chars_to_4bits  = 4'hd;
-    "E" : hex_chars_to_4bits  = 4'he;
-    "F" : hex_chars_to_4bits  = 4'hf;
-endcase
-end
-endfunction
-
-
-function [120*8-1:0] align_line;   
-input [120*8-1:0] line;
-begin
-case (1'd1)
-    line[1 *8-1:    0] == 8'd0 : align_line = 960'd0;
-    line[2 *8-1:1 *8] == 8'd0 : align_line = {line[1 *8-1:  0], 952'd0};
-    line[3 *8-1:2 *8] == 8'd0 : align_line = {line[2 *8-1:  0], 944'd0};
-    line[4 *8-1:3 *8] == 8'd0 : align_line = {line[3 *8-1:  0], 936'd0};
-    line[5 *8-1:4 *8] == 8'd0 : align_line = {line[4 *8-1:  0], 928'd0};
-    line[6 *8-1:5 *8] == 8'd0 : align_line = {line[5 *8-1:  0], 920'd0};
-    line[7 *8-1:6 *8] == 8'd0 : align_line = {line[6 *8-1:  0], 912'd0};
-    line[8 *8-1:7 *8] == 8'd0 : align_line = {line[7 *8-1:  0], 904'd0};
-    line[9 *8-1:8 *8] == 8'd0 : align_line = {line[8 *8-1:  0], 896'd0};
-    line[10 *8-1:9 *8] == 8'd0 : align_line = {line[9 *8-1:  0], 888'd0};
-    line[11 *8-1:10 *8] == 8'd0 : align_line = {line[10 *8-1:  0], 880'd0};
-    line[12 *8-1:11 *8] == 8'd0 : align_line = {line[11 *8-1:  0], 872'd0};
-    line[13 *8-1:12 *8] == 8'd0 : align_line = {line[12 *8-1:  0], 864'd0};
-    line[14 *8-1:13 *8] == 8'd0 : align_line = {line[13 *8-1:  0], 856'd0};
-    line[15 *8-1:14 *8] == 8'd0 : align_line = {line[14 *8-1:  0], 848'd0};
-    line[16 *8-1:15 *8] == 8'd0 : align_line = {line[15 *8-1:  0], 840'd0};
-    line[17 *8-1:16 *8] == 8'd0 : align_line = {line[16 *8-1:  0], 832'd0};
-    line[18 *8-1:17 *8] == 8'd0 : align_line = {line[17 *8-1:  0], 824'd0};
-    line[19 *8-1:18 *8] == 8'd0 : align_line = {line[18 *8-1:  0], 816'd0};
-    line[20 *8-1:19 *8] == 8'd0 : align_line = {line[19 *8-1:  0], 808'd0};
-    line[21 *8-1:20 *8] == 8'd0 : align_line = {line[20 *8-1:  0], 800'd0};
-    line[22 *8-1:21 *8] == 8'd0 : align_line = {line[21 *8-1:  0], 792'd0};
-    line[23 *8-1:22 *8] == 8'd0 : align_line = {line[22 *8-1:  0], 784'd0};
-    line[24 *8-1:23 *8] == 8'd0 : align_line = {line[23 *8-1:  0], 776'd0};
-    line[25 *8-1:24 *8] == 8'd0 : align_line = {line[24 *8-1:  0], 768'd0};
-    line[26 *8-1:25 *8] == 8'd0 : align_line = {line[25 *8-1:  0], 760'd0};
-    line[27 *8-1:26 *8] == 8'd0 : align_line = {line[26 *8-1:  0], 752'd0};
-    line[28 *8-1:27 *8] == 8'd0 : align_line = {line[27 *8-1:  0], 744'd0};
-    line[29 *8-1:28 *8] == 8'd0 : align_line = {line[28 *8-1:  0], 736'd0};
-    line[30 *8-1:29 *8] == 8'd0 : align_line = {line[29 *8-1:  0], 728'd0};
-    line[31 *8-1:30 *8] == 8'd0 : align_line = {line[30 *8-1:  0], 720'd0};
-    line[32 *8-1:31 *8] == 8'd0 : align_line = {line[31 *8-1:  0], 712'd0};
-    line[33 *8-1:32 *8] == 8'd0 : align_line = {line[32 *8-1:  0], 704'd0};
-    line[34 *8-1:33 *8] == 8'd0 : align_line = {line[33 *8-1:  0], 696'd0};
-    line[35 *8-1:34 *8] == 8'd0 : align_line = {line[34 *8-1:  0], 688'd0};
-    line[36 *8-1:35 *8] == 8'd0 : align_line = {line[35 *8-1:  0], 680'd0};
-    line[37 *8-1:36 *8] == 8'd0 : align_line = {line[36 *8-1:  0], 672'd0};
-    line[38 *8-1:37 *8] == 8'd0 : align_line = {line[37 *8-1:  0], 664'd0};
-    line[39 *8-1:38 *8] == 8'd0 : align_line = {line[38 *8-1:  0], 656'd0};
-    line[40 *8-1:39 *8] == 8'd0 : align_line = {line[39 *8-1:  0], 648'd0};
-    line[41 *8-1:40 *8] == 8'd0 : align_line = {line[40 *8-1:  0], 640'd0};
-    line[42 *8-1:41 *8] == 8'd0 : align_line = {line[41 *8-1:  0], 632'd0};
-    line[43 *8-1:42 *8] == 8'd0 : align_line = {line[42 *8-1:  0], 624'd0};
-    line[44 *8-1:43 *8] == 8'd0 : align_line = {line[43 *8-1:  0], 616'd0};
-    line[45 *8-1:44 *8] == 8'd0 : align_line = {line[44 *8-1:  0], 608'd0};
-    line[46 *8-1:45 *8] == 8'd0 : align_line = {line[45 *8-1:  0], 600'd0};
-    line[47 *8-1:46 *8] == 8'd0 : align_line = {line[46 *8-1:  0], 592'd0};
-    line[48 *8-1:47 *8] == 8'd0 : align_line = {line[47 *8-1:  0], 584'd0};
-    line[49 *8-1:48 *8] == 8'd0 : align_line = {line[48 *8-1:  0], 576'd0};
-    line[50 *8-1:49 *8] == 8'd0 : align_line = {line[49 *8-1:  0], 568'd0};
-    line[51 *8-1:50 *8] == 8'd0 : align_line = {line[50 *8-1:  0], 560'd0};
-    line[52 *8-1:51 *8] == 8'd0 : align_line = {line[51 *8-1:  0], 552'd0};
-    line[53 *8-1:52 *8] == 8'd0 : align_line = {line[52 *8-1:  0], 544'd0};
-    line[54 *8-1:53 *8] == 8'd0 : align_line = {line[53 *8-1:  0], 536'd0};
-    line[55 *8-1:54 *8] == 8'd0 : align_line = {line[54 *8-1:  0], 528'd0};
-    line[56 *8-1:55 *8] == 8'd0 : align_line = {line[55 *8-1:  0], 520'd0};
-    line[57 *8-1:56 *8] == 8'd0 : align_line = {line[56 *8-1:  0], 512'd0};
-    line[58 *8-1:57 *8] == 8'd0 : align_line = {line[57 *8-1:  0], 504'd0};
-    line[59 *8-1:58 *8] == 8'd0 : align_line = {line[58 *8-1:  0], 496'd0};
-    line[60 *8-1:59 *8] == 8'd0 : align_line = {line[59 *8-1:  0], 488'd0};
-    line[61 *8-1:60 *8] == 8'd0 : align_line = {line[60 *8-1:  0], 480'd0};
-    line[62 *8-1:61 *8] == 8'd0 : align_line = {line[61 *8-1:  0], 472'd0};
-    line[63 *8-1:62 *8] == 8'd0 : align_line = {line[62 *8-1:  0], 464'd0};
-    line[64 *8-1:63 *8] == 8'd0 : align_line = {line[63 *8-1:  0], 456'd0};
-    line[65 *8-1:64 *8] == 8'd0 : align_line = {line[64 *8-1:  0], 448'd0};
-    line[66 *8-1:65 *8] == 8'd0 : align_line = {line[65 *8-1:  0], 440'd0};
-    line[67 *8-1:66 *8] == 8'd0 : align_line = {line[66 *8-1:  0], 432'd0};
-    line[68 *8-1:67 *8] == 8'd0 : align_line = {line[67 *8-1:  0], 424'd0};
-    line[69 *8-1:68 *8] == 8'd0 : align_line = {line[68 *8-1:  0], 416'd0};
-    line[70 *8-1:69 *8] == 8'd0 : align_line = {line[69 *8-1:  0], 408'd0};
-    line[71 *8-1:70 *8] == 8'd0 : align_line = {line[70 *8-1:  0], 400'd0};
-    line[72 *8-1:71 *8] == 8'd0 : align_line = {line[71 *8-1:  0], 392'd0};
-    line[73 *8-1:72 *8] == 8'd0 : align_line = {line[72 *8-1:  0], 384'd0};
-    line[74 *8-1:73 *8] == 8'd0 : align_line = {line[73 *8-1:  0], 376'd0};
-    line[75 *8-1:74 *8] == 8'd0 : align_line = {line[74 *8-1:  0], 368'd0};
-    line[76 *8-1:75 *8] == 8'd0 : align_line = {line[75 *8-1:  0], 360'd0};
-    line[77 *8-1:76 *8] == 8'd0 : align_line = {line[76 *8-1:  0], 352'd0};
-    line[78 *8-1:77 *8] == 8'd0 : align_line = {line[77 *8-1:  0], 344'd0};
-    line[79 *8-1:78 *8] == 8'd0 : align_line = {line[78 *8-1:  0], 336'd0};
-    line[80 *8-1:79 *8] == 8'd0 : align_line = {line[79 *8-1:  0], 328'd0};
-    line[81 *8-1:80 *8] == 8'd0 : align_line = {line[80 *8-1:  0], 320'd0};
-    line[82 *8-1:81 *8] == 8'd0 : align_line = {line[81 *8-1:  0], 312'd0};
-    line[83 *8-1:82 *8] == 8'd0 : align_line = {line[82 *8-1:  0], 304'd0};
-    line[84 *8-1:83 *8] == 8'd0 : align_line = {line[83 *8-1:  0], 296'd0};
-    line[85 *8-1:84 *8] == 8'd0 : align_line = {line[84 *8-1:  0], 288'd0};
-    line[86 *8-1:85 *8] == 8'd0 : align_line = {line[85 *8-1:  0], 280'd0};
-    line[87 *8-1:86 *8] == 8'd0 : align_line = {line[86 *8-1:  0], 272'd0};
-    line[88 *8-1:87 *8] == 8'd0 : align_line = {line[87 *8-1:  0], 264'd0};
-    line[89 *8-1:88 *8] == 8'd0 : align_line = {line[88 *8-1:  0], 256'd0};
-    line[90 *8-1:89 *8] == 8'd0 : align_line = {line[89 *8-1:  0], 248'd0};
-    line[91 *8-1:90 *8] == 8'd0 : align_line = {line[90 *8-1:  0], 240'd0};
-    line[92 *8-1:91 *8] == 8'd0 : align_line = {line[91 *8-1:  0], 232'd0};
-    line[93 *8-1:92 *8] == 8'd0 : align_line = {line[92 *8-1:  0], 224'd0};
-    line[94 *8-1:93 *8] == 8'd0 : align_line = {line[93 *8-1:  0], 216'd0};
-    line[95 *8-1:94 *8] == 8'd0 : align_line = {line[94 *8-1:  0], 208'd0};
-    line[96 *8-1:95 *8] == 8'd0 : align_line = {line[95 *8-1:  0], 200'd0};
-    line[97 *8-1:96 *8] == 8'd0 : align_line = {line[96 *8-1:  0], 192'd0};
-    line[98 *8-1:97 *8] == 8'd0 : align_line = {line[97 *8-1:  0], 184'd0};
-    line[99 *8-1:98 *8] == 8'd0 : align_line = {line[98 *8-1:  0], 176'd0};
-    line[100*8-1:99 *8] == 8'd0 : align_line = {line[99 *8-1:  0], 168'd0};
-    line[101*8-1:100*8] == 8'd0 : align_line = {line[100*8-1:  0], 160'd0};
-    line[102*8-1:101*8] == 8'd0 : align_line = {line[101*8-1:  0], 152'd0};
-    line[103*8-1:102*8] == 8'd0 : align_line = {line[102*8-1:  0], 144'd0};
-    line[104*8-1:103*8] == 8'd0 : align_line = {line[103*8-1:  0], 136'd0};
-    line[105*8-1:104*8] == 8'd0 : align_line = {line[104*8-1:  0], 128'd0};
-    line[106*8-1:105*8] == 8'd0 : align_line = {line[105*8-1:  0], 120'd0};
-    line[107*8-1:106*8] == 8'd0 : align_line = {line[106*8-1:  0], 112'd0};
-    line[108*8-1:107*8] == 8'd0 : align_line = {line[107*8-1:  0], 104'd0};
-    line[109*8-1:108*8] == 8'd0 : align_line = {line[108*8-1:  0], 96'd0};
-    line[110*8-1:109*8] == 8'd0 : align_line = {line[109*8-1:  0], 88'd0};
-    line[111*8-1:110*8] == 8'd0 : align_line = {line[110*8-1:  0], 80'd0};
-    line[112*8-1:111*8] == 8'd0 : align_line = {line[111*8-1:  0], 72'd0};
-    line[113*8-1:112*8] == 8'd0 : align_line = {line[112*8-1:  0], 64'd0};
-    line[114*8-1:113*8] == 8'd0 : align_line = {line[113*8-1:  0], 56'd0};
-    line[115*8-1:114*8] == 8'd0 : align_line = {line[114*8-1:  0], 48'd0};
-    line[116*8-1:115*8] == 8'd0 : align_line = {line[115*8-1:  0], 40'd0};
-    line[117*8-1:116*8] == 8'd0 : align_line = {line[116*8-1:  0], 32'd0};
-    line[118*8-1:117*8] == 8'd0 : align_line = {line[117*8-1:  0], 24'd0};
-    line[119*8-1:118*8] == 8'd0 : align_line = {line[118*8-1:  0], 16'd0};
-    line[120*8-1:119*8] == 8'd0 : align_line = {line[119*8-1:  0], 8'd0};
-
-    default:                      align_line = 960'd0;
-endcase
-end
-endfunction
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/generic_sram_byte_en.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/generic_sram_byte_en.v
deleted file mode 100644
index 5f5f0f4..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/generic_sram_byte_en.v
+++ /dev/null
@@ -1,82 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Generic Library SRAM with per byte write enable             //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Configurable depth and width. The DATA_WIDTH must be a      //
-//  multiple of 8.                                              //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-module generic_sram_byte_en
-#(
-parameter DATA_WIDTH    = 128,
-parameter ADDRESS_WIDTH = 7
-)
-
-(
-input                           i_clk,
-input      [DATA_WIDTH-1:0]     i_write_data,
-input                           i_write_enable,
-input      [ADDRESS_WIDTH-1:0]  i_address,
-input      [DATA_WIDTH/8-1:0]   i_byte_enable,
-output reg [DATA_WIDTH-1:0]     o_read_data
-    );                                                     
-
-reg [DATA_WIDTH-1:0]   mem  [0:2**ADDRESS_WIDTH-1];
-integer i;
-
-always @(posedge i_clk)
-    begin
-    // read
-    o_read_data <= i_write_enable ? {DATA_WIDTH{1'd0}} : mem[i_address];
-
-    // write
-    if (i_write_enable)
-        for (i=0;i<DATA_WIDTH/8;i=i+1)
-            begin
-            mem[i_address][i*8+0] <= i_byte_enable[i] ? i_write_data[i*8+0] : mem[i_address][i*8+0] ;
-            mem[i_address][i*8+1] <= i_byte_enable[i] ? i_write_data[i*8+1] : mem[i_address][i*8+1] ;
-            mem[i_address][i*8+2] <= i_byte_enable[i] ? i_write_data[i*8+2] : mem[i_address][i*8+2] ;
-            mem[i_address][i*8+3] <= i_byte_enable[i] ? i_write_data[i*8+3] : mem[i_address][i*8+3] ;
-            mem[i_address][i*8+4] <= i_byte_enable[i] ? i_write_data[i*8+4] : mem[i_address][i*8+4] ;
-            mem[i_address][i*8+5] <= i_byte_enable[i] ? i_write_data[i*8+5] : mem[i_address][i*8+5] ;
-            mem[i_address][i*8+6] <= i_byte_enable[i] ? i_write_data[i*8+6] : mem[i_address][i*8+6] ;
-            mem[i_address][i*8+7] <= i_byte_enable[i] ? i_write_data[i*8+7] : mem[i_address][i*8+7] ;
-            end                                                 
-    end
-
-endmodule
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/generic_sram_line_en.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/generic_sram_line_en.v
deleted file mode 100644
index 13954d2..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/generic_sram_line_en.v
+++ /dev/null
@@ -1,84 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Generic Library SRAM with single write enable               //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Configurable depth and width.                               //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-
-module generic_sram_line_en
-#(
-parameter DATA_WIDTH            = 128,
-parameter ADDRESS_WIDTH         = 7,
-parameter INITIALIZE_TO_ZERO    = 0
-)
-
-(
-input                           i_clk,
-input      [DATA_WIDTH-1:0]     i_write_data,
-input                           i_write_enable,
-input      [ADDRESS_WIDTH-1:0]  i_address,
-output reg [DATA_WIDTH-1:0]     o_read_data
-);                                                     
-
-reg [DATA_WIDTH-1:0]   mem  [0:2**ADDRESS_WIDTH-1];
-
-generate
-if ( INITIALIZE_TO_ZERO ) begin : init0
-integer i;
-initial
-    begin
-    for (i=0;i<2**ADDRESS_WIDTH;i=i+1)
-        mem[i] <= 'd0;
-    end
-end
-endgenerate
-
-    
-always @(posedge i_clk)
-    begin
-    // read
-    o_read_data <= i_write_enable ? {DATA_WIDTH{1'd0}} : mem[i_address];
-
-    // write
-    if (i_write_enable)
-        mem[i_address] <= i_write_data;
-    end
-    
-    
-
-endmodule
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/global_defines.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/global_defines.v
deleted file mode 100644
index a7b1173..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/global_defines.v
+++ /dev/null
@@ -1,55 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Global testbench defines                                    //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  Contains a set of defines for each module so if the module  //
-//  hierarchy changes, hierarchical references to signals       //
-//  will still work as long as this file is updated.            //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-// ---------------------------------------------------------------
-// Module hierarchy defines
-// ---------------------------------------------------------------
-
-    
-
-
-        // ---------------------------------------------------------------
-
-
-
-// Simplified Main Memory Model
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/memory_configuration.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/memory_configuration.v
deleted file mode 100644
index 50738ea..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/rtl/memory_configuration.v
+++ /dev/null
@@ -1,159 +0,0 @@
-//////////////////////////////////////////////////////////////////
-//                                                              //
-//  Memory configuration and Wishbone address decoding          //
-//                                                              //
-//  This file is part of the Amber project                      //
-//  http://www.opencores.org/project,amber                      //
-//                                                              //
-//  Description                                                 //
-//  This module provides a set of functions that are used to    //
-//  decode memory addresses so other modules know if an address //
-//  is for example in main memory, or boot memory, or a UART    //
-//                                                              //
-//  Author(s):                                                  //
-//      - Conor Santifort, csantifort.amber@gmail.com           //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-//                                                              //
-// Copyright (C) 2010 Authors and OPENCORES.ORG                 //
-//                                                              //
-// This source file may be used and distributed without         //
-// restriction provided that this copyright statement is not    //
-// removed from the file and that any derivative work contains  //
-// the original copyright notice and the associated disclaimer. //
-//                                                              //
-// This source file is free software; you can redistribute it   //
-// and/or modify it under the terms of the GNU Lesser General   //
-// Public License as published by the Free Software Foundation; //
-// either version 2.1 of the License, or (at your option) any   //
-// later version.                                               //
-//                                                              //
-// This source is distributed in the hope that it will be       //
-// useful, but WITHOUT ANY WARRANTY; without even the implied   //
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      //
-// PURPOSE.  See the GNU Lesser General Public License for more //
-// details.                                                     //
-//                                                              //
-// You should have received a copy of the GNU Lesser General    //
-// Public License along with this source; if not, download it   //
-// from http://www.opencores.org/lgpl.shtml                     //
-//                                                              //
-//////////////////////////////////////////////////////////////////
-
-// e.g. 24 for 32MBytes, 26 for 128MBytes
-localparam MAIN_MSB             = 26; 
-
-// e.g. 13 for 4k words
-localparam BOOT_MSB             = 13;  
-
-localparam MAIN_BASE            = 32'h0000_0000; /*  Main Memory            */
-localparam BOOT_BASE            = 32'h0000_0000; /*  Cachable Boot Memory   */
-localparam AMBER_TM_BASE        = 16'h1300;      /*  Timers Module          */
-localparam AMBER_IC_BASE        = 16'h1400;      /*  Interrupt Controller   */
-localparam AMBER_UART0_BASE     = 16'h1600;      /*  UART 0                 */
-localparam AMBER_UART1_BASE     = 16'h1700;      /*  UART 1                 */
-localparam ETHMAC_BASE          = 16'h2000;      /*  Ethernet MAC           */
-localparam HIBOOT_BASE          = 32'h2800_0000; /*  Uncachable Boot Memory */
-localparam TEST_BASE            = 16'hf000;      /*  Test Module            */
-
-
-
-function in_loboot_mem;
-    input [31:0] address;
-begin
-in_loboot_mem  = (address >= BOOT_BASE   && 
-                 address < (BOOT_BASE   + 2**(BOOT_MSB+1)-1));
-end
-endfunction
-
-
-function in_hiboot_mem;
-    input [31:0] address;
-begin
-in_hiboot_mem  = (address[31:BOOT_MSB+1] == HIBOOT_BASE[31:BOOT_MSB+1]);
-end
-endfunction
-
-
-function in_boot_mem;
-    input [31:0] address;
-begin
-in_boot_mem  =  in_loboot_mem(address) || in_hiboot_mem(address);
-end
-endfunction
-
-
-function in_main_mem;
-    input [31:0] address;
-begin
-in_main_mem  = (address >= MAIN_BASE   && 
-                address < (MAIN_BASE   + 2**(MAIN_MSB+1)-1)) &&
-                !in_boot_mem ( address );
-end
-endfunction
-
-
-// UART 0 address space
-function in_uart0;
-    input [31:0] address;
-begin
-    in_uart0 = address [31:16] == AMBER_UART0_BASE;
-end
-endfunction
-
-
-// UART 1 address space
-function in_uart1;
-    input [31:0] address;
-begin
-    in_uart1 = address [31:16] == AMBER_UART1_BASE;
-end
-endfunction
-
-
-// Interrupt Controller address space
-function in_ic;
-    input [31:0] address;
-begin
-    in_ic = address [31:16] == AMBER_IC_BASE;
-end
-endfunction
-
-
-// Timer Module address space
-function in_tm;
-    input [31:0] address;
-begin
-    in_tm = address [31:16] == AMBER_TM_BASE;
-end
-endfunction
-
-
-// Test module
-function in_test;
-    input [31:0] address;
-begin
-    in_test = address [31:16] == TEST_BASE;
-end
-endfunction
-
-
-// Ethernet MAC
-function in_ethmac;
-    input [31:0] address;
-begin
-    in_ethmac = address [31:16] == ETHMAC_BASE;
-end
-endfunction
-
-
-// Used in fetch.v and l2cache.v to allow accesses to these addresses
-// to be cached
-function in_cachable_mem;
-    input [31:0] address;
-begin
-    in_cachable_mem = in_loboot_mem     ( address ) || 
-                      in_main_mem       ( address ) ; 
-end
-endfunction
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/sim/bench.v b/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/sim/bench.v
deleted file mode 100644
index e325f19..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/amber23/slpp_unit/work/sim/bench.v
+++ /dev/null
@@ -1,183 +0,0 @@
-
-module testbench;
-
-// Generic Inputs
-reg clk;
-reg i_irq;              // Interrupt request, active high
-reg i_firq;             // Fast Interrupt request, active high
-reg i_system_rdy;       // Amber is stalled when this is low
-reg globrst;
-
-// Wishbone Inputs
-reg [31:0] i_wb_dat;
-wire       i_wb_ack;
-wire       i_wb_err;
-
-// Wishbone Outputs
-wire [31:0] o_wb_adr;
-wire [ 3:0] o_wb_sel;
-wire        o_wb_we;
-wire [31:0] o_wb_dat;
-wire        o_wb_cyc;
-wire        o_wb_stb;
-
-
-a23_core UUT (
-	clk,
-	i_irq,
-	i_firq,
-	i_system_rdy,
-	o_wb_adr,
-	o_wb_sel,
-	o_wb_we,
-	i_wb_dat,
-	o_wb_dat,
-	o_wb_cyc,
-	o_wb_stb,
-	i_wb_ack,
-	i_wb_err,
-	globrst
-);
-
-
-initial begin
-	clk <= 0;
-	#100;
-	forever begin
-		clk <= ~clk;
-		#50;
-	end
-end
-
-initial begin
-	i_irq <= 0;
-	i_firq <= 0;
-	i_wb_dat <= 0;
-	i_system_rdy <= 0;
-	globrst <= 0;
-	repeat (5) @(posedge clk);
-	globrst <= 1;
-	repeat (2) @(posedge clk);
-	globrst <= 0;
-	repeat (3) @(posedge clk);
-	i_system_rdy <= 1;
-	repeat (5000) @(posedge clk);
-	$display("Reached limit of 5000 cpu cycles.");
-	$finish;
-end
-
-integer output_idx;
-reg [7:0] output_buf [1023:0];
-event output_eof;
-
-localparam mem_size = 16*1024; // = 64kB
-reg [31:0] mem [0:mem_size-1];
-reg [31:0] tmp;
-integer i;
-
-initial begin
-	output_idx = 0;
-	for (i=0; i<mem_size; i=i+1)
-		mem[i] = 0;
-mem[   0] = 32'he3a00000;
-mem[   1] = 32'he13ff000;
-mem[   2] = 32'he3a00001;
-mem[   3] = 32'hee030f10;
-mem[   4] = 32'he3a00001;
-mem[   5] = 32'hee020f10;
-mem[   6] = 32'he3a0d801;
-mem[   7] = 32'heb000000;
-mem[   8] = 32'heafffffe;
-mem[   9] = 32'he3a01201;
-mem[  10] = 32'he3a03002;
-mem[  11] = 32'he59f0084;
-mem[  12] = 32'he92d40f0;
-mem[  13] = 32'he3a02003;
-mem[  14] = 32'he5813000;
-mem[  15] = 32'he3a0c001;
-mem[  16] = 32'he3a03000;
-mem[  17] = 32'he1a06001;
-mem[  18] = 32'he1a012a3;
-mem[  19] = 32'he7901101;
-mem[  20] = 32'he203401f;
-mem[  21] = 32'he011141c;
-mem[  22] = 32'h1a00000e;
-mem[  23] = 32'he5862000;
-mem[  24] = 32'he1a01082;
-mem[  25] = 32'he3110001;
-mem[  26] = 32'h0a000008;
-mem[  27] = 32'he2414003;
-mem[  28] = 32'he1a050a4;
-mem[  29] = 32'he355003f;
-mem[  30] = 32'h8a000006;
-mem[  31] = 32'he1a04324;
-mem[  32] = 32'he7907104;
-mem[  33] = 32'he205501f;
-mem[  34] = 32'he187551c;
-mem[  35] = 32'he7805104;
-mem[  36] = 32'he0811002;
-mem[  37] = 32'heafffff2;
-mem[  38] = 32'he2833001;
-mem[  39] = 32'he3530040;
-mem[  40] = 32'he2822002;
-mem[  41] = 32'h1affffe7;
-mem[  42] = 32'he3a00000;
-mem[  43] = 32'he3a03201;
-mem[  44] = 32'he5830000;
-mem[  45] = 32'he8bd80f0;
-mem[  46] = 32'h000000bc;
-mem[  47] = 32'h00000000;
-mem[  48] = 32'h00000000;
-end
-
-reg wb_start_read_d1;
-wire wb_start_write = o_wb_stb &&  o_wb_we && !wb_start_read_d1;
-wire wb_start_read  = o_wb_stb && !o_wb_we && !i_wb_ack;
-assign i_wb_ack = o_wb_stb && ( wb_start_write || wb_start_read_d1 );
-assign i_wb_err = 0;
-
-always @(posedge clk)
-	wb_start_read_d1 <= wb_start_read;
-
-always @(posedge clk) begin
-	if (wb_start_write || wb_start_read) begin
-		if (o_wb_adr < mem_size*4) begin
-			tmp = mem[o_wb_adr >> 2];
-			if (wb_start_write) begin
-				if (o_wb_sel[0]) tmp = { tmp[31:24], tmp[23:16], tmp[15:8], o_wb_dat[7:0] };
-				if (o_wb_sel[1]) tmp = { tmp[31:24], tmp[23:16], o_wb_dat[15:8], tmp[7:0] };
-				if (o_wb_sel[2]) tmp = { tmp[31:24], o_wb_dat[23:16], tmp[15:8], tmp[7:0] };
-				if (o_wb_sel[3]) tmp = { o_wb_dat[31:24], tmp[23:16], tmp[15:8], tmp[7:0] };
-				mem[o_wb_adr >> 2] <= tmp;
-			end
-			if (wb_start_read)
-				i_wb_dat <= tmp;
-			$display("%t MEM %s ADDR %08x: %08x (%b)", $time, o_wb_we ? "WRITE" : "READ ", o_wb_adr, tmp, o_wb_sel);
-		end
-		if (wb_start_write && o_wb_adr == 32'h10000000) begin
-			$display("%t OUTPUT %d", $time, o_wb_dat);
-			if (o_wb_dat == 0) begin
-				-> output_eof;
-			end else begin
-				output_buf[output_idx] = o_wb_dat;
-				output_idx = output_idx + 1;
-			end
-		end
-	end
-end
-
-always @(output_eof) begin
-	#1001;
-	$display("Got EOF marker on IO port.");
-	for (i = 0; i < output_idx; i = i + 1) begin
-		$display("+OUT+ %d", output_buf[i]);
-	end
-	$finish;
-end
-
-initial begin
-	// $dumpfile("bench.vcd");
-	// $dumpvars(0, testbench);
-end
-
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/surelog.log b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/surelog.log
deleted file mode 100644
index 9d9c789..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/surelog.log
+++ /dev/null
@@ -1,208 +0,0 @@
-********************************************
-*  SURELOG System Verilog Compiler/Linter  *
-********************************************
-
-Copyright (c) 2017-2019 ACE Cloud,
-Authorized used only.
-
-VERSION: 0.05
-BUILT  : Nov  3 2019
-DATE   : 2019-11-03.21:41:27
-COMMAND: -writepp -parse -mt max -nopython -fileunit rtl/lm32_adder.v rtl/lm32_addsub.v rtl/lm32_config.v rtl/lm32_cpu.v rtl/lm32_dcache.v rtl/lm32_debug.v rtl/lm32_decoder.v rtl/lm32_dp_ram.v rtl/lm32_dtlb.v rtl/lm32_icache.v rtl/lm32_include.v rtl/lm32_instruction_unit.v rtl/lm32_interrupt.v rtl/lm32_itlb.v rtl/lm32_jtag.v rtl/lm32_load_store_unit.v rtl/lm32_logic_op.v rtl/lm32_mc_arithmetic.v rtl/lm32_multiplier.v rtl/lm32_ram.v rtl/lm32_shifter.v rtl/lm32_top.v sim/tb_lm32_system.v +incdir+./rtl/+./sim/ -nobuiltin -nocache
-
-[INFO :CM0023] Creating log file ./slpp_unit/surelog.log.
-
-[INFO :CM0024] Executing with 4 threads.
-
-[INFO :CM0020] Separate compilation-unit mode is on.
-
-[ERROR:PP0107] rtl/lm32_dcache.v:118 Too many arguments (1) for macro "CLOG2",
-               ./rtl/lm32_config.v:57 macro definition takes 0.
-
-[ERROR:PP0107] rtl/lm32_dcache.v:119 Too many arguments (1) for macro "CLOG2",
-               ./rtl/lm32_config.v:57 macro definition takes 0.
-
-[ERROR:PP0107] rtl/lm32_dcache.v:129 Too many arguments (1) for macro "CLOG2",
-               ./rtl/lm32_config.v:57 macro definition takes 0.
-
-[ERROR:PP0107] rtl/lm32_dtlb.v:89 Too many arguments (1) for macro "CLOG2",
-               ./rtl/lm32_config.v:57 macro definition takes 0.
-
-[ERROR:PP0107] rtl/lm32_dtlb.v:90 Too many arguments (1) for macro "CLOG2",
-               ./rtl/lm32_config.v:57 macro definition takes 0.
-
-[ERROR:PP0107] rtl/lm32_icache.v:128 Too many arguments (1) for macro "CLOG2",
-               ./rtl/lm32_config.v:57 macro definition takes 0.
-
-[ERROR:PP0107] rtl/lm32_icache.v:129 Too many arguments (1) for macro "CLOG2",
-               ./rtl/lm32_config.v:57 macro definition takes 0.
-
-[ERROR:PP0107] rtl/lm32_icache.v:139 Too many arguments (1) for macro "CLOG2",
-               ./rtl/lm32_config.v:57 macro definition takes 0.
-
-[ERROR:PP0107] rtl/lm32_instruction_unit.v:196 Too many arguments (1) for macro "CLOG2",
-               ./rtl/lm32_config.v:57 macro definition takes 0.
-
-[ERROR:PP0107] rtl/lm32_itlb.v:88 Too many arguments (1) for macro "CLOG2",
-               ./rtl/lm32_config.v:57 macro definition takes 0.
-
-[ERROR:PP0107] rtl/lm32_itlb.v:89 Too many arguments (1) for macro "CLOG2",
-               ./rtl/lm32_config.v:57 macro definition takes 0.
-
-[ERROR:PP0107] rtl/lm32_load_store_unit.v:159 Too many arguments (1) for macro "CLOG2",
-               ./rtl/lm32_config.v:57 macro definition takes 0.
-
-[WARNI:PA0205] rtl/lm32_addsub.v:54 No timescale set for "lm32_addsub".
-
-[WARNI:PA0205] rtl/lm32_adder.v:55 No timescale set for "lm32_adder".
-
-[WARNI:PA0205] rtl/lm32_decoder.v:65 No timescale set for "lm32_decoder".
-
-[WARNI:PA0205] rtl/lm32_dcache.v:62 No timescale set for "lm32_dcache".
-
-[WARNI:PA0205] rtl/lm32_icache.v:67 No timescale set for "lm32_icache".
-
-[WARNI:PA0205] rtl/lm32_debug.v:61 No timescale set for "lm32_debug".
-
-[WARNI:PA0205] rtl/lm32_dp_ram.v:36 No timescale set for "lm32_dp_ram".
-
-[WARNI:PA0205] rtl/lm32_dtlb.v:41 No timescale set for "lm32_dtlb".
-
-[WARNI:PA0205] rtl/lm32_itlb.v:40 No timescale set for "lm32_itlb".
-
-[WARNI:PA0205] rtl/lm32_logic_op.v:55 No timescale set for "lm32_logic_op".
-
-[WARNI:PA0205] rtl/lm32_multiplier.v:55 No timescale set for "lm32_multiplier".
-
-[WARNI:PA0205] rtl/lm32_shifter.v:55 No timescale set for "lm32_shifter".
-
-[WARNI:PA0205] rtl/lm32_interrupt.v:55 No timescale set for "lm32_interrupt".
-
-[WARNI:PA0205] rtl/lm32_instruction_unit.v:76 No timescale set for "lm32_instruction_unit".
-
-[WARNI:PA0205] rtl/lm32_load_store_unit.v:68 No timescale set for "lm32_load_store_unit".
-
-[WARNI:PA0205] rtl/lm32_mc_arithmetic.v:56 No timescale set for "lm32_mc_arithmetic".
-
-[WARNI:PA0205] rtl/lm32_ram.v:60 No timescale set for "lm32_ram".
-
-[WARNI:PA0205] rtl/lm32_top.v:55 No timescale set for "lm32_top".
-
-[WARNI:PA0205] rtl/lm32_cpu.v:98 No timescale set for "lm32_cpu".
-
-[WARNI:PA0205] sim/tb_lm32_system.v:33 No timescale set for "testbench".
-
-[INFO :CP0300] Compilation...
-
-[INFO :CP0303] rtl/lm32_adder.v:55 Compile module "work@lm32_adder".
-
-[INFO :CP0303] rtl/lm32_cpu.v:98 Compile module "work@lm32_cpu".
-
-[INFO :CP0303] rtl/lm32_dcache.v:62 Compile module "work@lm32_dcache".
-
-[INFO :CP0303] rtl/lm32_addsub.v:54 Compile module "work@lm32_addsub".
-
-[INFO :CP0303] rtl/lm32_debug.v:61 Compile module "work@lm32_debug".
-
-[INFO :CP0303] rtl/lm32_decoder.v:65 Compile module "work@lm32_decoder".
-
-[INFO :CP0303] rtl/lm32_icache.v:67 Compile module "work@lm32_icache".
-
-[INFO :CP0303] rtl/lm32_dtlb.v:41 Compile module "work@lm32_dtlb".
-
-[INFO :CP0303] rtl/lm32_load_store_unit.v:68 Compile module "work@lm32_load_store_unit".
-
-[INFO :CP0303] rtl/lm32_itlb.v:40 Compile module "work@lm32_itlb".
-
-[INFO :CP0303] rtl/lm32_instruction_unit.v:76 Compile module "work@lm32_instruction_unit".
-
-[INFO :CP0303] rtl/lm32_multiplier.v:55 Compile module "work@lm32_multiplier".
-
-[INFO :CP0303] sim/tb_lm32_system.v:33 Compile module "work@testbench".
-
-[INFO :CP0303] rtl/lm32_dp_ram.v:36 Compile module "work@lm32_dp_ram".
-
-[INFO :CP0303] rtl/lm32_ram.v:60 Compile module "work@lm32_ram".
-
-[INFO :CP0303] rtl/lm32_interrupt.v:55 Compile module "work@lm32_interrupt".
-
-[INFO :CP0303] rtl/lm32_logic_op.v:55 Compile module "work@lm32_logic_op".
-
-[INFO :CP0303] rtl/lm32_mc_arithmetic.v:56 Compile module "work@lm32_mc_arithmetic".
-
-[INFO :CP0303] rtl/lm32_shifter.v:55 Compile module "work@lm32_shifter".
-
-[INFO :CP0303] rtl/lm32_top.v:55 Compile module "work@lm32_top".
-
-[NOTE :CP0309] rtl/lm32_adder.v:62 Implicit port type (wire) for "adder_result_x",
-there are 1 more instances of this message.
-
-[NOTE :CP0309] rtl/lm32_debug.v:81 Implicit port type (wire) for "bp_match",
-there are 1 more instances of this message.
-
-[NOTE :CP0309] rtl/lm32_icache.v:83 Implicit port type (wire) for "stall_request",
-there are 2 more instances of this message.
-
-[NOTE :CP0309] rtl/lm32_load_store_unit.v:106 Implicit port type (wire) for "dcache_refill_request",
-there are 8 more instances of this message.
-
-[NOTE :CP0309] rtl/lm32_ram.v:72 Implicit port type (wire) for "read_data".
-
-[NOTE :CP0309] rtl/lm32_addsub.v:61 Implicit port type (wire) for "Result",
-there are 1 more instances of this message.
-
-[NOTE :CP0309] rtl/lm32_decoder.v:80 Implicit port type (wire) for "x_bypass_enable",
-there are 28 more instances of this message.
-
-[NOTE :CP0309] rtl/lm32_instruction_unit.v:116 Implicit port type (wire) for "icache_stall_request",
-there are 11 more instances of this message.
-
-[NOTE :CP0309] rtl/lm32_shifter.v:65 Implicit port type (wire) for "shifter_result_m".
-
-[NOTE :CP0309] rtl/lm32_cpu.v:118 Implicit port type (wire) for "I_DAT_O",
-there are 17 more instances of this message.
-
-[NOTE :CP0309] rtl/lm32_dp_ram.v:49 Implicit port type (wire) for "do_a",
-there are 1 more instances of this message.
-
-[NOTE :CP0309] rtl/lm32_interrupt.v:71 Implicit port type (wire) for "interrupt_exception".
-
-[NOTE :CP0309] rtl/lm32_mc_arithmetic.v:69 Implicit port type (wire) for "stall_request_x".
-
-[NOTE :CP0309] rtl/lm32_top.v:75 Implicit port type (wire) for "I_DAT_O",
-there are 17 more instances of this message.
-
-[NOTE :CP0309] rtl/lm32_dcache.v:80 Implicit port type (wire) for "stall_request",
-there are 1 more instances of this message.
-
-[NOTE :CP0309] rtl/lm32_dtlb.v:62 Implicit port type (wire) for "physical_load_store_address_m",
-there are 5 more instances of this message.
-
-[NOTE :CP0309] rtl/lm32_itlb.v:60 Implicit port type (wire) for "stall_request",
-there are 2 more instances of this message.
-
-[INFO :EL0526] Design Elaboration...
-
-[NOTE :EL0503] rtl/lm32_dp_ram.v:36 Top level module "work@lm32_dp_ram".
-
-[NOTE :EL0503] sim/tb_lm32_system.v:33 Top level module "work@testbench".
-
-[NOTE :EL0504] Multiple top level modules in design.
-
-[NOTE :EL0508] Nb Top level modules: 2.
-
-[NOTE :EL0509] Max instance depth: 8.
-
-[NOTE :EL0510] Nb instances: 27.
-
-[NOTE :EL0511] Nb leaf instances: 10.
-
-[  FATAL] : 0
-[  ERROR] : 12
-[WARNING] : 20
-[   NOTE] : 24
-
-********************************************
-*   End SURELOG SVerilog Compiler/Linter   *
-********************************************
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_adder.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_adder.v
deleted file mode 100644
index e20946b..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_adder.v
+++ /dev/null
@@ -1,298 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_adder.v
-// Title            : Integer adder / subtractor with comparison flag generation
-// Dependencies     : lm32_include.v
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_adder (
-    // ----- Inputs -------
-    adder_op_x,
-    adder_op_x_n,
-    operand_0_x,
-    operand_1_x,
-    // ----- Outputs -------
-    adder_result_x,
-    adder_carry_n_x,
-    adder_overflow_x
-    );
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input adder_op_x;                                       // Operating to perform, 0 for addition, 1 for subtraction
-input adder_op_x_n;                                     // Inverted version of adder_op_x
-input [(32-1):0] operand_0_x;                     // Operand to add, or subtract from
-input [(32-1):0] operand_1_x;                     // Opearnd to add, or subtract by
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-output [(32-1):0] adder_result_x;                 // Result of addition or subtraction
-wire   [(32-1):0] adder_result_x;
-output adder_carry_n_x;                                 // Inverted carry
-wire   adder_carry_n_x;
-output adder_overflow_x;                                // Indicates if overflow occured, only valid for subtractions
-reg    adder_overflow_x;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-wire a_sign;                                            // Sign (i.e. positive or negative) of operand 0
-wire b_sign;                                            // Sign of operand 1
-wire result_sign;                                       // Sign of result
-
-/////////////////////////////////////////////////////
-// Instantiations
-/////////////////////////////////////////////////////
-
-lm32_addsub addsub (
-    // ----- Inputs -----
-    .DataA          (operand_0_x),
-    .DataB          (operand_1_x),
-    .Cin            (adder_op_x),
-    .Add_Sub        (adder_op_x_n),
-    // ----- Ouputs -----
-    .Result         (adder_result_x),
-    .Cout           (adder_carry_n_x)
-    );
-
-/////////////////////////////////////////////////////
-// Combinational Logic
-/////////////////////////////////////////////////////
-
-// Extract signs of operands and result
-
-assign a_sign = operand_0_x[32-1];
-assign b_sign = operand_1_x[32-1];
-assign result_sign = adder_result_x[32-1];
-
-// Determine whether an overflow occured when performing a subtraction
-
-always @(*)
-begin
-    //  +ve - -ve = -ve -> overflow
-    //  -ve - +ve = +ve -> overflow
-    if  (   (!a_sign & b_sign & result_sign)
-         || (a_sign & !b_sign & !result_sign)
-        )
-        adder_overflow_x = 1'b1;
-    else
-        adder_overflow_x = 1'b0;
-end
-
-endmodule
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_addsub.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_addsub.v
deleted file mode 100644
index c3290a9..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_addsub.v
+++ /dev/null
@@ -1,257 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_addsub.v
-// Title            : PMI adder/subtractor.
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_addsub (
-    // ----- Inputs -------
-    DataA,
-    DataB,
-    Cin,
-    Add_Sub,
-    // ----- Outputs -------
-    Result,
-    Cout
-    );
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input [31:0] DataA;
-input [31:0] DataB;
-input Cin;
-input Add_Sub;
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-output [31:0] Result;
-wire   [31:0] Result;
-output Cout;
-wire   Cout;
-
-/////////////////////////////////////////////////////
-// Instantiations
-/////////////////////////////////////////////////////
-
-// Modified for Milkymist: removed non-portable instantiated block
-wire [32:0] tmp_addResult = DataA + DataB + Cin;
-wire [32:0] tmp_subResult = DataA - DataB - !Cin;
-
-assign  Result = (Add_Sub == 1) ? tmp_addResult[31:0] : tmp_subResult[31:0];
-assign  Cout = (Add_Sub == 1) ? tmp_addResult[32] : !tmp_subResult[32];
-
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_config.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_config.v
deleted file mode 100644
index 95a31c2..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_config.v
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_cpu.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_cpu.v
deleted file mode 100644
index 659ecc9..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_cpu.v
+++ /dev/null
@@ -1,2172 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   Copyright (c) 2011-2012 Yann Sionneau <yann.sionneau@gmail.com>
-//   Copyright (c) 2012 Michael Walle <michael@walle.cc>
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_cpu.v
-// Title            : Top-level of CPU.
-// Dependencies     : lm32_include.v
-//
-// Version 3.8
-// 1. Feature: Support for dynamically switching EBA to DEBA via a GPIO.
-// 2. Bug: EA now reports instruction that caused the data abort, rather than
-//    next instruction.
-//
-// Version 3.4
-// 1. Bug Fix: In a tight infinite loop (add, sw, bi) incoming interrupts were
-//    never serviced.
-//
-// Version 3.3
-// 1. Feature: Support for memory that is tightly coupled to processor core, and
-//    has a single-cycle access latency (same as caches). Instruction port has
-//    access to a dedicated physically-mapped memory. Data port has access to
-//    a dedicated physically-mapped memory. In order to be able to manipulate
-//    values in both these memories via the debugger, these memories also
-//    interface with the data port of LM32.
-// 2. Feature: Extended Configuration Register
-// 3. Bug Fix: Removed port names that conflict with keywords reserved in System-
-//    Verilog.
-//
-// Version 3.2
-// 1. Bug Fix: Single-stepping a load/store to invalid address causes debugger to
-//    hang. At the same time CPU fails to register data bus error exception. Bug
-//    is caused because (a) data bus error exception occurs after load/store has
-//    passed X stage and next sequential instruction (e.g., brk) is already in X
-//    stage, and (b) data bus error exception had lower priority than, say, brk
-//    exception.
-// 2. Bug Fix: If a brk (or scall/eret/bret) sequentially follows a load/store to
-//    invalid location, CPU will fail to register data bus error exception. The
-//    solution is to stall scall/eret/bret/brk instructions in D pipeline stage
-//    until load/store has completed.
-// 3. Feature: Enable precise identification of load/store that causes seg fault.
-// 4. SYNC resets used for register file when implemented in EBRs.
-//
-// Version 3.1
-// 1. Feature: LM32 Register File can now be mapped in to on-chip block RAM (EBR)
-//    instead of distributed memory by enabling the option in LM32 GUI.
-// 2. Feature: LM32 also adds a static branch predictor to improve branch
-//    performance. All immediate-based forward-pointing branches are predicted
-//    not-taken. All immediate-based backward-pointing branches are predicted taken.
-//
-// Version 7.0SP2, 3.0
-// No Change
-//
-// Version 6.1.17
-// Initial Release
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_cpu (
-    // ----- Inputs -------
-    clk_i,
-    rst_i,
-    // From external devices
-    interrupt,
-    // From user logic
-    ext_break,
-    // Instruction Wishbone master
-    I_DAT_I,
-    I_ACK_I,
-    I_ERR_I,
-    I_RTY_I,
-    // Data Wishbone master
-    D_DAT_I,
-    D_ACK_I,
-    D_ERR_I,
-    D_RTY_I,
-    // ----- Outputs -------
-    // Instruction Wishbone master
-    I_DAT_O,
-    I_ADR_O,
-    I_CYC_O,
-    I_SEL_O,
-    I_STB_O,
-    I_WE_O,
-    I_CTI_O,
-    I_LOCK_O,
-    I_BTE_O,
-    // Data Wishbone master
-    D_DAT_O,
-    D_ADR_O,
-    D_CYC_O,
-    D_SEL_O,
-    D_STB_O,
-    D_WE_O,
-    D_CTI_O,
-    D_LOCK_O,
-    D_BTE_O
-    );
-
-/////////////////////////////////////////////////////
-// Parameters
-/////////////////////////////////////////////////////
-
-parameter eba_reset = 32'h0;                           // Reset value for EBA CSR
-parameter deba_reset = 32'h0;                         // Reset value for DEBA CSR
-
-parameter icache_associativity = 1;     // Associativity of the cache (Number of ways)
-parameter icache_sets = 256;                       // Number of sets
-parameter icache_bytes_per_line = 16;   // Number of bytes per cache line
-parameter icache_base_address = 32'h0;       // Base address of cachable memory
-parameter icache_limit = 32'h7fffffff;                     // Limit (highest address) of cachable memory
-
-parameter dcache_associativity = 1;     // Associativity of the cache (Number of ways)
-parameter dcache_sets = 256;                       // Number of sets
-parameter dcache_bytes_per_line = 16;   // Number of bytes per cache line
-parameter dcache_base_address = 32'h0;       // Base address of cachable memory
-parameter dcache_limit = 32'h7fffffff;                     // Limit (highest address) of cachable memory
-
-parameter watchpoints = 32'h4;                       // Number of h/w watchpoint CSRs
-parameter breakpoints = 32'h4;                       // Number of h/w breakpoint CSRs
-
-parameter interrupts = 32;                         // Number of interrupts
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input clk_i;                                    // Clock
-input rst_i;                                    // Reset
-
-
-input [(32-1):0] interrupt;          // Interrupt pins
-
-
-
-input [(32-1):0] I_DAT_I;                 // Instruction Wishbone interface read data
-input I_ACK_I;                                  // Instruction Wishbone interface acknowledgement
-input I_ERR_I;                                  // Instruction Wishbone interface error
-input I_RTY_I;                                  // Instruction Wishbone interface retry
-
-input [(32-1):0] D_DAT_I;                 // Data Wishbone interface read data
-input D_ACK_I;                                  // Data Wishbone interface acknowledgement
-input D_ERR_I;                                  // Data Wishbone interface error
-input D_RTY_I;                                  // Data Wishbone interface retry
-
-input ext_break;
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-
-
-
-output [(32-1):0] I_DAT_O;                // Instruction Wishbone interface write data
-wire   [(32-1):0] I_DAT_O;
-output [(32-1):0] I_ADR_O;                // Instruction Wishbone interface address
-wire   [(32-1):0] I_ADR_O;
-output I_CYC_O;                                 // Instruction Wishbone interface cycle
-wire   I_CYC_O;
-output [(4-1):0] I_SEL_O;         // Instruction Wishbone interface byte select
-wire   [(4-1):0] I_SEL_O;
-output I_STB_O;                                 // Instruction Wishbone interface strobe
-wire   I_STB_O;
-output I_WE_O;                                  // Instruction Wishbone interface write enable
-wire   I_WE_O;
-output [(3-1):0] I_CTI_O;               // Instruction Wishbone interface cycle type
-wire   [(3-1):0] I_CTI_O;
-output I_LOCK_O;                                // Instruction Wishbone interface lock bus
-wire   I_LOCK_O;
-output [(2-1):0] I_BTE_O;               // Instruction Wishbone interface burst type
-wire   [(2-1):0] I_BTE_O;
-
-output [(32-1):0] D_DAT_O;                // Data Wishbone interface write data
-wire   [(32-1):0] D_DAT_O;
-output [(32-1):0] D_ADR_O;                // Data Wishbone interface address
-wire   [(32-1):0] D_ADR_O;
-output D_CYC_O;                                 // Data Wishbone interface cycle
-wire   D_CYC_O;
-output [(4-1):0] D_SEL_O;         // Data Wishbone interface byte select
-wire   [(4-1):0] D_SEL_O;
-output D_STB_O;                                 // Data Wishbone interface strobe
-wire   D_STB_O;
-output D_WE_O;                                  // Data Wishbone interface write enable
-wire   D_WE_O;
-output [(3-1):0] D_CTI_O;               // Data Wishbone interface cycle type
-wire   [(3-1):0] D_CTI_O;
-output D_LOCK_O;                                // Date Wishbone interface lock bus
-wire   D_LOCK_O;
-output [(2-1):0] D_BTE_O;               // Data Wishbone interface burst type
-wire   [(2-1):0] D_BTE_O;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-// Pipeline registers
-
-reg valid_a;                                    // Instruction in A stage is valid
-reg valid_f;                                    // Instruction in F stage is valid
-reg valid_d;                                    // Instruction in D stage is valid
-reg valid_x;                                    // Instruction in X stage is valid
-reg valid_m;                                    // Instruction in M stage is valid
-reg valid_w;                                    // Instruction in W stage is valid
-
-wire q_x;
-wire [(32-1):0] immediate_d;              // Immediate operand
-wire load_d;                                    // Indicates a load instruction
-reg load_x;
-reg load_m;
-wire load_q_x;
-wire store_q_x;
-wire store_d;                                   // Indicates a store instruction
-reg store_x;
-reg store_m;
-wire [1:0] size_d;                   // Size of load/store (byte, hword, word)
-reg [1:0] size_x;
-wire branch_d;                                  // Indicates a branch instruction
-wire branch_predict_d;                          // Indicates a branch is predicted
-wire branch_predict_taken_d;                    // Indicates a branch is predicted taken
-wire [((32-2)+2-1):2] branch_predict_address_d;   // Address to which predicted branch jumps
-wire [((32-2)+2-1):2] branch_target_d;
-wire bi_unconditional;
-wire bi_conditional;
-reg branch_x;
-reg branch_predict_x;
-reg branch_predict_taken_x;
-reg branch_m;
-reg branch_predict_m;
-reg branch_predict_taken_m;
-wire branch_mispredict_taken_m;                 // Indicates a branch was mispredicted as taken
-wire branch_flushX_m;                           // Indicates that instruction in X stage must be squashed
-wire branch_reg_d;                              // Branch to register or immediate
-wire [((32-2)+2-1):2] branch_offset_d;            // Branch offset for immediate branches
-reg [((32-2)+2-1):2] branch_target_x;             // Address to branch to
-reg [((32-2)+2-1):2] branch_target_m;
-wire [0:0] d_result_sel_0_d; // Which result should be selected in D stage for operand 0
-wire [1:0] d_result_sel_1_d; // Which result should be selected in D stage for operand 1
-
-wire x_result_sel_csr_d;                        // Select X stage result from CSRs
-reg x_result_sel_csr_x;
-wire x_result_sel_mc_arith_d;                   // Select X stage result from multi-cycle arithmetic unit
-reg x_result_sel_mc_arith_x;
-wire x_result_sel_sext_d;                       // Select X stage result from sign-extend logic
-reg x_result_sel_sext_x;
-wire x_result_sel_logic_d;                      // Select X stage result from logic op unit
-reg x_result_sel_logic_x;
-wire x_result_sel_add_d;                        // Select X stage result from adder
-reg x_result_sel_add_x;
-wire m_result_sel_compare_d;                    // Select M stage result from comparison logic
-reg m_result_sel_compare_x;
-reg m_result_sel_compare_m;
-wire m_result_sel_shift_d;                      // Select M stage result from shifter
-reg m_result_sel_shift_x;
-reg m_result_sel_shift_m;
-wire w_result_sel_load_d;                       // Select W stage result from load/store unit
-reg w_result_sel_load_x;
-reg w_result_sel_load_m;
-reg w_result_sel_load_w;
-wire w_result_sel_mul_d;                        // Select W stage result from multiplier
-reg w_result_sel_mul_x;
-reg w_result_sel_mul_m;
-reg w_result_sel_mul_w;
-wire x_bypass_enable_d;                         // Whether result is bypassable in X stage
-reg x_bypass_enable_x;
-wire m_bypass_enable_d;                         // Whether result is bypassable in M stage
-reg m_bypass_enable_x;
-reg m_bypass_enable_m;
-wire sign_extend_d;                             // Whether to sign-extend or zero-extend
-reg sign_extend_x;
-wire write_enable_d;                            // Register file write enable
-reg write_enable_x;
-wire write_enable_q_x;
-reg write_enable_m;
-wire write_enable_q_m;
-reg write_enable_w;
-wire write_enable_q_w;
-wire read_enable_0_d;                           // Register file read enable 0
-wire [(5-1):0] read_idx_0_d;          // Register file read index 0
-wire read_enable_1_d;                           // Register file read enable 1
-wire [(5-1):0] read_idx_1_d;          // Register file read index 1
-wire [(5-1):0] write_idx_d;           // Register file write index
-reg [(5-1):0] write_idx_x;
-reg [(5-1):0] write_idx_m;
-reg [(5-1):0] write_idx_w;
-wire [(5-1):0] csr_d;                     // CSR read/write index
-reg  [(5-1):0] csr_x;
-wire [(3-1):0] condition_d;         // Branch condition
-reg [(3-1):0] condition_x;
-wire break_d;                                   // Indicates a break instruction
-reg break_x;
-wire scall_d;                                   // Indicates a scall instruction
-reg scall_x;
-wire eret_d;                                    // Indicates an eret instruction
-reg eret_x;
-wire eret_q_x;
-wire eret_k_q_x;
-reg eret_m;
-wire bret_d;                                    // Indicates a bret instruction
-reg bret_x;
-wire bret_q_x;
-wire bret_k_q_x;
-reg bret_m;
-wire csr_write_enable_d;                        // CSR write enable
-reg csr_write_enable_x;
-wire csr_write_enable_q_x;
-wire csr_write_enable_k_q_x;
-
-wire bus_error_d;                               // Indicates an bus error occured while fetching the instruction in this pipeline stage
-reg bus_error_x;
-reg data_bus_error_exception_m;
-reg [((32-2)+2-1):2] memop_pc_w;
-
-reg [(32-1):0] d_result_0;                // Result of instruction in D stage (operand 0)
-reg [(32-1):0] d_result_1;                // Result of instruction in D stage (operand 1)
-reg [(32-1):0] x_result;                  // Result of instruction in X stage
-reg [(32-1):0] m_result;                  // Result of instruction in M stage
-reg [(32-1):0] w_result;                  // Result of instruction in W stage
-
-reg [(32-1):0] operand_0_x;               // Operand 0 for X stage instruction
-reg [(32-1):0] operand_1_x;               // Operand 1 for X stage instruction
-reg [(32-1):0] store_operand_x;           // Data read from register to store
-reg [(32-1):0] operand_m;                 // Operand for M stage instruction
-reg [(32-1):0] operand_w;                 // Operand for W stage instruction
-
-// To/from register file
-reg [(32-1):0] reg_data_live_0;
-reg [(32-1):0] reg_data_live_1;
-reg use_buf;                                    // Whether to use reg_data_live or reg_data_buf
-reg [(32-1):0] reg_data_buf_0;
-reg [(32-1):0] reg_data_buf_1;
-wire [(32-1):0] reg_data_0;               // Register file read port 0 data
-wire [(32-1):0] reg_data_1;               // Register file read port 1 data
-reg [(32-1):0] bypass_data_0;             // Register value 0 after bypassing
-reg [(32-1):0] bypass_data_1;             // Register value 1 after bypassing
-wire reg_write_enable_q_w;
-
-reg interlock;                                  // Indicates pipeline should be stalled because of a read-after-write hazzard
-
-wire stall_a;                                   // Stall instruction in A pipeline stage
-wire stall_f;                                   // Stall instruction in F pipeline stage
-wire stall_d;                                   // Stall instruction in D pipeline stage
-wire stall_x;                                   // Stall instruction in X pipeline stage
-wire stall_m;                                   // Stall instruction in M pipeline stage
-
-// To/from adder
-wire adder_op_d;                                // Whether to add or subtract
-reg adder_op_x;
-reg adder_op_x_n;                               // Inverted version of adder_op_x
-wire [(32-1):0] adder_result_x;           // Result from adder
-wire adder_overflow_x;                          // Whether a signed overflow occured
-wire adder_carry_n_x;                           // Whether a carry was generated
-
-// To/from logical operations unit
-wire [3:0] logic_op_d;           // Which operation to perform
-reg [3:0] logic_op_x;
-wire [(32-1):0] logic_result_x;           // Result of logical operation
-
-// From sign-extension unit
-wire [(32-1):0] sextb_result_x;           // Result of byte sign-extension
-wire [(32-1):0] sexth_result_x;           // Result of half-word sign-extenstion
-wire [(32-1):0] sext_result_x;            // Result of sign-extension specified by instruction
-
-// To/from shifter
-wire direction_d;                               // Which direction to shift in
-reg direction_x;
-wire [(32-1):0] shifter_result_m;         // Result of shifter
-
-// To/from multiplier
-wire [(32-1):0] multiplier_result_w;      // Result from multiplier
-
-// To/from divider
-wire divide_d;                                  // Indicates whether to perform a divider or not
-wire divide_q_d;
-wire modulus_d;
-wire modulus_q_d;
-wire divide_by_zero_x;                          // Indicates an attempt was made to divide by zero
-
-// To from multi-cycle arithmetic unit
-wire mc_stall_request_x;                        // Multi-cycle arithmetic unit stall request
-wire [(32-1):0] mc_result_x;
-
-// From CSRs
-wire [(32-1):0] interrupt_csr_read_data_x;// Data read from interrupt CSRs
-wire [(32-1):0] cfg;                      // Configuration CSR
-wire [(32-1):0] cfg2;                     // Extended Configuration CSR
-wire [(32-1):0] psw;                      // Processor Status Word CSR
-reg [(32-1):0] csr_read_data_x;           // Data read from CSRs
-
-// To/from instruction unit
-wire [((32-2)+2-1):2] pc_f;                       // PC of instruction in F stage
-wire [((32-2)+2-1):2] pc_d;                       // PC of instruction in D stage
-wire [((32-2)+2-1):2] pc_x;                       // PC of instruction in X stage
-wire [((32-2)+2-1):2] pc_m;                       // PC of instruction in M stage
-wire [((32-2)+2-1):2] pc_w;                       // PC of instruction in W stage
-wire [(32-1):0] instruction_f;     // Instruction in F stage
-//pragma attribute instruction_d preserve_signal true
-//pragma attribute instruction_d preserve_driver true
-wire [(32-1):0] instruction_d;     // Instruction in D stage
-wire iflush;                                    // Flush instruction cache
-wire icache_stall_request;                      // Stall pipeline because instruction cache is busy
-wire icache_restart_request;                    // Restart instruction that caused an instruction cache miss
-wire icache_refill_request;                     // Request to refill instruction cache
-wire icache_refilling;                          // Indicates the instruction cache is being refilled
-
-// To/from load/store unit
-wire dflush_x;                                  // Flush data cache
-reg dflush_m;
-wire dcache_stall_request;                      // Stall pipeline because data cache is busy
-wire dcache_restart_request;                    // Restart instruction that caused a data cache miss
-wire dcache_refill_request;                     // Request to refill data cache
-wire dcache_refilling;                          // Indicates the data cache is being refilled
-wire [(32-1):0] load_data_w;              // Result of a load instruction
-wire stall_wb_load;                             // Stall pipeline because of a load via the data Wishbone interface
-
-// To/from JTAG interface
-
-// Hazzard detection
-wire raw_x_0;                                   // RAW hazzard between instruction in X stage and read port 0
-wire raw_x_1;                                   // RAW hazzard between instruction in X stage and read port 1
-wire raw_m_0;                                   // RAW hazzard between instruction in M stage and read port 0
-wire raw_m_1;                                   // RAW hazzard between instruction in M stage and read port 1
-wire raw_w_0;                                   // RAW hazzard between instruction in W stage and read port 0
-wire raw_w_1;                                   // RAW hazzard between instruction in W stage and read port 1
-
-// Control flow
-wire cmp_zero;                                  // Result of comparison is zero
-wire cmp_negative;                              // Result of comparison is negative
-wire cmp_overflow;                              // Comparison produced an overflow
-wire cmp_carry_n;                               // Comparison produced a carry, inverted
-reg condition_met_x;                            // Condition of branch instruction is met
-reg condition_met_m;
-wire branch_taken_m;                            // Branch is taken in M stage
-
-wire kill_f;                                    // Kill instruction in F stage
-wire kill_d;                                    // Kill instruction in D stage
-wire kill_x;                                    // Kill instruction in X stage
-wire kill_m;                                    // Kill instruction in M stage
-wire kill_w;                                    // Kill instruction in W stage
-
-reg [((32-2)+2-1):(4+3+2)] eba;                        // Exception Base Address (EBA) CSR
-reg [((32-2)+2-1):(4+3+2)] deba;                       // Debug Exception Base Address (DEBA) CSR
-reg [(4-1):0] eid_x;                      // Exception ID in X stage
-
-wire dc_ss;                                     // Is single-step enabled
-wire dc_re;                                     // Remap all exceptions
-wire exception_x;                               // An exception occured in the X stage
-reg exception_m;                                // An instruction that caused an exception is in the M stage
-wire debug_exception_x;                         // Indicates if a debug exception has occured
-reg debug_exception_m;
-reg debug_exception_w;
-wire debug_exception_q_w;
-wire non_debug_exception_x;                     // Indicates if a non debug exception has occured
-reg non_debug_exception_m;
-reg non_debug_exception_w;
-wire non_debug_exception_q_w;
-
-wire interrupt_exception;                       // Indicates if an interrupt exception has occured
-wire breakpoint_exception;                      // Indicates if a breakpoint exception has occured
-wire watchpoint_exception;                      // Indicates if a watchpoint exception has occured
-wire instruction_bus_error_exception;           // Indicates if an instruction bus error exception has occured
-wire data_bus_error_exception;                  // Indicates if a data bus error exception has occured
-wire divide_by_zero_exception;                  // Indicates if a divide by zero exception has occured
-wire system_call_exception;                     // Indicates if a system call exception has occured
-
-reg data_bus_error_seen;                        // Indicates if a data bus error was seen
-
-reg ext_break_r;
-
-reg itlbe;                                      // Instruction TLB enable
-reg dtlbe;                                      // Data TLB enable
-reg usr;                                        // User mode
-reg eitlbe;                                     // Exception instruction enable
-reg edtlbe;                                     // Exception data TLB enable
-reg eusr;                                       // Exception user mode
-reg bitlbe;                                     // Breakpoint instruction TLB enable
-reg bdtlbe;                                     // Breakpoint data TLB enable
-reg busr;                                       // Breakpoint user mode
-
-reg itlb_invalidate;                            // Invalidate an ITLB entry
-reg itlb_flush;                                 // Flush all ITLB entries
-reg itlb_update;                                // Update an ITLB entry
-reg dtlb_invalidate;                            // Invalidate a DTLB entry
-reg dtlb_flush;                                 // Flush all DTLB entries
-reg dtlb_update;                                // Update an DTLB entry
-reg [(32-1):0] tlbpaddr;                  // TLBPADDR CSR
-reg [(32-1):0] tlbvaddr;                  // TLBVADDR CSR
-reg [(32-1):0] tlbbadvaddr;               // TLBBADVADDR CSR
-wire [(32-1):0] dtlb_miss_vfn;            // VFN of the missed address
-wire [(32-1):0] itlb_miss_vfn;            // VFN of the missed instruction
-wire itlb_miss_x;                               // Indicates if an ITLB miss has occured in the X stage
-wire itlb_stall_request;                        // Stall pipeline because instruction TLB is busy
-wire dtlb_miss_x;                               // Indicates if an DTLB miss has occured in the X stage
-wire dtlb_fault_x;                              // Indicates if an DTLB fault has occured in the X stage
-wire dtlb_stall_request;                        // Stall pipeline because data TLB is busy
-
-wire itlb_miss_exception;                       // Indicates if an ITLB miss exception has occured
-wire itlb_exception;                            // Indicates if an ITLB exception has occured
-wire dtlb_miss_exception;                       // Indicates if a DTLB miss exception has occured
-wire dtlb_fault_exception;                      // Indicates if a DTLB fault exception has occured
-wire dtlb_exception;                            // Indicates if a DTLB exception has occured
-wire privilege_exception;                       // Indicates if a privilege exception has occured
-
-/////////////////////////////////////////////////////
-// Functions
-/////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////
-// Instantiations
-/////////////////////////////////////////////////////
-
-// Instruction unit
-lm32_instruction_unit #(
-    .eba_reset              (eba_reset),
-    .associativity          (icache_associativity),
-    .sets                   (icache_sets),
-    .bytes_per_line         (icache_bytes_per_line),
-    .base_address           (icache_base_address),
-    .limit                  (icache_limit)
-  ) instruction_unit (
-    // ----- Inputs -------
-    .clk_i                  (clk_i),
-    .rst_i                  (rst_i),
-    // From pipeline
-    .stall_a                (stall_a),
-    .stall_f                (stall_f),
-    .stall_d                (stall_d),
-    .stall_x                (stall_x),
-    .stall_m                (stall_m),
-    .valid_f                (valid_f),
-    .valid_d                (valid_d),
-    .kill_f                 (kill_f),
-    .branch_predict_taken_d (branch_predict_taken_d),
-    .branch_predict_address_d (branch_predict_address_d),
-    .exception_m            (exception_m),
-    .branch_taken_m         (branch_taken_m),
-    .branch_mispredict_taken_m (branch_mispredict_taken_m),
-    .branch_target_m        (branch_target_m),
-    .iflush                 (iflush),
-    .dcache_restart_request (dcache_restart_request),
-    .dcache_refill_request  (dcache_refill_request),
-    .dcache_refilling       (dcache_refilling),
-    .itlb_enable            (itlbe),
-    .tlbpaddr               (tlbpaddr),
-    .tlbvaddr               (tlbvaddr),
-    .itlb_update            (itlb_update),
-    .itlb_flush             (itlb_flush),
-    .itlb_invalidate        (itlb_invalidate),
-    // From Wishbone
-    .i_dat_i                (I_DAT_I),
-    .i_ack_i                (I_ACK_I),
-    .i_err_i                (I_ERR_I),
-    // ----- Outputs -------
-    // To pipeline
-    .pc_f                   (pc_f),
-    .pc_d                   (pc_d),
-    .pc_x                   (pc_x),
-    .pc_m                   (pc_m),
-    .pc_w                   (pc_w),
-    .icache_stall_request   (icache_stall_request),
-    .icache_restart_request (icache_restart_request),
-    .icache_refill_request  (icache_refill_request),
-    .icache_refilling       (icache_refilling),
-    .itlb_stall_request     (itlb_stall_request),
-    .itlb_miss_vfn          (itlb_miss_vfn),
-    .itlb_miss_x            (itlb_miss_x),
-    // To Wishbone
-    .i_dat_o                (I_DAT_O),
-    .i_adr_o                (I_ADR_O),
-    .i_cyc_o                (I_CYC_O),
-    .i_sel_o                (I_SEL_O),
-    .i_stb_o                (I_STB_O),
-    .i_we_o                 (I_WE_O),
-    .i_cti_o                (I_CTI_O),
-    .i_lock_o               (I_LOCK_O),
-    .i_bte_o                (I_BTE_O),
-    .bus_error_d            (bus_error_d),
-    .instruction_f          (instruction_f),
-    .instruction_d          (instruction_d)
-    );
-
-// Instruction decoder
-lm32_decoder decoder (
-    // ----- Inputs -------
-    .instruction            (instruction_d),
-    // ----- Outputs -------
-    .d_result_sel_0         (d_result_sel_0_d),
-    .d_result_sel_1         (d_result_sel_1_d),
-    .x_result_sel_csr       (x_result_sel_csr_d),
-    .x_result_sel_mc_arith  (x_result_sel_mc_arith_d),
-    .x_result_sel_sext      (x_result_sel_sext_d),
-    .x_result_sel_logic     (x_result_sel_logic_d),
-    .x_result_sel_add       (x_result_sel_add_d),
-    .m_result_sel_compare   (m_result_sel_compare_d),
-    .m_result_sel_shift     (m_result_sel_shift_d),
-    .w_result_sel_load      (w_result_sel_load_d),
-    .w_result_sel_mul       (w_result_sel_mul_d),
-    .x_bypass_enable        (x_bypass_enable_d),
-    .m_bypass_enable        (m_bypass_enable_d),
-    .read_enable_0          (read_enable_0_d),
-    .read_idx_0             (read_idx_0_d),
-    .read_enable_1          (read_enable_1_d),
-    .read_idx_1             (read_idx_1_d),
-    .write_enable           (write_enable_d),
-    .write_idx              (write_idx_d),
-    .immediate              (immediate_d),
-    .branch_offset          (branch_offset_d),
-    .load                   (load_d),
-    .store                  (store_d),
-    .size                   (size_d),
-    .sign_extend            (sign_extend_d),
-    .adder_op               (adder_op_d),
-    .logic_op               (logic_op_d),
-    .direction              (direction_d),
-    .divide                 (divide_d),
-    .modulus                (modulus_d),
-    .branch                 (branch_d),
-    .bi_unconditional       (bi_unconditional),
-    .bi_conditional         (bi_conditional),
-    .branch_reg             (branch_reg_d),
-    .condition              (condition_d),
-    .break_opcode           (break_d),
-    .scall                  (scall_d),
-    .eret                   (eret_d),
-    .bret                   (bret_d),
-    .csr_write_enable       (csr_write_enable_d)
-    );
-
-// Load/store unit
-lm32_load_store_unit #(
-    .associativity          (dcache_associativity),
-    .sets                   (dcache_sets),
-    .bytes_per_line         (dcache_bytes_per_line),
-    .base_address           (dcache_base_address),
-    .limit                  (dcache_limit)
-  ) load_store_unit (
-    // ----- Inputs -------
-    .clk_i                  (clk_i),
-    .rst_i                  (rst_i),
-    // From pipeline
-    .stall_a                (stall_a),
-    .stall_x                (stall_x),
-    .stall_m                (stall_m),
-    .kill_m                 (kill_m),
-    .exception_m            (exception_m),
-    .store_operand_x        (store_operand_x),
-    .load_store_address_x   (adder_result_x),
-    .load_store_address_m   (operand_m),
-    .load_store_address_w   (operand_w[1:0]),
-    .load_d                 (load_d),
-    .store_d                (store_d),
-    .load_x                 (load_x),
-    .store_x                (store_x),
-    .load_q_x               (load_q_x),
-    .store_q_x              (store_q_x),
-    .load_q_m               (load_q_m),
-    .store_q_m              (store_q_m),
-    .sign_extend_x          (sign_extend_x),
-    .size_x                 (size_x),
-    .dflush                 (dflush_m),
-    .dtlb_enable            (dtlbe),
-    .tlbpaddr               (tlbpaddr),
-    .tlbvaddr               (tlbvaddr),
-    .dtlb_update            (dtlb_update),
-    .dtlb_flush             (dtlb_flush),
-    .dtlb_invalidate        (dtlb_invalidate),
-    // From Wishbone
-    .d_dat_i                (D_DAT_I),
-    .d_ack_i                (D_ACK_I),
-    .d_err_i                (D_ERR_I),
-    .d_rty_i                (D_RTY_I),
-    // ----- Outputs -------
-    // To pipeline
-    .dcache_refill_request  (dcache_refill_request),
-    .dcache_restart_request (dcache_restart_request),
-    .dcache_stall_request   (dcache_stall_request),
-    .dcache_refilling       (dcache_refilling),
-    .load_data_w            (load_data_w),
-    .stall_wb_load          (stall_wb_load),
-    .dtlb_stall_request     (dtlb_stall_request),
-    .dtlb_miss_vfn          (dtlb_miss_vfn),
-    .dtlb_miss_x            (dtlb_miss_x),
-    .dtlb_fault_x           (dtlb_fault_x),
-    // To Wishbone
-    .d_dat_o                (D_DAT_O),
-    .d_adr_o                (D_ADR_O),
-    .d_cyc_o                (D_CYC_O),
-    .d_sel_o                (D_SEL_O),
-    .d_stb_o                (D_STB_O),
-    .d_we_o                 (D_WE_O),
-    .d_cti_o                (D_CTI_O),
-    .d_lock_o               (D_LOCK_O),
-    .d_bte_o                (D_BTE_O)
-    );
-
-// Adder
-lm32_adder adder (
-    // ----- Inputs -------
-    .adder_op_x             (adder_op_x),
-    .adder_op_x_n           (adder_op_x_n),
-    .operand_0_x            (operand_0_x),
-    .operand_1_x            (operand_1_x),
-    // ----- Outputs -------
-    .adder_result_x         (adder_result_x),
-    .adder_carry_n_x        (adder_carry_n_x),
-    .adder_overflow_x       (adder_overflow_x)
-    );
-
-// Logic operations
-lm32_logic_op logic_op (
-    // ----- Inputs -------
-    .logic_op_x             (logic_op_x),
-    .operand_0_x            (operand_0_x),
-
-    .operand_1_x            (operand_1_x),
-    // ----- Outputs -------
-    .logic_result_x         (logic_result_x)
-    );
-
-// Pipelined barrel-shifter
-lm32_shifter shifter (
-    // ----- Inputs -------
-    .clk_i                  (clk_i),
-    .rst_i                  (rst_i),
-    .stall_x                (stall_x),
-    .direction_x            (direction_x),
-    .sign_extend_x          (sign_extend_x),
-    .operand_0_x            (operand_0_x),
-    .operand_1_x            (operand_1_x),
-    // ----- Outputs -------
-    .shifter_result_m       (shifter_result_m)
-    );
-
-// Pipeline fixed-point multiplier
-lm32_multiplier multiplier (
-    // ----- Inputs -------
-    .clk_i                  (clk_i),
-    .rst_i                  (rst_i),
-    .stall_x                (stall_x),
-    .stall_m                (stall_m),
-    .operand_0              (d_result_0),
-    .operand_1              (d_result_1),
-    // ----- Outputs -------
-    .result                 (multiplier_result_w)
-    );
-
-// Multi-cycle arithmetic
-lm32_mc_arithmetic mc_arithmetic (
-    // ----- Inputs -------
-    .clk_i                  (clk_i),
-    .rst_i                  (rst_i),
-    .stall_d                (stall_d),
-    .kill_x                 (kill_x),
-    .divide_d               (divide_q_d),
-    .modulus_d              (modulus_q_d),
-    .operand_0_d            (d_result_0),
-    .operand_1_d            (d_result_1),
-    // ----- Outputs -------
-    .result_x               (mc_result_x),
-    .divide_by_zero_x       (divide_by_zero_x),
-    .stall_request_x        (mc_stall_request_x)
-    );
-
-// Interrupt unit
-lm32_interrupt interrupt_unit (
-    // ----- Inputs -------
-    .clk_i                  (clk_i),
-    .rst_i                  (rst_i),
-    // From external devices
-    .interrupt              (interrupt),
-    // From pipeline
-    .stall_x                (stall_x),
-    .non_debug_exception    (non_debug_exception_q_w),
-    .debug_exception        (debug_exception_q_w),
-    .eret_q_x               (eret_k_q_x),
-    .bret_q_x               (bret_k_q_x),
-    .csr                    (csr_x),
-    .csr_write_data         (operand_1_x),
-    .csr_write_enable       (csr_write_enable_k_q_x),
-    // ----- Outputs -------
-    .interrupt_exception    (interrupt_exception),
-    // To pipeline
-    .csr_read_data          (interrupt_csr_read_data_x)
-    );
-
-
-// Debug unit
-lm32_debug #(
-    .breakpoints            (breakpoints),
-    .watchpoints            (watchpoints)
-  ) hw_debug (
-    // ----- Inputs -------
-    .clk_i                  (clk_i),
-    .rst_i                  (rst_i),
-    .pc_x                   (pc_x),
-    .load_x                 (load_x),
-    .store_x                (store_x),
-    .load_store_address_x   (adder_result_x),
-    .csr_write_enable_x     (csr_write_enable_k_q_x),
-    .csr_write_data         (operand_1_x),
-    .csr_x                  (csr_x),
-    .eret_q_x               (eret_k_q_x),
-    .bret_q_x               (bret_k_q_x),
-    .stall_x                (stall_x),
-    .exception_x            (exception_x),
-    .q_x                    (q_x),
-    .dcache_refill_request  (dcache_refill_request),
-    // ----- Outputs -------
-    .dc_ss                  (dc_ss),
-    .dc_re                  (dc_re),
-    .bp_match               (bp_match),
-    .wp_match               (wp_match)
-    );
-
-// Register file
-
-   /*----------------------------------------------------------------------
-    Register File is implemented using EBRs. There can be three accesses to
-    the register file in each cycle: two reads and one write. On-chip block
-    RAM has two read/write ports. To accomodate three accesses, two on-chip
-    block RAMs are used (each register file "write" is made to both block
-    RAMs).
-
-    One limitation of the on-chip block RAMs is that one cannot perform a
-    read and write to same location in a cycle (if this is done, then the
-    data read out is indeterminate).
-    ----------------------------------------------------------------------*/
-   wire [31:0] regfile_data_0, regfile_data_1;
-   reg [31:0]  w_result_d;
-   reg         regfile_raw_0, regfile_raw_0_nxt;
-   reg         regfile_raw_1, regfile_raw_1_nxt;
-
-   /*----------------------------------------------------------------------
-    Check if read and write is being performed to same register in current
-    cycle? This is done by comparing the read and write IDXs.
-    ----------------------------------------------------------------------*/
-   always @(reg_write_enable_q_w or write_idx_w or instruction_f)
-     begin
-        if (reg_write_enable_q_w
-            && (write_idx_w == instruction_f[25:21]))
-          regfile_raw_0_nxt = 1'b1;
-        else
-          regfile_raw_0_nxt = 1'b0;
-
-        if (reg_write_enable_q_w
-            && (write_idx_w == instruction_f[20:16]))
-          regfile_raw_1_nxt = 1'b1;
-        else
-          regfile_raw_1_nxt = 1'b0;
-     end
-
-   /*----------------------------------------------------------------------
-    Select latched (delayed) write value or data from register file. If
-    read in previous cycle was performed to register written to in same
-    cycle, then latched (delayed) write value is selected.
-    ----------------------------------------------------------------------*/
-   always @(regfile_raw_0 or w_result_d or regfile_data_0)
-     if (regfile_raw_0)
-       reg_data_live_0 = w_result_d;
-     else
-       reg_data_live_0 = regfile_data_0;
-
-   /*----------------------------------------------------------------------
-    Select latched (delayed) write value or data from register file. If
-    read in previous cycle was performed to register written to in same
-    cycle, then latched (delayed) write value is selected.
-    ----------------------------------------------------------------------*/
-   always @(regfile_raw_1 or w_result_d or regfile_data_1)
-     if (regfile_raw_1)
-       reg_data_live_1 = w_result_d;
-     else
-       reg_data_live_1 = regfile_data_1;
-
-   /*----------------------------------------------------------------------
-    Latch value written to register file
-    ----------------------------------------------------------------------*/
-   always @(posedge clk_i )
-     if (rst_i == 1'b1)
-       begin
-          regfile_raw_0 <= 1'b0;
-          regfile_raw_1 <= 1'b0;
-          w_result_d <= 32'b0;
-       end
-     else
-       begin
-          regfile_raw_0 <= regfile_raw_0_nxt;
-          regfile_raw_1 <= regfile_raw_1_nxt;
-          w_result_d <= w_result;
-       end
-
-   /*----------------------------------------------------------------------
-    Register file instantiation as Pseudo-Dual Port EBRs.
-    ----------------------------------------------------------------------*/
-   // Modified by GSI: removed non-portable RAM instantiation
-   lm32_ram
-     #(
-       // ----- Parameters -----
-       .data_width(32),
-       .address_width(5)
-       )
-   reg_0
-     (
-      // ----- Inputs -----
-      .read_clk      (clk_i),
-      .write_clk     (clk_i),
-      .reset         (rst_i),
-      .enable_read   (1'b1),
-      .read_address  (instruction_f[25:21]),
-      .enable_write  (1'b1),
-      .write_address (write_idx_w),
-      .write_data    (w_result),
-      .write_enable  (reg_write_enable_q_w),
-      // ----- Outputs -----
-      .read_data     (regfile_data_0)
-      );
-
-   lm32_ram
-     #(
-       .data_width(32),
-       .address_width(5)
-       )
-   reg_1
-     (
-      // ----- Inputs -----
-      .read_clk      (clk_i),
-      .write_clk     (clk_i),
-      .reset         (rst_i),
-      .enable_read   (1'b1),
-      .read_address  (instruction_f[20:16]),
-      .enable_write  (1'b1),
-      .write_address (write_idx_w),
-      .write_data    (w_result),
-      .write_enable  (reg_write_enable_q_w),
-      // ----- Outputs -----
-      .read_data     (regfile_data_1)
-      );
-
-
-
-/////////////////////////////////////////////////////
-// Combinational Logic
-/////////////////////////////////////////////////////
-
-// Select between buffered and live data from register file
-assign reg_data_0 = use_buf ? reg_data_buf_0 : reg_data_live_0;
-assign reg_data_1 = use_buf ? reg_data_buf_1 : reg_data_live_1;
-
-// Detect read-after-write hazzards
-assign raw_x_0 = (write_idx_x == read_idx_0_d) && (write_enable_q_x == 1'b1);
-assign raw_m_0 = (write_idx_m == read_idx_0_d) && (write_enable_q_m == 1'b1);
-assign raw_w_0 = (write_idx_w == read_idx_0_d) && (write_enable_q_w == 1'b1);
-assign raw_x_1 = (write_idx_x == read_idx_1_d) && (write_enable_q_x == 1'b1);
-assign raw_m_1 = (write_idx_m == read_idx_1_d) && (write_enable_q_m == 1'b1);
-assign raw_w_1 = (write_idx_w == read_idx_1_d) && (write_enable_q_w == 1'b1);
-
-// Interlock detection - Raise an interlock for RAW hazzards
-always @(*)
-begin
-    if (   (   (x_bypass_enable_x == 1'b0)
-            && (   ((read_enable_0_d == 1'b1) && (raw_x_0 == 1'b1))
-                || ((read_enable_1_d == 1'b1) && (raw_x_1 == 1'b1))
-               )
-           )
-        || (   (m_bypass_enable_m == 1'b0)
-            && (   ((read_enable_0_d == 1'b1) && (raw_m_0 == 1'b1))
-                || ((read_enable_1_d == 1'b1) && (raw_m_1 == 1'b1))
-               )
-           )
-       )
-        interlock = 1'b1;
-    else
-        interlock = 1'b0;
-end
-
-// Bypass for reg port 0
-always @(*)
-begin
-    if (raw_x_0 == 1'b1)
-        bypass_data_0 = x_result;
-    else if (raw_m_0 == 1'b1)
-        bypass_data_0 = m_result;
-    else if (raw_w_0 == 1'b1)
-        bypass_data_0 = w_result;
-    else
-        bypass_data_0 = reg_data_0;
-end
-
-// Bypass for reg port 1
-always @(*)
-begin
-    if (raw_x_1 == 1'b1)
-        bypass_data_1 = x_result;
-    else if (raw_m_1 == 1'b1)
-        bypass_data_1 = m_result;
-    else if (raw_w_1 == 1'b1)
-        bypass_data_1 = w_result;
-    else
-        bypass_data_1 = reg_data_1;
-end
-
-   /*----------------------------------------------------------------------
-    Branch prediction is performed in D stage of pipeline. Only PC-relative
-    branches are predicted: forward-pointing conditional branches are not-
-    taken, while backward-pointing conditional branches are taken.
-    Unconditional branches are always predicted taken!
-    ----------------------------------------------------------------------*/
-   assign branch_predict_d = bi_unconditional | bi_conditional;
-   assign branch_predict_taken_d = bi_unconditional ? 1'b1 : (bi_conditional ? instruction_d[15] : 1'b0);
-
-   // Compute branch target address: Branch PC PLUS Offset
-   assign branch_target_d = pc_d + branch_offset_d;
-
-   // Compute fetch address. Address of instruction sequentially after the
-   // branch if branch is not taken. Target address of branch is branch is
-   // taken
-   assign branch_predict_address_d = branch_predict_taken_d ? branch_target_d : pc_f;
-
-// D stage result selection
-always @(*)
-begin
-    d_result_0 = d_result_sel_0_d[0] ? {pc_f, 2'b00} : bypass_data_0;
-    case (d_result_sel_1_d)
-    2'b00:      d_result_1 = {32{1'b0}};
-    2'b01:     d_result_1 = bypass_data_1;
-    2'b10: d_result_1 = immediate_d;
-    default:                        d_result_1 = {32{1'bx}};
-    endcase
-end
-
-
-// Sign-extension
-assign sextb_result_x = {{24{operand_0_x[7]}}, operand_0_x[7:0]};
-assign sexth_result_x = {{16{operand_0_x[15]}}, operand_0_x[15:0]};
-assign sext_result_x = size_x == 2'b00 ? sextb_result_x : sexth_result_x;
-
-
-// Condition evaluation
-assign cmp_zero = operand_0_x == operand_1_x;
-assign cmp_negative = adder_result_x[32-1];
-assign cmp_overflow = adder_overflow_x;
-assign cmp_carry_n = adder_carry_n_x;
-always @(*)
-begin
-    case (condition_x)
-    3'b000:   condition_met_x = 1'b1;
-    3'b110:   condition_met_x = 1'b1;
-    3'b001:    condition_met_x = cmp_zero;
-    3'b111:   condition_met_x = !cmp_zero;
-    3'b010:    condition_met_x = !cmp_zero && (cmp_negative == cmp_overflow);
-    3'b101:   condition_met_x = cmp_carry_n && !cmp_zero;
-    3'b011:   condition_met_x = cmp_negative == cmp_overflow;
-    3'b100:  condition_met_x = cmp_carry_n;
-    default:              condition_met_x = 1'bx;
-    endcase
-end
-
-// X stage result selection
-always @(*)
-begin
-    x_result =   x_result_sel_add_x ? adder_result_x
-               : x_result_sel_csr_x ? csr_read_data_x
-               : x_result_sel_sext_x ? sext_result_x
-               : x_result_sel_mc_arith_x ? mc_result_x
-               : logic_result_x;
-end
-
-// M stage result selection
-always @(*)
-begin
-    m_result =   m_result_sel_compare_m ? {{32-1{1'b0}}, condition_met_m}
-               : m_result_sel_shift_m ? shifter_result_m
-               : operand_m;
-end
-
-// W stage result selection
-always @(*)
-begin
-    w_result =    w_result_sel_load_w ? load_data_w
-                : w_result_sel_mul_w ? multiplier_result_w
-                : operand_w;
-end
-
-
-// Indicate when a branch should be taken in M stage (exceptions are a type of branch)
-assign branch_taken_m =      (stall_m == 1'b0)
-                          && (   (   (branch_m == 1'b1)
-                                  && (valid_m == 1'b1)
-                                  && (   (   (condition_met_m == 1'b1)
-                                          && (branch_predict_taken_m == 1'b0)
-                                         )
-                                      || (   (condition_met_m == 1'b0)
-                                          && (branch_predict_m == 1'b1)
-                                          && (branch_predict_taken_m == 1'b1)
-                                         )
-                                     )
-                                 )
-                              || (exception_m == 1'b1)
-                             );
-
-// Indicate when a branch in M stage is mispredicted as being taken
-assign branch_mispredict_taken_m =    (condition_met_m == 1'b0)
-                                   && (branch_predict_m == 1'b1)
-                                   && (branch_predict_taken_m == 1'b1);
-
-// Indicate when a branch in M stage will cause flush in X stage
-assign branch_flushX_m =    (stall_m == 1'b0)
-                         && (   (   (branch_m == 1'b1)
-                                 && (valid_m == 1'b1)
-                                 && (   (condition_met_m == 1'b1)
-                                     || (   (condition_met_m == 1'b0)
-                                         && (branch_predict_m == 1'b1)
-                                         && (branch_predict_taken_m == 1'b1)
-                                        )
-                                    )
-                                )
-                             || (exception_m == 1'b1)
-                            );
-
-// Generate signal that will kill instructions in each pipeline stage when necessary
-assign kill_f =    (   (valid_d == 1'b1)
-                    && (branch_predict_taken_d == 1'b1)
-                   )
-                || (branch_taken_m == 1'b1)
-                || (icache_refill_request == 1'b1)
-                || (dcache_refill_request == 1'b1)
-                || (itlb_miss_exception == 1'b1)
-                ;
-assign kill_d =    (branch_taken_m == 1'b1)
-                || (icache_refill_request == 1'b1)
-                || (dcache_refill_request == 1'b1)
-                || (itlb_miss_exception == 1'b1)
-                ;
-assign kill_x =    (branch_flushX_m == 1'b1)
-                || (dcache_refill_request == 1'b1)
-                ;
-assign kill_m =    1'b0
-                || (dcache_refill_request == 1'b1)
-                ;
-assign kill_w =    1'b0
-                || (dcache_refill_request == 1'b1)
-                ;
-
-// Exceptions
-
-assign breakpoint_exception =    (   (   (break_x == 1'b1)
-                                      || (bp_match == 1'b1)
-                                     )
-                                  && (valid_x == 1'b1)
-                                 )
-                              || (ext_break_r == 1'b1)
-                              ;
-
-assign watchpoint_exception = wp_match == 1'b1;
-
-assign instruction_bus_error_exception = (   (bus_error_x == 1'b1)
-                                          && (valid_x == 1'b1)
-                                         );
-assign data_bus_error_exception = data_bus_error_seen == 1'b1;
-
-assign divide_by_zero_exception = divide_by_zero_x == 1'b1;
-
-assign system_call_exception = (   (scall_x == 1'b1)
-                                && (valid_x == 1'b1)
-                               );
-
-assign itlb_miss_exception = (   (itlb_miss_x == 1'b1)
-                              && (itlbe == 1'b1)
-                              && (valid_x == 1'b1)
-                            );
-assign itlb_exception = (itlb_miss_exception == 1'b1);
-
-assign dtlb_miss_exception = (   (dtlb_miss_x == 1'b1)
-                              && (dtlbe == 1'b1)
-                              && (valid_x == 1'b1)
-                            );
-assign dtlb_fault_exception = (   (dtlb_fault_x == 1'b1)
-                               && (dtlbe == 1'b1)
-                               && (valid_x == 1'b1)
-                            );
-assign dtlb_exception = (dtlb_miss_exception == 1'b1) || (dtlb_fault_exception == 1'b1);
-
-assign privilege_exception = (   (usr == 1'b1)
-                              && (   (csr_write_enable_q_x == 1'b1)
-                                  || (eret_q_x == 1'b1)
-                                  || (bret_q_x == 1'b1)
-                                 )
-                             );
-
-assign debug_exception_x =  (breakpoint_exception == 1'b1)
-                         || (watchpoint_exception == 1'b1)
-                         ;
-
-assign non_debug_exception_x = (system_call_exception == 1'b1)
-                            || (instruction_bus_error_exception == 1'b1)
-                            || (data_bus_error_exception == 1'b1)
-                            || (divide_by_zero_exception == 1'b1)
-                            || (   (interrupt_exception == 1'b1)
-                                && (dc_ss == 1'b0)
-                                && (store_q_m == 1'b0)
-                                && (D_CYC_O == 1'b0)
-                               )
-                            || (itlb_exception == 1'b1)
-                            || (dtlb_exception == 1'b1)
-                            || (privilege_exception == 1'b1)
-                            ;
-
-assign exception_x = (debug_exception_x == 1'b1) || (non_debug_exception_x == 1'b1);
-
-// Exception ID
-always @(*)
-begin
-         if (data_bus_error_exception == 1'b1)
-        eid_x = 4'h4;
-    else
-         if (breakpoint_exception == 1'b1)
-        eid_x = 4'h1;
-    else
-         if (data_bus_error_exception == 1'b1)
-        eid_x = 4'h4;
-    else
-         if (instruction_bus_error_exception == 1'b1)
-        eid_x = 4'h2;
-    else
-         if (watchpoint_exception == 1'b1)
-        eid_x = 4'h3;
-    else
-         if (divide_by_zero_exception == 1'b1)
-        eid_x = 4'h5;
-    else
-         if (   (interrupt_exception == 1'b1)
-             && (dc_ss == 1'b0)
-            )
-        eid_x = 4'h6;
-    else
-         if (itlb_miss_exception == 1'b1)
-        eid_x = 4'h8;
-    else
-         if (dtlb_miss_exception == 1'b1)
-        eid_x = 4'h9;
-    else
-         if (dtlb_fault_exception == 1'b1)
-        eid_x = 4'ha;
-    else
-         if (privilege_exception == 1'b1)
-        eid_x = 4'hb;
-    else
-        eid_x = 4'h7;
-end
-
-// Stall generation
-
-assign stall_a = (stall_f == 1'b1);
-
-assign stall_f =   (stall_d == 1'b1)
-                // We need to stall for one cycle. Otherwise the icache
-                // starts one cycle earlier and the restart address will be
-                // wrong in case of a miss, that is one instruction is
-                // skipped.
-                || (   (itlbe == 1'b1)
-                    && (   (debug_exception_q_w == 1'b1)
-                        || (non_debug_exception_q_w == 1'b1)
-                       )
-                   )
-                ;
-
-assign stall_d =   (stall_x == 1'b1)
-                || (   (interlock == 1'b1)
-                    && (kill_d == 1'b0)
-                   )
-                || (   (   (eret_d == 1'b1)
-                        || (scall_d == 1'b1)
-                        || (bus_error_d == 1'b1)
-                       )
-                    && (   (load_q_x == 1'b1)
-                        || (load_q_m == 1'b1)
-                        || (store_q_x == 1'b1)
-                        || (store_q_m == 1'b1)
-                        || (D_CYC_O == 1'b1)
-                       )
-                    && (kill_d == 1'b0)
-                   )
-                || (   (   (break_d == 1'b1)
-                        || (bret_d == 1'b1)
-                       )
-                    && (   (load_q_x == 1'b1)
-                        || (store_q_x == 1'b1)
-                        || (load_q_m == 1'b1)
-                        || (store_q_m == 1'b1)
-                        || (D_CYC_O == 1'b1)
-                       )
-                    && (kill_d == 1'b0)
-                   )
-                || (   (csr_write_enable_d == 1'b1)
-                    && (load_q_x == 1'b1)
-                   )
-                ;
-
-assign stall_x =    (stall_m == 1'b1)
-                 || (   (mc_stall_request_x == 1'b1)
-                     && (kill_x == 1'b0)
-                    )
-                 ;
-
-assign stall_m =    (stall_wb_load == 1'b1)
-                 || (   (D_CYC_O == 1'b1)
-                     && (   (store_m == 1'b1)
-                         /*
-                          Bug: Following loop does not allow interrupts to be services since
-                          either D_CYC_O or store_m is always high during entire duration of
-                          loop.
-                          L1:   addi    r1, r1, 1
-                                sw      (r2,0), r1
-                                bi      L1
-
-                          Introduce a single-cycle stall when a wishbone cycle is in progress
-                          and a new store instruction is in Execute stage and a interrupt
-                          exception has occured. This stall will ensure that D_CYC_O and
-                          store_m will both be low for one cycle.
-                          */
-                         || ((store_x == 1'b1) && (interrupt_exception == 1'b1))
-                         || (load_m == 1'b1)
-                         || (load_x == 1'b1)
-                        )
-                    )
-                 || (dcache_stall_request == 1'b1)     // Need to stall in case a taken branch is in M stage and data cache is only being flush, so wont be restarted
-                 || (icache_stall_request == 1'b1)     // Pipeline needs to be stalled otherwise branches may be lost
-                 || ((I_CYC_O == 1'b1) && ((branch_m == 1'b1) || (exception_m == 1'b1)))
-                 || (itlb_stall_request == 1'b1)       // ITLB is busy
-                 || (dtlb_stall_request == 1'b1)       // DTLB is busy or a lookup is in progress
-                 ;
-
-// Qualify state changing control signals
-assign q_d = (valid_d == 1'b1) && (kill_d == 1'b0);
-assign divide_q_d = (divide_d == 1'b1) && (q_d == 1'b1);
-assign modulus_q_d = (modulus_d == 1'b1) && (q_d == 1'b1);
-assign q_x = (valid_x == 1'b1) && (kill_x == 1'b0);
-assign csr_write_enable_q_x = (csr_write_enable_x == 1'b1) && (q_x == 1'b1);
-assign csr_write_enable_k_q_x = (csr_write_enable_q_x == 1'b1)
-               && (usr == 1'b0)
-                  ;
-assign eret_q_x = (eret_x == 1'b1) && (q_x == 1'b1);
-assign eret_k_q_x = (eret_q_x == 1'b1)
-               && (usr == 1'b0)
-                  ;
-assign bret_q_x = (bret_x == 1'b1) && (q_x == 1'b1);
-assign bret_k_q_x = (bret_q_x == 1'b1)
-               && (usr == 1'b0)
-                  ;
-assign load_q_x = (load_x == 1'b1)
-               && (q_x == 1'b1)
-               && (bp_match == 1'b0)
-                  ;
-assign store_q_x = (store_x == 1'b1)
-               && (q_x == 1'b1)
-               && (bp_match == 1'b0)
-                  ;
-assign q_m = (valid_m == 1'b1) && (kill_m == 1'b0) && (exception_m == 1'b0);
-assign load_q_m = (load_m == 1'b1) && (q_m == 1'b1);
-assign store_q_m = (store_m == 1'b1) && (q_m == 1'b1);
-assign debug_exception_q_w = ((debug_exception_w == 1'b1) && (valid_w == 1'b1));
-assign non_debug_exception_q_w = ((non_debug_exception_w == 1'b1) && (valid_w == 1'b1));
-// Don't qualify register write enables with kill, as the signal is needed early, and it doesn't matter if the instruction is killed (except for the actual write - but that is handled separately)
-assign write_enable_q_x = (write_enable_x == 1'b1) && (valid_x == 1'b1) && (branch_flushX_m == 1'b0);
-assign write_enable_q_m = (write_enable_m == 1'b1) && (valid_m == 1'b1);
-assign write_enable_q_w = (write_enable_w == 1'b1) && (valid_w == 1'b1);
-// The enable that actually does write the registers needs to be qualified with kill
-assign reg_write_enable_q_w = (write_enable_w == 1'b1) && (kill_w == 1'b0) && (valid_w == 1'b1) || rst_i;
-
-// Configuration (CFG) CSR
-assign cfg = {
-              6'h02,
-              watchpoints[3:0],
-              breakpoints[3:0],
-              interrupts[5:0],
-              1'b0,
-              1'b1,
-              1'b0,
-              1'b1,
-              1'b1,
-              1'b1,
-              1'b0,
-              1'b0,
-              1'b1,
-              1'b1,
-              1'b1,
-              1'b1
-              };
-
-assign cfg2 = {
-               1'b1,
-               29'b0,
-               1'b0,
-               1'b0
-               };
-
-assign psw = {
-              {32-12{1'b0}},
-              busr,
-              eusr,
-              usr,
-              bdtlbe,
-              edtlbe,
-              dtlbe,
-              bitlbe,
-              eitlbe,
-              itlbe,
-              interrupt_csr_read_data_x[2:0]
-              };
-
-// Cache flush
-assign iflush = (   (csr_write_enable_d == 1'b1)
-                 && (csr_d == 5'h3)
-                 && (stall_d == 1'b0)
-                 && (kill_d == 1'b0)
-                 && (valid_d == 1'b1))
-// Added by GSI: needed to flush cache after loading firmware per JTAG
-                 ;
-assign dflush_x = (   (csr_write_enable_q_x == 1'b1)
-                   && (csr_x == 5'h4))
-// Added by GSI: needed to flush cache after loading firmware per JTAG
-                   ;
-
-// Extract CSR index
-assign csr_d = read_idx_0_d[(5-1):0];
-
-// CSR reads
-always @(*)
-begin
-    case (csr_x)
-    5'h0,
-    5'h1,
-    5'h2:   csr_read_data_x = interrupt_csr_read_data_x;
-    5'h6:  csr_read_data_x = cfg;
-    5'h7:  csr_read_data_x = {eba, {(32-((32-2)-4-3)){1'b0}}};
-    5'h9: csr_read_data_x = {deba, {(32-((32-2)-4-3)){1'b0}}};
-    5'ha: csr_read_data_x = cfg2;
-    5'h1d:  csr_read_data_x = psw;
-    5'h1e: csr_read_data_x = tlbvaddr;
-    5'h1f : csr_read_data_x = tlbbadvaddr;
-
-    default:        csr_read_data_x = {32{1'bx}};
-    endcase
-end
-
-/////////////////////////////////////////////////////
-// Sequential Logic
-/////////////////////////////////////////////////////
-
-// Processor status word (PSW) handling
-always @(posedge clk_i )
-begin
-    if (rst_i)
-    begin
-        itlbe <= 1'b0;
-        eitlbe <= 1'b0;
-        dtlbe <= 1'b0;
-        edtlbe <= 1'b0;
-        usr <= 1'b0;
-        eusr <= 1'b0;
-        bitlbe <= 1'b0;
-        bdtlbe <= 1'b0;
-        busr <= 1'b0;
-    end
-    else
-    begin
-        if (non_debug_exception_q_w == 1'b1)
-        begin
-            // Save and then clear ITLB and DTLB enable
-            eitlbe <= itlbe;
-            itlbe <= 1'b0;
-            edtlbe <= dtlbe;
-            dtlbe <= 1'b0;
-            eusr <= usr;
-            usr <= 1'b0;
-        end
-        else if (debug_exception_q_w == 1'b1)
-        begin
-            // Save and then clear TLB enable
-            bitlbe <= itlbe;
-            itlbe <= 1'b0;
-            bdtlbe <= dtlbe;
-            dtlbe <= 1'b0;
-            busr <= usr;
-            usr <= 1'b0;
-        end
-
-        else if (stall_x == 1'b0)
-        begin
-            if (eret_k_q_x == 1'b1)
-            begin
-                // Restore ITLB and DTLB enable
-                itlbe <= eitlbe;
-                dtlbe <= edtlbe;
-                usr <= eusr;
-            end
-            else if (bret_k_q_x == 1'b1)
-            begin
-                // Restore ITLB and DTLB enable
-                itlbe <= bitlbe;
-                dtlbe <= bdtlbe;
-                usr <= busr;
-            end
-            else if (csr_write_enable_k_q_x == 1'b1)
-            begin
-                // Handle wcsr write
-                if (csr_x == 5'h1d)
-                begin
-                    // ie, eie and bie are shadowed from IE register
-                    itlbe  <= operand_1_x[3];
-                    eitlbe <= operand_1_x[4];
-                    dtlbe  <= operand_1_x[6];
-                    edtlbe <= operand_1_x[7];
-                    usr    <= operand_1_x[9];
-                    eusr   <= operand_1_x[10];
-                    bitlbe <= operand_1_x[5];
-                    bdtlbe <= operand_1_x[8];
-                    busr   <= operand_1_x[11];
-                end
-            end
-        end
-    end
-end
-
-// TLBVADDR CSR
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        itlb_flush <= 1'b0;
-        itlb_invalidate <= 1'b0;
-        dtlb_flush <= 1'b0;
-        dtlb_invalidate <= 1'b0;
-        tlbvaddr <= {32{1'b0}};
-    end
-    else
-    begin
-        itlb_flush <= 1'b0;
-        itlb_invalidate <= 1'b0;
-        dtlb_flush <= 1'b0;
-        dtlb_invalidate <= 1'b0;
-        if (stall_x == 1'b0)
-        begin
-            if (dtlb_exception == 1'b1)
-                tlbvaddr <= {dtlb_miss_vfn[32-1:1], 1'b1};
-            else if (itlb_exception == 1'b1)
-                tlbvaddr <= {itlb_miss_vfn[32-1:1], 1'b0};
-            else if ((csr_write_enable_k_q_x == 1'b1) && (csr_x == 5'h1e))
-            begin
-                tlbvaddr <= operand_1_x;
-                if (operand_1_x[0] == 1'b0)
-                begin
-                    case (operand_1_x[2:1])
-                    2'h1:      itlb_flush <= 1'b1;
-                    2'h2: itlb_invalidate <= 1'b1;
-                    endcase
-                end
-                if (operand_1_x[0] == 1'b1)
-                begin
-                    case (operand_1_x[2:1])
-                    2'h1:      dtlb_flush <= 1'b1;
-                    2'h2: dtlb_invalidate <= 1'b1;
-                    endcase
-                end
-            end
-        end
-    end
-end
-
-// TLBPADDR CSR
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        itlb_update <= 1'b0;
-        dtlb_update <= 1'b0;
-        tlbpaddr <= {32{1'b0}};
-    end
-    else
-    begin
-        itlb_update <= 1'b0;
-        dtlb_update <= 1'b0;
-        if ((csr_write_enable_k_q_x == 1'b1) && (csr_x == 5'h1f ) && (stall_x == 1'b0))
-        begin
-            /* updates take change in the M stage */
-            tlbpaddr <= operand_1_x;
-            if (operand_1_x[0] == 1'b0)
-                itlb_update <= 1'b1;
-            if (operand_1_x[0] == 1'b1)
-                dtlb_update <= 1'b1;
-        end
-    end
-end
-
-// TLBBADVADDR CSR
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-        tlbbadvaddr <= {32{1'b0}};
-    else
-    begin
-        if (stall_x == 1'b0)
-        begin
-            if (dtlb_exception == 1'b1)
-                tlbbadvaddr <= adder_result_x;
-            else if (itlb_exception == 1'b1)
-                tlbbadvaddr <= {pc_x, {32-(32-2){1'b0}}};
-        end
-    end
-end
-
-// Exception Base Address (EBA) CSR
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-        eba <= eba_reset[((32-2)+2-1):(4+3+2)];
-    else
-    begin
-        if ((csr_write_enable_k_q_x == 1'b1) && (csr_x == 5'h7) && (stall_x == 1'b0))
-            eba <= operand_1_x[((32-2)+2-1):(4+3+2)];
-    end
-end
-
-// Debug Exception Base Address (DEBA) CSR
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-        deba <= deba_reset[((32-2)+2-1):(4+3+2)];
-    else
-    begin
-        if ((csr_write_enable_k_q_x == 1'b1) && (csr_x == 5'h9) && (stall_x == 1'b0))
-            deba <= operand_1_x[((32-2)+2-1):(4+3+2)];
-    end
-end
-
-// Cycle Counter (CC) CSR
-
-// Watch for data bus errors
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-        data_bus_error_seen <= 1'b0;
-    else
-    begin
-        // Set flag when bus error is detected
-        if ((D_ERR_I == 1'b1) && (D_CYC_O == 1'b1))
-            data_bus_error_seen <= 1'b1;
-        // Clear flag when exception is taken
-        if ((exception_m == 1'b1) && (kill_m == 1'b0))
-            data_bus_error_seen <= 1'b0;
-    end
-end
-
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-        ext_break_r <= 1'b0;
-    else
-    begin
-        if (ext_break == 1'b1)
-            ext_break_r <= 1'b1;
-        if (debug_exception_q_w == 1'b1)
-            ext_break_r <= 1'b0;
-    end
-end
-
-// Valid bits to indicate whether an instruction in a partcular pipeline stage is valid or not
-
-always @(*)
-begin
-    if (   (icache_refill_request == 1'b1)
-        || (dcache_refill_request == 1'b1)
-       )
-        valid_a = 1'b0;
-    else if (   (icache_restart_request == 1'b1)
-             || (dcache_restart_request == 1'b1)
-            )
-        valid_a = 1'b1;
-    else
-        valid_a = !icache_refilling && !dcache_refilling;
-end
-
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        valid_f <= 1'b0;
-        valid_d <= 1'b0;
-        valid_x <= 1'b0;
-        valid_m <= 1'b0;
-        valid_w <= 1'b0;
-    end
-    else
-    begin
-        if ((kill_f == 1'b1) || (stall_a == 1'b0))
-            valid_f <= valid_a;
-        else if (stall_f == 1'b0)
-            valid_f <= 1'b0;
-
-        if (kill_d == 1'b1)
-            valid_d <= 1'b0;
-        else if (stall_f == 1'b0)
-            valid_d <= valid_f & !kill_f;
-        else if (stall_d == 1'b0)
-            valid_d <= 1'b0;
-
-        if (stall_d == 1'b0)
-            valid_x <= valid_d & !kill_d;
-        else if (kill_x == 1'b1)
-            valid_x <= 1'b0;
-        else if (stall_x == 1'b0)
-            valid_x <= 1'b0;
-
-        if (kill_m == 1'b1)
-            valid_m <= 1'b0;
-        else if (stall_x == 1'b0)
-            valid_m <= valid_x & !kill_x;
-        else if (stall_m == 1'b0)
-            valid_m <= 1'b0;
-
-        if (stall_m == 1'b0)
-            valid_w <= valid_m & !kill_m;
-        else
-            valid_w <= 1'b0;
-    end
-end
-
-// Microcode pipeline registers
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        operand_0_x <= {32{1'b0}};
-        operand_1_x <= {32{1'b0}};
-        store_operand_x <= {32{1'b0}};
-        branch_target_x <= {(32-2){1'b0}};
-        x_result_sel_csr_x <= 1'b0;
-        x_result_sel_mc_arith_x <= 1'b0;
-        x_result_sel_sext_x <= 1'b0;
-        x_result_sel_logic_x <= 1'b0;
-        x_result_sel_add_x <= 1'b0;
-        m_result_sel_compare_x <= 1'b0;
-        m_result_sel_shift_x <= 1'b0;
-        w_result_sel_load_x <= 1'b0;
-        w_result_sel_mul_x <= 1'b0;
-        x_bypass_enable_x <= 1'b0;
-        m_bypass_enable_x <= 1'b0;
-        write_enable_x <= 1'b0;
-        write_idx_x <= {5{1'b0}};
-        csr_x <= {5{1'b0}};
-        load_x <= 1'b0;
-        store_x <= 1'b0;
-        size_x <= {2{1'b0}};
-        sign_extend_x <= 1'b0;
-        adder_op_x <= 1'b0;
-        adder_op_x_n <= 1'b0;
-        logic_op_x <= 4'h0;
-        direction_x <= 1'b0;
-        branch_x <= 1'b0;
-        branch_predict_x <= 1'b0;
-        branch_predict_taken_x <= 1'b0;
-        condition_x <= 3'b000;
-        break_x <= 1'b0;
-        scall_x <= 1'b0;
-        eret_x <= 1'b0;
-        bret_x <= 1'b0;
-        bus_error_x <= 1'b0;
-        data_bus_error_exception_m <= 1'b0;
-        csr_write_enable_x <= 1'b0;
-        operand_m <= {32{1'b0}};
-        branch_target_m <= {(32-2){1'b0}};
-        m_result_sel_compare_m <= 1'b0;
-        m_result_sel_shift_m <= 1'b0;
-        w_result_sel_load_m <= 1'b0;
-        w_result_sel_mul_m <= 1'b0;
-        m_bypass_enable_m <= 1'b0;
-        branch_m <= 1'b0;
-        branch_predict_m <= 1'b0;
-        branch_predict_taken_m <= 1'b0;
-        exception_m <= 1'b0;
-        load_m <= 1'b0;
-        store_m <= 1'b0;
-        write_enable_m <= 1'b0;
-        write_idx_m <= {5{1'b0}};
-        condition_met_m <= 1'b0;
-        dflush_m <= 1'b0;
-        debug_exception_m <= 1'b0;
-        non_debug_exception_m <= 1'b0;
-        operand_w <= {32{1'b0}};
-        w_result_sel_load_w <= 1'b0;
-        w_result_sel_mul_w <= 1'b0;
-        write_idx_w <= {5{1'b0}};
-        write_enable_w <= 1'b0;
-        debug_exception_w <= 1'b0;
-        non_debug_exception_w <= 1'b0;
-        memop_pc_w <= {(32-2){1'b0}};
-    end
-    else
-    begin
-        // D/X stage registers
-
-        if (stall_x == 1'b0)
-        begin
-            operand_0_x <= d_result_0;
-            operand_1_x <= d_result_1;
-            store_operand_x <= bypass_data_1;
-            branch_target_x <= branch_reg_d == 1'b1 ? bypass_data_0[((32-2)+2-1):2] : branch_target_d;
-            x_result_sel_csr_x <= x_result_sel_csr_d;
-            x_result_sel_mc_arith_x <= x_result_sel_mc_arith_d;
-            x_result_sel_sext_x <= x_result_sel_sext_d;
-            x_result_sel_logic_x <= x_result_sel_logic_d;
-            x_result_sel_add_x <= x_result_sel_add_d;
-            m_result_sel_compare_x <= m_result_sel_compare_d;
-            m_result_sel_shift_x <= m_result_sel_shift_d;
-            w_result_sel_load_x <= w_result_sel_load_d;
-            w_result_sel_mul_x <= w_result_sel_mul_d;
-            x_bypass_enable_x <= x_bypass_enable_d;
-            m_bypass_enable_x <= m_bypass_enable_d;
-            load_x <= load_d;
-            store_x <= store_d;
-            branch_x <= branch_d;
-            branch_predict_x <= branch_predict_d;
-            branch_predict_taken_x <= branch_predict_taken_d;
-            write_idx_x <= write_idx_d;
-            csr_x <= csr_d;
-            size_x <= size_d;
-            sign_extend_x <= sign_extend_d;
-            adder_op_x <= adder_op_d;
-            adder_op_x_n <= ~adder_op_d;
-            logic_op_x <= logic_op_d;
-            direction_x <= direction_d;
-            condition_x <= condition_d;
-            csr_write_enable_x <= csr_write_enable_d;
-            break_x <= break_d;
-            scall_x <= scall_d;
-            bus_error_x <= bus_error_d;
-            eret_x <= eret_d;
-            bret_x <= bret_d;
-            write_enable_x <= write_enable_d;
-        end
-
-        // X/M stage registers
-
-        if (stall_m == 1'b0)
-        begin
-            operand_m <= x_result;
-            m_result_sel_compare_m <= m_result_sel_compare_x;
-            m_result_sel_shift_m <= m_result_sel_shift_x;
-            if (exception_x == 1'b1)
-            begin
-                w_result_sel_load_m <= 1'b0;
-                w_result_sel_mul_m <= 1'b0;
-            end
-            else
-            begin
-                w_result_sel_load_m <= w_result_sel_load_x;
-                w_result_sel_mul_m <= w_result_sel_mul_x;
-            end
-            m_bypass_enable_m <= m_bypass_enable_x;
-            load_m <= load_x;
-            store_m <= store_x;
-            branch_m <= branch_x;
-            branch_predict_m <= branch_predict_x;
-            branch_predict_taken_m <= branch_predict_taken_x;
-            // Data bus errors are generated by the wishbone and are
-            // made known to the processor only in next cycle (as a
-            // non-debug exception). A break instruction can be seen
-            // in same cycle (causing a debug exception). Handle non
-            // -debug exception first!
-            if (non_debug_exception_x == 1'b1)
-                write_idx_m <= 5'd30;
-            else if (debug_exception_x == 1'b1)
-                write_idx_m <= 5'd31;
-            else
-                write_idx_m <= write_idx_x;
-            condition_met_m <= condition_met_x;
-            if (exception_x == 1'b1)
-                if (   (dc_re == 1'b1)
-                    || (   (debug_exception_x == 1'b1)
-                        && (non_debug_exception_x == 1'b0))
-                   )
-                    branch_target_m <= {deba, eid_x, {3{1'b0}}};
-                else
-                    branch_target_m <= {eba, eid_x, {3{1'b0}}};
-            else
-                branch_target_m <= branch_target_x;
-            dflush_m <= dflush_x;
-            eret_m <= eret_k_q_x;
-            bret_m <= bret_k_q_x;
-            write_enable_m <= exception_x == 1'b1 ? 1'b1 : write_enable_x;
-            debug_exception_m <= debug_exception_x;
-            non_debug_exception_m <= non_debug_exception_x;
-        end
-
-        // State changing regs
-        if (stall_m == 1'b0)
-        begin
-            if ((exception_x == 1'b1) && (q_x == 1'b1) && (stall_x == 1'b0))
-                exception_m <= 1'b1;
-            else
-                exception_m <= 1'b0;
-            data_bus_error_exception_m <=    (data_bus_error_exception == 1'b1)
-                                          ;
-        end
-
-        // M/W stage registers
-        operand_w <= exception_m == 1'b1 ? (data_bus_error_exception_m ? {memop_pc_w, 2'b00} : {pc_m, 2'b00}) : m_result;
-        w_result_sel_load_w <= w_result_sel_load_m;
-        w_result_sel_mul_w <= w_result_sel_mul_m;
-        write_idx_w <= write_idx_m;
-        write_enable_w <= write_enable_m;
-        debug_exception_w <= debug_exception_m;
-        non_debug_exception_w <= non_debug_exception_m;
-        if (   (stall_m == 1'b0)
-            && (data_bus_error_exception == 1'b0)
-            && (   (load_q_m == 1'b1)
-                || (store_q_m == 1'b1)
-               )
-           )
-          memop_pc_w <= pc_m;
-    end
-end
-
-// Buffer data read from register file, in case a stall occurs, and watch for
-// any writes to the modified registers
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        use_buf <= 1'b0;
-        reg_data_buf_0 <= {32{1'b0}};
-        reg_data_buf_1 <= {32{1'b0}};
-    end
-    else
-    begin
-        if (stall_d == 1'b0)
-            use_buf <= 1'b0;
-        else if (use_buf == 1'b0)
-        begin
-            reg_data_buf_0 <= reg_data_live_0;
-            reg_data_buf_1 <= reg_data_live_1;
-            use_buf <= 1'b1;
-        end
-        if (reg_write_enable_q_w == 1'b1)
-        begin
-            if (write_idx_w == read_idx_0_d)
-                reg_data_buf_0 <= w_result;
-            if (write_idx_w == read_idx_1_d)
-                reg_data_buf_1 <= w_result;
-        end
-    end
-end
-
-
-
-/////////////////////////////////////////////////////
-// Behavioural Logic
-/////////////////////////////////////////////////////
-
-// synthesis translate_off
-
-// Reset register 0. Only needed for simulation.
-initial
-begin
-    reg_0.mem[0] = {32{1'b0}};
-    reg_1.mem[0] = {32{1'b0}};
-end
-
-// synthesis translate_on
-
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_dcache.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_dcache.v
deleted file mode 100644
index b8b47ab..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_dcache.v
+++ /dev/null
@@ -1,674 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_dcache.v
-// Title            : Data cache
-// Dependencies     : lm32_include.v
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : Support for user-selected resource usage when implementing
-//                  : cache memory. Additional parameters must be defined when
-//                  : invoking lm32_ram.v
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-
-
-
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_dcache (
-    // ----- Inputs -----
-    clk_i,
-    rst_i,
-    stall_a,
-    stall_x,
-    stall_m,
-    address_x,
-    address_m,
-    load_q_m,
-    store_q_m,
-    store_data,
-    store_byte_select,
-    refill_ready,
-    refill_data,
-    dflush,
-    dtlb_miss_x,
-    // ----- Outputs -----
-    stall_request,
-    restart_request,
-    refill_request,
-    refill_address,
-    refilling,
-    load_data
-    );
-
-/////////////////////////////////////////////////////
-// Parameters
-/////////////////////////////////////////////////////
-
-parameter associativity = 1;                            // Associativity of the cache (Number of ways)
-parameter sets = 512;                                   // Number of sets
-parameter bytes_per_line = 16;                          // Number of bytes per cache line
-parameter base_address = 0;                             // Base address of cachable memory
-parameter limit = 0;                                    // Limit (highest address) of cachable memory
-
-localparam addr_offset_width = $clog2-2;
-localparam addr_set_width = $clog2;
-localparam addr_offset_lsb = 2;
-localparam addr_offset_msb = (addr_offset_lsb+addr_offset_width-1);
-localparam addr_set_lsb = (addr_offset_msb+1);
-localparam addr_set_msb = (addr_set_lsb+addr_set_width-1);
-localparam addr_tag_lsb = (addr_offset_msb+1);
-localparam addr_tag_msb = $clog2;
-localparam addr_tag_width = (addr_tag_msb-addr_tag_lsb+1);
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input clk_i;                                            // Clock
-input rst_i;                                            // Reset
-
-input stall_a;                                          // Stall A stage
-input stall_x;                                          // Stall X stage
-input stall_m;                                          // Stall M stage
-
-input [(32-1):0] address_x;                       // X stage load/store address
-input [(32-1):0] address_m;                       // M stage load/store address
-input load_q_m;                                         // Load instruction in M stage
-input store_q_m;                                        // Store instruction in M stage
-input [(32-1):0] store_data;                      // Data to store
-input [(4-1):0] store_byte_select;        // Which bytes in store data should be modified
-
-input refill_ready;                                     // Indicates next word of refill data is ready
-input [(32-1):0] refill_data;                     // Refill data
-
-input dflush;                                           // Indicates cache should be flushed
-
-input dtlb_miss_x;                                      // Indicates if a DTLB miss has occured
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-output stall_request;                                   // Request pipeline be stalled because cache is busy
-wire   stall_request;
-output restart_request;                                 // Request to restart instruction that caused the cache miss
-reg    restart_request;
-output refill_request;                                  // Request a refill
-reg    refill_request;
-output [(32-1):0] refill_address;                 // Address to refill from
-reg    [(32-1):0] refill_address;
-output refilling;                                       // Indicates if the cache is currently refilling
-reg    refilling;
-output [(32-1):0] load_data;                      // Data read from cache
-wire   [(32-1):0] load_data;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-wire read_port_enable;                                  // Cache memory read port clock enable
-wire write_port_enable;                                 // Cache memory write port clock enable
-wire [0:associativity-1] way_tmem_we;                   // Tag memory write enable
-wire [0:associativity-1] way_dmem_we;                   // Data memory write enable
-wire [(32-1):0] way_data[0:associativity-1];      // Data read from data memory
-wire [((addr_tag_width+1)-1):1] way_tag[0:associativity-1];// Tag read from tag memory
-wire [0:associativity-1] way_valid;                     // Indicates which ways are valid
-wire [0:associativity-1] way_match;                     // Indicates which ways matched
-wire miss;                                              // Indicates no ways matched
-
-wire [(addr_set_width-1):0] tmem_read_address;        // Tag memory read address
-wire [(addr_set_width-1):0] tmem_write_address;       // Tag memory write address
-wire [((addr_offset_width+addr_set_width)-1):0] dmem_read_address;        // Data memory read address
-wire [((addr_offset_width+addr_set_width)-1):0] dmem_write_address;       // Data memory write address
-wire [((addr_tag_width+1)-1):0] tmem_write_data;               // Tag memory write data
-reg [(32-1):0] dmem_write_data;                   // Data memory write data
-
-reg [2:0] state;                         // Current state of FSM
-wire flushing;                                          // Indicates if cache is currently flushing
-wire check;                                             // Indicates if cache is currently checking for hits/misses
-wire refill;                                            // Indicates if cache is currently refilling
-
-wire valid_store;                                       // Indicates if there is a valid store instruction
-reg [associativity-1:0] refill_way_select;              // Which way should be refilled
-reg [addr_offset_msb:addr_offset_lsb] refill_offset;           // Which word in cache line should be refilled
-wire last_refill;                                       // Indicates when on last cycle of cache refill
-reg [(addr_set_width-1):0] flush_set;                 // Which set is currently being flushed
-
-genvar i, j;
-
-/////////////////////////////////////////////////////
-// Functions
-/////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////
-// Instantiations
-/////////////////////////////////////////////////////
-
-   generate
-      for (i = 0; i < associativity; i = i + 1)
-        begin : memories
-           // Way data
-           if ((addr_offset_width+addr_set_width) < 11)
-             begin : data_memories
-                lm32_ram
-                  #(
-                    // ----- Parameters -------
-                    .data_width (32),
-                    .address_width ((addr_offset_width+addr_set_width))
-// Modified for Milkymist: removed non-portable RAM parameters
-                    ) way_0_data_ram
-                    (
-                     // ----- Inputs -------
-                     .read_clk (clk_i),
-                     .write_clk (clk_i),
-                     .reset (rst_i),
-                     .read_address (dmem_read_address),
-                     .enable_read (read_port_enable),
-                     .write_address (dmem_write_address),
-                     .enable_write (write_port_enable),
-                     .write_enable (way_dmem_we[i]),
-                     .write_data (dmem_write_data),
-                     // ----- Outputs -------
-                     .read_data (way_data[i])
-                     );
-             end
-           else
-             begin
-                for (j = 0; j < 4; j = j + 1)
-                  begin : byte_memories
-                     lm32_ram
-                       #(
-                         // ----- Parameters -------
-                         .data_width (8),
-                         .address_width ((addr_offset_width+addr_set_width))
-// Modified for Milkymist: removed non-portable RAM parameters
-                         ) way_0_data_ram
-                         (
-                          // ----- Inputs -------
-                          .read_clk (clk_i),
-                          .write_clk (clk_i),
-                          .reset (rst_i),
-                          .read_address (dmem_read_address),
-                          .enable_read (read_port_enable),
-                          .write_address (dmem_write_address),
-                          .enable_write (write_port_enable),
-                          .write_enable (way_dmem_we[i] & (store_byte_select[j] | refill)),
-                          .write_data (dmem_write_data[(j+1)*8-1:j*8]),
-                          // ----- Outputs -------
-                          .read_data (way_data[i][(j+1)*8-1:j*8])
-                          );
-                  end
-             end
-
-           // Way tags
-           lm32_ram
-             #(
-               // ----- Parameters -------
-               .data_width ((addr_tag_width+1)),
-               .address_width (addr_set_width)
-// Modified for Milkymist: removed non-portable RAM parameters
-               ) way_0_tag_ram
-               (
-                // ----- Inputs -------
-                .read_clk (clk_i),
-                .write_clk (clk_i),
-                .reset (rst_i),
-                .read_address (tmem_read_address),
-                .enable_read (read_port_enable),
-                .write_address (tmem_write_address),
-                .enable_write (1'b1),
-                .write_enable (way_tmem_we[i]),
-                .write_data (tmem_write_data),
-                // ----- Outputs -------
-                .read_data ({way_tag[i], way_valid[i]})
-                );
-        end
-
-   endgenerate
-
-/////////////////////////////////////////////////////
-// Combinational logic
-/////////////////////////////////////////////////////
-
-// Compute which ways in the cache match the address being read
-generate
-    for (i = 0; i < associativity; i = i + 1)
-    begin : match
-assign way_match[i] = ({way_tag[i], way_valid[i]} == {address_m[addr_tag_msb:addr_tag_lsb], 1'b1});
-    end
-endgenerate
-
-// Select data from way that matched the address being read
-generate
-    if (associativity == 1)
-         begin : data_1
-assign load_data = way_data[0];
-    end
-    else if (associativity == 2)
-         begin : data_2
-assign load_data = way_match[0] ? way_data[0] : way_data[1];
-    end
-endgenerate
-
-generate
-    if ((addr_offset_width+addr_set_width) < 11)
-    begin
-// Select data to write to data memories
-always @(*)
-begin
-    if (refill == 1'b1)
-        dmem_write_data = refill_data;
-    else
-    begin
-        dmem_write_data[7:0] = store_byte_select[0] ? store_data[7:0] : load_data[7:0];
-        dmem_write_data[15:8] = store_byte_select[1] ? store_data[15:8] : load_data[15:8];
-        dmem_write_data[23:16] = store_byte_select[2] ? store_data[23:16] : load_data[23:16];
-        dmem_write_data[31:24] = store_byte_select[3] ? store_data[31:24] : load_data[31:24];
-    end
-end
-    end
-    else
-    begin
-// Select data to write to data memories - FIXME: Should use different write ports on dual port RAMs, but they don't work
-always @(*)
-begin
-    if (refill == 1'b1)
-        dmem_write_data = refill_data;
-    else
-        dmem_write_data = store_data;
-end
-    end
-endgenerate
-
-// Compute address to use to index into the data memories
-generate
-     if (bytes_per_line > 4)
-assign dmem_write_address = (refill == 1'b1)
-                            ? {refill_address[addr_set_msb:addr_set_lsb], refill_offset}
-                            : address_m[addr_set_msb:addr_offset_lsb];
-    else
-assign dmem_write_address = (refill == 1'b1)
-                            ? refill_address[addr_set_msb:addr_set_lsb]
-                            : address_m[addr_set_msb:addr_offset_lsb];
-endgenerate
-assign dmem_read_address = address_x[addr_set_msb:addr_offset_lsb];
-// Compute address to use to index into the tag memories
-assign tmem_write_address = (flushing == 1'b1)
-                            ? flush_set
-                            : refill_address[addr_set_msb:addr_set_lsb];
-assign tmem_read_address = address_x[addr_set_msb:addr_set_lsb];
-
-// Compute signal to indicate when we are on the last refill accesses
-generate
-    if (bytes_per_line > 4)
-assign last_refill = refill_offset == {addr_offset_width{1'b1}};
-    else
-assign last_refill = 1'b1;
-endgenerate
-
-// Compute data and tag memory access enable
-assign read_port_enable = (stall_x == 1'b0);
-assign write_port_enable = (refill_ready == 1'b1) || !stall_m;
-
-// Determine when we have a valid store
-assign valid_store = (store_q_m == 1'b1) && (check == 1'b1);
-
-// Compute data and tag memory write enables
-generate
-    if (associativity == 1)
-    begin : we_1
-assign way_dmem_we[0] = (refill_ready == 1'b1) || ((valid_store == 1'b1) && (way_match[0] == 1'b1));
-assign way_tmem_we[0] = (refill_ready == 1'b1) || (flushing == 1'b1);
-    end
-    else
-    begin : we_2
-assign way_dmem_we[0] = ((refill_ready == 1'b1) && (refill_way_select[0] == 1'b1)) || ((valid_store == 1'b1) && (way_match[0] == 1'b1));
-assign way_dmem_we[1] = ((refill_ready == 1'b1) && (refill_way_select[1] == 1'b1)) || ((valid_store == 1'b1) && (way_match[1] == 1'b1));
-assign way_tmem_we[0] = ((refill_ready == 1'b1) && (refill_way_select[0] == 1'b1)) || (flushing == 1'b1);
-assign way_tmem_we[1] = ((refill_ready == 1'b1) && (refill_way_select[1] == 1'b1)) || (flushing == 1'b1);
-    end
-endgenerate
-
-// On the last refill cycle set the valid bit, for all other writes it should be cleared
-assign tmem_write_data[0] = ((last_refill == 1'b1) || (valid_store == 1'b1)) && (flushing == 1'b0);
-assign tmem_write_data[((addr_tag_width+1)-1):1] = refill_address[addr_tag_msb:addr_tag_lsb];
-
-// Signals that indicate which state we are in
-assign flushing = state[0];
-assign check = state[1];
-assign refill = state[2];
-
-assign miss = (~(|way_match)) && (load_q_m == 1'b1) && (stall_m == 1'b0)
-        && (~dtlb_miss_x)
-        ;
-assign stall_request = (check == 1'b0);
-
-/////////////////////////////////////////////////////
-// Sequential logic
-/////////////////////////////////////////////////////
-
-// Record way selected for replacement on a cache miss
-generate
-    if (associativity >= 2)
-    begin : way_select
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-        refill_way_select <= {{associativity-1{1'b0}}, 1'b1};
-    else
-    begin
-        if (refill_request == 1'b1)
-            refill_way_select <= {refill_way_select[0], refill_way_select[1]};
-    end
-end
-    end
-endgenerate
-
-// Record whether we are currently refilling
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-        refilling <= 1'b0;
-    else
-        refilling <= refill;
-end
-
-// Instruction cache control FSM
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        state <= 3'b001;
-        flush_set <= {addr_set_width{1'b1}};
-        refill_request <= 1'b0;
-        refill_address <= {32{1'bx}};
-        restart_request <= 1'b0;
-    end
-    else
-    begin
-        case (state)
-
-        // Flush the cache
-        3'b001:
-        begin
-            if (flush_set == {addr_set_width{1'b0}})
-                state <= 3'b010;
-            flush_set <= flush_set - 1'b1;
-        end
-
-        // Check for cache misses
-        3'b010:
-        begin
-            if (stall_a == 1'b0)
-                restart_request <= 1'b0;
-            if (miss == 1'b1)
-            begin
-                refill_request <= 1'b1;
-                refill_address <= address_m;
-                state <= 3'b100;
-            end
-            else if (dflush == 1'b1)
-                state <= 3'b001;
-        end
-
-        // Refill a cache line
-        3'b100:
-        begin
-            refill_request <= 1'b0;
-            if (refill_ready == 1'b1)
-            begin
-                if (last_refill == 1'b1)
-                begin
-                    restart_request <= 1'b1;
-                    state <= 3'b010;
-                end
-            end
-        end
-
-        endcase
-    end
-end
-
-generate
-    if (bytes_per_line > 4)
-    begin
-// Refill offset
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-        refill_offset <= {addr_offset_width{1'b0}};
-    else
-    begin
-        case (state)
-
-        // Check for cache misses
-        3'b010:
-        begin
-            if (miss == 1'b1)
-                refill_offset <= {addr_offset_width{1'b0}};
-        end
-
-        // Refill a cache line
-        3'b100:
-        begin
-            if (refill_ready == 1'b1)
-                refill_offset <= refill_offset + 1'b1;
-        end
-
-        endcase
-    end
-end
-    end
-endgenerate
-
-endmodule
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_debug.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_debug.v
deleted file mode 100644
index 12984d7..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_debug.v
+++ /dev/null
@@ -1,477 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_debug.v
-// Title            : Hardware debug registers and associated logic.
-// Dependencies     : lm32_include.v
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : Fixed simulation bug which flares up when number of
-//                  : watchpoints is zero.
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-
-// States for single-step FSM
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_debug (
-    // ----- Inputs -------
-    clk_i,
-    rst_i,
-    pc_x,
-    load_x,
-    store_x,
-    load_store_address_x,
-    csr_write_enable_x,
-    csr_write_data,
-    csr_x,
-    eret_q_x,
-    bret_q_x,
-    stall_x,
-    exception_x,
-    q_x,
-    dcache_refill_request,
-    // ----- Outputs -------
-    dc_ss,
-    dc_re,
-    bp_match,
-    wp_match
-    );
-
-/////////////////////////////////////////////////////
-// Parameters
-/////////////////////////////////////////////////////
-
-parameter breakpoints = 0;                      // Number of breakpoint CSRs
-parameter watchpoints = 0;                      // Number of watchpoint CSRs
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input clk_i;                                    // Clock
-input rst_i;                                    // Reset
-
-input [((32-2)+2-1):2] pc_x;                      // X stage PC
-input load_x;                                   // Load instruction in X stage
-input store_x;                                  // Store instruction in X stage
-input [(32-1):0] load_store_address_x;    // Load or store effective address
-input csr_write_enable_x;                       // wcsr instruction in X stage
-input [(32-1):0] csr_write_data;          // Data to write to CSR
-input [(5-1):0] csr_x;                    // Which CSR to write
-input eret_q_x;                                 // eret instruction in X stage
-input bret_q_x;                                 // bret instruction in X stage
-input stall_x;                                  // Instruction in X stage is stalled
-input exception_x;                              // An exception has occured in X stage
-input q_x;                                      // Indicates the instruction in the X stage is qualified
-input dcache_refill_request;                    // Indicates data cache wants to be refilled
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-output dc_ss;                                   // Single-step enable
-reg    dc_ss;
-output dc_re;                                   // Remap exceptions
-reg    dc_re;
-output bp_match;                                // Indicates a breakpoint has matched
-wire   bp_match;
-output wp_match;                                // Indicates a watchpoint has matched
-wire   wp_match;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-genvar i;                                       // Loop index for generate statements
-
-// Debug CSRs
-
-reg [((32-2)+2-1):2] bp_a[0:breakpoints-1];       // Instruction breakpoint address
-reg bp_e[0:breakpoints-1];                      // Instruction breakpoint enable
-wire [0:breakpoints-1]bp_match_n;               // Indicates if a h/w instruction breakpoint matched
-
-reg [1:0] wpc_c[0:watchpoints-1];   // Watchpoint enable
-reg [(32-1):0] wp[0:watchpoints-1];       // Watchpoint address
-wire [0:watchpoints-1]wp_match_n;               // Indicates if a h/w data watchpoint matched
-
-wire debug_csr_write_enable;                    // Debug CSR write enable (from either a wcsr instruction of external debugger)
-wire [(32-1):0] debug_csr_write_data;     // Data to write to debug CSR
-wire [(5-1):0] debug_csr;                 // Debug CSR to write to
-
-// FIXME: Declaring this as a reg causes ModelSim 6.1.15b to crash, so use integer for now
-//reg [`LM32_DEBUG_SS_STATE_RNG] state;           // State of single-step FSM
-integer state;                                  // State of single-step FSM
-
-/////////////////////////////////////////////////////
-// Functions
-/////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////
-// Combinational Logic
-/////////////////////////////////////////////////////
-
-// Check for breakpoints
-generate
-    for (i = 0; i < breakpoints; i = i + 1)
-    begin : bp_comb
-assign bp_match_n[i] = ((bp_a[i] == pc_x) && (bp_e[i] == 1'b1));
-    end
-endgenerate
-generate
-    if (breakpoints > 0)
-assign bp_match = (|bp_match_n) || (state == 3'b011);
-    else
-assign bp_match = state == 3'b011;
-endgenerate
-
-// Check for watchpoints
-generate
-    for (i = 0; i < watchpoints; i = i + 1)
-    begin : wp_comb
-assign wp_match_n[i] = (wp[i] == load_store_address_x) && ((load_x & wpc_c[i][0]) | (store_x & wpc_c[i][1]));
-    end
-endgenerate
-generate
-    if (watchpoints > 0)
-assign wp_match = |wp_match_n;
-    else
-assign wp_match = 1'b0;
-endgenerate
-
-assign debug_csr_write_enable = csr_write_enable_x;
-assign debug_csr_write_data = csr_write_data;
-assign debug_csr = csr_x;
-
-/////////////////////////////////////////////////////
-// Sequential Logic
-/////////////////////////////////////////////////////
-
-// Breakpoint address and enable CSRs
-generate
-    for (i = 0; i < breakpoints; i = i + 1)
-    begin : bp_seq
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        bp_a[i] <= {(32-2){1'bx}};
-        bp_e[i] <= 1'b0;
-    end
-    else
-    begin
-        if ((debug_csr_write_enable == 1'b1) && (debug_csr == 5'h10 + i))
-        begin
-            bp_a[i] <= debug_csr_write_data[((32-2)+2-1):2];
-            bp_e[i] <= debug_csr_write_data[0];
-        end
-    end
-end
-    end
-endgenerate
-
-// Watchpoint address and control flags CSRs
-generate
-    for (i = 0; i < watchpoints; i = i + 1)
-    begin : wp_seq
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        wp[i] <= {32{1'bx}};
-        wpc_c[i] <= 2'b00;
-    end
-    else
-    begin
-        if (debug_csr_write_enable == 1'b1)
-        begin
-            if (debug_csr == 5'h8)
-                wpc_c[i] <= debug_csr_write_data[3+i*2:2+i*2];
-            if (debug_csr == 5'h18 + i)
-                wp[i] <= debug_csr_write_data;
-        end
-    end
-end
-    end
-endgenerate
-
-// Remap exceptions control bit
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-        dc_re <= 1'b0;
-    else
-    begin
-        if ((debug_csr_write_enable == 1'b1) && (debug_csr == 5'h8))
-            dc_re <= debug_csr_write_data[1];
-    end
-end
-
-// Single-step control flag
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        state <= 3'b000;
-        dc_ss <= 1'b0;
-    end
-    else
-    begin
-        if ((debug_csr_write_enable == 1'b1) && (debug_csr == 5'h8))
-        begin
-            dc_ss <= debug_csr_write_data[0];
-            if (debug_csr_write_data[0] == 1'b0)
-                state <= 3'b000;
-            else
-                state <= 3'b001;
-        end
-        case (state)
-        3'b001:
-        begin
-            // Wait for eret or bret instruction to be executed
-            if (   (   (eret_q_x == 1'b1)
-                    || (bret_q_x == 1'b1)
-                    )
-                && (stall_x == 1'b0)
-               )
-                state <= 3'b010;
-        end
-        3'b010:
-        begin
-            // Wait for an instruction to be executed
-            if ((q_x == 1'b1) && (stall_x == 1'b0))
-                state <= 3'b011;
-        end
-        3'b011:
-        begin
-            // Wait for exception to be raised
-            if (dcache_refill_request == 1'b1)
-                state <= 3'b010;
-            else
-                 if ((exception_x == 1'b1) && (q_x == 1'b1) && (stall_x == 1'b0))
-            begin
-                dc_ss <= 1'b0;
-                state <= 3'b100;
-            end
-        end
-        3'b100:
-        begin
-            // Watch to see if stepped instruction is restarted due to a cache miss
-            if (dcache_refill_request == 1'b1)
-                state <= 3'b010;
-            else
-                state <= 3'b000;
-        end
-        endcase
-    end
-end
-
-endmodule
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_decoder.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_decoder.v
deleted file mode 100644
index d5babdd..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_decoder.v
+++ /dev/null
@@ -1,557 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_decoder.v
-// Title            : Instruction decoder
-// Dependencies     : lm32_include.v
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : Support for static branch prediction. Information about
-//                  : branch type is generated and passed on to the predictor.
-// Version          : 3.2
-//                  : No change
-// Version          : 3.3
-//                  : Renamed port names that conflict with keywords reserved
-//                  : in System-Verilog.
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-// Index of opcode field in an instruction
-
-// Opcodes - Some are only listed as 5 bits as their MSB is a don't care
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_decoder (
-    // ----- Inputs -------
-    instruction,
-    // ----- Outputs -------
-    d_result_sel_0,
-    d_result_sel_1,
-    x_result_sel_csr,
-    x_result_sel_mc_arith,
-    x_result_sel_sext,
-    x_result_sel_logic,
-    x_result_sel_add,
-    m_result_sel_compare,
-    m_result_sel_shift,
-    w_result_sel_load,
-    w_result_sel_mul,
-    x_bypass_enable,
-    m_bypass_enable,
-    read_enable_0,
-    read_idx_0,
-    read_enable_1,
-    read_idx_1,
-    write_enable,
-    write_idx,
-    immediate,
-    branch_offset,
-    load,
-    store,
-    size,
-    sign_extend,
-    adder_op,
-    logic_op,
-    direction,
-    divide,
-    modulus,
-    branch,
-    branch_reg,
-    condition,
-    bi_conditional,
-    bi_unconditional,
-    break_opcode,
-    scall,
-    eret,
-    bret,
-    csr_write_enable
-    );
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input [(32-1):0] instruction;       // Instruction to decode
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-output [0:0] d_result_sel_0;
-reg    [0:0] d_result_sel_0;
-output [1:0] d_result_sel_1;
-reg    [1:0] d_result_sel_1;
-output x_result_sel_csr;
-reg    x_result_sel_csr;
-output x_result_sel_mc_arith;
-reg    x_result_sel_mc_arith;
-output x_result_sel_sext;
-reg    x_result_sel_sext;
-output x_result_sel_logic;
-reg    x_result_sel_logic;
-output x_result_sel_add;
-reg    x_result_sel_add;
-output m_result_sel_compare;
-reg    m_result_sel_compare;
-output m_result_sel_shift;
-reg    m_result_sel_shift;
-output w_result_sel_load;
-reg    w_result_sel_load;
-output w_result_sel_mul;
-reg    w_result_sel_mul;
-output x_bypass_enable;
-wire   x_bypass_enable;
-output m_bypass_enable;
-wire   m_bypass_enable;
-output read_enable_0;
-wire   read_enable_0;
-output [(5-1):0] read_idx_0;
-wire   [(5-1):0] read_idx_0;
-output read_enable_1;
-wire   read_enable_1;
-output [(5-1):0] read_idx_1;
-wire   [(5-1):0] read_idx_1;
-output write_enable;
-wire   write_enable;
-output [(5-1):0] write_idx;
-wire   [(5-1):0] write_idx;
-output [(32-1):0] immediate;
-wire   [(32-1):0] immediate;
-output [((32-2)+2-1):2] branch_offset;
-wire   [((32-2)+2-1):2] branch_offset;
-output load;
-wire   load;
-output store;
-wire   store;
-output [1:0] size;
-wire   [1:0] size;
-output sign_extend;
-wire   sign_extend;
-output adder_op;
-wire   adder_op;
-output [3:0] logic_op;
-wire   [3:0] logic_op;
-output direction;
-wire   direction;
-output divide;
-wire   divide;
-output modulus;
-wire   modulus;
-output branch;
-wire   branch;
-output branch_reg;
-wire   branch_reg;
-output [(3-1):0] condition;
-wire   [(3-1):0] condition;
-output bi_conditional;
-wire bi_conditional;
-output bi_unconditional;
-wire bi_unconditional;
-output break_opcode;
-wire   break_opcode;
-output scall;
-wire   scall;
-output eret;
-wire   eret;
-output bret;
-wire   bret;
-output csr_write_enable;
-wire   csr_write_enable;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-wire [(32-1):0] extended_immediate;       // Zero or sign extended immediate
-wire [(32-1):0] high_immediate;           // Immediate as high 16 bits
-wire [(32-1):0] call_immediate;           // Call immediate
-wire [(32-1):0] branch_immediate;         // Conditional branch immediate
-wire sign_extend_immediate;                     // Whether the immediate should be sign extended (`TRUE) or zero extended (`FALSE)
-wire select_high_immediate;                     // Whether to select the high immediate
-wire select_call_immediate;                     // Whether to select the call immediate
-
-/////////////////////////////////////////////////////
-// Functions
-/////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////
-// Combinational logic
-/////////////////////////////////////////////////////
-
-// Determine opcode
-assign op_add    = instruction[30:26] == 5'b01101;
-assign op_and    = instruction[30:26] == 5'b01000;
-assign op_andhi  = instruction[31:26] == 6'b011000;
-assign op_b      = instruction[31:26] == 6'b110000;
-assign op_bi     = instruction[31:26] == 6'b111000;
-assign op_be     = instruction[31:26] == 6'b010001;
-assign op_bg     = instruction[31:26] == 6'b010010;
-assign op_bge    = instruction[31:26] == 6'b010011;
-assign op_bgeu   = instruction[31:26] == 6'b010100;
-assign op_bgu    = instruction[31:26] == 6'b010101;
-assign op_bne    = instruction[31:26] == 6'b010111;
-assign op_call   = instruction[31:26] == 6'b110110;
-assign op_calli  = instruction[31:26] == 6'b111110;
-assign op_cmpe   = instruction[30:26] == 5'b11001;
-assign op_cmpg   = instruction[30:26] == 5'b11010;
-assign op_cmpge  = instruction[30:26] == 5'b11011;
-assign op_cmpgeu = instruction[30:26] == 5'b11100;
-assign op_cmpgu  = instruction[30:26] == 5'b11101;
-assign op_cmpne  = instruction[30:26] == 5'b11111;
-assign op_divu   = instruction[31:26] == 6'b100011;
-assign op_lb     = instruction[31:26] == 6'b000100;
-assign op_lbu    = instruction[31:26] == 6'b010000;
-assign op_lh     = instruction[31:26] == 6'b000111;
-assign op_lhu    = instruction[31:26] == 6'b001011;
-assign op_lw     = instruction[31:26] == 6'b001010;
-assign op_modu   = instruction[31:26] == 6'b110001;
-assign op_mul    = instruction[30:26] == 5'b00010;
-assign op_nor    = instruction[30:26] == 5'b00001;
-assign op_or     = instruction[30:26] == 5'b01110;
-assign op_orhi   = instruction[31:26] == 6'b011110;
-assign op_raise  = instruction[31:26] == 6'b101011;
-assign op_rcsr   = instruction[31:26] == 6'b100100;
-assign op_sb     = instruction[31:26] == 6'b001100;
-assign op_sextb  = instruction[31:26] == 6'b101100;
-assign op_sexth  = instruction[31:26] == 6'b110111;
-assign op_sh     = instruction[31:26] == 6'b000011;
-assign op_sl     = instruction[30:26] == 5'b01111;
-assign op_sr     = instruction[30:26] == 5'b00101;
-assign op_sru    = instruction[30:26] == 5'b00000;
-assign op_sub    = instruction[31:26] == 6'b110010;
-assign op_sw     = instruction[31:26] == 6'b010110;
-assign op_user   = instruction[31:26] == 6'b110011;
-assign op_wcsr   = instruction[31:26] == 6'b110100;
-assign op_xnor   = instruction[30:26] == 5'b01001;
-assign op_xor    = instruction[30:26] == 5'b00110;
-
-// Group opcodes by function
-assign arith = op_add | op_sub;
-assign logical = op_and | op_andhi | op_nor | op_or | op_orhi | op_xor | op_xnor;
-assign cmp = op_cmpe | op_cmpg | op_cmpge | op_cmpgeu | op_cmpgu | op_cmpne;
-assign bi_conditional = op_be | op_bg | op_bge | op_bgeu  | op_bgu | op_bne;
-assign bi_unconditional = op_bi;
-assign bra = op_b | bi_unconditional | bi_conditional;
-assign call = op_call | op_calli;
-assign shift = op_sl | op_sr | op_sru;
-assign sext = op_sextb | op_sexth;
-assign multiply = op_mul;
-assign divide = op_divu;
-assign modulus = op_modu;
-assign load = op_lb | op_lbu | op_lh | op_lhu | op_lw;
-assign store = op_sb | op_sh | op_sw;
-
-// Select pipeline multiplexor controls
-always @(*)
-begin
-    // D stage
-    if (call)
-        d_result_sel_0 = 1'b1;
-    else
-        d_result_sel_0 = 1'b0;
-    if (call)
-        d_result_sel_1 = 2'b00;
-    else if ((instruction[31] == 1'b0) && !bra)
-        d_result_sel_1 = 2'b10;
-    else
-        d_result_sel_1 = 2'b01;
-    // X stage
-    x_result_sel_csr = 1'b0;
-    x_result_sel_mc_arith = 1'b0;
-    x_result_sel_sext = 1'b0;
-    x_result_sel_logic = 1'b0;
-    x_result_sel_add = 1'b0;
-    if (op_rcsr)
-        x_result_sel_csr = 1'b1;
-    else if (divide | modulus)
-        x_result_sel_mc_arith = 1'b1;
-    else if (sext)
-        x_result_sel_sext = 1'b1;
-    else if (logical)
-        x_result_sel_logic = 1'b1;
-    else
-        x_result_sel_add = 1'b1;
-
-    // M stage
-
-    m_result_sel_compare = cmp;
-    m_result_sel_shift = shift;
-
-    // W stage
-    w_result_sel_load = load;
-    w_result_sel_mul = op_mul;
-end
-
-// Set if result is valid at end of X stage
-assign x_bypass_enable =  arith
-                        | logical
-                        | divide
-                        | modulus
-                        | sext
-                        | op_rcsr
-                        ;
-// Set if result is valid at end of M stage
-assign m_bypass_enable = x_bypass_enable
-                        | shift
-                        | cmp
-                        ;
-// Register file read port 0
-assign read_enable_0 = ~(op_bi | op_calli);
-assign read_idx_0 = instruction[25:21];
-// Register file read port 1
-assign read_enable_1 = ~(op_bi | op_calli | load);
-assign read_idx_1 = instruction[20:16];
-// Register file write port
-assign write_enable = ~(bra | op_raise | store | op_wcsr);
-assign write_idx = call
-                    ? 5'd29
-                    : instruction[31] == 1'b0
-                        ? instruction[20:16]
-                        : instruction[15:11];
-
-// Size of load/stores
-assign size = instruction[27:26];
-// Whether to sign or zero extend
-assign sign_extend = instruction[28];
-// Set adder_op to 1 to perform a subtraction
-assign adder_op = op_sub | op_cmpe | op_cmpg | op_cmpge | op_cmpgeu | op_cmpgu | op_cmpne | bra;
-// Logic operation (and, or, etc)
-assign logic_op = instruction[29:26];
-// Shift direction
-assign direction = instruction[29];
-// Control flow microcodes
-assign branch = bra | call;
-assign branch_reg = op_call | op_b;
-assign condition = instruction[28:26];
-assign break_opcode = op_raise & ~instruction[2];
-assign scall = op_raise & instruction[2];
-assign eret = op_b & (instruction[25:21] == 5'd30);
-assign bret = op_b & (instruction[25:21] == 5'd31);
-// CSR read/write
-assign csr_write_enable = op_wcsr;
-
-// Extract immediate from instruction
-
-assign sign_extend_immediate = ~(op_and | op_cmpgeu | op_cmpgu | op_nor | op_or | op_xnor | op_xor);
-assign select_high_immediate = op_andhi | op_orhi;
-assign select_call_immediate = instruction[31];
-
-assign high_immediate = {instruction[15:0], 16'h0000};
-assign extended_immediate = {{16{sign_extend_immediate & instruction[15]}}, instruction[15:0]};
-assign call_immediate = {{6{instruction[25]}}, instruction[25:0]};
-assign branch_immediate = {{16{instruction[15]}}, instruction[15:0]};
-
-assign immediate = select_high_immediate == 1'b1
-                        ? high_immediate
-                        : extended_immediate;
-
-assign branch_offset = select_call_immediate == 1'b1
-                        ? call_immediate
-                        : branch_immediate;
-
-endmodule
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_dp_ram.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_dp_ram.v
deleted file mode 100644
index b33adcf..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_dp_ram.v
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * LatticeMico32
- * True dual-ported RAM
- *
- * Copyright (c) 2012 Michael Walle <michael@walle.cc>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_dp_ram (
-    // ----- Inputs -------
-    clk_a,
-    clk_b,
-    ce_a,
-    ce_b,
-    addr_a,
-    addr_b,
-    di_a,
-    di_b,
-    we_a,
-    we_b,
-    // ----- Outputs -------
-    do_a,
-    do_b
-    );
-
-/////////////////////////////////////////////////////
-// Parameters
-/////////////////////////////////////////////////////
-
-parameter data_width = 1;               // Width of the data ports
-parameter address_width = 1;            // Width of the address ports
-parameter init_file = "NONE";           // Initialization file
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input clk_a;                            // Clock port A
-input clk_b;                            // Clock port B
-
-input ce_a;                             // Clock enable port A
-input ce_b;                             // Clock enable port B
-input [address_width-1:0] addr_a;       // Read/write address port A
-input [address_width-1:0] addr_b;       // Read/write address port B
-input [data_width-1:0] di_a;            // Data input port A
-input [data_width-1:0] di_b;            // Data input port B
-input we_a;                             // Write enable port A
-input we_b;                             // Write enable port B
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-output [data_width-1:0] do_a;           // Data output port A
-wire   [data_width-1:0] do_a;
-
-output [data_width-1:0] do_b;           // Data output port B
-wire   [data_width-1:0] do_b;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-reg [data_width-1:0]    mem[0:(1<<address_width)-1];
-reg [address_width-1:0] ra_a;           // Registered read address port A
-reg [address_width-1:0] ra_b;           // Registered read address port B
-
-/////////////////////////////////////////////////////
-// Functions
-/////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////
-// Instantiations
-/////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////
-// Combinational logic
-/////////////////////////////////////////////////////
-
-// Read ports
-assign do_a = mem[ra_a];
-assign do_b = mem[ra_b];
-
-/////////////////////////////////////////////////////
-// Sequential logic
-/////////////////////////////////////////////////////
-
-// Write ports
-always @(posedge clk_a)
-    if ((ce_a == 1'b1) && (we_a == 1'b1))
-        mem[addr_a] <= di_a;
-
-always @(posedge clk_b)
-    if ((ce_b == 1'b1) && (we_b == 1'b1))
-        mem[addr_b] <= di_b;
-
-// Register read addresses for use on next cycle
-always @(posedge clk_a)
-    if (ce_a == 1'b1)
-        ra_a <= addr_a;
-
-always @(posedge clk_b)
-    if (ce_b == 1'b1)
-        ra_b <= addr_b;
-
-/////////////////////////////////////////////////////
-// Initialization
-/////////////////////////////////////////////////////
-
-generate
-    if (init_file != "NONE")
-    begin
-initial $readmemh(init_file, mem);
-    end
-endgenerate
-    
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_dtlb.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_dtlb.v
deleted file mode 100644
index 555c863..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_dtlb.v
+++ /dev/null
@@ -1,449 +0,0 @@
-/*
- * LatticeMico32
- * Data Translation Lookaside Buffer
- *
- * Copyright (c) 2011-2012 Yann Sionneau <yann.sionneau@gmail.com>
- * Copyright (c) 2012 Michael Walle <michael@walle.cc>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-
-
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_dtlb (
-    // ----- Inputs -------
-    clk_i,
-    rst_i,
-    enable,
-    stall_x,
-    stall_m,
-    address_x,
-    address_m,
-    load_d,
-    store_d,
-    load_q_x,
-    store_q_x,
-    load_q_m,
-    store_q_m,
-    tlbpaddr,
-    tlbvaddr,
-    update,
-    flush,
-    invalidate,
-    // ----- Outputs -----
-    physical_load_store_address_m,
-    stall_request,
-    miss_vfn,
-    miss_x,
-    fault_x,
-    cache_inhibit_x
-    );
-
-/////////////////////////////////////////////////////
-// Parameters
-/////////////////////////////////////////////////////
-
-parameter entries = 1024;               // Number of entries in DTLB
-parameter page_size = 4096;             // DTLB page size
-
-localparam offset_width = $clog2;
-localparam index_width = $clog2;
-localparam offset_lsb = 0;
-localparam offset_msb = (offset_lsb+offset_width-1);
-localparam index_lsb = (offset_msb+1);
-localparam index_msb = (index_lsb+index_width-1);
-localparam tag_lsb = (index_msb+1);
-localparam tag_msb = (32-1);
-localparam tag_width = (tag_msb-tag_lsb+1);
-localparam vpfn_lsb = (offset_msb+1);
-localparam vpfn_msb = (32-1);
-localparam vpfn_width = (vpfn_msb-vpfn_lsb+1);
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input clk_i;                            // Clock
-input rst_i;                            // Reset
-
-input enable;                           // Data TLB enable
-
-input stall_x;                          // Stall X stage
-input stall_m;                          // Stall M stage
-
-input [(32-1):0] address_x;       // X stage load/store address
-input [(32-1):0] address_m;       // M stage load/store address
-input load_d;                           // Load instruction in D stage
-input store_d;                          // Store instruction in D stage
-input load_q_x;                         // Load instruction in X stage
-input store_q_x;                        // Store instruction in X stage
-input load_q_m;                         // Load instruction in M stage
-input store_q_m;                        // Store instruction in M stage
-
-input [(32-1):0] tlbpaddr;
-input [(32-1):0] tlbvaddr;
-input update;
-input flush;
-input invalidate;
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-output [(32-1):0] physical_load_store_address_m;
-wire   [(32-1):0] physical_load_store_address_m;
-output stall_request;
-wire   stall_request;
-output [(32-1):0] miss_vfn;
-wire   [(32-1):0] miss_vfn;
-output miss_x;
-wire   miss_x;
-output fault_x;
-wire   fault_x;
-output cache_inhibit_x;
-wire   cache_inhibit_x;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-wire [(index_width-1):0] read_address;
-wire [(index_width-1):0] write_address;
-wire [((vpfn_width+tag_width+3)  -1):0] write_data;
-wire [((vpfn_width+tag_width+3)  -1):0] tlbe;
-wire [((vpfn_width+tag_width+3)  -1):0] tlbe_inval;
-wire [tag_msb:tag_lsb] tlbe_tag_x;
-wire [vpfn_msb:vpfn_lsb] tlbe_pfn_x;
-wire tlbe_valid_x;
-wire tlbe_ro_x;
-wire tlbe_ci_x;
-wire checking;
-wire flushing;
-wire write_port_enable;
-
-reg [1:0] state;                         // Current state of FSM
-reg [(index_width-1):0] flush_set;
-reg [vpfn_msb:vpfn_lsb] tlbe_pfn_m;
-reg lookup;
-
-
-/////////////////////////////////////////////////////
-// Functions
-/////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////
-// Instantiations
-/////////////////////////////////////////////////////
-
-lm32_ram
-  #(
-    // ----- Parameters -------
-    .data_width ((vpfn_width+tag_width+3)  ),
-    .address_width (index_width)
-// Modified for Milkymist: removed non-portable RAM parameters
-    ) data_ram
-    (
-     // ----- Inputs -------
-     .read_clk (clk_i),
-     .write_clk (clk_i),
-     .reset (rst_i),
-     .read_address (read_address),
-     .enable_read (lookup),
-     .write_address (write_address),
-     .enable_write (1'b1),
-     .write_enable (write_port_enable),
-     .write_data (write_data),
-     // ----- Outputs -------
-     .read_data ({tlbe_pfn_x, tlbe_tag_x, tlbe_ci_x, tlbe_ro_x, tlbe_valid_x})
-     );
-
-/////////////////////////////////////////////////////
-// Combinational logic
-/////////////////////////////////////////////////////
-
-// Compute address to use to index into the DTLB data memory
-assign read_address = address_x[index_msb:index_lsb];
-
-// tlb_update_address will receive data from a CSR register
-assign write_address = (flushing == 1'b1)
-                            ? flush_set
-                            : tlbvaddr[index_msb:index_lsb];
-
-assign write_port_enable = (update == 1'b1) || (invalidate == 1'b1) || (flushing == 1'b1);
-
-assign physical_load_store_address_m = (enable == 1'b0)
-                ? address_m
-                : {tlbe_pfn_m, address_m[offset_msb:offset_lsb]};
-
-assign tlbe = {
-        tlbpaddr[vpfn_msb:vpfn_lsb],     // pfn
-        tlbvaddr[tag_msb:tag_lsb],      // tag
-        tlbpaddr[2],                       // cache inhibit
-        tlbpaddr[1],                       // read only
-        1'b1};                            // valid
-assign tlbe_inval = {{(vpfn_width+tag_width+3)  -1{1'b0}}, 1'b0};
-assign write_data = ((invalidate == 1'b1) || (flushing)) ? tlbe_inval : tlbe;
-
-
-assign tlbe_match = ({tlbe_tag_x, tlbe_valid_x} == {address_x[tag_msb:tag_lsb], 1'b1});
-
-assign miss_vfn = {address_x[vpfn_msb:vpfn_lsb], {offset_width{1'b0}}};
-assign miss_x = ((enable == 1'b1) && ((load_q_x == 1'b1) || (store_q_x == 1'b1)) && (tlbe_match == 1'b0) && (lookup == 1'b0));
-assign cache_inhibit_x = ((enable == 1'b1) && (tlbe_ci_x == 1'b1));
-assign fault_x = ((enable == 1'b1) && (store_q_x == 1'b1) && (tlbe_match == 1'b1) && (tlbe_ro_x == 1'b1));
-
-assign checking = state[0];
-assign flushing = state[1];
-assign stall_request = (flushing == 1'b1) || (lookup == 1'b1);
-
-/////////////////////////////////////////////////////
-// Sequential logic
-/////////////////////////////////////////////////////
-
-// Lookup logic
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-        lookup <= 1'b0;
-    else
-    begin
-        if ((enable == 1'b1) && (stall_x == 1'b0) && ((load_d == 1'b1) || (store_d == 1'b1)))
-            lookup <= 1'b1;
-        else
-            lookup <= 1'b0;
-    end
-end
-
-// X/M stage registers
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-        tlbe_pfn_m <= {vpfn_width{1'bx}};
-    else if (stall_m == 1'b0)
-        tlbe_pfn_m <= tlbe_pfn_x;
-end
-
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        flush_set <= {index_width{1'b1}};
-        state <= 2'b10;
-    end
-    else
-    begin
-        case (state)
-
-        2'b01:
-        begin
-            if (flush == 1'b1) begin
-                flush_set <= {index_width{1'b1}};
-                state <= 2'b10;
-            end
-        end
-
-        2'b10:
-        begin
-            if (flush_set == {index_width{1'b0}})
-                state <= 2'b01;
-            flush_set <= flush_set - 1'b1;
-        end
-
-        endcase
-    end
-end
-
-endmodule
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_icache.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_icache.v
deleted file mode 100644
index da82343..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_icache.v
+++ /dev/null
@@ -1,621 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_icache.v
-// Title            : Instruction cache
-// Dependencies     : lm32_include.v
-//
-// Version 3.5
-// 1. Bug Fix: Instruction cache flushes issued from Instruction Inline Memory
-//    cause segmentation fault due to incorrect fetches.
-//
-// Version 3.1
-// 1. Feature: Support for user-selected resource usage when implementing
-//    cache memory. Additional parameters must be defined when invoking module
-//    lm32_ram. Instruction cache miss mechanism is dependent on branch
-//    prediction being performed in D stage of pipeline.
-//
-// Version 7.0SP2, 3.0
-// No change
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-
-
-
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_icache (
-    // ----- Inputs -----
-    clk_i,
-    rst_i,
-    stall_a,
-    stall_f,
-    address_a,
-    address_f,
-    physical_address_f,
-    read_enable_f,
-    refill_ready,
-    refill_data,
-    iflush,
-    valid_d,
-    branch_predict_taken_d,
-    // ----- Outputs -----
-    stall_request,
-    restart_request,
-    refill_request,
-    refill_address,
-    physical_refill_address,
-    refilling,
-    inst
-    );
-
-/////////////////////////////////////////////////////
-// Parameters
-/////////////////////////////////////////////////////
-
-parameter associativity = 1;                            // Associativity of the cache (Number of ways)
-parameter sets = 512;                                   // Number of sets
-parameter bytes_per_line = 16;                          // Number of bytes per cache line
-parameter base_address = 0;                             // Base address of cachable memory
-parameter limit = 0;                                    // Limit (highest address) of cachable memory
-
-localparam addr_offset_width = $clog2-2;
-localparam addr_set_width = $clog2;
-localparam addr_offset_lsb = 2;
-localparam addr_offset_msb = (addr_offset_lsb+addr_offset_width-1);
-localparam addr_set_lsb = (addr_offset_msb+1);
-localparam addr_set_msb = (addr_set_lsb+addr_set_width-1);
-localparam addr_tag_lsb = (addr_offset_msb+1);
-localparam addr_tag_msb = $clog2;
-localparam addr_tag_width = (addr_tag_msb-addr_tag_lsb+1);
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input clk_i;                                        // Clock
-input rst_i;                                        // Reset
-
-input stall_a;                                      // Stall instruction in A stage
-input stall_f;                                      // Stall instruction in F stage
-
-input valid_d;                                      // Valid instruction in D stage
-input branch_predict_taken_d;                       // Instruction in D stage is a branch and is predicted taken
-
-input [((32-2)+2-1):2] address_a;                     // Address of instruction in A stage
-input [((32-2)+2-1):2] address_f;                     // Address of instruction in F stage
-input [((32-2)+2-1):2] physical_address_f;            // Physical address of instruction in F stage
-input read_enable_f;                                // Indicates if cache access is valid
-
-input refill_ready;                                 // Next word of refill data is ready
-input [(32-1):0] refill_data;          // Data to refill the cache with
-
-input iflush;                                       // Flush the cache
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-output stall_request;                               // Request to stall the pipeline
-wire   stall_request;
-output restart_request;                             // Request to restart instruction that caused the cache miss
-reg    restart_request;
-output refill_request;                              // Request to refill a cache line
-wire   refill_request;
-output [((32-2)+2-1):2] refill_address;               // Base address of cache refill
-reg    [((32-2)+2-1):2] refill_address;
-output [((32-2)+2-1):2] physical_refill_address;      // Physical base address of cache refill
-reg    [((32-2)+2-1):2] physical_refill_address;
-output refilling;                                   // Indicates the instruction cache is currently refilling
-reg    refilling;
-output [(32-1):0] inst;                // Instruction read from cache
-wire   [(32-1):0] inst;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-wire enable;
-wire [0:associativity-1] way_mem_we;
-wire [(32-1):0] way_data[0:associativity-1];
-wire [((addr_tag_width+1)-1):1] way_tag[0:associativity-1];
-wire [0:associativity-1] way_valid;
-wire [0:associativity-1] way_match;
-wire miss;
-
-wire [(addr_set_width-1):0] tmem_read_address;
-wire [(addr_set_width-1):0] tmem_write_address;
-wire [((addr_offset_width+addr_set_width)-1):0] dmem_read_address;
-wire [((addr_offset_width+addr_set_width)-1):0] dmem_write_address;
-wire [((addr_tag_width+1)-1):0] tmem_write_data;
-
-reg [3:0] state;
-wire flushing;
-wire check;
-wire refill;
-
-reg [associativity-1:0] refill_way_select;
-reg [addr_offset_msb:addr_offset_lsb] refill_offset;
-wire last_refill;
-reg [(addr_set_width-1):0] flush_set;
-
-genvar i;
-
-/////////////////////////////////////////////////////
-// Functions
-/////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////
-// Instantiations
-/////////////////////////////////////////////////////
-
-   generate
-      for (i = 0; i < associativity; i = i + 1)
-        begin : memories
-
-           lm32_ram
-             #(
-               // ----- Parameters -------
-               .data_width                 (32),
-               .address_width              ((addr_offset_width+addr_set_width))
-// Modified for Milkymist: removed non-portable RAM parameters
-)
-           way_0_data_ram
-             (
-              // ----- Inputs -------
-              .read_clk                   (clk_i),
-              .write_clk                  (clk_i),
-              .reset                      (rst_i),
-              .read_address               (dmem_read_address),
-              .enable_read                (enable),
-              .write_address              (dmem_write_address),
-              .enable_write               (1'b1),
-              .write_enable               (way_mem_we[i]),
-              .write_data                 (refill_data),
-              // ----- Outputs -------
-              .read_data                  (way_data[i])
-              );
-
-           lm32_ram
-             #(
-               // ----- Parameters -------
-               .data_width                 ((addr_tag_width+1)),
-               .address_width              (addr_set_width)
-// Modified for Milkymist: removed non-portable RAM parameters
-               )
-           way_0_tag_ram
-             (
-              // ----- Inputs -------
-              .read_clk                   (clk_i),
-              .write_clk                  (clk_i),
-              .reset                      (rst_i),
-              .read_address               (tmem_read_address),
-              .enable_read                (enable | flushing),
-              .write_address              (tmem_write_address),
-              .enable_write               (1'b1),
-              .write_enable               (way_mem_we[i] | flushing),
-              .write_data                 (tmem_write_data),
-              // ----- Outputs -------
-              .read_data                  ({way_tag[i], way_valid[i]})
-              );
-
-        end
-endgenerate
-
-/////////////////////////////////////////////////////
-// Combinational logic
-/////////////////////////////////////////////////////
-
-// Compute which ways in the cache match the address address being read
-generate
-    for (i = 0; i < associativity; i = i + 1)
-    begin : match
-assign way_match[i] =
-        ({way_tag[i], way_valid[i]} == {physical_address_f[addr_tag_msb:addr_tag_lsb], 1'b1});
-    end
-endgenerate
-
-// Select data from way that matched the address being read
-generate
-    if (associativity == 1)
-    begin : inst_1
-assign inst = way_match[0] ? way_data[0] : 32'b0;
-    end
-    else if (associativity == 2)
-         begin : inst_2
-assign inst = way_match[0] ? way_data[0] : (way_match[1] ? way_data[1] : 32'b0);
-    end
-endgenerate
-
-// Compute address to use to index into the data memories
-generate
-    if (bytes_per_line > 4)
-assign dmem_write_address = {refill_address[addr_set_msb:addr_set_lsb], refill_offset};
-    else
-assign dmem_write_address = refill_address[addr_set_msb:addr_set_lsb];
-endgenerate
-
-assign dmem_read_address = address_a[addr_set_msb:addr_offset_lsb];
-
-// Compute address to use to index into the tag memories
-assign tmem_read_address = address_a[addr_set_msb:addr_set_lsb];
-assign tmem_write_address = flushing
-                                ? flush_set
-                                : refill_address[addr_set_msb:addr_set_lsb];
-
-// Compute signal to indicate when we are on the last refill accesses
-generate
-    if (bytes_per_line > 4)
-assign last_refill = refill_offset == {addr_offset_width{1'b1}};
-    else
-assign last_refill = 1'b1;
-endgenerate
-
-// Compute data and tag memory access enable
-assign enable = (stall_a == 1'b0);
-
-// Compute data and tag memory write enables
-generate
-    if (associativity == 1)
-    begin : we_1
-assign way_mem_we[0] = (refill_ready == 1'b1);
-    end
-    else
-    begin : we_2
-assign way_mem_we[0] = (refill_ready == 1'b1) && (refill_way_select[0] == 1'b1);
-assign way_mem_we[1] = (refill_ready == 1'b1) && (refill_way_select[1] == 1'b1);
-    end
-endgenerate
-
-// On the last refill cycle set the valid bit, for all other writes it should be cleared
-assign tmem_write_data[0] = last_refill & !flushing;
-assign tmem_write_data[((addr_tag_width+1)-1):1] =
-       physical_refill_address[addr_tag_msb:addr_tag_lsb];
-
-// Signals that indicate which state we are in
-assign flushing = |state[1:0];
-assign check = state[2];
-assign refill = state[3];
-
-assign miss = (~(|way_match)) && (read_enable_f == 1'b1) && (stall_f == 1'b0) && !(valid_d && branch_predict_taken_d);
-assign stall_request = (check == 1'b0);
-assign refill_request = (refill == 1'b1);
-
-/////////////////////////////////////////////////////
-// Sequential logic
-/////////////////////////////////////////////////////
-
-// Record way selected for replacement on a cache miss
-generate
-    if (associativity >= 2)
-    begin : way_select
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-        refill_way_select <= {{associativity-1{1'b0}}, 1'b1};
-    else
-    begin
-        if (miss == 1'b1)
-            refill_way_select <= {refill_way_select[0], refill_way_select[1]};
-    end
-end
-    end
-endgenerate
-
-// Record whether we are refilling
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-        refilling <= 1'b0;
-    else
-        refilling <= refill;
-end
-
-// Instruction cache control FSM
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        state <= 4'b0001;
-        flush_set <= {addr_set_width{1'b1}};
-        refill_address <= {(32-2){1'b0}};
-        physical_refill_address <= {(32-2){1'b0}};
-        restart_request <= 1'b0;
-    end
-    else
-    begin
-        case (state)
-
-        // Flush the cache for the first time after reset
-        4'b0001:
-        begin
-            if (flush_set == {addr_set_width{1'b0}})
-                state <= 4'b0100;
-            flush_set <= flush_set - 1'b1;
-        end
-
-        // Flush the cache in response to an write to the ICC CSR
-        4'b0010:
-        begin
-            if (flush_set == {addr_set_width{1'b0}})
-                state <= 4'b0100;
-
-            flush_set <= flush_set - 1'b1;
-        end
-
-        // Check for cache misses
-        4'b0100:
-        begin
-            if (stall_a == 1'b0)
-                restart_request <= 1'b0;
-            if (iflush == 1'b1)
-            begin
-                physical_refill_address <= physical_address_f;
-                refill_address <= address_f;
-                state <= 4'b0010;
-            end
-            else if (miss == 1'b1)
-            begin
-                physical_refill_address <= physical_address_f;
-                refill_address <= address_f;
-                state <= 4'b1000;
-            end
-        end
-
-        // Refill a cache line
-        4'b1000:
-        begin
-            if (refill_ready == 1'b1)
-            begin
-                if (last_refill == 1'b1)
-                begin
-                    restart_request <= 1'b1;
-                    state <= 4'b0100;
-                end
-            end
-        end
-
-        endcase
-    end
-end
-
-generate
-    if (bytes_per_line > 4)
-    begin
-// Refill offset
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-        refill_offset <= {addr_offset_width{1'b0}};
-    else
-    begin
-        case (state)
-
-        // Check for cache misses
-        4'b0100:
-        begin
-            if (iflush == 1'b1)
-                refill_offset <= {addr_offset_width{1'b0}};
-            else if (miss == 1'b1)
-                refill_offset <= {addr_offset_width{1'b0}};
-        end
-
-        // Refill a cache line
-        4'b1000:
-        begin
-            if (refill_ready == 1'b1)
-                refill_offset <= refill_offset + 1'b1;
-        end
-
-        endcase
-    end
-end
-    end
-endgenerate
-
-endmodule
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_include.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_include.v
deleted file mode 100644
index e03c77f..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_include.v
+++ /dev/null
@@ -1,163 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_instruction_unit.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_instruction_unit.v
deleted file mode 100644
index dd1dc9f..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_instruction_unit.v
+++ /dev/null
@@ -1,714 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project      : LatticeMico32
-// File         : lm32_instruction_unit.v
-// Title        : Instruction unit
-// Dependencies : lm32_include.v
-// Version      : 6.1.17
-//              : Initial Release
-// Version      : 7.0SP2, 3.0
-//              : No Change
-// Version      : 3.1
-//              : Support for static branch prediction is added. Fetching of
-//              : instructions can also be altered by branches predicted in D
-//              : stage of pipeline, and mispredicted branches in the X and M
-//              : stages of the pipeline.
-// Version      : 3.2
-//              : EBRs use SYNC resets instead of ASYNC resets.
-// Version      : 3.3
-//              : Support for a non-cacheable Instruction Memory that has a
-//              : single-cycle access latency. This memory can be accessed by
-//              : data port of LM32 (so that debugger has access to it).
-// Version      : 3.4
-//              : No change
-// Version      : 3.5
-//              : Bug fix: Inline memory is correctly generated if it is not a
-//              : power-of-two.
-//              : Bug fix: Fixed a bug that caused LM32 (configured without
-//              : instruction cache) to lock up in to an infinite loop due to a
-//              : instruction bus error when EBA was set to instruction inline
-//              : memory.
-// Version      : 3.8
-//              : Feature: Support for dynamically switching EBA to DEBA via a
-//              : GPIO.
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_instruction_unit (
-    // ----- Inputs -------
-    clk_i,
-    rst_i,
-    // From pipeline
-    stall_a,
-    stall_f,
-    stall_d,
-    stall_x,
-    stall_m,
-    valid_f,
-    valid_d,
-    kill_f,
-    branch_predict_taken_d,
-    branch_predict_address_d,
-    exception_m,
-    branch_taken_m,
-    branch_mispredict_taken_m,
-    branch_target_m,
-    iflush,
-    dcache_restart_request,
-    dcache_refill_request,
-    dcache_refilling,
-    itlb_enable,
-    tlbpaddr,
-    tlbvaddr,
-    itlb_update,
-    itlb_flush,
-    itlb_invalidate,
-    // From Wishbone
-    i_dat_i,
-    i_ack_i,
-    i_err_i,
-    // ----- Outputs -------
-    // To pipeline
-    pc_f,
-    pc_d,
-    pc_x,
-    pc_m,
-    pc_w,
-    icache_stall_request,
-    icache_restart_request,
-    icache_refill_request,
-    icache_refilling,
-    itlb_stall_request,
-    itlb_miss_vfn,
-    itlb_miss_x,
-    // To Wishbone
-    i_dat_o,
-    i_adr_o,
-    i_cyc_o,
-    i_sel_o,
-    i_stb_o,
-    i_we_o,
-    i_cti_o,
-    i_lock_o,
-    i_bte_o,
-    bus_error_d,
-    instruction_f,
-    instruction_d
-    );
-
-/////////////////////////////////////////////////////
-// Parameters
-/////////////////////////////////////////////////////
-
-parameter eba_reset = 32'h0;
-parameter associativity = 1;                            // Associativity of the cache (Number of ways)
-parameter sets = 512;                                   // Number of sets
-parameter bytes_per_line = 16;                          // Number of bytes per cache line
-parameter base_address = 0;                             // Base address of cachable memory
-parameter limit = 0;                                    // Limit (highest address) of cachable memory
-
-// For bytes_per_line == 4, we set 1 so part-select range isn't reversed, even though not really used
-localparam addr_offset_width = bytes_per_line == 4 ? 1 : $clog2-2;
-localparam addr_offset_lsb = 2;
-localparam addr_offset_msb = (addr_offset_lsb+addr_offset_width-1);
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input clk_i;                                            // Clock
-input rst_i;                                            // Reset
-
-
-input stall_a;                                          // Stall A stage instruction
-input stall_f;                                          // Stall F stage instruction
-input stall_d;                                          // Stall D stage instruction
-input stall_x;                                          // Stall X stage instruction
-input stall_m;                                          // Stall M stage instruction
-input valid_f;                                          // Instruction in F stage is valid
-input valid_d;                                          // Instruction in D stage is valid
-input kill_f;                                           // Kill instruction in F stage
-
-input branch_predict_taken_d;                           // Branch is predicted taken in D stage
-input [((32-2)+2-1):2] branch_predict_address_d;          // Branch target address
-
-input exception_m;
-input branch_taken_m;                                   // Branch instruction in M stage is taken
-input branch_mispredict_taken_m;                        // Branch instruction in M stage is mispredicted as taken
-input [((32-2)+2-1):2] branch_target_m;                   // Target PC of M stage branch instruction
-
-input iflush;                                           // Flush instruction cache
-input dcache_restart_request;                           // Restart instruction that caused a data cache miss
-input dcache_refill_request;                            // Request to refill data cache
-input dcache_refilling;
-
-
-input itlb_enable;                                      // Instruction TLB enable
-input [(32-1):0] tlbpaddr;                        // TLBPADDR CSR
-input [(32-1):0] tlbvaddr;                        // TLBVADDR CSR
-input itlb_update;                                      // Instruction TLB update request
-input itlb_flush;                                       // Instruction TLB flush request
-input itlb_invalidate;                                  // Instruction TLB invalidate request
-
-input [(32-1):0] i_dat_i;                         // Instruction Wishbone interface read data
-input i_ack_i;                                          // Instruction Wishbone interface acknowledgement
-input i_err_i;                                          // Instruction Wishbone interface error
-
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-output [((32-2)+2-1):2] pc_f;                             // F stage PC
-reg    [((32-2)+2-1):2] pc_f;
-output [((32-2)+2-1):2] pc_d;                             // D stage PC
-reg    [((32-2)+2-1):2] pc_d;
-output [((32-2)+2-1):2] pc_x;                             // X stage PC
-reg    [((32-2)+2-1):2] pc_x;
-output [((32-2)+2-1):2] pc_m;                             // M stage PC
-reg    [((32-2)+2-1):2] pc_m;
-output [((32-2)+2-1):2] pc_w;                             // W stage PC
-reg    [((32-2)+2-1):2] pc_w;
-
-output icache_stall_request;                            // Instruction cache stall request
-wire   icache_stall_request;
-output icache_restart_request;                          // Request to restart instruction that cached instruction cache miss
-wire   icache_restart_request;
-output icache_refill_request;                           // Instruction cache refill request
-wire   icache_refill_request;
-output icache_refilling;                                // Indicates the icache is refilling
-wire   icache_refilling;
-
-
-output itlb_stall_request;                              // Instruction TLB stall request
-wire   itlb_stall_request;
-output [(32-1):0] itlb_miss_vfn;                  // Virtual frame number of missed instruction
-wire   [(32-1):0] itlb_miss_vfn;
-output itlb_miss_x;                                     // Indicates if an instruction TLB miss occured in X stage
-wire   itlb_miss_x;
-
-output [(32-1):0] i_dat_o;                        // Instruction Wishbone interface write data
-wire   [(32-1):0] i_dat_o;
-output [(32-1):0] i_adr_o;                        // Instruction Wishbone interface address
-reg    [(32-1):0] i_adr_o;
-output i_cyc_o;                                         // Instruction Wishbone interface cycle
-reg    i_cyc_o;
-output [(4-1):0] i_sel_o;                 // Instruction Wishbone interface byte select
-wire   [(4-1):0] i_sel_o;
-output i_stb_o;                                         // Instruction Wishbone interface strobe
-reg    i_stb_o;
-output i_we_o;                                          // Instruction Wishbone interface write enable
-wire   i_we_o;
-output [(3-1):0] i_cti_o;                       // Instruction Wishbone interface cycle type
-reg    [(3-1):0] i_cti_o;
-output i_lock_o;                                        // Instruction Wishbone interface lock bus
-reg    i_lock_o;
-output [(2-1):0] i_bte_o;                       // Instruction Wishbone interface burst type
-wire   [(2-1):0] i_bte_o;
-
-
-output bus_error_d;                                     // Indicates a bus error occured while fetching the instruction
-reg    bus_error_d;
-output [(32-1):0] instruction_f;           // F stage instruction (only to have register indices extracted from)
-wire   [(32-1):0] instruction_f;
-output [(32-1):0] instruction_d;           // D stage instruction to be decoded
-reg    [(32-1):0] instruction_d;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-reg [((32-2)+2-1):2] pc_a;                                // A stage PC
-
-reg [((32-2)+2-1):2] restart_address;                     // Address to restart from after a cache miss
-
-wire icache_read_enable_f;                              // Indicates if instruction cache miss is valid
-wire [((32-2)+2-1):2] icache_refill_address;              // Address that caused cache miss
-wire [((32-2)+2-1):2] icache_physical_refill_address;     // Physical address that caused cache miss
-reg icache_refill_ready;                                // Indicates when next word of refill data is ready to be written to cache
-reg [(32-1):0] icache_refill_data;         // Next word of refill data, fetched from Wishbone
-wire [(32-1):0] icache_data_f;             // Instruction fetched from instruction cache
-wire [(3-1):0] first_cycle_type;                // First Wishbone cycle type
-wire [(3-1):0] next_cycle_type;                 // Next Wishbone cycle type
-wire last_word;                                         // Indicates if this is the last word in the cache line
-wire [((32-2)+2-1):2] first_address;                      // First cache refill address
-reg bus_error_f;                                        // Indicates if a bus error occured while fetching the instruction in the F stage
-
-
-
-wire [((32-2)+2-1):2] physical_pc_f;                      // F stage physical PC
-wire itlb_miss_f;                                       // Indicates if an instruction TLB miss occured in F stage
-
-/////////////////////////////////////////////////////
-// Functions
-/////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////
-// Instantiations
-/////////////////////////////////////////////////////
-
-// Instruction ROM
-
-// Instruction cache
-lm32_icache #(
-    .associativity          (associativity),
-    .sets                   (sets),
-    .bytes_per_line         (bytes_per_line),
-    .base_address           (base_address),
-    .limit                  (limit)
-    ) icache (
-    // ----- Inputs -----
-    .clk_i                  (clk_i),
-    .rst_i                  (rst_i),
-    .stall_a                (stall_a),
-    .stall_f                (stall_f),
-    .branch_predict_taken_d (branch_predict_taken_d),
-    .valid_d                (valid_d),
-    .address_a              (pc_a),
-    .address_f              (pc_f),
-    .physical_address_f     (physical_pc_f),
-    .read_enable_f          (icache_read_enable_f),
-    .refill_ready           (icache_refill_ready),
-    .refill_data            (icache_refill_data),
-    .iflush                 (iflush),
-    // ----- Outputs -----
-    .stall_request          (icache_stall_request),
-    .restart_request        (icache_restart_request),
-    .refill_request         (icache_refill_request),
-    .refill_address         (icache_refill_address),
-    .physical_refill_address(icache_physical_refill_address),
-    .refilling              (icache_refilling),
-    .inst                   (icache_data_f)
-    );
-
-// Instruction TLB
-lm32_itlb itlb (
-    // ----- Inputs -----
-    .clk_i                  (clk_i),
-    .rst_i                  (rst_i),
-    .enable                 (itlb_enable),
-    .stall_a                (stall_a),
-    .stall_f                (stall_f),
-    .stall_d                (stall_d),
-    .stall_x                (stall_x),
-    .pc_a                   (pc_a),
-    .pc_f                   (pc_f),
-    .pc_x                   (pc_x),
-    .read_enable_f          (icache_read_enable_f),
-    .tlbpaddr               (tlbpaddr),
-    .tlbvaddr               (tlbvaddr),
-    .update                 (itlb_update),
-    .flush                  (itlb_flush),
-    .invalidate             (itlb_invalidate),
-    // ----- Outputs -----
-    .physical_pc_f          (physical_pc_f),
-    .stall_request          (itlb_stall_request),
-    .miss_vfn               (itlb_miss_vfn),
-    .miss_f                 (itlb_miss_f),
-    .miss_x                 (itlb_miss_x)
-    );
-
-/////////////////////////////////////////////////////
-// Combinational Logic
-/////////////////////////////////////////////////////
-
-// Generate signal that indicates when instruction cache misses are valid
-assign icache_read_enable_f =    (valid_f == 1'b1)
-                              && (kill_f == 1'b0)
-                              && (dcache_restart_request == 1'b0)
-                              && (itlb_miss_f == 1'b0)
-                              ;
-
-// Compute address of next instruction to fetch
-always @(*)
-begin
-    // The request from the latest pipeline stage must take priority
-    if (dcache_restart_request == 1'b1)
-        pc_a = restart_address;
-    else
-      if (branch_taken_m == 1'b1)
-        if ((branch_mispredict_taken_m == 1'b1) && (exception_m == 1'b0))
-          pc_a = pc_x;
-        else
-          pc_a = branch_target_m;
-      else
-        if ( (valid_d == 1'b1) && (branch_predict_taken_d == 1'b1) )
-          pc_a = branch_predict_address_d;
-        else
-          if (icache_restart_request == 1'b1)
-            pc_a = restart_address;
-          else
-            pc_a = pc_f + 1'b1;
-end
-
-// Select where instruction should be fetched from
-
-// Select instruction from selected source
-assign instruction_f = icache_data_f;
-
-// Unused/constant Wishbone signals
-assign i_dat_o = 32'd0;
-assign i_we_o = 1'b0;
-assign i_sel_o = 4'b1111;
-assign i_bte_o = 2'b00;
-
-// Determine parameters for next cache refill Wishbone access
-generate
-    case (bytes_per_line)
-    4:
-    begin
-assign first_cycle_type = 3'b111;
-assign next_cycle_type = 3'b111;
-assign last_word = 1'b1;
-assign first_address = icache_physical_refill_address;
-    end
-    8:
-    begin
-assign first_cycle_type = 3'b010;
-assign next_cycle_type = 3'b111;
-assign last_word = i_adr_o[addr_offset_msb:addr_offset_lsb] == 1'b1;
-assign first_address = {icache_physical_refill_address[(32-2)+2-1:addr_offset_msb+1], {addr_offset_width{1'b0}}};
-    end
-    default:
-    begin
-assign first_cycle_type = 3'b010;
-assign next_cycle_type = i_adr_o[addr_offset_msb:addr_offset_lsb+1] == {addr_offset_width-1{1'b1}} ? 3'b111 : 3'b010;
-assign last_word = (&i_adr_o[addr_offset_msb:addr_offset_lsb]) == 1'b1;
-assign first_address = {icache_physical_refill_address[(32-2)+2-1:addr_offset_msb+1], {addr_offset_width{1'b0}}};
-    end
-    endcase
-endgenerate
-
-/////////////////////////////////////////////////////
-// Sequential Logic
-/////////////////////////////////////////////////////
-
-// PC
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        pc_f <= (eba_reset-4)/4;
-        pc_d <= {(32-2){1'b0}};
-        pc_x <= {(32-2){1'b0}};
-        pc_m <= {(32-2){1'b0}};
-        pc_w <= {(32-2){1'b0}};
-    end
-    else
-    begin
-        if (stall_f == 1'b0)
-            pc_f <= pc_a;
-        if (stall_d == 1'b0)
-            pc_d <= pc_f;
-        if (stall_x == 1'b0)
-            pc_x <= pc_d;
-        if (stall_m == 1'b0)
-            pc_m <= pc_x;
-        pc_w <= pc_m;
-    end
-end
-
-// Address to restart from after a cache miss has been handled
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-        restart_address <= {(32-2){1'b0}};
-    else
-    begin
-            // D-cache restart address must take priority, otherwise instructions will be lost
-            if (dcache_refill_request == 1'b1)
-                restart_address <= pc_w;
-            else if ((icache_refill_request == 1'b1) && (!dcache_refilling) && (!dcache_restart_request))
-                restart_address <= icache_refill_address;
-    end
-end
-
-// Record where instruction was fetched from
-
-
-// Instruction Wishbone interface
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        i_cyc_o <= 1'b0;
-        i_stb_o <= 1'b0;
-        i_adr_o <= {32{1'b0}};
-        i_cti_o <= 3'b111;
-        i_lock_o <= 1'b0;
-        icache_refill_data <= {32{1'b0}};
-        icache_refill_ready <= 1'b0;
-        bus_error_f <= 1'b0;
-    end
-    else
-    begin
-        icache_refill_ready <= 1'b0;
-        // Is a cycle in progress?
-        if (i_cyc_o == 1'b1)
-        begin
-            // Has cycle completed?
-            if ((i_ack_i == 1'b1) || (i_err_i == 1'b1))
-            begin
-                begin
-                    if (last_word == 1'b1)
-                    begin
-                        // Cache line fill complete
-                        i_cyc_o <= 1'b0;
-                        i_stb_o <= 1'b0;
-                        i_lock_o <= 1'b0;
-                    end
-                    // Fetch next word in cache line
-                    i_adr_o[addr_offset_msb:addr_offset_lsb] <= i_adr_o[addr_offset_msb:addr_offset_lsb] + 1'b1;
-                    i_cti_o <= next_cycle_type;
-                    // Write fetched data into instruction cache
-                    icache_refill_ready <= 1'b1;
-                    icache_refill_data <= i_dat_i;
-                end
-            end
-            if (i_err_i == 1'b1)
-            begin
-                bus_error_f <= 1'b1;
-                $display ("Instruction bus error. Address: %x", i_adr_o);
-            end
-        end
-        else
-        begin
-            if ((icache_refill_request == 1'b1) && (icache_refill_ready == 1'b0))
-            begin
-                // Read first word of cache line
-                i_adr_o <= {first_address, 2'b00};
-                i_cyc_o <= 1'b1;
-                i_stb_o <= 1'b1;
-                i_cti_o <= first_cycle_type;
-                //i_lock_o <= `TRUE;
-                bus_error_f <= 1'b0;
-            end
-            // Clear bus error when exception taken, otherwise they would be
-            // continually generated if exception handler is cached
-            if (branch_taken_m == 1'b1)
-                bus_error_f <= 1'b0;
-        end
-    end
-end
-
-// Instruction register
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        instruction_d <= {32{1'b0}};
-        bus_error_d <= 1'b0;
-    end
-    else
-    begin
-        if (stall_d == 1'b0)
-        begin
-            instruction_d <= instruction_f;
-            bus_error_d <= bus_error_f;
-        end
-    end
-end
-
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_interrupt.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_interrupt.v
deleted file mode 100644
index be45b70..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_interrupt.v
+++ /dev/null
@@ -1,467 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_interrupt.v
-// Title            : Interrupt logic
-// Dependencies     : lm32_include.v
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_interrupt (
-    // ----- Inputs -------
-    clk_i,
-    rst_i,
-    // From external devices
-    interrupt,
-    // From pipeline
-    stall_x,
-    non_debug_exception,
-    debug_exception,
-    eret_q_x,
-    bret_q_x,
-    csr,
-    csr_write_data,
-    csr_write_enable,
-    // ----- Outputs -------
-    interrupt_exception,
-    // To pipeline
-    csr_read_data
-    );
-
-/////////////////////////////////////////////////////
-// Parameters
-/////////////////////////////////////////////////////
-
-parameter interrupts = 32;         // Number of interrupts
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input clk_i;                                    // Clock
-input rst_i;                                    // Reset
-
-input [interrupts-1:0] interrupt;               // Interrupt pins
-
-input stall_x;                                  // Stall X pipeline stage
-
-input non_debug_exception;                      // Non-debug related exception has been raised
-input debug_exception;                          // Debug-related exception has been raised
-input eret_q_x;                                 // Return from exception
-input bret_q_x;                                 // Return from breakpoint
-
-input [(5-1):0] csr;                      // CSR read/write index
-input [(32-1):0] csr_write_data;          // Data to write to specified CSR
-input csr_write_enable;                         // CSR write enable
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-output interrupt_exception;                     // Request to raide an interrupt exception
-wire   interrupt_exception;
-
-output [(32-1):0] csr_read_data;          // Data read from CSR
-reg    [(32-1):0] csr_read_data;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-wire [interrupts-1:0] asserted;                 // Which interrupts are currently being asserted
-//pragma attribute asserted preserve_signal true
-wire [interrupts-1:0] interrupt_n_exception;
-
-// Interrupt CSRs
-
-reg ie;                                         // Interrupt enable
-reg eie;                                        // Exception interrupt enable
-reg bie;                                        // Breakpoint interrupt enable
-reg [interrupts-1:0] ip;                        // Interrupt pending
-reg [interrupts-1:0] im;                        // Interrupt mask
-
-/////////////////////////////////////////////////////
-// Combinational Logic
-/////////////////////////////////////////////////////
-
-// Determine which interrupts have occured and are unmasked
-assign interrupt_n_exception = ip & im;
-
-// Determine if any unmasked interrupts have occured
-assign interrupt_exception = (|interrupt_n_exception) & ie;
-
-// Determine which interrupts are currently being asserted or are already pending
-assign asserted = ip | interrupt;
-
-assign ie_csr_read_data = {{32-3{1'b0}},
-                           bie,
-                           eie,
-                           ie
-                          };
-assign ip_csr_read_data = ip;
-assign im_csr_read_data = im;
-generate
-    if (interrupts > 1)
-    begin
-// CSR read
-always @(*)
-begin
-    case (csr)
-    5'h1d,
-    5'h0:  csr_read_data = {{32-3{1'b0}},
-                                    bie,
-                                    eie,
-                                    ie
-                                   };
-    5'h2:  csr_read_data = ip;
-    5'h1:  csr_read_data = im;
-    default:       csr_read_data = {32{1'bx}};
-    endcase
-end
-    end
-    else
-    begin
-// CSR read
-always @(*)
-begin
-    case (csr)
-    5'h0:  csr_read_data = {{32-3{1'b0}},
-                                    bie,
-                                    eie,
-                                    ie
-                                   };
-    5'h2:  csr_read_data = ip;
-    default:       csr_read_data = {32{1'bx}};
-    endcase
-end
-    end
-endgenerate
-
-/////////////////////////////////////////////////////
-// Sequential Logic
-/////////////////////////////////////////////////////
-
-generate
-    if (interrupts > 1)
-    begin
-// IE, IM, IP - Interrupt Enable, Interrupt Mask and Interrupt Pending CSRs
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        ie <= 1'b0;
-        eie <= 1'b0;
-        bie <= 1'b0;
-        im <= {interrupts{1'b0}};
-        ip <= {interrupts{1'b0}};
-    end
-    else
-    begin
-        // Set IP bit when interrupt line is asserted
-        ip <= asserted;
-        if (non_debug_exception == 1'b1)
-        begin
-            // Save and then clear interrupt enable
-            eie <= ie;
-            ie <= 1'b0;
-        end
-        else if (debug_exception == 1'b1)
-        begin
-            // Save and then clear interrupt enable
-            bie <= ie;
-            ie <= 1'b0;
-        end
-        else if (stall_x == 1'b0)
-        begin
-            if (eret_q_x == 1'b1)
-                // Restore interrupt enable
-                ie <= eie;
-            else if (bret_q_x == 1'b1)
-                // Restore interrupt enable
-                ie <= bie;
-            else if (csr_write_enable == 1'b1)
-            begin
-                // Handle wcsr write
-                if (   (csr == 5'h0)
-                    || (csr == 5'h1d)
-                   )
-                begin
-                    ie <= csr_write_data[0];
-                    eie <= csr_write_data[1];
-                    bie <= csr_write_data[2];
-                end
-                if (csr == 5'h1)
-                    im <= csr_write_data[interrupts-1:0];
-                if (csr == 5'h2)
-                    ip <= asserted & ~csr_write_data[interrupts-1:0];
-            end
-        end
-    end
-end
-    end
-else
-    begin
-// IE, IM, IP - Interrupt Enable, Interrupt Mask and Interrupt Pending CSRs
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        ie <= 1'b0;
-        eie <= 1'b0;
-        bie <= 1'b0;
-        ip <= {interrupts{1'b0}};
-    end
-    else
-    begin
-        // Set IP bit when interrupt line is asserted
-        ip <= asserted;
-        if (non_debug_exception == 1'b1)
-        begin
-            // Save and then clear interrupt enable
-            eie <= ie;
-            ie <= 1'b0;
-        end
-        else if (debug_exception == 1'b1)
-        begin
-            // Save and then clear interrupt enable
-            bie <= ie;
-            ie <= 1'b0;
-        end
-        else if (stall_x == 1'b0)
-        begin
-            if (eret_q_x == 1'b1)
-                // Restore interrupt enable
-                ie <= eie;
-            else if (bret_q_x == 1'b1)
-                // Restore interrupt enable
-                ie <= bie;
-            else if (csr_write_enable == 1'b1)
-            begin
-                // Handle wcsr write
-                if (   (csr == 5'h0)
-                    || (csr == 5'h1d)
-                   )
-                begin
-                    ie <= csr_write_data[0];
-                    eie <= csr_write_data[1];
-                    bie <= csr_write_data[2];
-                end
-                if (csr == 5'h2)
-                    ip <= asserted & ~csr_write_data[interrupts-1:0];
-            end
-        end
-    end
-end
-    end
-endgenerate
-
-endmodule
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_itlb.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_itlb.v
deleted file mode 100644
index 0c897fd..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_itlb.v
+++ /dev/null
@@ -1,425 +0,0 @@
-/*
- * LatticeMico32
- * Instruction Translation Lookaside Buffer
- *
- * Copyright (c) 2011-2012 Yann Sionneau <yann.sionneau@gmail.com>
- * Copyright (c) 2012 Michael Walle <michael@walle.cc>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-
-
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-module lm32_itlb (
-    // ----- Inputs -------
-    clk_i,
-    rst_i,
-    enable,
-    stall_a,
-    stall_f,
-    stall_d,
-    stall_x,
-    pc_a,
-    pc_f,
-    pc_x,
-    read_enable_f,
-    tlbpaddr,
-    tlbvaddr,
-    update,
-    flush,
-    invalidate,
-    // ----- Outputs -------
-    physical_pc_f,
-    stall_request,
-    miss_vfn,
-    miss_f,
-    miss_x
-    );
-
-/////////////////////////////////////////////////////
-// Parameters
-/////////////////////////////////////////////////////
-
-parameter entries = 1024;               // Number of entires in ITLB
-parameter page_size = 4096;             // ITLB page size
-
-localparam offset_width = ($clog2-2);
-localparam index_width = $clog2;
-localparam offset_lsb = 2;
-localparam offset_msb = (offset_lsb+offset_width-1);
-localparam index_lsb = (offset_msb+1);
-localparam index_msb = (index_lsb+index_width-1);
-localparam tag_lsb = (index_msb+1);
-localparam tag_msb = (32-1);
-localparam tag_width = (tag_msb-tag_lsb+1);
-localparam vpfn_lsb = (offset_msb+1);
-localparam vpfn_msb = (32-1);
-localparam vpfn_width = (vpfn_msb-vpfn_lsb+1);
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input clk_i;                            // Clock
-input rst_i;                            // Reset
-
-input enable;                           // Instruction TLB enable
-input stall_a;                          // Stall instruction in A stage
-input stall_f;                          // Stall instruction in F stage
-input stall_d;                          // Stall instruction in D stage
-input stall_x;                          // Stall instruction in X stage
-
-input [((32-2)+2-1):2] pc_a;              // Address of instruction in A stage
-input [((32-2)+2-1):2] pc_f;              // Address of instruction in F stage
-input [((32-2)+2-1):2] pc_x;              // Address of instruction in X stage
-
-input read_enable_f;                    // Indicates if cache access is valid
-
-input [(32-1):0] tlbpaddr;
-input [(32-1):0] tlbvaddr;
-input update;
-input flush;
-input invalidate;
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-output [((32-2)+2-1):2] physical_pc_f;
-reg    [((32-2)+2-1):2] physical_pc_f;
-output stall_request;
-wire   stall_request;
-output [(32-1):0] miss_vfn;
-wire   [(32-1):0] miss_vfn;
-output miss_f;
-wire   miss_f;
-output miss_x;
-reg    miss_x;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-wire [(index_width-1):0] read_address;
-wire [(index_width-1):0] write_address;
-wire read_port_enable;
-wire write_port_enable;
-wire [((vpfn_width+tag_width+1)-1):0] write_data;
-reg [1:0] state;
-reg [(index_width-1):0] flush_set;
-
-wire [tag_msb:tag_lsb] tlbe_tag_f;
-wire [vpfn_msb:vpfn_lsb] tlbe_pfn_f;
-wire tlbe_valid_f;
-
-reg miss_d;
-
-/////////////////////////////////////////////////////
-// Functions
-/////////////////////////////////////////////////////
-
-////////////////////////////////////////////////////
-// Instantiations
-/////////////////////////////////////////////////////
-
-lm32_ram
-  #(
-    // ----- Parameters -------
-    .data_width ((vpfn_width+tag_width+1)),
-    .address_width (index_width)
-// Modified for Milkymist: removed non-portable RAM parameters
-    ) data_ram
-    (
-     // ----- Inputs -------
-     .read_clk (clk_i),
-     .write_clk (clk_i),
-     .reset (rst_i),
-     .read_address (read_address),
-     .enable_read (read_port_enable),
-     .write_address (write_address),
-     .enable_write (1'b1),
-     .write_enable (write_port_enable),
-     .write_data (write_data),
-     // ----- Outputs -------
-     .read_data ({tlbe_pfn_f, tlbe_tag_f, tlbe_valid_f})
-     );
-
-/////////////////////////////////////////////////////
-// Combinational logic
-/////////////////////////////////////////////////////
-
-// Compute address to use to index into the ITLB memory
-assign read_address = pc_a[index_msb:index_lsb];
-assign write_address = (flushing == 1'b1) ? flush_set : tlbvaddr[index_msb:index_lsb];
-
-assign read_port_enable = (stall_a == 1'b0);
-assign write_port_enable = (update == 1'b1) || (invalidate == 1'b1) || (flushing == 1'b1);
-
-assign write_data = ((invalidate == 1'b1) || (flushing == 1'b1))
-             ? {{(vpfn_width+tag_width+1)-1{1'b0}}, 1'b0}
-             : {tlbpaddr[vpfn_msb:vpfn_lsb], tlbvaddr[tag_msb:tag_lsb], 1'b1};
-
-assign tlbe_match_f = ({tlbe_tag_f, tlbe_valid_f} == {pc_f[tag_msb:tag_lsb], 1'b1});
-
-assign miss_vfn = {pc_x[vpfn_msb:vpfn_lsb], {offset_width{1'b0}}, 2'b0};
-assign miss_f = (enable == 1'b1) && (tlbe_match_f == 1'b0) && (stall_f == 1'b0);
-
-assign flushing = state[1];
-assign stall_request = (flushing == 1'b1);
-
-always @(*)
-begin
-    if (enable == 1'b1)
-    begin
-        if (tlbe_match_f == 1'b1)
-            physical_pc_f = {tlbe_pfn_f, pc_f[offset_msb:offset_lsb]};
-        else
-            physical_pc_f = {(32-2){1'b0}};
-    end
-    else
-        physical_pc_f = pc_f;
-end
-
-/////////////////////////////////////////////////////
-// Sequential logic
-/////////////////////////////////////////////////////
-
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        miss_d <= 1'b0;
-        miss_x <= 1'b0;
-    end
-    else
-    begin
-        if (stall_d == 1'b0)
-            miss_d <= miss_f;
-        if (stall_x == 1'b0)
-            miss_x <= miss_d;
-    end
-end
-
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        flush_set <= {index_width{1'b1}};
-        state <= 2'b10;
-    end
-    else
-    begin
-        case (state)
-
-        2'b01:
-        begin
-            if (flush == 1'b1)
-            begin
-                flush_set <= {index_width{1'b1}};
-                state <= 2'b10;
-            end
-        end
-
-        2'b10:
-        begin
-            if (flush_set == {index_width{1'b0}})
-                state <= 2'b01;
-            flush_set <= flush_set - 1'b1;
-        end
-
-        endcase
-    end
-end
-
-endmodule
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_jtag.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_jtag.v
deleted file mode 100644
index fb7e34d..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_jtag.v
+++ /dev/null
@@ -1,213 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_jtag.v
-// Title            : JTAG interface
-// Dependencies     : lm32_include.v
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_load_store_unit.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_load_store_unit.v
deleted file mode 100644
index 67c9209..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_load_store_unit.v
+++ /dev/null
@@ -1,775 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project      : LatticeMico32
-// File         : lm32_load_store_unit.v
-// Title        : Load and store unit
-// Dependencies : lm32_include.v
-// Version      : 6.1.17
-//              : Initial Release
-// Version      : 7.0SP2, 3.0
-//              : No Change
-// Version      : 3.1
-//              : Instead of disallowing an instruction cache miss on a data cache
-//              : miss, both can now occur at the same time. If both occur at same
-//              : time, then restart address is the address of instruction that
-//              : caused data cache miss.
-// Version      : 3.2
-//              : EBRs use SYNC resets instead of ASYNC resets.
-// Version      : 3.3
-//              : Support for new non-cacheable Data Memory that is accessible by
-//              : the data port and has a one cycle access latency.
-// Version      : 3.4
-//              : No change
-// Version      : 3.5
-//              : Bug fix: Inline memory is correctly generated if it is not a
-//              : power-of-two
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_load_store_unit (
-    // ----- Inputs -------
-    clk_i,
-    rst_i,
-    // From pipeline
-    stall_a,
-    stall_x,
-    stall_m,
-    kill_m,
-    exception_m,
-    store_operand_x,
-    load_store_address_x,
-    load_store_address_m,
-    load_store_address_w,
-    load_d,
-    store_d,
-    load_x,
-    store_x,
-    load_q_x,
-    store_q_x,
-    load_q_m,
-    store_q_m,
-    sign_extend_x,
-    size_x,
-    dflush,
-    dtlb_enable,
-    tlbpaddr,
-    tlbvaddr,
-    dtlb_update,
-    dtlb_flush,
-    dtlb_invalidate,
-    // From Wishbone
-    d_dat_i,
-    d_ack_i,
-    d_err_i,
-    d_rty_i,
-    // ----- Outputs -------
-    // To pipeline
-    dcache_refill_request,
-    dcache_restart_request,
-    dcache_stall_request,
-    dcache_refilling,
-    load_data_w,
-    stall_wb_load,
-    dtlb_stall_request,
-    dtlb_miss_vfn,
-    dtlb_miss_x,
-    dtlb_fault_x,
-    // To Wishbone
-    d_dat_o,
-    d_adr_o,
-    d_cyc_o,
-    d_sel_o,
-    d_stb_o,
-    d_we_o,
-    d_cti_o,
-    d_lock_o,
-    d_bte_o
-    );
-
-/////////////////////////////////////////////////////
-// Parameters
-/////////////////////////////////////////////////////
-
-parameter associativity = 1;                            // Associativity of the cache (Number of ways)
-parameter sets = 512;                                   // Number of sets
-parameter bytes_per_line = 16;                          // Number of bytes per cache line
-parameter base_address = 0;                             // Base address of cachable memory
-parameter limit = 0;                                    // Limit (highest address) of cachable memory
-
-// For bytes_per_line == 4, we set 1 so part-select range isn't reversed, even though not really used
-localparam addr_offset_width = bytes_per_line == 4 ? 1 : $clog2-2;
-localparam addr_offset_lsb = 2;
-localparam addr_offset_msb = (addr_offset_lsb+addr_offset_width-1);
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input clk_i;                                            // Clock
-input rst_i;                                            // Reset
-
-input stall_a;                                          // A stage stall
-input stall_x;                                          // X stage stall
-input stall_m;                                          // M stage stall
-input kill_m;                                           // Kill instruction in M stage
-input exception_m;                                      // An exception occured in the M stage
-
-input [(32-1):0] store_operand_x;                 // Data read from register to store
-input [(32-1):0] load_store_address_x;            // X stage load/store address
-input [(32-1):0] load_store_address_m;            // M stage load/store address
-input [1:0] load_store_address_w;                       // W stage load/store address (only least two significant bits are needed)
-input load_d;                                           // Load instruction in D stage
-input store_d;                                          // Store instruction in D stage
-input load_x;                                           // Load instruction in X stage
-input store_x;                                          // Store instruction in X stage
-input load_q_x;                                         // Load instruction in X stage
-input store_q_x;                                        // Store instruction in X stage
-input load_q_m;                                         // Load instruction in M stage
-input store_q_m;                                        // Store instruction in M stage
-input sign_extend_x;                                    // Whether load instruction in X stage should sign extend or zero extend
-input [1:0] size_x;                          // Size of load or store (byte, hword, word)
-
-input dflush;                                           // Flush the data cache
-
-
-input dtlb_enable;                                      // Data TLB enable
-input [(32-1):0] tlbpaddr;                        // TLBPADDR CSR
-input [(32-1):0] tlbvaddr;                        // TLBVADDR CSR
-input dtlb_update;                                      // Data TLB update
-input dtlb_flush;                                       // Data TLB flush
-input dtlb_invalidate;                                  // Data TLB invalidate
-
-input [(32-1):0] d_dat_i;                         // Data Wishbone interface read data
-input d_ack_i;                                          // Data Wishbone interface acknowledgement
-input d_err_i;                                          // Data Wishbone interface error
-input d_rty_i;                                          // Data Wishbone interface retry
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-output dcache_refill_request;                           // Request to refill data cache
-wire   dcache_refill_request;
-output dcache_restart_request;                          // Request to restart the instruction that caused a data cache miss
-wire   dcache_restart_request;
-output dcache_stall_request;                            // Data cache stall request
-wire   dcache_stall_request;
-output dcache_refilling;
-wire   dcache_refilling;
-
-
-output [(32-1):0] load_data_w;                    // Result of a load instruction
-reg    [(32-1):0] load_data_w;
-output stall_wb_load;                                   // Request to stall pipeline due to a load from the Wishbone interface
-reg    stall_wb_load;
-
-output dtlb_stall_request;                              // Data TLB stall request
-wire   dtlb_stall_request;
-output [(32-1):0] dtlb_miss_vfn;                  // Virtual frame number of missed load or store address
-wire   [(32-1):0] dtlb_miss_vfn;
-output dtlb_miss_x;                                     // Indicates if a data TLB miss has occured
-wire   dtlb_miss_x;
-output dtlb_fault_x;                                    // Indicates if a data TLB fault has occured in X stage
-wire   dtlb_fault_x;
-
-output [(32-1):0] d_dat_o;                        // Data Wishbone interface write data
-reg    [(32-1):0] d_dat_o;
-output [(32-1):0] d_adr_o;                        // Data Wishbone interface address
-reg    [(32-1):0] d_adr_o;
-output d_cyc_o;                                         // Data Wishbone interface cycle
-reg    d_cyc_o;
-output [(4-1):0] d_sel_o;                 // Data Wishbone interface byte select
-reg    [(4-1):0] d_sel_o;
-output d_stb_o;                                         // Data Wishbone interface strobe
-reg    d_stb_o;
-output d_we_o;                                          // Data Wishbone interface write enable
-reg    d_we_o;
-output [(3-1):0] d_cti_o;                       // Data Wishbone interface cycle type
-reg    [(3-1):0] d_cti_o;
-output d_lock_o;                                        // Date Wishbone interface lock bus
-reg    d_lock_o;
-output [(2-1):0] d_bte_o;                       // Data Wishbone interface burst type
-wire   [(2-1):0] d_bte_o;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-// Microcode pipeline registers - See inputs for description
-reg [1:0] size_m;
-reg [1:0] size_w;
-reg sign_extend_m;
-reg sign_extend_w;
-reg [(32-1):0] store_data_x;
-reg [(32-1):0] store_data_m;
-reg [(4-1):0] byte_enable_x;
-reg [(4-1):0] byte_enable_m;
-wire [(32-1):0] data_m;
-reg [(32-1):0] data_w;
-
-wire dcache_select_x;                                   // Select data cache to load from / store to
-reg dcache_select_m;
-wire [(32-1):0] dcache_data_m;                    // Data read from cache
-wire [(32-1):0] dcache_refill_address;            // Address to refill data cache from
-reg dcache_refill_ready;                                // Indicates the next word of refill data is ready
-wire [(3-1):0] first_cycle_type;                // First Wishbone cycle type
-wire [(3-1):0] next_cycle_type;                 // Next Wishbone cycle type
-wire last_word;                                         // Indicates if this is the last word in the cache line
-wire [(32-1):0] first_address;                    // First cache refill address
-wire wb_select_x;                                       // Select Wishbone to load from / store to
-reg wb_select_m;
-reg [(32-1):0] wb_data_m;                         // Data read from Wishbone
-reg wb_load_complete;                                   // Indicates when a Wishbone load is complete
-wire [(32-1):0] physical_load_store_address_m;    // X stage physical load/store address
-wire cache_inhibit_x;                                   // Indicates if data cache should be bypassed
-
-/////////////////////////////////////////////////////
-// Functions
-/////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////
-// Instantiations
-/////////////////////////////////////////////////////
-
-
-// Data cache
-lm32_dcache #(
-    .associativity          (associativity),
-    .sets                   (sets),
-    .bytes_per_line         (bytes_per_line),
-    .base_address           (base_address),
-    .limit                  (limit)
-    ) dcache (
-    // ----- Inputs -----
-    .clk_i                  (clk_i),
-    .rst_i                  (rst_i),
-    .stall_a                (stall_a),
-    .stall_x                (stall_x),
-    .stall_m                (stall_m),
-    .address_x              (load_store_address_x),
-    /* VIPT cache, address_m is (only) used for tag */
-    .address_m              (physical_load_store_address_m),
-    .load_q_m               (load_q_m & dcache_select_m),
-    .store_q_m              (store_q_m & dcache_select_m),
-    .store_data             (store_data_m),
-    .store_byte_select      (byte_enable_m & {4{dcache_select_m}}),
-    .refill_ready           (dcache_refill_ready),
-    .refill_data            (wb_data_m),
-    .dflush                 (dflush),
-    .dtlb_miss_x            (dtlb_miss_x),
-    // ----- Outputs -----
-    .stall_request          (dcache_stall_request),
-    .restart_request        (dcache_restart_request),
-    .refill_request         (dcache_refill_request),
-    .refill_address         (dcache_refill_address),
-    .refilling              (dcache_refilling),
-    .load_data              (dcache_data_m)
-    );
-
-// Data TLB
-lm32_dtlb dtlb (
-    // ----- Inputs -----
-    .clk_i                  (clk_i),
-    .rst_i                  (rst_i),
-    .enable                 (dtlb_enable),
-    .stall_x                (stall_x),
-    .stall_m                (stall_m),
-    .address_x              (load_store_address_x),
-    .address_m              (load_store_address_m),
-    .load_d                 (load_d),
-    .store_d                (store_d),
-    .load_q_x               (load_q_x),
-    .store_q_x              (store_q_x),
-    .tlbpaddr               (tlbpaddr),
-    .tlbvaddr               (tlbvaddr),
-    .update                 (dtlb_update),
-    .flush                  (dtlb_flush),
-    .invalidate             (dtlb_invalidate),
-    // ----- Outputs -----
-    .physical_load_store_address_m (physical_load_store_address_m),
-    .stall_request          (dtlb_stall_request),
-    .miss_vfn               (dtlb_miss_vfn),
-    .miss_x                 (dtlb_miss_x),
-    .fault_x                (dtlb_fault_x),
-    .cache_inhibit_x        (cache_inhibit_x)
-    );
-
-/////////////////////////////////////////////////////
-// Combinational Logic
-/////////////////////////////////////////////////////
-
-// Select where data should be loaded from / stored to
-
-
-   assign dcache_select_x =    (load_store_address_x >= 32'h0)
-                            && (load_store_address_x <= 32'h7fffffff)
-                            && (cache_inhibit_x == 1'b0)
-                     ;
-
-   assign wb_select_x =    1'b1
-                        && !dcache_select_x
-                     ;
-
-// Make sure data to store is in correct byte lane
-always @(*)
-begin
-    case (size_x)
-    2'b00:  store_data_x = {4{store_operand_x[7:0]}};
-    2'b11: store_data_x = {2{store_operand_x[15:0]}};
-    2'b10:  store_data_x = store_operand_x;
-    default:          store_data_x = {32{1'bx}};
-    endcase
-end
-
-// Generate byte enable accoring to size of load or store and address being accessed
-always @(*)
-begin
-    casez ({size_x, load_store_address_x[1:0]})
-    {2'b00, 2'b11}:  byte_enable_x = 4'b0001;
-    {2'b00, 2'b10}:  byte_enable_x = 4'b0010;
-    {2'b00, 2'b01}:  byte_enable_x = 4'b0100;
-    {2'b00, 2'b00}:  byte_enable_x = 4'b1000;
-    {2'b11, 2'b1?}: byte_enable_x = 4'b0011;
-    {2'b11, 2'b0?}: byte_enable_x = 4'b1100;
-    {2'b10, 2'b??}:  byte_enable_x = 4'b1111;
-    default:                   byte_enable_x = 4'bxxxx;
-    endcase
-end
-
-
-
-
-      // WB + DC
-   assign data_m = wb_select_m == 1'b1
-                   ? wb_data_m
-                   : dcache_data_m;
-   
-// Sub-word selection and sign/zero-extension for loads
-always @(*)
-begin
-    casez ({size_w, load_store_address_w[1:0]})
-    {2'b00, 2'b11}:  load_data_w = {{24{sign_extend_w & data_w[7]}}, data_w[7:0]};
-    {2'b00, 2'b10}:  load_data_w = {{24{sign_extend_w & data_w[15]}}, data_w[15:8]};
-    {2'b00, 2'b01}:  load_data_w = {{24{sign_extend_w & data_w[23]}}, data_w[23:16]};
-    {2'b00, 2'b00}:  load_data_w = {{24{sign_extend_w & data_w[31]}}, data_w[31:24]};
-    {2'b11, 2'b1?}: load_data_w = {{16{sign_extend_w & data_w[15]}}, data_w[15:0]};
-    {2'b11, 2'b0?}: load_data_w = {{16{sign_extend_w & data_w[31]}}, data_w[31:16]};
-    {2'b10, 2'b??}:  load_data_w = data_w;
-    default:                   load_data_w = {32{1'bx}};
-    endcase
-end
-
-// Unused/constant Wishbone signals
-assign d_bte_o = 2'b00;
-
-// Generate signal to indicate last word in cache line
-generate
-    case (bytes_per_line)
-    4:
-    begin
-assign first_cycle_type = 3'b111;
-assign next_cycle_type = 3'b111;
-assign last_word = 1'b1;
-assign first_address = {dcache_refill_address[32-1:2], 2'b00};
-    end
-    8:
-    begin
-assign first_cycle_type = 3'b010;
-assign next_cycle_type = 3'b111;
-assign last_word = (&d_adr_o[addr_offset_msb:addr_offset_lsb]) == 1'b1;
-assign first_address = {dcache_refill_address[32-1:addr_offset_msb+1], {addr_offset_width{1'b0}}, 2'b00};
-    end
-    default:
-    begin
-assign first_cycle_type = 3'b010;
-assign next_cycle_type = d_adr_o[addr_offset_msb:addr_offset_lsb+1] == {addr_offset_width-1{1'b1}} ? 3'b111 : 3'b010;
-assign last_word = (&d_adr_o[addr_offset_msb:addr_offset_lsb]) == 1'b1;
-assign first_address = {dcache_refill_address[32-1:addr_offset_msb+1], {addr_offset_width{1'b0}}, 2'b00};
-    end
-    endcase
-endgenerate
-
-/////////////////////////////////////////////////////
-// Sequential Logic
-/////////////////////////////////////////////////////
-
-// Data Wishbone interface
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        d_cyc_o <= 1'b0;
-        d_stb_o <= 1'b0;
-        d_dat_o <= {32{1'b0}};
-        d_adr_o <= {32{1'b0}};
-        d_sel_o <= {4{1'b0}};
-        d_we_o <= 1'b0;
-        d_cti_o <= 3'b111;
-        d_lock_o <= 1'b0;
-        wb_data_m <= {32{1'b0}};
-        wb_load_complete <= 1'b0;
-        stall_wb_load <= 1'b0;
-        dcache_refill_ready <= 1'b0;
-    end
-    else
-    begin
-        // Refill ready should only be asserted for a single cycle
-        dcache_refill_ready <= 1'b0;
-        // Is a Wishbone cycle already in progress?
-        if (d_cyc_o == 1'b1)
-        begin
-            // Is the cycle complete?
-            if ((d_ack_i == 1'b1) || (d_err_i == 1'b1))
-            begin
-                if ((dcache_refilling == 1'b1) && (!last_word))
-                begin
-                    // Fetch next word of cache line
-                    d_adr_o[addr_offset_msb:addr_offset_lsb] <= d_adr_o[addr_offset_msb:addr_offset_lsb] + 1'b1;
-                end
-                else
-                begin
-                    // Refill/access complete
-                    d_cyc_o <= 1'b0;
-                    d_stb_o <= 1'b0;
-                    d_lock_o <= 1'b0;
-                end
-                d_cti_o <= next_cycle_type;
-                // If we are performing a refill, indicate to cache next word of data is ready
-                dcache_refill_ready <= dcache_refilling;
-                // Register data read from Wishbone interface
-                wb_data_m <= d_dat_i;
-                // Don't set when stores complete - otherwise we'll deadlock if load in m stage
-                wb_load_complete <= !d_we_o;
-            end
-            // synthesis translate_off
-            if (d_err_i == 1'b1)
-                $display ("Data bus error. Address: %x", d_adr_o);
-            // synthesis translate_on
-        end
-        else
-        begin
-            if (dcache_refill_request == 1'b1)
-            begin
-                // Start cache refill
-                d_adr_o <= first_address;
-                d_cyc_o <= 1'b1;
-                d_sel_o <= {32/8{1'b1}};
-                d_stb_o <= 1'b1;
-                d_we_o <= 1'b0;
-                d_cti_o <= first_cycle_type;
-                //d_lock_o <= `TRUE;
-            end
-            else
-                 if (   (store_q_m == 1'b1)
-                     && (stall_m == 1'b0)
-                    )
-            begin
-                // Data cache is write through, so all stores go to memory
-                d_dat_o <= store_data_m;
-                d_adr_o <=
-                    (dtlb_enable) ? physical_load_store_address_m :
-                    load_store_address_m;
-                d_cyc_o <= 1'b1;
-                d_sel_o <= byte_enable_m;
-                d_stb_o <= 1'b1;
-                d_we_o <= 1'b1;
-                d_cti_o <= 3'b111;
-            end
-            else if (   (load_q_m == 1'b1)
-                     && (wb_select_m == 1'b1)
-                     && (wb_load_complete == 1'b0)
-                     // stall_m will be TRUE, because stall_wb_load will be TRUE
-                    )
-            begin
-                // Read requested address
-                stall_wb_load <= 1'b0;
-                d_adr_o <=
-                    (dtlb_enable) ? physical_load_store_address_m :
-                    load_store_address_m;
-                d_cyc_o <= 1'b1;
-                d_sel_o <= byte_enable_m;
-                d_stb_o <= 1'b1;
-                d_we_o <= 1'b0;
-                d_cti_o <= 3'b111;
-            end
-        end
-        // Clear load/store complete flag when instruction leaves M stage
-        if (stall_m == 1'b0)
-            wb_load_complete <= 1'b0;
-        // When a Wishbone load first enters the M stage, we need to stall it
-        if ((load_q_x == 1'b1) && (wb_select_x == 1'b1) && (stall_x == 1'b0))
-            stall_wb_load <= 1'b1;
-        // Clear stall request if load instruction is killed
-        if ((kill_m == 1'b1) || (exception_m == 1'b1))
-            stall_wb_load <= 1'b0;
-    end
-end
-
-// Pipeline registers
-
-// X/M stage pipeline registers
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        sign_extend_m <= 1'b0;
-        size_m <= 2'b00;
-        byte_enable_m <= 1'b0;
-        store_data_m <= {32{1'b0}};
-        dcache_select_m <= 1'b0;
-        wb_select_m <= 1'b0;
-    end
-    else
-    begin
-        if (stall_m == 1'b0)
-        begin
-            sign_extend_m <= sign_extend_x;
-            size_m <= size_x;
-            byte_enable_m <= byte_enable_x;
-            store_data_m <= store_data_x;
-            dcache_select_m <= dcache_select_x;
-            wb_select_m <= wb_select_x;
-        end
-    end
-end
-
-// M/W stage pipeline registers
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        size_w <= 2'b00;
-        data_w <= {32{1'b0}};
-        sign_extend_w <= 1'b0;
-    end
-    else
-    begin
-        size_w <= size_m;
-        data_w <= data_m;
-        sign_extend_w <= sign_extend_m;
-    end
-end
-
-/////////////////////////////////////////////////////
-// Behavioural Logic
-/////////////////////////////////////////////////////
-
-// synthesis translate_off
-
-// Check for non-aligned loads or stores
-always @(posedge clk_i)
-begin
-    if (((load_q_m == 1'b1) || (store_q_m == 1'b1)) && (stall_m == 1'b0))
-    begin
-        if ((size_m === 2'b11) && (load_store_address_m[0] !== 1'b0))
-            $display ("Warning: Non-aligned halfword access. Address: 0x%0x Time: %0t.", load_store_address_m, $time);
-        if ((size_m === 2'b10) && (load_store_address_m[1:0] !== 2'b00))
-            $display ("Warning: Non-aligned word access. Address: 0x%0x Time: %0t.", load_store_address_m, $time);
-    end
-end
-
-// synthesis translate_on
-
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_logic_op.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_logic_op.v
deleted file mode 100644
index a06b2da..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_logic_op.v
+++ /dev/null
@@ -1,259 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_logic_op.v
-// Title            : Logic operations (and / or / not etc)
-// Dependencies     : lm32_include.v
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_logic_op (
-    // ----- Inputs -------
-    logic_op_x,
-    operand_0_x,
-    operand_1_x,
-    // ----- Outputs -------
-    logic_result_x
-    );
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input [3:0] logic_op_x;
-input [(32-1):0] operand_0_x;
-input [(32-1):0] operand_1_x;
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-output [(32-1):0] logic_result_x;
-reg    [(32-1):0] logic_result_x;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-integer logic_idx;
-
-/////////////////////////////////////////////////////
-// Combinational Logic
-/////////////////////////////////////////////////////
-
-always @(*)
-begin
-    for(logic_idx = 0; logic_idx < 32; logic_idx = logic_idx + 1)
-        logic_result_x[logic_idx] = logic_op_x[{operand_1_x[logic_idx], operand_0_x[logic_idx]}];
-end
-
-endmodule
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_mc_arithmetic.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_mc_arithmetic.v
deleted file mode 100644
index e894a82..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_mc_arithmetic.v
+++ /dev/null
@@ -1,364 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm_mc_arithmetic.v
-// Title            : Multi-cycle arithmetic unit.
-// Dependencies     : lm32_include.v
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_mc_arithmetic (
-    // ----- Inputs -----
-    clk_i,
-    rst_i,
-    stall_d,
-    kill_x,
-    divide_d,
-    modulus_d,
-    operand_0_d,
-    operand_1_d,
-    // ----- Ouputs -----
-    result_x,
-    divide_by_zero_x,
-    stall_request_x
-    );
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input clk_i;                                    // Clock
-input rst_i;                                    // Reset
-input stall_d;                                  // Stall instruction in D stage
-input kill_x;                                   // Kill instruction in X stage
-input divide_d;                                 // Perform divide
-input modulus_d;                                // Perform modulus
-input [(32-1):0] operand_0_d;
-input [(32-1):0] operand_1_d;
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-output [(32-1):0] result_x;               // Result of operation
-reg    [(32-1):0] result_x;
-output divide_by_zero_x;                        // A divide by zero was attempted
-reg    divide_by_zero_x;
-output stall_request_x;                         // Request to stall pipeline from X stage back
-wire   stall_request_x;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-reg [(32-1):0] p;                         // Temporary registers
-reg [(32-1):0] a;
-reg [(32-1):0] b;
-wire [32:0] t;
-
-reg [2:0] state;                 // Current state of FSM
-reg [5:0] cycles;                               // Number of cycles remaining in the operation
-
-
-/////////////////////////////////////////////////////
-// Combinational logic
-/////////////////////////////////////////////////////
-
-// Stall pipeline while any operation is being performed
-assign stall_request_x = state != 3'b000;
-
-// Subtraction
-assign t = {p[32-2:0], a[32-1]} - b;
-
-
-/////////////////////////////////////////////////////
-// Sequential logic
-/////////////////////////////////////////////////////
-
-// Perform right shift
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        cycles <= {6{1'b0}};
-        p <= {32{1'b0}};
-        a <= {32{1'b0}};
-        b <= {32{1'b0}};
-        divide_by_zero_x <= 1'b0;
-        result_x <= {32{1'b0}};
-        state <= 3'b000;
-    end
-    else
-    begin
-        divide_by_zero_x <= 1'b0;
-        case (state)
-        3'b000:
-        begin
-            if (stall_d == 1'b0)
-            begin
-                cycles <= 32;
-                p <= 32'b0;
-                a <= operand_0_d;
-                b <= operand_1_d;
-                if (divide_d == 1'b1)
-                    state <= 3'b011;
-                if (modulus_d == 1'b1)
-                    state <= 3'b010;
-            end
-        end
-        3'b011:
-        begin
-            if (t[32] == 1'b0)
-            begin
-                p <= t[31:0];
-                a <= {a[32-2:0], 1'b1};
-            end
-            else
-            begin
-                p <= {p[32-2:0], a[32-1]};
-                a <= {a[32-2:0], 1'b0};
-            end
-            result_x <= a;
-            if ((cycles == 32'd0) || (kill_x == 1'b1))
-            begin
-                // Check for divide by zero
-                divide_by_zero_x <= b == {32{1'b0}};
-                state <= 3'b000;
-            end
-            cycles <= cycles - 1'b1;
-        end
-        3'b010:
-        begin
-            if (t[32] == 1'b0)
-            begin
-                p <= t[31:0];
-                a <= {a[32-2:0], 1'b1};
-            end
-            else
-            begin
-                p <= {p[32-2:0], a[32-1]};
-                a <= {a[32-2:0], 1'b0};
-            end
-            result_x <= p;
-            if ((cycles == 32'd0) || (kill_x == 1'b1))
-            begin
-                // Check for divide by zero
-                divide_by_zero_x <= b == {32{1'b0}};
-                state <= 3'b000;
-            end
-            cycles <= cycles - 1'b1;
-        end
-        endcase
-    end
-end
-
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_multiplier.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_multiplier.v
deleted file mode 100644
index 0866030..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_multiplier.v
+++ /dev/null
@@ -1,282 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_multiplier.v
-// Title            : Pipelined multiplier.
-// Dependencies     : lm32_include.v
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_multiplier (
-    // ----- Inputs -----
-    clk_i,
-    rst_i,
-    stall_x,
-    stall_m,
-    operand_0,
-    operand_1,
-    // ----- Ouputs -----
-    result
-    );
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input clk_i;                            // Clock
-input rst_i;                            // Reset
-input stall_x;                          // Stall instruction in X stage
-input stall_m;                          // Stall instruction in M stage
-input [(32-1):0] operand_0;       // Muliplicand
-input [(32-1):0] operand_1;       // Multiplier
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-output [(32-1):0] result;         // Product of multiplication
-reg    [(32-1):0] result;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-reg [(32-1):0] muliplicand;
-reg [(32-1):0] multiplier;
-reg [(32-1):0] product;
-
-/////////////////////////////////////////////////////
-// Sequential logic
-/////////////////////////////////////////////////////
-
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        muliplicand <= {32{1'b0}};
-        multiplier <= {32{1'b0}};
-        product <= {32{1'b0}};
-        result <= {32{1'b0}};
-    end
-    else
-    begin
-        if (stall_x == 1'b0)
-        begin
-            muliplicand <= operand_0;
-            multiplier <= operand_1;
-        end
-        if (stall_m == 1'b0)
-            product <= muliplicand * multiplier;
-        result <= product;
-    end
-end
-
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_ram.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_ram.v
deleted file mode 100644
index de661a3..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_ram.v
+++ /dev/null
@@ -1,300 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_ram.v
-// Title            : Pseudo dual-port RAM.
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : Options added to select EBRs (True-DP, Psuedo-DP, DQ, or
-//                  : Distributed RAM).
-// Version          : 3.2
-//                  : EBRs use SYNC resets instead of ASYNC resets.
-// Version          : 3.5
-//                  : Added read-after-write hazard resolution when using true
-//                  : dual-port EBRs
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_ram (
-    // ----- Inputs -------
-    read_clk,
-    write_clk,
-    reset,
-    enable_read,
-    read_address,
-    enable_write,
-    write_address,
-    write_data,
-    write_enable,
-    // ----- Outputs -------
-    read_data
-    );
-
-/*----------------------------------------------------------------------
- Parameters
- ----------------------------------------------------------------------*/
-parameter data_width = 1;               // Width of the data ports
-parameter address_width = 1;            // Width of the address ports
-parameter init_file = "NONE";           // Initialization file
-
-/*----------------------------------------------------------------------
- Inputs
- ----------------------------------------------------------------------*/
-input read_clk;                         // Read clock
-input write_clk;                        // Write clock
-input reset;                            // Reset
-
-input enable_read;                      // Access enable
-input [address_width-1:0] read_address; // Read/write address
-input enable_write;                     // Access enable
-input [address_width-1:0] write_address;// Read/write address
-input [data_width-1:0] write_data;      // Data to write to specified address
-input write_enable;                     // Write enable
-
-/*----------------------------------------------------------------------
- Outputs
- ----------------------------------------------------------------------*/
-output [data_width-1:0] read_data;      // Data read from specified addess
-wire   [data_width-1:0] read_data;
-
-/*----------------------------------------------------------------------
- Internal nets and registers
- ----------------------------------------------------------------------*/
-reg [data_width-1:0]    mem[0:(1<<address_width)-1]; // The RAM
-reg [address_width-1:0] ra; // Registered read address
-
-/*----------------------------------------------------------------------
- Combinational Logic
- ----------------------------------------------------------------------*/
-// Read port
-assign read_data = mem[ra];
-
-/*----------------------------------------------------------------------
- Sequential Logic
- ----------------------------------------------------------------------*/
-// Write port
-always @(posedge write_clk)
-    if ((write_enable == 1'b1) && (enable_write == 1'b1))
-        mem[write_address] <= write_data;
-
-// Register read address for use on next cycle
-always @(posedge read_clk)
-    if (enable_read)
-        ra <= read_address;
-
-/*----------------------------------------------------------------------
- Initialization
- ----------------------------------------------------------------------*/
-generate
-	if (init_file != "NONE")
-	begin
-initial $readmemh(init_file, mem);
-	end
-endgenerate
-	
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_shifter.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_shifter.v
deleted file mode 100644
index 90ea751..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_shifter.v
+++ /dev/null
@@ -1,317 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_shifter.v
-// Title            : Barrel shifter
-// Dependencies     : lm32_include.v
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_shifter (
-    // ----- Inputs -------
-    clk_i,
-    rst_i,
-    stall_x,
-    direction_x,
-    sign_extend_x,
-    operand_0_x,
-    operand_1_x,
-    // ----- Outputs -------
-    shifter_result_m
-    );
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input clk_i;                                // Clock
-input rst_i;                                // Reset
-input stall_x;                              // Stall instruction in X stage
-input direction_x;                          // Direction to shift
-input sign_extend_x;                        // Whether shift is arithmetic (1'b1) or logical (1'b0)
-input [(32-1):0] operand_0_x;         // Operand to shift
-input [(32-1):0] operand_1_x;         // Operand that specifies how many bits to shift by
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-output [(32-1):0] shifter_result_m;   // Result of shift
-wire   [(32-1):0] shifter_result_m;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-reg direction_m;
-reg [(32-1):0] left_shift_result;
-reg [(32-1):0] right_shift_result;
-reg [(32-1):0] left_shift_operand;
-wire [(32-1):0] right_shift_operand;
-wire fill_value;
-wire [(32-1):0] right_shift_in;
-
-integer shift_idx_0;
-integer shift_idx_1;
-
-/////////////////////////////////////////////////////
-// Combinational Logic
-/////////////////////////////////////////////////////
-
-// Select operands - To perform a left shift, we reverse the bits and perform a right shift
-always @(*)
-begin
-    for (shift_idx_0 = 0; shift_idx_0 < 32; shift_idx_0 = shift_idx_0 + 1)
-        left_shift_operand[32-1-shift_idx_0] = operand_0_x[shift_idx_0];
-end
-assign right_shift_operand = direction_x == 1'b1 ? left_shift_operand : operand_0_x;
-
-// Determine fill value for right shift - Sign bit for arithmetic shift, or zero for logical shift
-assign fill_value = (sign_extend_x == 1'b1) && (direction_x == 1'b0)
-                      ? operand_0_x[32-1]
-                      : 1'b0;
-
-// Determine bits to shift in for right shift or rotate
-assign right_shift_in = {32{fill_value}};
-
-// Reverse bits to get left shift result
-always @(*)
-begin
-    for (shift_idx_1 = 0; shift_idx_1 < 32; shift_idx_1 = shift_idx_1 + 1)
-        left_shift_result[32-1-shift_idx_1] = right_shift_result[shift_idx_1];
-end
-
-// Select result
-assign shifter_result_m = direction_m == 1'b1 ? left_shift_result : right_shift_result;
-
-/////////////////////////////////////////////////////
-// Sequential Logic
-/////////////////////////////////////////////////////
-
-// Perform right shift
-always @(posedge clk_i )
-begin
-    if (rst_i == 1'b1)
-    begin
-        right_shift_result <= {32{1'b0}};
-        direction_m <= 1'b0;
-    end
-    else
-    begin
-        if (stall_x == 1'b0)
-        begin
-            right_shift_result <= {right_shift_in, right_shift_operand} >> operand_1_x[(5-1):0];
-            direction_m <= direction_x;
-        end
-    end
-end
-
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_top.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_top.v
deleted file mode 100644
index 4f6c942..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/rtl/lm32_top.v
+++ /dev/null
@@ -1,383 +0,0 @@
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_top.v
-// Title            : Top-level of CPU.
-// Dependencies     : lm32_include.v
-// Version          : 6.1.17
-//                  : removed SPI - 04/12/07
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// =============================================================================
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-
-/////////////////////////////////////////////////////
-// Module interface
-/////////////////////////////////////////////////////
-
-module lm32_top (
-    // ----- Inputs -------
-    clk_i,
-    rst_i,
-    // From external devices
-    interrupt,
-    // From user logic
-    // Instruction Wishbone master
-    I_DAT_I,
-    I_ACK_I,
-    I_ERR_I,
-    I_RTY_I,
-    ext_break,
-    // Data Wishbone master
-    D_DAT_I,
-    D_ACK_I,
-    D_ERR_I,
-    D_RTY_I,
-    // ----- Outputs -------
-    // Instruction Wishbone master
-    I_DAT_O,
-    I_ADR_O,
-    I_CYC_O,
-    I_SEL_O,
-    I_STB_O,
-    I_WE_O,
-    I_CTI_O,
-    I_LOCK_O,
-    I_BTE_O,
-    // Data Wishbone master
-    D_DAT_O,
-    D_ADR_O,
-    D_CYC_O,
-    D_SEL_O,
-    D_STB_O,
-    D_WE_O,
-    D_CTI_O,
-    D_LOCK_O,
-    D_BTE_O
-    );
-
-/////////////////////////////////////////////////////
-// Inputs
-/////////////////////////////////////////////////////
-
-input clk_i;                                    // Clock
-input rst_i;                                    // Reset
-
-
-input [(32-1):0] interrupt;          // Interrupt pins
-
-
-input [(32-1):0] I_DAT_I;                 // Instruction Wishbone interface read data
-input I_ACK_I;                                  // Instruction Wishbone interface acknowledgement
-input I_ERR_I;                                  // Instruction Wishbone interface error
-input I_RTY_I;                                  // Instruction Wishbone interface retry
-
-input [(32-1):0] D_DAT_I;                 // Data Wishbone interface read data
-input D_ACK_I;                                  // Data Wishbone interface acknowledgement
-input D_ERR_I;                                  // Data Wishbone interface error
-input D_RTY_I;                                  // Data Wishbone interface retry
-
-input ext_break;
-
-/////////////////////////////////////////////////////
-// Outputs
-/////////////////////////////////////////////////////
-
-
-output [(32-1):0] I_DAT_O;                // Instruction Wishbone interface write data
-wire   [(32-1):0] I_DAT_O;
-output [(32-1):0] I_ADR_O;                // Instruction Wishbone interface address
-wire   [(32-1):0] I_ADR_O;
-output I_CYC_O;                                 // Instruction Wishbone interface cycle
-wire   I_CYC_O;
-output [(4-1):0] I_SEL_O;         // Instruction Wishbone interface byte select
-wire   [(4-1):0] I_SEL_O;
-output I_STB_O;                                 // Instruction Wishbone interface strobe
-wire   I_STB_O;
-output I_WE_O;                                  // Instruction Wishbone interface write enable
-wire   I_WE_O;
-output [(3-1):0] I_CTI_O;               // Instruction Wishbone interface cycle type
-wire   [(3-1):0] I_CTI_O;
-output I_LOCK_O;                                // Instruction Wishbone interface lock bus
-wire   I_LOCK_O;
-output [(2-1):0] I_BTE_O;               // Instruction Wishbone interface burst type
-wire   [(2-1):0] I_BTE_O;
-
-output [(32-1):0] D_DAT_O;                // Data Wishbone interface write data
-wire   [(32-1):0] D_DAT_O;
-output [(32-1):0] D_ADR_O;                // Data Wishbone interface address
-wire   [(32-1):0] D_ADR_O;
-output D_CYC_O;                                 // Data Wishbone interface cycle
-wire   D_CYC_O;
-output [(4-1):0] D_SEL_O;         // Data Wishbone interface byte select
-wire   [(4-1):0] D_SEL_O;
-output D_STB_O;                                 // Data Wishbone interface strobe
-wire   D_STB_O;
-output D_WE_O;                                  // Data Wishbone interface write enable
-wire   D_WE_O;
-output [(3-1):0] D_CTI_O;               // Data Wishbone interface cycle type
-wire   [(3-1):0] D_CTI_O;
-output D_LOCK_O;                                // Date Wishbone interface lock bus
-wire   D_LOCK_O;
-output [(2-1):0] D_BTE_O;               // Data Wishbone interface burst type
-wire   [(2-1):0] D_BTE_O;
-
-/////////////////////////////////////////////////////
-// Internal nets and registers
-/////////////////////////////////////////////////////
-
-
-// TODO: get the trace signals out
-
-/////////////////////////////////////////////////////
-// Functions
-/////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////
-// Instantiations
-/////////////////////////////////////////////////////
-
-// LM32 CPU
-lm32_cpu cpu (
-    // ----- Inputs -------
-    .clk_i                 (clk_i),
-    .rst_i                 (rst_i),
-    // From external devices
-    .interrupt             (interrupt),
-    // From user logic
-    .ext_break             (ext_break),
-     // Instruction Wishbone master
-    .I_DAT_I               (I_DAT_I),
-    .I_ACK_I               (I_ACK_I),
-    .I_ERR_I               (I_ERR_I),
-    .I_RTY_I               (I_RTY_I),
-    // Data Wishbone master
-    .D_DAT_I               (D_DAT_I),
-    .D_ACK_I               (D_ACK_I),
-    .D_ERR_I               (D_ERR_I),
-    .D_RTY_I               (D_RTY_I),
-    // ----- Outputs -------
-    // Instruction Wishbone master
-    .I_DAT_O               (I_DAT_O),
-    .I_ADR_O               (I_ADR_O),
-    .I_CYC_O               (I_CYC_O),
-    .I_SEL_O               (I_SEL_O),
-    .I_STB_O               (I_STB_O),
-    .I_WE_O                (I_WE_O),
-    .I_CTI_O               (I_CTI_O),
-    .I_LOCK_O              (I_LOCK_O),
-    .I_BTE_O               (I_BTE_O),
-        // Data Wishbone master
-    .D_DAT_O               (D_DAT_O),
-    .D_ADR_O               (D_ADR_O),
-    .D_CYC_O               (D_CYC_O),
-    .D_SEL_O               (D_SEL_O),
-    .D_STB_O               (D_STB_O),
-    .D_WE_O                (D_WE_O),
-    .D_CTI_O               (D_CTI_O),
-    .D_LOCK_O              (D_LOCK_O),
-    .D_BTE_O               (D_BTE_O)
-    );
-
-
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/sim/tb_lm32_system.v b/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/sim/tb_lm32_system.v
deleted file mode 100644
index 3b97286..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/lm32/slpp_unit/work/sim/tb_lm32_system.v
+++ /dev/null
@@ -1,424 +0,0 @@
-/*
- * LatticeMico32
- * System Test Bench
- *
- * Copyright (c) 2012 Michael Walle <michael@walle.cc>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-//   ==================================================================
-//   >>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
-//   ------------------------------------------------------------------
-//   Copyright (c) 2006-2011 by Lattice Semiconductor Corporation
-//   ALL RIGHTS RESERVED
-//   ------------------------------------------------------------------
-//
-//   IMPORTANT: THIS FILE IS AUTO-GENERATED BY THE LATTICEMICO SYSTEM.
-//
-//   Permission:
-//
-//      Lattice Semiconductor grants permission to use this code
-//      pursuant to the terms of the Lattice Semiconductor Corporation
-//      Open Source License Agreement.
-//
-//   Disclaimer:
-//
-//      Lattice Semiconductor provides no warranty regarding the use or
-//      functionality of this code. It is the user's responsibility to
-//      verify the user's design for consistency and functionality through
-//      the use of formal verification methods.
-//
-//   --------------------------------------------------------------------
-//
-//                  Lattice Semiconductor Corporation
-//                  5555 NE Moore Court
-//                  Hillsboro, OR 97214
-//                  U.S.A
-//
-//                  TEL: 1-800-Lattice (USA and Canada)
-//                         503-286-8001 (other locations)
-//
-//                  web: http://www.latticesemi.com/
-//                  email: techsupport@latticesemi.com
-//
-//   --------------------------------------------------------------------
-//                         FILE DETAILS
-// Project          : LatticeMico32
-// File             : lm32_include.v
-// Title            : CPU global macros
-// Version          : 6.1.17
-//                  : Initial Release
-// Version          : 7.0SP2, 3.0
-//                  : No Change
-// Version          : 3.1
-//                  : No Change
-// Version          : 3.2
-//                  : No Change
-// Version          : 3.3
-//                  : Support for extended configuration register
-// =============================================================================
-
-
-//
-// Common configuration options
-//
-
-
-
-
-
-
-// Enable Debugging
-//`define CFG_JTAG_ENABLED
-//`define CFG_JTAG_UART_ENABLED
-//`define CFG_HW_DEBUG_ENABLED
-
-// Enable MMU
-
-
-
-//
-// End of common configuration options
-//
-
-
-// Wishbone configuration
-
-// Data-path width
-
-// Register file size
-
-// Standard register numbers
-
-// Range of Program Counter. Two LSBs are always 0.
-
-// Range of an instruction
-
-// Adder operation
-
-// Shift direction
-
-// Bus errors
-
-// Derive macro that indicates whether we have single-stepping or not
-
-// Derive macro that indicates whether JTAG interface is required
-
-// Derive macro that indicates whether ROM debug is required
-
-// Derive macro that indicates whether we have a barrel-shifter or not
-
-// Derive macro that indicates whether we have a multiplier or not
-
-// Derive a macro that indicates whether or not the multi-cycle arithmetic unit is required
-
-// Derive macro that indicates if we are using an EBR register file
-
-// Revision number
-
-// Logical operations - Function encoded directly in instruction
-
-// Conditions for conditional branches
-
-// Size of load or store instruction - Encoding corresponds to opcode
-
-// Width and range of a CSR index
-
-// CSR indices
-
-// Values for WPC CSR
-
-// TLB operation codes
-
-// Exception IDs
-
-// Exception Base Address
-
-// Pipeline result selection mux controls
-
-
-
-
-// Derive a macro to indicate if either of the caches are implemented
-
-/////////////////////////////////////////////////////
-// Interrupts
-/////////////////////////////////////////////////////
-
-// Always enable interrupts
-
-// Currently this is fixed to 32 and should not be changed
-
-/////////////////////////////////////////////////////
-// General
-/////////////////////////////////////////////////////
-
-// Sub-word range types
-
-// Word sub-byte indicies
-
-// Word sub-halfword indices
-
-// Use a synchronous reset
-
-// Wishbone defines
-// Refer to Wishbone System-on-Chip Interconnection Architecture
-// These should probably be moved to a Wishbone common file
-
-// Wishbone cycle types
-
-// Wishbone burst types
-
-`timescale 1 ns / 1 ps
-
-module testbench();
-
-integer i;
-
-reg sys_rst;
-reg sys_clk;
-reg [31:0] interrupt;
-
-reg i_ack;
-wire [31:0] i_adr;
-wire i_cyc;
-wire [31:0] i_dat;
-wire i_stb;
-
-reg d_ack;
-wire [31:0] d_adr;
-wire d_cyc;
-wire [31:0] d_dat_i;
-wire [31:0] d_dat_o;
-wire [3:0] d_sel;
-wire d_stb;
-
-lm32_top lm32(
-	.clk_i(sys_clk),
-	.rst_i(sys_rst),
-
-	.interrupt(interrupt),
-	.ext_break(1'b0),
-
-	.I_ACK_I(i_ack),
-	.I_ADR_O(i_adr),
-	.I_BTE_O(),
-	.I_CTI_O(),
-	.I_CYC_O(i_cyc),
-	.I_DAT_I(i_dat),
-	.I_DAT_O(),
-	.I_ERR_I(1'b0),
-	.I_LOCK_O(),
-	.I_RTY_I(1'b0),
-	.I_SEL_O(),
-	.I_STB_O(i_stb),
-	.I_WE_O(),
-
-	.D_ACK_I(d_ack),
-	.D_ADR_O(d_adr),
-	.D_BTE_O(),
-	.D_CTI_O(),
-	.D_CYC_O(d_cyc),
-	.D_DAT_I(d_dat_i),
-	.D_DAT_O(d_dat_o),
-	.D_ERR_I(1'b0),
-	.D_LOCK_O(),
-	.D_RTY_I(1'b0),
-	.D_SEL_O(d_sel),
-	.D_STB_O(d_stb),
-	.D_WE_O(d_we)
-);
-
-// clock
-initial sys_clk = 1'b0;
-always #50 sys_clk = ~sys_clk;
-
-// reset
-initial begin
-	sys_rst = 1'b0;
-	repeat (500) @(posedge sys_clk);
-	sys_rst = 1'b1;
-	repeat (500) @(posedge sys_clk);
-	sys_rst = 1'b0;
-end
-
-// memory
-reg [7:0] mem[0:65535];
-initial begin
-	for(i=0;i<65536;i=i+1)
-		mem[i] = 8'b0;
-end
-
-// memory monitor bitmap
-reg mem_monitor_prog_rd[0:'h4000];
-reg mem_monitor_data_rd[0:'h4000];
-reg mem_monitor_data_wr[0:'h4000];
-initial begin
-	for(i=0;i<'h4000;i=i+1) begin
-		// print prog read (until icache is hot) and non-stack data writes
-		mem_monitor_prog_rd[i] = 1;
-		mem_monitor_data_rd[i] = 0;
-		mem_monitor_data_wr[i] = i < 'h3000;
-	end
-end
-
-wire [31:0] dmem_dat_i;
-reg [31:0] dmem_dat_o;
-wire [13:0] dmem_adr;
-wire [3:0] dmem_we;
-always @(posedge sys_clk) begin
-	if(dmem_we[0]) mem[{dmem_adr, 2'b11}] <= dmem_dat_i[7:0];
-	if(dmem_we[1]) mem[{dmem_adr, 2'b10}] <= dmem_dat_i[15:8];
-	if(dmem_we[2]) mem[{dmem_adr, 2'b01}] <= dmem_dat_i[23:16];
-	if(dmem_we[3]) mem[{dmem_adr, 2'b00}] <= dmem_dat_i[31:24];
-	dmem_dat_o[7:0]   <= mem[{dmem_adr, 2'b11}];
-	dmem_dat_o[15:8]  <= mem[{dmem_adr, 2'b10}];
-	dmem_dat_o[23:16] <= mem[{dmem_adr, 2'b01}];
-	dmem_dat_o[31:24] <= mem[{dmem_adr, 2'b00}];
-
-	if (dmem_we) begin
-		if (mem_monitor_data_wr[dmem_adr] && !d_ack)
-			$display("DATA WR: @%08x %02x%02x%02x%02x (%b)", {dmem_adr, 2'b00},
-					dmem_we[3] ? dmem_dat_i[31:24] : 8'bz,
-					dmem_we[2] ? dmem_dat_i[23:16] : 8'bz,
-					dmem_we[1] ? dmem_dat_i[15: 8] : 8'bz,
-					dmem_we[0] ? dmem_dat_i[ 7: 0] : 8'bz, dmem_we);
-	end else if (d_cyc) begin
-		if (mem_monitor_data_rd[dmem_adr] && !d_ack)
-			$display("DATA RD: @%08x %02x%02x%02x%02x", {dmem_adr, 2'b00}, 
-					mem[{dmem_adr, 2'b00}], mem[{dmem_adr, 2'b01}],
-					mem[{dmem_adr, 2'b10}], mem[{dmem_adr, 2'b11}]);
-	end
-end
-reg [31:0] pmem_dat_o;
-wire [13:0] pmem_adr;
-always @(posedge sys_clk) begin
-	pmem_dat_o[7:0]   <= mem[{pmem_adr, 2'b11}];
-	pmem_dat_o[15:8]  <= mem[{pmem_adr, 2'b10}];
-	pmem_dat_o[23:16] <= mem[{pmem_adr, 2'b01}];
-	pmem_dat_o[31:24] <= mem[{pmem_adr, 2'b00}];
-
-	if (i_cyc && !i_ack && mem_monitor_prog_rd[pmem_adr])
-		$display("PROG RD: @%08x %02x%02x%02x%02x", {pmem_adr, 2'b00}, 
-				mem[{pmem_adr, 2'b00}], mem[{pmem_adr, 2'b01}],
-				mem[{pmem_adr, 2'b10}], mem[{pmem_adr, 2'b11}]);
-end
-
-// uart
-always @(posedge sys_clk) begin
-	if(d_cyc & d_stb & d_we & d_ack) begin
-		if(d_adr == 32'hff000000)
-			$write("%c", d_dat_o[7:0]);
-		if(d_adr == 32'hff000004)
-			$display("OUT: %d", d_dat_o);
-	end
-end
-
-// wishbone interface for instruction bus
-always @(posedge sys_clk) begin
-	if(sys_rst)
-		i_ack <= 1'b0;
-	else begin
-		i_ack <= 1'b0;
-		if(i_cyc & i_stb & ~i_ack)
-			i_ack <= 1'b1;
-	end
-end
-
-integer clock_counter = 0;
-always @(posedge sys_clk) begin
-	clock_counter = clock_counter + 1;
-	if (clock_counter == 1000) begin
-		$display("-- 1000 sys_clk cycles --");
-		clock_counter = 0;
-	end
-end
-
-assign i_dat = pmem_dat_o;
-assign pmem_adr = i_adr[15:2];
-
-
-// wishbone interface for data bus
-always @(posedge sys_clk) begin
-	if(sys_rst)
-		d_ack <= 1'b0;
-	else begin
-		d_ack <= 1'b0;
-		if(d_cyc & d_stb & ~d_ack)
-			d_ack <= 1'b1;
-	end
-end
-
-assign d_dat_i = dmem_dat_o;
-assign dmem_dat_i = d_dat_o;
-assign dmem_adr = d_adr[15:2];
-assign dmem_we = {4{d_cyc & d_stb & d_we & ~|d_adr[31:16]}} & d_sel;
-
-// interrupts
-initial interrupt <= 32'b0;
-
-// simulation end request
-always @(posedge sys_clk) begin
-	if(d_cyc & d_stb & d_we & d_ack)
-		if(d_adr == 32'hdead0000 && d_dat_o == 32'hbeef)
-			$finish;
-end
-
-// traces
-
-
-// dump signals
-reg [256*8:0] vcdfile;
-initial begin
-	if($value$plusargs("dump=%s", vcdfile)) begin
-		$dumpfile(vcdfile);
-		$dumpvars(0, testbench);
-	end
-end
-
-// init memory
-reg [256*8:0] prog;
-initial begin
-	if(! $value$plusargs("prog=%s", prog)) begin
-		// $display("ERROR: please specify +prog=<file>.vh to start.");
-		// $finish;
-		prog = "lm32/sim/sieve.vh";
-	end
-end
-
-initial $readmemh(prog, mem);
-
-// trace pipeline
-
-initial begin
-	// $dumpfile("bench.vcd");
-	// @(posedge sys_rst);
-	// repeat (5) @(posedge sys_clk);
-	// $dumpvars(0, testbench);
-	// repeat (2500) @(posedge sys_clk);
-	// $finish;
-end
-
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/surelog.log b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/surelog.log
deleted file mode 100644
index d11cdac..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/surelog.log
+++ /dev/null
@@ -1,235 +0,0 @@
-********************************************
-*  SURELOG System Verilog Compiler/Linter  *
-********************************************
-
-Copyright (c) 2017-2019 ACE Cloud,
-Authorized used only.
-
-VERSION: 0.05
-BUILT  : Nov  3 2019
-DATE   : 2019-11-03.21:39:57
-COMMAND: -writepp -parse -mt max -nopython -fileunit rtl/omsp_alu.v rtl/omsp_and_gate.v rtl/omsp_clock_gate.v rtl/omsp_clock_module.v rtl/omsp_clock_mux.v rtl/omsp_dbg.v rtl/omsp_dbg_hwbrk.v rtl/omsp_dbg_i2c.v rtl/omsp_dbg_uart.v rtl/omsp_execution_unit.v rtl/omsp_frontend.v rtl/omsp_mem_backbone.v rtl/omsp_multiplier.v rtl/omsp_register_file.v rtl/omsp_scan_mux.v rtl/omsp_sfr.v rtl/omsp_sync_cell.v rtl/omsp_sync_reset.v rtl/omsp_wakeup_cell.v rtl/omsp_watchdog.v rtl/openMSP430.v rtl/openMSP430_defines.v rtl/openMSP430_undefines.v sim/bench.v sim/sieve.v +incdir+./rtl/+./sim/ -nobuiltin -nocache
-
-[INFO :CM0023] Creating log file ./slpp_unit/surelog.log.
-
-[INFO :CM0024] Executing with 4 threads.
-
-[INFO :CM0020] Separate compilation-unit mode is on.
-
-[WARNI:PP0103] ./rtl/openMSP430_undefines.v:249 Undefining an unknown macro "PMEM_CUSTOM_AWIDTH".
-
-[WARNI:PP0103] ./rtl/openMSP430_undefines.v:250 Undefining an unknown macro "PMEM_CUSTOM_SIZE".
-
-[WARNI:PP0103] ./rtl/openMSP430_undefines.v:251 Undefining an unknown macro "DMEM_CUSTOM_AWIDTH".
-
-[WARNI:PP0103] ./rtl/openMSP430_undefines.v:252 Undefining an unknown macro "DMEM_CUSTOM_SIZE".
-
-[WARNI:PP0103] ./rtl/openMSP430_undefines.v:253 Undefining an unknown macro "PER_CUSTOM_AWIDTH".
-
-[WARNI:PP0103] ./rtl/openMSP430_undefines.v:254 Undefining an unknown macro "PER_CUSTOM_SIZE".
-
-[ERROR:PP0102] ./rtl/openMSP430_defines.v:626 Unknown macro "PER_SIZE".
-
-[ERROR:PP0102] ./rtl/openMSP430_defines.v:629 Unknown macro "PMEM_AWIDTH".
-
-[ERROR:PP0102] ./rtl/openMSP430_defines.v:630 Unknown macro "DMEM_AWIDTH".
-
-[ERROR:PP0102] ./rtl/openMSP430_defines.v:631 Unknown macro "PER_AWIDTH".
-
-[ERROR:PP0102] ./rtl/openMSP430_defines.v:813 Unknown macro "DBG_DCO_FREQ".
-
-[ERROR:PP0102] ./rtl/openMSP430_defines.v:813 Unknown macro "DBG_UART_BAUD".
-
-[WARNI:PP0103] rtl/openMSP430_undefines.v:249 Undefining an unknown macro "PMEM_CUSTOM_AWIDTH".
-
-[WARNI:PP0103] rtl/openMSP430_undefines.v:250 Undefining an unknown macro "PMEM_CUSTOM_SIZE".
-
-[WARNI:PP0103] rtl/openMSP430_undefines.v:251 Undefining an unknown macro "DMEM_CUSTOM_AWIDTH".
-
-[WARNI:PP0103] rtl/openMSP430_undefines.v:252 Undefining an unknown macro "DMEM_CUSTOM_SIZE".
-
-[WARNI:PP0103] rtl/openMSP430_undefines.v:253 Undefining an unknown macro "PER_CUSTOM_AWIDTH".
-
-[WARNI:PP0103] rtl/openMSP430_undefines.v:254 Undefining an unknown macro "PER_CUSTOM_SIZE".
-
-[ERROR:PA0207] sim/sieve.v:1 Syntax error: missing {'new', 'byte', 'bit', 'logic', 'signed', 'unsigned', 'var', 'expect', 'soft', 'global', 'do', 'this', 'randomize', 'final', 'sample', Escaped_identifier, Simple_identifier} at '[',
-pmem[ 512] = 16'h4031;
-    ^-- ./slpp_unit/work/sim/sieve.v:1 col:4.
-
-[WARNI:PA0205] rtl/omsp_and_gate.v:44 No timescale set for "omsp_and_gate".
-
-[WARNI:PA0205] rtl/omsp_clock_gate.v:44 No timescale set for "omsp_clock_gate".
-
-[WARNI:PA0205] rtl/omsp_clock_mux.v:44 No timescale set for "omsp_clock_mux".
-
-[WARNI:PA0205] rtl/omsp_dbg_hwbrk.v:46 No timescale set for "omsp_dbg_hwbrk".
-
-[WARNI:PA0205] rtl/omsp_clock_module.v:46 No timescale set for "omsp_clock_module".
-
-[WARNI:PA0205] rtl/omsp_alu.v:46 No timescale set for "omsp_alu".
-
-[WARNI:PA0205] rtl/omsp_dbg.v:46 No timescale set for "omsp_dbg".
-
-[WARNI:PA0205] rtl/omsp_execution_unit.v:46 No timescale set for "omsp_execution_unit".
-
-[WARNI:PA0205] rtl/omsp_dbg_uart.v:46 No timescale set for "omsp_dbg_uart".
-
-[WARNI:PA0205] rtl/omsp_register_file.v:46 No timescale set for "omsp_register_file".
-
-[WARNI:PA0205] rtl/openMSP430.v:46 No timescale set for "openMSP430".
-
-[WARNI:PA0205] rtl/omsp_dbg_i2c.v:46 No timescale set for "omsp_dbg_i2c".
-
-[WARNI:PA0205] rtl/omsp_mem_backbone.v:46 No timescale set for "omsp_mem_backbone".
-
-[WARNI:PA0205] rtl/omsp_sync_reset.v:44 No timescale set for "omsp_sync_reset".
-
-[WARNI:PA0205] rtl/omsp_wakeup_cell.v:46 No timescale set for "omsp_wakeup_cell".
-
-[WARNI:PA0205] rtl/omsp_multiplier.v:46 No timescale set for "omsp_multiplier".
-
-[WARNI:PA0205] rtl/omsp_sync_cell.v:44 No timescale set for "omsp_sync_cell".
-
-[WARNI:PA0205] rtl/omsp_watchdog.v:46 No timescale set for "omsp_watchdog".
-
-[WARNI:PA0205] rtl/omsp_frontend.v:46 No timescale set for "omsp_frontend".
-
-[WARNI:PA0205] rtl/omsp_scan_mux.v:44 No timescale set for "omsp_scan_mux".
-
-[WARNI:PA0205] rtl/omsp_sfr.v:47 No timescale set for "omsp_sfr".
-
-[INFO :CP0300] Compilation...
-
-[INFO :CP0303] rtl/omsp_alu.v:46 Compile module "work@omsp_alu".
-
-[INFO :CP0303] rtl/omsp_clock_gate.v:44 Compile module "work@omsp_clock_gate".
-
-[INFO :CP0303] rtl/omsp_clock_module.v:46 Compile module "work@omsp_clock_module".
-
-[INFO :CP0303] rtl/omsp_and_gate.v:44 Compile module "work@omsp_and_gate".
-
-[INFO :CP0303] rtl/omsp_dbg_hwbrk.v:46 Compile module "work@omsp_dbg_hwbrk".
-
-[INFO :CP0303] rtl/omsp_dbg.v:46 Compile module "work@omsp_dbg".
-
-[INFO :CP0303] rtl/omsp_clock_mux.v:44 Compile module "work@omsp_clock_mux".
-
-[INFO :CP0303] rtl/omsp_frontend.v:46 Compile module "work@omsp_frontend".
-
-[INFO :CP0303] rtl/omsp_dbg_uart.v:46 Compile module "work@omsp_dbg_uart".
-
-[INFO :CP0303] rtl/omsp_dbg_i2c.v:46 Compile module "work@omsp_dbg_i2c".
-
-[INFO :CP0303] rtl/omsp_multiplier.v:46 Compile module "work@omsp_multiplier".
-
-[INFO :CP0303] rtl/omsp_execution_unit.v:46 Compile module "work@omsp_execution_unit".
-
-[INFO :CP0303] rtl/omsp_mem_backbone.v:46 Compile module "work@omsp_mem_backbone".
-
-[INFO :CP0303] rtl/omsp_sync_cell.v:44 Compile module "work@omsp_sync_cell".
-
-[INFO :CP0303] rtl/openMSP430.v:46 Compile module "work@openMSP430".
-
-[INFO :CP0303] rtl/omsp_scan_mux.v:44 Compile module "work@omsp_scan_mux".
-
-[INFO :CP0303] rtl/omsp_sfr.v:47 Compile module "work@omsp_sfr".
-
-[INFO :CP0303] rtl/omsp_wakeup_cell.v:46 Compile module "work@omsp_wakeup_cell".
-
-[INFO :CP0303] rtl/omsp_register_file.v:46 Compile module "work@omsp_register_file".
-
-[INFO :CP0303] rtl/omsp_watchdog.v:46 Compile module "work@omsp_watchdog".
-
-[INFO :CP0303] rtl/omsp_sync_reset.v:44 Compile module "work@omsp_sync_reset".
-
-[INFO :CP0303] sim/bench.v:6 Compile module "work@testbench".
-
-[NOTE :CP0309] rtl/omsp_alu.v:49 Implicit port type (wire) for "alu_out",
-there are 3 more instances of this message.
-
-[NOTE :CP0309] rtl/omsp_clock_mux.v:47 Implicit port type (wire) for "clk_out".
-
-[NOTE :CP0309] rtl/omsp_dbg_uart.v:50 Implicit port type (wire) for "dbg_din",
-there are 2 more instances of this message.
-
-[NOTE :CP0309] rtl/omsp_multiplier.v:49 Implicit port type (wire) for "per_dout".
-
-[NOTE :CP0309] rtl/omsp_sync_cell.v:47 Implicit port type (wire) for "data_out".
-
-[NOTE :CP0309] rtl/openMSP430.v:49 Implicit port type (wire) for "aclk",
-there are 25 more instances of this message.
-
-[NOTE :CP0309] rtl/omsp_and_gate.v:47 Implicit port type (wire) for "y".
-
-[NOTE :CP0309] rtl/omsp_dbg.v:49 Implicit port type (wire) for "dbg_cpu_reset",
-there are 9 more instances of this message.
-
-[NOTE :CP0309] rtl/omsp_execution_unit.v:49 Implicit port type (wire) for "cpuoff",
-there are 11 more instances of this message.
-
-[NOTE :CP0309] rtl/omsp_register_file.v:49 Implicit port type (wire) for "cpuoff",
-there are 9 more instances of this message.
-
-[NOTE :CP0309] rtl/omsp_sync_reset.v:47 Implicit port type (wire) for "rst_s".
-
-[NOTE :CP0309] rtl/omsp_clock_gate.v:47 Implicit port type (wire) for "gclk".
-
-[NOTE :CP0309] rtl/omsp_dbg_hwbrk.v:49 Implicit port type (wire) for "brk_halt",
-there are 2 more instances of this message.
-
-[NOTE :CP0309] rtl/omsp_frontend.v:50 Implicit port type (wire) for "decode_noirq",
-there are 11 more instances of this message.
-
-[NOTE :CP0309] rtl/omsp_scan_mux.v:47 Implicit port type (wire) for "data_out".
-
-[NOTE :CP0309] rtl/omsp_clock_module.v:49 Implicit port type (wire) for "aclk",
-there are 14 more instances of this message.
-
-[NOTE :CP0309] rtl/omsp_dbg_i2c.v:50 Implicit port type (wire) for "dbg_din".
-
-[NOTE :CP0309] rtl/omsp_mem_backbone.v:49 Implicit port type (wire) for "dbg_mem_din",
-there are 15 more instances of this message.
-
-[NOTE :CP0309] rtl/omsp_sfr.v:50 Implicit port type (wire) for "cpu_id",
-there are 5 more instances of this message.
-
-[NOTE :CP0309] rtl/omsp_watchdog.v:49 Implicit port type (wire) for "per_dout",
-there are 3 more instances of this message.
-
-[INFO :EL0526] Design Elaboration...
-
-[NOTE :EL0503] rtl/omsp_and_gate.v:44 Top level module "work@omsp_and_gate".
-
-[NOTE :EL0503] rtl/omsp_clock_gate.v:44 Top level module "work@omsp_clock_gate".
-
-[NOTE :EL0503] rtl/omsp_clock_mux.v:44 Top level module "work@omsp_clock_mux".
-
-[NOTE :EL0503] rtl/omsp_dbg_hwbrk.v:46 Top level module "work@omsp_dbg_hwbrk".
-
-[NOTE :EL0503] rtl/omsp_dbg_i2c.v:46 Top level module "work@omsp_dbg_i2c".
-
-[NOTE :EL0503] rtl/omsp_wakeup_cell.v:46 Top level module "work@omsp_wakeup_cell".
-
-[NOTE :EL0503] sim/bench.v:6 Top level module "work@testbench".
-
-[NOTE :EL0503] rtl/omsp_scan_mux.v:44 Top level module "work@omsp_scan_mux".
-
-[NOTE :EL0504] Multiple top level modules in design.
-
-[NOTE :EL0508] Nb Top level modules: 8.
-
-[NOTE :EL0509] Max instance depth: 5.
-
-[NOTE :EL0510] Nb instances: 27.
-
-[NOTE :EL0511] Nb leaf instances: 17.
-
-[  FATAL] : 0
-[  ERROR] : 7
-[WARNING] : 33
-[   NOTE] : 33
-
-********************************************
-*   End SURELOG SVerilog Compiler/Linter   *
-********************************************
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_alu.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_alu.v
deleted file mode 100644
index 99d314b..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_alu.v
+++ /dev/null
@@ -1,1171 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_alu.v
-// 
-// *Module Description:
-//                       openMSP430 ALU
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 134 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2012-03-22 21:31:06 +0100 (Thu, 22 Mar 2012) $
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
-module  omsp_alu (
-
-// OUTPUTs
-    alu_out,                       // ALU output value
-    alu_out_add,                   // ALU adder output value
-    alu_stat,                      // ALU Status {V,N,Z,C}
-    alu_stat_wr,                   // ALU Status write {V,N,Z,C}
-
-// INPUTs
-    dbg_halt_st,                   // Halt/Run status from CPU
-    exec_cycle,                    // Instruction execution cycle
-    inst_alu,                      // ALU control signals
-    inst_bw,                       // Decoded Inst: byte width
-    inst_jmp,                      // Decoded Inst: Conditional jump
-    inst_so,                       // Single-operand arithmetic
-    op_dst,                        // Destination operand
-    op_src,                        // Source operand
-    status                         // R2 Status {V,N,Z,C}
-);
-
-// OUTPUTs
-//=========
-output       [15:0] alu_out;       // ALU output value
-output       [15:0] alu_out_add;   // ALU adder output value
-output        [3:0] alu_stat;      // ALU Status {V,N,Z,C}
-output        [3:0] alu_stat_wr;   // ALU Status write {V,N,Z,C}
-
-// INPUTs
-//=========
-input               dbg_halt_st;   // Halt/Run status from CPU
-input               exec_cycle;    // Instruction execution cycle
-input        [11:0] inst_alu;      // ALU control signals
-input               inst_bw;       // Decoded Inst: byte width
-input         [7:0] inst_jmp;      // Decoded Inst: Conditional jump
-input         [7:0] inst_so;       // Single-operand arithmetic
-input        [15:0] op_dst;        // Destination operand
-input        [15:0] op_src;        // Source operand
-input         [3:0] status;        // R2 Status {V,N,Z,C}
-
-
-//=============================================================================
-// 1)  FUNCTIONS
-//=============================================================================
-
-function [4:0] bcd_add;
-
-   input [3:0] X;
-   input [3:0] Y;
-   input       C_;
-
-   reg   [4:0] Z_;
-   begin
-      Z_ = {1'b0,X}+{1'b0,Y}+{4'b0,C_};
-      if (Z_<5'd10) bcd_add = Z_;
-      else          bcd_add = Z_+5'd6;
-   end
-
-endfunction
-
-
-//=============================================================================
-// 2)  INSTRUCTION FETCH/DECODE CONTROL STATE MACHINE
-//=============================================================================
-// SINGLE-OPERAND ARITHMETIC:
-//-----------------------------------------------------------------------------
-//   Mnemonic   S-Reg,   Operation                               Status bits
-//              D-Reg,                                            V  N  Z  C
-//
-//   RRC         dst     C->MSB->...LSB->C                        *  *  *  *
-//   RRA         dst     MSB->MSB->...LSB->C                      0  *  *  *
-//   SWPB        dst     Swap bytes                               -  -  -  -
-//   SXT         dst     Bit7->Bit8...Bit15                       0  *  *  *
-//   PUSH        src     SP-2->SP, src->@SP                       -  -  -  -
-//   CALL        dst     SP-2->SP, PC+2->@SP, dst->PC             -  -  -  -
-//   RETI                TOS->SR, SP+2->SP, TOS->PC, SP+2->SP     *  *  *  *
-//
-//-----------------------------------------------------------------------------
-// TWO-OPERAND ARITHMETIC:
-//-----------------------------------------------------------------------------
-//   Mnemonic   S-Reg,   Operation                               Status bits
-//              D-Reg,                                            V  N  Z  C
-//
-//   MOV       src,dst    src            -> dst                   -  -  -  -
-//   ADD       src,dst    src +  dst     -> dst                   *  *  *  *
-//   ADDC      src,dst    src +  dst + C -> dst                   *  *  *  *
-//   SUB       src,dst    dst + ~src + 1 -> dst                   *  *  *  *
-//   SUBC      src,dst    dst + ~src + C -> dst                   *  *  *  *
-//   CMP       src,dst    dst + ~src + 1                          *  *  *  *
-//   DADD      src,dst    src +  dst + C -> dst (decimaly)        *  *  *  *
-//   BIT       src,dst    src &  dst                              0  *  *  *
-//   BIC       src,dst   ~src &  dst     -> dst                   -  -  -  -
-//   BIS       src,dst    src |  dst     -> dst                   -  -  -  -
-//   XOR       src,dst    src ^  dst     -> dst                   *  *  *  *
-//   AND       src,dst    src &  dst     -> dst                   0  *  *  *
-//
-//-----------------------------------------------------------------------------
-// * the status bit is affected
-// - the status bit is not affected
-// 0 the status bit is cleared
-// 1 the status bit is set
-//-----------------------------------------------------------------------------
-
-// Invert source for substract and compare instructions.
-wire        op_src_inv_cmd = exec_cycle & (inst_alu[0]);
-wire [15:0] op_src_inv     = {16{op_src_inv_cmd}} ^ op_src;
-
-
-// Mask the bit 8 for the Byte instructions for correct flags generation
-wire        op_bit8_msk     = ~exec_cycle | ~inst_bw;
-wire [16:0] op_src_in       = {1'b0, {op_src_inv[15:8] & {8{op_bit8_msk}}}, op_src_inv[7:0]};
-wire [16:0] op_dst_in       = {1'b0, {op_dst[15:8]     & {8{op_bit8_msk}}}, op_dst[7:0]};
-
-// Clear the source operand (= jump offset) for conditional jumps
-wire        jmp_not_taken  = (inst_jmp[6]  & ~(status[3]^status[2])) |
-                             (inst_jmp[5] &  (status[3]^status[2])) |
-                             (inst_jmp[4]  &  ~status[2])            |
-                             (inst_jmp[3]  &  ~status[0])            |
-                             (inst_jmp[2] &   status[0])            |
-                             (inst_jmp[1] &  ~status[1])            |
-                             (inst_jmp[0] &   status[1]);
-wire [16:0] op_src_in_jmp  = op_src_in & {17{~jmp_not_taken}};
-
-// Adder / AND / OR / XOR
-wire [16:0] alu_add        = op_src_in_jmp + op_dst_in;
-wire [16:0] alu_and        = op_src_in     & op_dst_in;
-wire [16:0] alu_or         = op_src_in     | op_dst_in;
-wire [16:0] alu_xor        = op_src_in     ^ op_dst_in;
-
-
-// Incrementer
-wire        alu_inc         = exec_cycle & ((inst_alu[2] & status[0]) |
-                                             inst_alu[1]);
-wire [16:0] alu_add_inc    = alu_add + {16'h0000, alu_inc};
-
-
-
-// Decimal adder (DADD)
-wire  [4:0] alu_dadd0      = bcd_add(op_src_in[3:0],   op_dst_in[3:0],  status[0]);
-wire  [4:0] alu_dadd1      = bcd_add(op_src_in[7:4],   op_dst_in[7:4],  alu_dadd0[4]);
-wire  [4:0] alu_dadd2      = bcd_add(op_src_in[11:8],  op_dst_in[11:8], alu_dadd1[4]);
-wire  [4:0] alu_dadd3      = bcd_add(op_src_in[15:12], op_dst_in[15:12],alu_dadd2[4]);
-wire [16:0] alu_dadd       = {alu_dadd3, alu_dadd2[3:0], alu_dadd1[3:0], alu_dadd0[3:0]};
-
-
-// Shifter for rotate instructions (RRC & RRA)
-wire        alu_shift_msb  = inst_so[0] ? status[0]     :
-	                     inst_bw       ? op_src[7]     : op_src[15];
-wire        alu_shift_7    = inst_bw       ? alu_shift_msb : op_src[8];
-wire [16:0] alu_shift      = {1'b0, alu_shift_msb, op_src[15:9], alu_shift_7, op_src[7:1]};
-
-
-// Swap bytes / Extend Sign
-wire [16:0] alu_swpb       = {1'b0, op_src[7:0],op_src[15:8]};
-wire [16:0] alu_sxt        = {1'b0, {8{op_src[7]}},op_src[7:0]};
-
-
-// Combine short paths toghether to simplify final ALU mux
-wire        alu_short_thro = ~(inst_alu[4]   |
-                               inst_alu[5]    |
-                               inst_alu[6]   |
-                               inst_alu[10] |
-                               inst_so[1]       |
-                               inst_so[3]);
-
-wire [16:0] alu_short      = ({17{inst_alu[4]}}   & alu_and)   |
-                             ({17{inst_alu[5]}}    & alu_or)    |
-                             ({17{inst_alu[6]}}   & alu_xor)   |
-                             ({17{inst_alu[10]}} & alu_shift) |
-                             ({17{inst_so[1]}}       & alu_swpb)  |
-                             ({17{inst_so[3]}}        & alu_sxt)   |
-                             ({17{alu_short_thro}}       & op_src_in);
-
-
-// ALU output mux
-wire [16:0] alu_out_nxt    = (inst_so[7] | dbg_halt_st |
-                              inst_alu[3]) ? alu_add_inc :
-                              inst_alu[7] ? alu_dadd    : alu_short;
-
-assign      alu_out        =  alu_out_nxt[15:0];
-assign      alu_out_add    =  alu_add[15:0];
-
-
-//-----------------------------------------------------------------------------
-// STATUS FLAG GENERATION
-//-----------------------------------------------------------------------------
-
-wire    V_xor       = inst_bw ? (op_src_in[7]  & op_dst_in[7])  :
-                                (op_src_in[15] & op_dst_in[15]);
-
-wire    V           = inst_bw ? ((~op_src_in[7]  & ~op_dst_in[7]  &  alu_out[7])  |
-                                 ( op_src_in[7]  &  op_dst_in[7]  & ~alu_out[7])) :
-                                ((~op_src_in[15] & ~op_dst_in[15] &  alu_out[15]) |
-                                 ( op_src_in[15] &  op_dst_in[15] & ~alu_out[15]));
-
-wire    N           = inst_bw ?  alu_out[7]       : alu_out[15];
-wire    Z           = inst_bw ? (alu_out[7:0]==0) : (alu_out==0);
-wire    C           = inst_bw ?  alu_out[8]       : alu_out_nxt[16];
-
-assign  alu_stat    = inst_alu[10]  ? {1'b0, N,Z,op_src_in[0]} :
-                      inst_alu[8] ? {1'b0, N,Z,~Z}           :
-                      inst_alu[6]    ? {V_xor,N,Z,~Z}           : {V,N,Z,C};
-
-assign  alu_stat_wr = (inst_alu[9] & exec_cycle) ? 4'b1111 : 4'b0000;
-
-
-endmodule // omsp_alu
-
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-
-// Data Memory sizes
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include Debug interface
-
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-
-// Include/Exclude Watchdog timer
-
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-
-// Input synchronizers
-
-
-// Peripheral Memory Space:
-
-
-// Let the CPU break after a PUC occurrence by default
-
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-
-
-// Data Memory Size
-
-
-
-// Peripheral Memory Size
-
-
-
-// Data Memory Base Adresses
-
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-
-
-
-// Instructions type
-
-
-
-
-// Single-operand arithmetic
-
-
-
-
-
-
-
-
-
-// Conditional jump
-
-
-
-
-
-
-
-
-
-// Two-operand arithmetic
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Addressing modes
-
-
-
-
-
-
-
-
-
-// Instruction state machine
-
-
-
-
-
-
-
-// Execution state machine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// ALU control signals
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Debug interface
-
-
-
-
-// Debug interface CPU_CTL register
-
-
-
-
-
-
-
-
-// Debug interface CPU_STAT register
-
-
-
-
-
-
-// Debug interface BRKx_CTL register
-
-
-
-
-
-
-
-// Basic clock module: BCSCTL1 Control Register
-
-
-// Basic clock module: BCSCTL2 Control Register
-
-
-
-
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-
-// Debug interface: Software breakpoint opcode
-
-
-// Debug UART interface auto data synchronization
-
-
-// Debug UART interface data rate
-
-
-
-
-// Debug interface input synchronizer
-
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-
-// Counter width for the debug interface UART
-
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_and_gate.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_and_gate.v
deleted file mode 100644
index 7ceeb8d..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_and_gate.v
+++ /dev/null
@@ -1,89 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_and_gate.v
-// 
-// *Module Description:
-//                       Generic AND gate cell for the openMSP430
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 103 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2011-03-05 15:44:48 +0100 (Sat, 05 Mar 2011) $
-//----------------------------------------------------------------------------
-
-module  omsp_and_gate (
-
-// OUTPUTs
-    y,                         // AND gate output
-
-// INPUTs
-    a,                         // AND gate input A
-    b                          // AND gate input B
-);
-
-// OUTPUTs
-//=========
-output         y;              // AND gate output
-
-// INPUTs
-//=========
-input          a;              // AND gate input A
-input          b;              // AND gate input B
-
-
-//=============================================================================
-// 1)  SOME COMMENTS ON THIS MODULE
-//=============================================================================
-//
-//    In its ASIC version, some combinatorial pathes of the openMSP430 are
-// sensitive to glitches, in particular the ones generating the wakeup
-// signals.
-//    To prevent synthesis from optmizing combinatorial clouds into glitchy
-// logic, this AND gate module has been instanciated in the critical places.
-//
-//    Make sure that synthesis doesn't ungroup this module. As an alternative,
-// a standard cell from the library could also be directly instanciated here
-// (don't forget the "dont_touch" attribute)
-//
-//
-//=============================================================================
-// 2)  AND GATE
-//=============================================================================
-
-assign  y  =  a & b;
-
-
-endmodule // omsp_and_gate
-
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_clock_gate.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_clock_gate.v
deleted file mode 100644
index 8ffe8e0..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_clock_gate.v
+++ /dev/null
@@ -1,86 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_clock_gate.v
-// 
-// *Module Description:
-//                       Generic clock gate cell for the openMSP430
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 103 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2011-03-05 15:44:48 +0100 (Sat, 05 Mar 2011) $
-//----------------------------------------------------------------------------
-
-module  omsp_clock_gate (
-
-// OUTPUTs
-    gclk,                      // Gated clock
-
-// INPUTs
-    clk,                       // Clock
-    enable,                    // Clock enable
-    scan_enable                // Scan enable (active during scan shifting)
-);
-
-// OUTPUTs
-//=========
-output         gclk;           // Gated clock
-
-// INPUTs
-//=========
-input          clk;            // Clock
-input          enable;         // Clock enable
-input          scan_enable;    // Scan enable (active during scan shifting)
-
-
-//=============================================================================
-// CLOCK GATE: LATCH + AND
-//=============================================================================
-   
-// Enable clock gate during scan shift
-// (the gate itself is checked with the scan capture cycle)
-wire    enable_in =   (enable | scan_enable);
-
-// LATCH the enable signal
-reg     enable_latch;
-always @(clk or enable_in)
-  if (~clk)
-    enable_latch <= enable_in;
-
-// AND gate
-assign  gclk      =  (clk & enable_latch);
-
-
-endmodule // omsp_clock_gate
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_clock_module.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_clock_module.v
deleted file mode 100644
index 0d38ba0..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_clock_module.v
+++ /dev/null
@@ -1,1411 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_clock_module.v
-// 
-// *Module Description:
-//                       Basic clock module implementation.
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
-module  omsp_clock_module (
-
-// OUTPUTs
-    aclk,                         // ACLK
-    aclk_en,                      // ACLK enable
-    cpu_en_s,                     // Enable CPU code execution (synchronous)
-    dbg_clk,                      // Debug unit clock
-    dbg_en_s,                     // Debug interface enable (synchronous)
-    dbg_rst,                      // Debug unit reset
-    dco_enable,                   // Fast oscillator enable
-    dco_wkup,                     // Fast oscillator wake-up (asynchronous)
-    lfxt_enable,                  // Low frequency oscillator enable
-    lfxt_wkup,                    // Low frequency oscillator wake-up (asynchronous)
-    mclk,                         // Main system clock
-    per_dout,                     // Peripheral data output
-    por,                          // Power-on reset
-    puc_pnd_set,                  // PUC pending set for the serial debug interface
-    puc_rst,                      // Main system reset
-    smclk,                        // SMCLK
-    smclk_en,                     // SMCLK enable
-	     
-// INPUTs
-    cpu_en,                       // Enable CPU code execution (asynchronous)
-    cpuoff,                       // Turns off the CPU
-    dbg_cpu_reset,                // Reset CPU from debug interface
-    dbg_en,                       // Debug interface enable (asynchronous)
-    dco_clk,                      // Fast oscillator (fast clock)
-    lfxt_clk,                     // Low frequency oscillator (typ 32kHz)
-    mclk_enable,                  // Main System Clock enable
-    mclk_wkup,                    // Main System Clock wake-up (asynchronous)
-    oscoff,                       // Turns off LFXT1 clock input
-    per_addr,                     // Peripheral address
-    per_din,                      // Peripheral data input
-    per_en,                       // Peripheral enable (high active)
-    per_we,                       // Peripheral write enable (high active)
-    reset_n,                      // Reset Pin (low active, asynchronous)
-    scan_enable,                  // Scan enable (active during scan shifting)
-    scan_mode,                    // Scan mode
-    scg0,                         // System clock generator 1. Turns off the DCO
-    scg1,                         // System clock generator 1. Turns off the SMCLK
-    wdt_reset                     // Watchdog-timer reset
-);
-
-// OUTPUTs
-//=========
-output              aclk;         // ACLK
-output              aclk_en;      // ACLK enable
-output              cpu_en_s;     // Enable CPU code execution (synchronous)
-output              dbg_clk;      // Debug unit clock
-output              dbg_en_s;     // Debug unit enable (synchronous)
-output              dbg_rst;      // Debug unit reset
-output              dco_enable;   // Fast oscillator enable
-output              dco_wkup;     // Fast oscillator wake-up (asynchronous)
-output              lfxt_enable;  // Low frequency oscillator enable
-output              lfxt_wkup;    // Low frequency oscillator wake-up (asynchronous)
-output              mclk;         // Main system clock
-output       [15:0] per_dout;     // Peripheral data output
-output              por;          // Power-on reset
-output              puc_pnd_set;  // PUC pending set for the serial debug interface
-output              puc_rst;      // Main system reset
-output              smclk;        // SMCLK
-output              smclk_en;     // SMCLK enable
-
-// INPUTs
-//=========
-input               cpu_en;       // Enable CPU code execution (asynchronous)
-input               cpuoff;       // Turns off the CPU
-input               dbg_cpu_reset;// Reset CPU from debug interface
-input               dbg_en;       // Debug interface enable (asynchronous)
-input               dco_clk;      // Fast oscillator (fast clock)
-input               lfxt_clk;     // Low frequency oscillator (typ 32kHz)
-input               mclk_enable;  // Main System Clock enable
-input               mclk_wkup;    // Main System Clock wake-up (asynchronous)
-input               oscoff;       // Turns off LFXT1 clock input
-input        [13:0] per_addr;     // Peripheral address
-input        [15:0] per_din;      // Peripheral data input
-input               per_en;       // Peripheral enable (high active)
-input         [1:0] per_we;       // Peripheral write enable (high active)
-input               reset_n;      // Reset Pin (low active, asynchronous)
-input               scan_enable;  // Scan enable (active during scan shifting)
-input               scan_mode;    // Scan mode
-input               scg0;         // System clock generator 1. Turns off the DCO
-input               scg1;         // System clock generator 1. Turns off the SMCLK
-input               wdt_reset;    // Watchdog-timer reset
-
-
-//=============================================================================
-// 1)  WIRES & PARAMETER DECLARATION
-//=============================================================================
-
-// Register base address (must be aligned to decoder bit width)
-parameter       [14:0] BASE_ADDR   = 15'h0050;
-
-// Decoder bit width (defines how many bits are considered for address decoding)
-parameter              DEC_WD      =  4;
-
-// Register addresses offset
-parameter [DEC_WD-1:0] BCSCTL1     =  'h7,
-                       BCSCTL2     =  'h8;
-
-// Register one-hot decoder utilities
-parameter              DEC_SZ      =  (1 << DEC_WD);
-parameter [DEC_SZ-1:0] BASE_REG    =  {{DEC_SZ-1{1'b0}}, 1'b1};
-
-// Register one-hot decoder
-parameter [DEC_SZ-1:0] BCSCTL1_D   = (BASE_REG << BCSCTL1),
-                       BCSCTL2_D   = (BASE_REG << BCSCTL2);
-
-// Local wire declarations
-wire nodiv_mclk;
-wire nodiv_mclk_n;
-wire nodiv_smclk;
-
-
-//============================================================================
-// 2)  REGISTER DECODER
-//============================================================================
-
-// Local register selection
-wire              reg_sel      =  per_en & (per_addr[13:DEC_WD-1]==BASE_ADDR[14:DEC_WD]);
-
-// Register local address
-wire [DEC_WD-1:0] reg_addr     =  {1'b0, per_addr[DEC_WD-2:0]};
-
-// Register address decode
-wire [DEC_SZ-1:0] reg_dec      = (BCSCTL1_D  &  {DEC_SZ{(reg_addr==(BCSCTL1 >>1))}}) |
-                                 (BCSCTL2_D  &  {DEC_SZ{(reg_addr==(BCSCTL2 >>1))}});
-
-// Read/Write probes
-wire              reg_lo_write =  per_we[0] & reg_sel;
-wire              reg_hi_write =  per_we[1] & reg_sel;
-wire              reg_read     = ~|per_we   & reg_sel;
-
-// Read/Write vectors
-wire [DEC_SZ-1:0] reg_hi_wr    = reg_dec & {DEC_SZ{reg_hi_write}};
-wire [DEC_SZ-1:0] reg_lo_wr    = reg_dec & {DEC_SZ{reg_lo_write}};
-wire [DEC_SZ-1:0] reg_rd       = reg_dec & {DEC_SZ{reg_read}};
-
-
-//============================================================================
-// 3) REGISTERS
-//============================================================================
-
-// BCSCTL1 Register
-//--------------
-reg  [7:0] bcsctl1;
-wire       bcsctl1_wr  = BCSCTL1[0] ? reg_hi_wr[BCSCTL1] : reg_lo_wr[BCSCTL1];
-wire [7:0] bcsctl1_nxt = BCSCTL1[0] ? per_din[15:8]      : per_din[7:0];
-
-wire [7:0] divax_mask = 8'h30;
-
-always @ (posedge mclk or posedge puc_rst)
-  if (puc_rst)          bcsctl1  <=  8'h00;
-  else if (bcsctl1_wr)  bcsctl1  <=  bcsctl1_nxt & divax_mask; // Mask unused bits
-
-
-// BCSCTL2 Register
-//--------------
-reg  [7:0] bcsctl2;
-wire       bcsctl2_wr    = BCSCTL2[0] ? reg_hi_wr[BCSCTL2] : reg_lo_wr[BCSCTL2];
-wire [7:0] bcsctl2_nxt   = BCSCTL2[0] ? per_din[15:8]      : per_din[7:0];
-
-wire [7:0] selmx_mask = 8'h00;
-wire [7:0] divmx_mask = 8'h00;
-wire [7:0] sels_mask  = 8'h08;
-wire [7:0] divsx_mask = 8'h06;
-
-always @ (posedge mclk or posedge puc_rst)
-  if (puc_rst)          bcsctl2  <=  8'h00;
-  else if (bcsctl2_wr)  bcsctl2  <=  bcsctl2_nxt & ( sels_mask  | divsx_mask |
-                                                     selmx_mask | divmx_mask); // Mask unused bits
-
-
-//============================================================================
-// 4) DATA OUTPUT GENERATION
-//============================================================================
-
-// Data output mux
-wire [15:0] bcsctl1_rd   = {8'h00, (bcsctl1  & {8{reg_rd[BCSCTL1]}})}  << (8 & {4{BCSCTL1[0]}});
-wire [15:0] bcsctl2_rd   = {8'h00, (bcsctl2  & {8{reg_rd[BCSCTL2]}})}  << (8 & {4{BCSCTL2[0]}});
-
-wire [15:0] per_dout =  bcsctl1_rd   |
-                        bcsctl2_rd;
-
-
-//=============================================================================
-// 5)  DCO_CLK / LFXT_CLK INTERFACES (WAKEUP, ENABLE, ...)
-//=============================================================================
-
-
-//-----------------------------------------------------------
-// 5.1) HIGH SPEED SYSTEM CLOCK GENERATOR (DCO_CLK)
-//-----------------------------------------------------------
-// Note1: switching off the DCO osillator is only
-//        supported in ASIC mode with SCG0 low power mode
-//
-// Note2: unlike the original MSP430 specification,
-//        we allow to switch off the DCO even
-//        if it is selected by MCLK or SMCLK.
-
-wire por_a;
-wire dco_wkup;
-wire cpu_en_wkup;
-
-   assign dco_enable    = 1'b1;
-   assign dco_wkup      = 1'b1;
-
-
-//-----------------------------------------------------------
-// 5.2) LOW FREQUENCY CRYSTAL CLOCK GENERATOR (LFXT_CLK)
-//-----------------------------------------------------------
-
-// ASIC MODE
-//------------------------------------------------
-// Note: unlike the original MSP430 specification,
-//       we allow to switch off the LFXT even
-//       if it is selected by MCLK or SMCLK.
-
-wire lfxt_clk_s;
-
-omsp_sync_cell sync_cell_lfxt_clk (
-    .data_out  (lfxt_clk_s),
-    .data_in   (lfxt_clk),
-    .clk       (mclk),
-    .rst       (por)
-);
-
-reg  lfxt_clk_dly;
-   
-always @ (posedge mclk or posedge por)
-  if (por) lfxt_clk_dly <=  1'b0;
-  else     lfxt_clk_dly <=  lfxt_clk_s;    
-
-wire   lfxt_clk_en = (lfxt_clk_s & ~lfxt_clk_dly) & ~(oscoff & ~bcsctl2[3]);
-assign lfxt_enable = 1'b1;
-assign lfxt_wkup   = 1'b0;
-
-   
-//=============================================================================
-// 6)  CLOCK GENERATION
-//=============================================================================
-
-//-----------------------------------------------------------
-// 6.1) GLOBAL CPU ENABLE
-//-----------------------------------------------------------
-// ACLK and SMCLK are directly switched-off
-// with the cpu_en pin (after synchronization).
-// MCLK will be switched off once the CPU reaches
-// its IDLE state (through the mclk_enable signal)
-
-
-// Synchronize CPU_EN signal to the MCLK domain
-//----------------------------------------------
-   assign cpu_en_s    = cpu_en;
-   assign cpu_en_wkup = 1'b0;
-
-// Synchronize CPU_EN signal to the ACLK domain
-//----------------------------------------------
-   wire   cpu_en_aux_s    = cpu_en_s;
-
-// Synchronize CPU_EN signal to the SMCLK domain
-//----------------------------------------------
-// Note: the synchronizer is only required if there is a SMCLK_MUX
-
-
-//-----------------------------------------------------------
-// 6.2) MCLK GENERATION
-//-----------------------------------------------------------
-
-// Clock MUX
-//----------------------------
-assign nodiv_mclk   =  dco_clk;
-assign nodiv_mclk_n = ~nodiv_mclk;
-   
-
-// Wakeup synchronizer
-//----------------------------
-wire mclk_wkup_s;
-
-   assign mclk_wkup_s = 1'b0;
-
-
-// Clock Divider
-//----------------------------
-// No need for extra synchronizer as bcsctl2
-// comes from the same clock domain.
-
-wire mclk_active = 1'b1;
-   
-  wire  mclk_div_en = mclk_active;
-
-
-// Generate main system clock
-//----------------------------
-   assign mclk   = nodiv_mclk;
-
-
-//-----------------------------------------------------------
-// 6.3) ACLK GENERATION
-//-----------------------------------------------------------
-
-// ASIC MODE
-//----------------------------
-  reg       aclk_en;
-  reg [2:0] aclk_div;
-  wire      aclk_en_nxt =  lfxt_clk_en & ((bcsctl1[5:4]==2'b00) ?  1'b1 :
-                                          (bcsctl1[5:4]==2'b01) ?  aclk_div[0]   :
-                                          (bcsctl1[5:4]==2'b10) ? &aclk_div[1:0] :
-                                                                     &aclk_div[2:0]);
-
-  always @ (posedge mclk or posedge puc_rst)
-    if (puc_rst)                                     aclk_div <=  3'h0;
-    else if ((bcsctl1[5:4]!=2'b00) & lfxt_clk_en) aclk_div <=  aclk_div+3'h1;
-
-  always @ (posedge mclk or posedge puc_rst)
-    if (puc_rst)  aclk_en <=  1'b0;
-    else          aclk_en <=  aclk_en_nxt & cpu_en_s;
-
-  assign  aclk   = mclk;
-   
-//-----------------------------------------------------------
-// 6.4) SMCLK GENERATION
-//-----------------------------------------------------------
-
-// Clock MUX
-//----------------------------
-assign nodiv_smclk = dco_clk;
-
-
-// ASIC MODE
-//----------------------------
-reg       smclk_en;
-reg [2:0] smclk_div;
-
-wire      smclk_in     = ~scg1 & (bcsctl2[3] ? lfxt_clk_en : 1'b1);
-
-wire      smclk_en_nxt = smclk_in & ((bcsctl2[2:1]==2'b00) ?  1'b1 :
-                                     (bcsctl2[2:1]==2'b01) ?  smclk_div[0]   :
-                                     (bcsctl2[2:1]==2'b10) ? &smclk_div[1:0] :
-                                                                &smclk_div[2:0]);
-   
-always @ (posedge mclk or posedge puc_rst)
-  if (puc_rst)  smclk_en <=  1'b0;
-  else          smclk_en <=  smclk_en_nxt & cpu_en_s;
-
-always @ (posedge mclk or posedge puc_rst)
-  if (puc_rst)                                  smclk_div <=  3'h0;
-  else if ((bcsctl2[2:1]!=2'b00) & smclk_in) smclk_div <=  smclk_div+3'h1;
-
-wire  smclk  = mclk;
-
-
-//-----------------------------------------------------------
-// 6.5) DEBUG INTERFACE CLOCK GENERATION (DBG_CLK)
-//-----------------------------------------------------------
-
-// Synchronize DBG_EN signal to MCLK domain
-//------------------------------------------
-    assign dbg_en_s    =  dbg_en;
-    wire   dbg_rst_nxt = ~dbg_en;
-
-
-// Serial Debug Interface Clock gate
-//------------------------------------------------
-       assign dbg_clk = dco_clk;
-  
-
-//=============================================================================
-// 7)  RESET GENERATION
-//=============================================================================
-//
-// Whenever the reset pin (reset_n) is deasserted, the internal resets of the
-// openMSP430 will be released in the following order:
-//                1- POR
-//                2- DBG_RST (if the sdi interface is enabled, i.e. dbg_en=1)
-//                3- PUC
-//
-// Note: releasing the DBG_RST before PUC is particularly important in order
-//       to allow the sdi interface to halt the cpu immediately after a PUC.
-//
-   
-// Generate synchronized POR to MCLK domain
-//------------------------------------------
-
-// Asynchronous reset source
-assign    por_a         =  !reset_n;
-wire      por_noscan;
-
-// Reset Synchronizer
-omsp_sync_reset sync_reset_por (
-    .rst_s        (por_noscan),
-    .clk          (nodiv_mclk),
-    .rst_a        (por_a)
-);
-
-// Scan Reset Mux
- assign por = por_noscan;
-
-// Generate synchronized reset for the SDI
-//------------------------------------------
-
-// Reset Generation
-reg  dbg_rst_noscan;
-always @ (posedge mclk or posedge por)
-  if (por)  dbg_rst_noscan <=  1'b1;
-  else      dbg_rst_noscan <=  dbg_rst_nxt;
-
-  // Scan Reset Mux
-     assign dbg_rst = dbg_rst_noscan;
-  
-
-
-// Generate main system reset (PUC_RST)
-//--------------------------------------
-wire puc_noscan_n;
-wire puc_a_scan;
-
-// Asynchronous PUC reset
-wire puc_a = por | wdt_reset;
-
-// Synchronous PUC reset
-wire puc_s = dbg_cpu_reset |                              // With the debug interface command
-
-            (dbg_en_s & dbg_rst_noscan & ~puc_noscan_n);  // Sequencing making sure PUC is released
-                                                          // after DBG_RST if the debug interface is
-                                                          // enabled at power-on-reset time
-// Scan Reset Mux
-  assign puc_a_scan = puc_a;
-
-// Reset Synchronizer
-// (required because of the asynchronous watchdog reset)
-omsp_sync_cell sync_cell_puc (
-    .data_out  (puc_noscan_n),
-    .data_in   (~puc_s),
-    .clk       (mclk),
-    .rst       (puc_a_scan)
-);
-
-// Scan Reset Mux
-  assign puc_rst = ~puc_noscan_n;
-
-// PUC pending set the serial debug interface
-assign puc_pnd_set = ~puc_noscan_n;
-
-
-endmodule // omsp_clock_module
-
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-
-// Data Memory sizes
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include Debug interface
-
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-
-// Include/Exclude Watchdog timer
-
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-
-// Input synchronizers
-
-
-// Peripheral Memory Space:
-
-
-// Let the CPU break after a PUC occurrence by default
-
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-
-
-// Data Memory Size
-
-
-
-// Peripheral Memory Size
-
-
-
-// Data Memory Base Adresses
-
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-
-
-
-// Instructions type
-
-
-
-
-// Single-operand arithmetic
-
-
-
-
-
-
-
-
-
-// Conditional jump
-
-
-
-
-
-
-
-
-
-// Two-operand arithmetic
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Addressing modes
-
-
-
-
-
-
-
-
-
-// Instruction state machine
-
-
-
-
-
-
-
-// Execution state machine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// ALU control signals
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Debug interface
-
-
-
-
-// Debug interface CPU_CTL register
-
-
-
-
-
-
-
-
-// Debug interface CPU_STAT register
-
-
-
-
-
-
-// Debug interface BRKx_CTL register
-
-
-
-
-
-
-
-// Basic clock module: BCSCTL1 Control Register
-
-
-// Basic clock module: BCSCTL2 Control Register
-
-
-
-
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-
-// Debug interface: Software breakpoint opcode
-
-
-// Debug UART interface auto data synchronization
-
-
-// Debug UART interface data rate
-
-
-
-
-// Debug interface input synchronizer
-
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-
-// Counter width for the debug interface UART
-
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_clock_mux.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_clock_mux.v
deleted file mode 100644
index 5f8406a..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_clock_mux.v
+++ /dev/null
@@ -1,192 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_clock_mux.v
-// 
-// *Module Description:
-//                       Standard clock mux for the openMSP430
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 103 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2011-03-05 15:44:48 +0100 (Sat, 05 Mar 2011) $
-//----------------------------------------------------------------------------
-
-module  omsp_clock_mux (
-
-// OUTPUTs
-    clk_out,                   // Clock output
-
-// INPUTs
-    clk_in0,                   // Clock input 0
-    clk_in1,                   // Clock input 1
-    reset,                     // Reset
-    scan_mode,                 // Scan mode (clk_in0 is selected in scan mode)
-    select                     // Clock selection
-);
-
-// OUTPUTs
-//=========
-output         clk_out;        // Clock output
-
-// INPUTs
-//=========
-input          clk_in0;        // Clock input 0
-input          clk_in1;        // Clock input 1
-input          reset;          // Reset
-input          scan_mode;      // Scan mode (clk_in0 is selected in scan mode)
-input          select;         // Clock selection
-
-
-//===========================================================================================================================//
-// 1)  CLOCK MUX                                                                                                             //
-//===========================================================================================================================//
-//                                                                                                                           //
-//    The following (glitch free) clock mux is implemented as following:                                                     //
-//                                                                                                                           //
-//                                                                                                                           //
-//                                                                                                                           //
-//                                                                                                                           //
-//                                   +-----.     +--------+   +--------+                                                     //
-//       select >>----+-------------O|      \    |        |   |        |          +-----.                                    //
-//                    |              |       |---| D    Q |---| D    Q |--+-------|      \                                   //
-//                    |     +-------O|      /    |        |   |        |  |       |       |O-+                               //
-//                    |     |        +-----'     |        |   |        |  |   +--O|      /   |                               //
-//                    |     |                    |   /\   |   |   /\   |  |   |   +-----'    |                               //
-//                    |     |                    +--+--+--+   +--+--+--+  |   |              |                               //
-//                    |     |                        O            |       |   |              |                               //
-//                    |     |                        |            |       |   |              |  +-----.                      //
-//       clk_in0 >>----------------------------------+------------+-----------+              +--|      \                     //
-//                    |     |                                             |                     |       |----<< clk_out      //
-//                    |     |     +---------------------------------------+                  +--|      /                     //
-//                    |     |     |                                                          |  +-----'                      //
-//                    |     +---------------------------------------------+                  |                               //
-//                    |           |                                       |                  |                               //
-//                    |           |  +-----.     +--------+   +--------+  |                  |                               //
-//                    |           +-O|      \    |        |   |        |  |       +-----.    |                               //
-//                    |              |       |---| D    Q |---| D    Q |--+-------|      \   |                               //
-//                    +--------------|      /    |        |   |        |          |       |O-+                               //
-//                                   +-----'     |        |   |        |      +--O|      /                                   //
-//                                               |   /\   |   |   /\   |      |   +-----'                                    //
-//                                               +--+--+--+   +--+--+--+      |                                              //
-//                                                   O            |           |                                              //
-//                                                   |            |           |                                              //
-//       clk_in1 >>----------------------------------+------------+-----------+                                              //
-//                                                                                                                           //
-//                                                                                                                           //
-//===========================================================================================================================//
-
-//-----------------------------------------------------------------------------
-// Wire declarations
-//-----------------------------------------------------------------------------
-   
-wire in0_select;
-reg  in0_select_s;
-reg  in0_select_ss;
-wire in0_enable;
-
-wire in1_select;
-reg  in1_select_s;
-reg  in1_select_ss;
-wire in1_enable;
-
-wire clk_in0_inv;
-wire clk_in1_inv;
-wire gated_clk_in0;
-wire gated_clk_in1;
-
-
-//-----------------------------------------------------------------------------
-// CLK_IN0 Selection
-//-----------------------------------------------------------------------------
-   
-assign in0_select = ~select & ~in1_select_ss;
-   
-always @ (posedge clk_in0_inv or posedge reset)
-  if (reset) in0_select_s  <=  1'b1;
-  else       in0_select_s  <=  in0_select;
-
-always @ (posedge clk_in0     or posedge reset)
-  if (reset) in0_select_ss <=  1'b1;
-  else       in0_select_ss <=  in0_select_s;
-
-assign in0_enable = in0_select_ss | scan_mode;
-
-
-//-----------------------------------------------------------------------------
-// CLK_IN1 Selection
-//-----------------------------------------------------------------------------
-   
-assign in1_select =  select & ~in0_select_ss;
-   
-always @ (posedge clk_in1_inv or posedge reset)
-  if (reset) in1_select_s  <=  1'b0;
-  else       in1_select_s  <=  in1_select;
-
-always @ (posedge clk_in1     or posedge reset)
-  if (reset) in1_select_ss <=  1'b0;
-  else       in1_select_ss <=  in1_select_s;
-
-assign in1_enable = in1_select_ss & ~scan_mode;
-
-   
-//-----------------------------------------------------------------------------
-// Clock MUX
-//-----------------------------------------------------------------------------
-//
-// IMPORTANT NOTE:
-//                  Because the clock network is a critical part of the design,
-//                 the following combinatorial logic should be replaced with
-//                 direct instanciation of standard cells from target library.
-//                  Don't forget the "dont_touch" attribute to make sure
-//                 synthesis won't mess it up.
-//
-
-// Replace with standard cell INVERTER
-assign clk_in0_inv   = ~clk_in0;
-assign clk_in1_inv   = ~clk_in1;
-
-
-// Replace with standard cell NAND2
-assign gated_clk_in0 = ~(clk_in0_inv & in0_enable);
-assign gated_clk_in1 = ~(clk_in1_inv & in1_enable);
-   
-
-// Replace with standard cell AND2
-assign clk_out       =  (gated_clk_in0 & gated_clk_in1);
-
-
-
-endmodule // omsp_clock_gate
-
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_dbg.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_dbg.v
deleted file mode 100644
index 5c505fa..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_dbg.v
+++ /dev/null
@@ -1,1522 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_dbg.v
-// 
-// *Module Description:
-//                       Debug interface
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 175 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-01-30 22:21:42 +0100 (Wed, 30 Jan 2013) $
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
-module  omsp_dbg (
-
-// OUTPUTs
-    dbg_cpu_reset,                     // Reset CPU from debug interface
-    dbg_freeze,                        // Freeze peripherals
-    dbg_halt_cmd,                      // Halt CPU command
-    dbg_i2c_sda_out,                   // Debug interface: I2C SDA OUT
-    dbg_mem_addr,                      // Debug address for rd/wr access
-    dbg_mem_dout,                      // Debug unit data output
-    dbg_mem_en,                        // Debug unit memory enable
-    dbg_mem_wr,                        // Debug unit memory write
-    dbg_reg_wr,                        // Debug unit CPU register write
-    dbg_uart_txd,                      // Debug interface: UART TXD
-			     
-// INPUTs
-    cpu_en_s,                          // Enable CPU code execution (synchronous)
-    cpu_id,                            // CPU ID
-    cpu_nr_inst,                       // Current oMSP instance number
-    cpu_nr_total,                      // Total number of oMSP instances-1
-    dbg_clk,                           // Debug unit clock
-    dbg_en_s,                          // Debug interface enable (synchronous)
-    dbg_halt_st,                       // Halt/Run status from CPU
-    dbg_i2c_addr,                      // Debug interface: I2C Address
-    dbg_i2c_broadcast,                 // Debug interface: I2C Broadcast Address (for multicore systems)
-    dbg_i2c_scl,                       // Debug interface: I2C SCL
-    dbg_i2c_sda_in,                    // Debug interface: I2C SDA IN
-    dbg_mem_din,                       // Debug unit Memory data input
-    dbg_reg_din,                       // Debug unit CPU register data input
-    dbg_rst,                           // Debug unit reset
-    dbg_uart_rxd,                      // Debug interface: UART RXD (asynchronous)
-    decode_noirq,                      // Frontend decode instruction
-    eu_mab,                            // Execution-Unit Memory address bus
-    eu_mb_en,                          // Execution-Unit Memory bus enable
-    eu_mb_wr,                          // Execution-Unit Memory bus write transfer
-    fe_mdb_in,                         // Frontend Memory data bus input
-    pc,                                // Program counter
-    puc_pnd_set                        // PUC pending set for the serial debug interface
-);
-
-// OUTPUTs
-//=========
-output              dbg_cpu_reset;     // Reset CPU from debug interface
-output              dbg_freeze;        // Freeze peripherals
-output              dbg_halt_cmd;      // Halt CPU command
-output              dbg_i2c_sda_out;   // Debug interface: I2C SDA OUT
-output       [15:0] dbg_mem_addr;      // Debug address for rd/wr access
-output       [15:0] dbg_mem_dout;      // Debug unit data output
-output              dbg_mem_en;        // Debug unit memory enable
-output        [1:0] dbg_mem_wr;        // Debug unit memory write
-output              dbg_reg_wr;        // Debug unit CPU register write
-output              dbg_uart_txd;      // Debug interface: UART TXD
-
-// INPUTs
-//=========
-input               cpu_en_s;          // Enable CPU code execution (synchronous)
-input        [31:0] cpu_id;            // CPU ID
-input         [7:0] cpu_nr_inst;       // Current oMSP instance number
-input         [7:0] cpu_nr_total;      // Total number of oMSP instances-1
-input               dbg_clk;           // Debug unit clock
-input               dbg_en_s;          // Debug interface enable (synchronous)
-input               dbg_halt_st;       // Halt/Run status from CPU
-input         [6:0] dbg_i2c_addr;      // Debug interface: I2C Address
-input         [6:0] dbg_i2c_broadcast; // Debug interface: I2C Broadcast Address (for multicore systems)
-input               dbg_i2c_scl;       // Debug interface: I2C SCL
-input               dbg_i2c_sda_in;    // Debug interface: I2C SDA IN
-input        [15:0] dbg_mem_din;       // Debug unit Memory data input
-input        [15:0] dbg_reg_din;       // Debug unit CPU register data input
-input               dbg_rst;           // Debug unit reset
-input               dbg_uart_rxd;      // Debug interface: UART RXD (asynchronous)
-input               decode_noirq;      // Frontend decode instruction
-input        [15:0] eu_mab;            // Execution-Unit Memory address bus
-input               eu_mb_en;          // Execution-Unit Memory bus enable
-input         [1:0] eu_mb_wr;          // Execution-Unit Memory bus write transfer
-input        [15:0] fe_mdb_in;         // Frontend Memory data bus input
-input        [15:0] pc;                // Program counter
-input               puc_pnd_set;       // PUC pending set for the serial debug interface
-
-
-//=============================================================================
-// 1)  WIRE & PARAMETER DECLARATION
-//=============================================================================
-
-// Diverse wires and registers
-wire  [5:0] dbg_addr;
-wire [15:0] dbg_din;
-wire        dbg_wr;
-reg 	    mem_burst;
-wire        dbg_reg_rd;
-wire        dbg_mem_rd;
-reg         dbg_mem_rd_dly;
-wire        dbg_swbrk;
-wire        dbg_rd;
-reg         dbg_rd_rdy;
-wire        mem_burst_rd;
-wire        mem_burst_wr;
-wire        brk0_halt;
-wire        brk0_pnd;
-wire [15:0] brk0_dout;
-wire        brk1_halt;
-wire        brk1_pnd;
-wire [15:0] brk1_dout;
-wire        brk2_halt;
-wire        brk2_pnd;
-wire [15:0] brk2_dout;
-wire        brk3_halt;
-wire        brk3_pnd;
-wire [15:0] brk3_dout;
-    
-// Number of registers
-parameter           NR_REG       = 25;
-
-// Register addresses
-parameter           CPU_ID_LO    = 6'h00;
-parameter           CPU_ID_HI    = 6'h01;
-parameter           CPU_CTL      = 6'h02;
-parameter           CPU_STAT     = 6'h03;
-parameter           MEM_CTL      = 6'h04;
-parameter           MEM_ADDR     = 6'h05;
-parameter           MEM_DATA     = 6'h06;
-parameter           MEM_CNT      = 6'h07;
-parameter           CPU_NR       = 6'h18;
-
-// Register one-hot decoder
-parameter           BASE_D       = {{NR_REG-1{1'b0}}, 1'b1};
-parameter           CPU_ID_LO_D  = (BASE_D << CPU_ID_LO);
-parameter           CPU_ID_HI_D  = (BASE_D << CPU_ID_HI);
-parameter           CPU_CTL_D    = (BASE_D << CPU_CTL);
-parameter           CPU_STAT_D   = (BASE_D << CPU_STAT);
-parameter           MEM_CTL_D    = (BASE_D << MEM_CTL);
-parameter           MEM_ADDR_D   = (BASE_D << MEM_ADDR);
-parameter           MEM_DATA_D   = (BASE_D << MEM_DATA);
-parameter           MEM_CNT_D    = (BASE_D << MEM_CNT);
-parameter           CPU_NR_D     = (BASE_D << CPU_NR);
-
-
-//============================================================================
-// 2)  REGISTER DECODER
-//============================================================================
-
-// Select Data register during a burst
-wire  [5:0] dbg_addr_in = mem_burst ? MEM_DATA : dbg_addr;
-
-// Register address decode
-reg  [NR_REG-1:0]  reg_dec; 
-always @(dbg_addr_in)
-  case (dbg_addr_in)
-    CPU_ID_LO :  reg_dec  =  CPU_ID_LO_D;
-    CPU_ID_HI :  reg_dec  =  CPU_ID_HI_D;
-    CPU_CTL   :  reg_dec  =  CPU_CTL_D;
-    CPU_STAT  :  reg_dec  =  CPU_STAT_D;
-    MEM_CTL   :  reg_dec  =  MEM_CTL_D;
-    MEM_ADDR  :  reg_dec  =  MEM_ADDR_D;
-    MEM_DATA  :  reg_dec  =  MEM_DATA_D;
-    MEM_CNT   :  reg_dec  =  MEM_CNT_D;
-    CPU_NR    :  reg_dec  =  CPU_NR_D;
-  // pragma coverage off
-    default:     reg_dec  =  {NR_REG{1'b0}};
-  // pragma coverage on
-  endcase
-
-// Read/Write probes
-wire               reg_write =  dbg_wr;
-wire               reg_read  =  1'b1;
-
-// Read/Write vectors
-wire  [NR_REG-1:0] reg_wr    = reg_dec & {NR_REG{reg_write}};
-wire  [NR_REG-1:0] reg_rd    = reg_dec & {NR_REG{reg_read}};
-
-
-//=============================================================================
-// 3)  REGISTER: CORE INTERFACE
-//=============================================================================
-
-// CPU_ID Register
-//-----------------   
-//              -------------------------------------------------------------------
-// CPU_ID_LO:  | 15  14  13  12  11  10  9  |  8  7  6  5  4  |  3   |   2  1  0   |
-//             |----------------------------+-----------------+------+-------------|
-//             |        PER_SPACE           |   USER_VERSION  | ASIC | CPU_VERSION |
-//              --------------------------------------------------------------------
-// CPU_ID_HI:  |   15  14  13  12  11  10   |   9  8  7  6  5  4  3  2  1   |   0  |
-//             |----------------------------+-------------------------------+------|
-//             |         PMEM_SIZE          |            DMEM_SIZE          |  MPY |
-//              -------------------------------------------------------------------
-
-// This register is assigned in the SFR module
-
-
-// CPU_NR Register
-//-----------------
-//    -------------------------------------------------------------------
-//   | 15  14  13  12  11  10   9   8  |  7   6   5   4   3   2   1   0  |
-//   |---------------------------------+---------------------------------|
-//   |            CPU_TOTAL_NR         |           CPU_INST_NR           |
-//    -------------------------------------------------------------------
-
-wire [15:0] cpu_nr = {cpu_nr_total, cpu_nr_inst};
-
-
-// CPU_CTL Register
-//-----------------------------------------------------------------------------
-//       7         6          5          4           3        2     1    0
-//   Reserved   CPU_RST  RST_BRK_EN  FRZ_BRK_EN  SW_BRK_EN  ISTEP  RUN  HALT
-//-----------------------------------------------------------------------------
-reg   [6:3] cpu_ctl;
-
-wire        cpu_ctl_wr = reg_wr[CPU_CTL];
-   
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)         cpu_ctl <=  4'h6;
-  else if (cpu_ctl_wr) cpu_ctl <=  dbg_din[6:3];
-
-wire  [7:0] cpu_ctl_full = {1'b0, cpu_ctl, 3'b000};
-
-wire        halt_cpu = cpu_ctl_wr & dbg_din[0]  & ~dbg_halt_st;
-wire        run_cpu  = cpu_ctl_wr & dbg_din[1]   &  dbg_halt_st;
-wire        istep    = cpu_ctl_wr & dbg_din[2] &  dbg_halt_st;
-
-   
-// CPU_STAT Register
-//------------------------------------------------------------------------------------
-//      7           6          5           4           3         2      1       0
-// HWBRK3_PND  HWBRK2_PND  HWBRK1_PND  HWBRK0_PND  SWBRK_PND  PUC_PND  Res.  HALT_RUN
-//------------------------------------------------------------------------------------
-reg   [3:2] cpu_stat;
-
-wire        cpu_stat_wr  = reg_wr[CPU_STAT];
-wire  [3:2] cpu_stat_set = {dbg_swbrk, puc_pnd_set};
-wire  [3:2] cpu_stat_clr = ~dbg_din[3:2];
-
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)          cpu_stat <=  2'b00;
-  else if (cpu_stat_wr) cpu_stat <= ((cpu_stat & cpu_stat_clr) | cpu_stat_set);
-  else                  cpu_stat <=  (cpu_stat                 | cpu_stat_set);
-
-wire  [7:0] cpu_stat_full = {brk3_pnd, brk2_pnd, brk1_pnd, brk0_pnd,
-                             cpu_stat, 1'b0, dbg_halt_st};
-
-   
-//=============================================================================
-// 4)  REGISTER: MEMORY INTERFACE
-//=============================================================================
-
-// MEM_CTL Register
-//-----------------------------------------------------------------------------
-//       7     6     5     4          3        2         1       0
-//            Reserved               B/W    MEM/REG    RD/WR   START
-//
-// START  :  -  0 : Do nothing.
-//           -  1 : Initiate memory transfer.
-//
-// RD/WR  :  -  0 : Read access.
-//           -  1 : Write access.
-//
-// MEM/REG:  -  0 : Memory access.
-//           -  1 : CPU Register access.
-//
-// B/W    :  -  0 : 16 bit access.
-//           -  1 :  8 bit access (not valid for CPU Registers).
-//
-//-----------------------------------------------------------------------------
-reg   [3:1] mem_ctl;
-
-wire        mem_ctl_wr = reg_wr[MEM_CTL];
-   
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)         mem_ctl <=  3'h0;
-  else if (mem_ctl_wr) mem_ctl <=  dbg_din[3:1];
-
-wire  [7:0] mem_ctl_full  = {4'b0000, mem_ctl, 1'b0};
-
-reg         mem_start;
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)  mem_start <=  1'b0;
-  else          mem_start <=  mem_ctl_wr & dbg_din[0];
-
-wire        mem_bw    = mem_ctl[3];
-   
-// MEM_DATA Register
-//------------------   
-reg  [15:0] mem_data;
-reg  [15:0] mem_addr;
-wire        mem_access;
-   
-wire        mem_data_wr = reg_wr[MEM_DATA];
-
-wire [15:0] dbg_mem_din_bw = ~mem_bw      ? dbg_mem_din                :
-	                      mem_addr[0] ? {8'h00, dbg_mem_din[15:8]} :
-	                                    {8'h00, dbg_mem_din[7:0]};
-   
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)             mem_data <=  16'h0000;
-  else if (mem_data_wr)    mem_data <=  dbg_din;
-  else if (dbg_reg_rd)     mem_data <=  dbg_reg_din;
-  else if (dbg_mem_rd_dly) mem_data <=  dbg_mem_din_bw;
-
-   
-// MEM_ADDR Register
-//------------------   
-reg  [15:0] mem_cnt;
-
-wire        mem_addr_wr  = reg_wr[MEM_ADDR];
-wire        dbg_mem_acc  = (|dbg_mem_wr | (dbg_rd_rdy & ~mem_ctl[2]));
-wire        dbg_reg_acc  = ( dbg_reg_wr | (dbg_rd_rdy &  mem_ctl[2]));
-   
-wire [15:0] mem_addr_inc = (mem_cnt==16'h0000)                       ? 16'h0000 : 
-                           (mem_burst &  dbg_mem_acc & ~mem_bw)      ? 16'h0002 : 
-                           (mem_burst & (dbg_mem_acc | dbg_reg_acc)) ? 16'h0001 : 16'h0000; 
-   
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)          mem_addr <=  16'h0000;
-  else if (mem_addr_wr) mem_addr <=  dbg_din;
-  else                  mem_addr <=  mem_addr + mem_addr_inc;
-   
-// MEM_CNT Register
-//------------------   
-
-wire        mem_cnt_wr  = reg_wr[MEM_CNT];
-
-wire [15:0] mem_cnt_dec = (mem_cnt==16'h0000)                       ? 16'h0000 :
-                          (mem_burst & (dbg_mem_acc | dbg_reg_acc)) ? 16'hffff : 16'h0000;
-   
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)         mem_cnt <=  16'h0000;
-  else if (mem_cnt_wr) mem_cnt <=  dbg_din;
-  else                 mem_cnt <=  mem_cnt + mem_cnt_dec;
-
-
-//=============================================================================
-// 5)  BREAKPOINTS / WATCHPOINTS
-//=============================================================================
-
-assign brk0_halt =  1'b0;
-assign brk0_pnd  =  1'b0;
-assign brk0_dout = 16'h0000;
-
-assign brk1_halt =  1'b0;
-assign brk1_pnd  =  1'b0;
-assign brk1_dout = 16'h0000;
-
- assign brk2_halt =  1'b0;
-assign brk2_pnd  =  1'b0;
-assign brk2_dout = 16'h0000;
-
-assign brk3_halt =  1'b0;
-assign brk3_pnd  =  1'b0;
-assign brk3_dout = 16'h0000;
-
-
-//============================================================================
-// 6) DATA OUTPUT GENERATION
-//============================================================================
-
-wire [15:0] cpu_id_lo_rd = cpu_id[15:0]           & {16{reg_rd[CPU_ID_LO]}};
-wire [15:0] cpu_id_hi_rd = cpu_id[31:16]          & {16{reg_rd[CPU_ID_HI]}};
-wire [15:0] cpu_ctl_rd   = {8'h00, cpu_ctl_full}  & {16{reg_rd[CPU_CTL]}};
-wire [15:0] cpu_stat_rd  = {8'h00, cpu_stat_full} & {16{reg_rd[CPU_STAT]}};
-wire [15:0] mem_ctl_rd   = {8'h00, mem_ctl_full}  & {16{reg_rd[MEM_CTL]}};
-wire [15:0] mem_data_rd  = mem_data               & {16{reg_rd[MEM_DATA]}};
-wire [15:0] mem_addr_rd  = mem_addr               & {16{reg_rd[MEM_ADDR]}};
-wire [15:0] mem_cnt_rd   = mem_cnt                & {16{reg_rd[MEM_CNT]}};
-wire [15:0] cpu_nr_rd    = cpu_nr                 & {16{reg_rd[CPU_NR]}};
-
-wire [15:0] dbg_dout = cpu_id_lo_rd |
-                       cpu_id_hi_rd |
-                       cpu_ctl_rd   |
-                       cpu_stat_rd  |
-                       mem_ctl_rd   |
-                       mem_data_rd  |
-                       mem_addr_rd  |
-                       mem_cnt_rd   |
-                       brk0_dout    |
-                       brk1_dout    |
-                       brk2_dout    |
-                       brk3_dout    |
-                       cpu_nr_rd;
-
-// Tell UART/I2C interface that the data is ready to be read
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)                       dbg_rd_rdy  <=  1'b0;
-  else if (mem_burst | mem_burst_rd) dbg_rd_rdy  <= (dbg_reg_rd | dbg_mem_rd_dly);
-  else                               dbg_rd_rdy  <=  dbg_rd;
-
-
-//============================================================================
-// 7) CPU CONTROL
-//============================================================================
-
-// Reset CPU
-//--------------------------
-wire dbg_cpu_reset  = cpu_ctl[6];
-
-   
-// Break after reset
-//--------------------------
-wire halt_rst = cpu_ctl[5] & dbg_en_s & puc_pnd_set;
-
-   
-// Freeze peripherals
-//--------------------------
-wire dbg_freeze = dbg_halt_st & (cpu_ctl[4] | ~cpu_en_s);
-
-
-// Software break
-//--------------------------
-assign dbg_swbrk = (fe_mdb_in==16'h4343) & decode_noirq & cpu_ctl[3];
-
-
-// Single step
-//--------------------------
-reg [1:0] inc_step;
-always @(posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)    inc_step <= 2'b00;
-  else if (istep) inc_step <= 2'b11;
-  else            inc_step <= {inc_step[0], 1'b0};
-
-   
-// Run / Halt
-//--------------------------
-reg   halt_flag;
-
-wire  mem_halt_cpu;
-wire  mem_run_cpu;
-
-wire  halt_flag_clr = run_cpu   | mem_run_cpu;
-wire  halt_flag_set = halt_cpu  | halt_rst  | dbg_swbrk | mem_halt_cpu |
-                      brk0_halt | brk1_halt | brk2_halt | brk3_halt;
-
-always @(posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)            halt_flag <= 1'b0;
-  else if (halt_flag_clr) halt_flag <= 1'b0;
-  else if (halt_flag_set) halt_flag <= 1'b1;
-
-wire dbg_halt_cmd = (halt_flag | halt_flag_set) & ~inc_step[1];
-
-     
-//============================================================================
-// 8) MEMORY CONTROL
-//============================================================================
-
-// Control Memory bursts
-//------------------------------
-
-wire mem_burst_start = (mem_start             &  |mem_cnt);
-wire mem_burst_end   = ((dbg_wr | dbg_rd_rdy) & ~|mem_cnt);
-
-// Detect when burst is on going
-always @(posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)              mem_burst <= 1'b0;
-  else if (mem_burst_start) mem_burst <= 1'b1;
-  else if (mem_burst_end)   mem_burst <= 1'b0;
-
-// Control signals for UART/I2C interface
-assign mem_burst_rd = (mem_burst_start & ~mem_ctl[1]);
-assign mem_burst_wr = (mem_burst_start &  mem_ctl[1]);
-
-// Trigger CPU Register or memory access during a burst
-reg        mem_startb;   
-always @(posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst) mem_startb <= 1'b0;
-  else         mem_startb <= (mem_burst & (dbg_wr | dbg_rd)) | mem_burst_rd;
-
-// Combine single and burst memory start of sequence
-wire       mem_seq_start = ((mem_start & ~|mem_cnt) | mem_startb);
-
-   
-// Memory access state machine
-//------------------------------
-reg  [1:0] mem_state;
-reg  [1:0] mem_state_nxt;
-
-// State machine definition
-parameter  M_IDLE       = 2'h0;
-parameter  M_SET_BRK    = 2'h1;
-parameter  M_ACCESS_BRK = 2'h2;
-parameter  M_ACCESS     = 2'h3;
-
-// State transition
-always @(mem_state or mem_seq_start or dbg_halt_st)
-  case (mem_state)
-    M_IDLE       : mem_state_nxt = ~mem_seq_start ? M_IDLE       : 
-                                    dbg_halt_st   ? M_ACCESS     : M_SET_BRK;
-    M_SET_BRK    : mem_state_nxt =  dbg_halt_st   ? M_ACCESS_BRK : M_SET_BRK;
-    M_ACCESS_BRK : mem_state_nxt =  M_IDLE;
-    M_ACCESS     : mem_state_nxt =  M_IDLE;
-  // pragma coverage off
-    default      : mem_state_nxt =  M_IDLE;
-  // pragma coverage on
-  endcase
-
-// State machine
-always @(posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst) mem_state <= M_IDLE;
-  else         mem_state <= mem_state_nxt;
-
-// Utility signals
-assign mem_halt_cpu = (mem_state==M_IDLE)       & (mem_state_nxt==M_SET_BRK);
-assign mem_run_cpu  = (mem_state==M_ACCESS_BRK) & (mem_state_nxt==M_IDLE);
-assign mem_access   = (mem_state==M_ACCESS)     | (mem_state==M_ACCESS_BRK);
-
-
-// Interface to CPU Registers and Memory bacbkone
-//------------------------------------------------
-assign      dbg_mem_addr   =  mem_addr;
-assign      dbg_mem_dout   = ~mem_bw      ? mem_data               :
-                              mem_addr[0] ? {mem_data[7:0], 8'h00} :
-                                            {8'h00, mem_data[7:0]};
-
-assign      dbg_reg_wr     = mem_access &  mem_ctl[1] &  mem_ctl[2];
-assign      dbg_reg_rd     = mem_access & ~mem_ctl[1] &  mem_ctl[2];
-
-assign      dbg_mem_en     = mem_access & ~mem_ctl[2];
-assign      dbg_mem_rd     = dbg_mem_en & ~mem_ctl[1];
-
-wire  [1:0] dbg_mem_wr_msk = ~mem_bw      ? 2'b11 :
-                              mem_addr[0] ? 2'b10 : 2'b01;
-assign      dbg_mem_wr     = {2{dbg_mem_en & mem_ctl[1]}} & dbg_mem_wr_msk;
-
-
-// It takes one additional cycle to read from Memory as from registers
-always @(posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst) dbg_mem_rd_dly <= 1'b0;
-  else         dbg_mem_rd_dly <= dbg_mem_rd;
-
-      
-//=============================================================================
-// 9)  UART COMMUNICATION
-//=============================================================================
-omsp_dbg_uart dbg_uart_0 (
-
-// OUTPUTs
-    .dbg_addr         (dbg_addr),         // Debug register address
-    .dbg_din          (dbg_din),          // Debug register data input
-    .dbg_rd           (dbg_rd),           // Debug register data read
-    .dbg_uart_txd     (dbg_uart_txd),     // Debug interface: UART TXD
-    .dbg_wr           (dbg_wr),           // Debug register data write
-			     
-// INPUTs
-    .dbg_clk          (dbg_clk),          // Debug unit clock
-    .dbg_dout         (dbg_dout),         // Debug register data output
-    .dbg_rd_rdy       (dbg_rd_rdy),       // Debug register data is ready for read
-    .dbg_rst          (dbg_rst),          // Debug unit reset
-    .dbg_uart_rxd     (dbg_uart_rxd),     // Debug interface: UART RXD
-    .mem_burst        (mem_burst),        // Burst on going
-    .mem_burst_end    (mem_burst_end),    // End TX/RX burst
-    .mem_burst_rd     (mem_burst_rd),     // Start TX burst
-    .mem_burst_wr     (mem_burst_wr),     // Start RX burst
-    .mem_bw           (mem_bw)            // Burst byte width
-);
-
-
-//=============================================================================
-// 10)  I2C COMMUNICATION
-//=============================================================================
-    assign dbg_i2c_sda_out =  1'b1;
-
-endmodule // omsp_dbg
-
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-
-// Data Memory sizes
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include Debug interface
-
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-
-// Include/Exclude Watchdog timer
-
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-
-// Input synchronizers
-
-
-// Peripheral Memory Space:
-
-
-// Let the CPU break after a PUC occurrence by default
-
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-
-
-// Data Memory Size
-
-
-
-// Peripheral Memory Size
-
-
-
-// Data Memory Base Adresses
-
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-
-
-
-// Instructions type
-
-
-
-
-// Single-operand arithmetic
-
-
-
-
-
-
-
-
-
-// Conditional jump
-
-
-
-
-
-
-
-
-
-// Two-operand arithmetic
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Addressing modes
-
-
-
-
-
-
-
-
-
-// Instruction state machine
-
-
-
-
-
-
-
-// Execution state machine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// ALU control signals
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Debug interface
-
-
-
-
-// Debug interface CPU_CTL register
-
-
-
-
-
-
-
-
-// Debug interface CPU_STAT register
-
-
-
-
-
-
-// Debug interface BRKx_CTL register
-
-
-
-
-
-
-
-// Basic clock module: BCSCTL1 Control Register
-
-
-// Basic clock module: BCSCTL2 Control Register
-
-
-
-
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-
-// Debug interface: Software breakpoint opcode
-
-
-// Debug UART interface auto data synchronization
-
-
-// Debug UART interface data rate
-
-
-
-
-// Debug interface input synchronizer
-
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-
-// Counter width for the debug interface UART
-
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_dbg_hwbrk.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_dbg_hwbrk.v
deleted file mode 100644
index b534c03..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_dbg_hwbrk.v
+++ /dev/null
@@ -1,1172 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_dbg_hwbrk.v
-// 
-// *Module Description:
-//                       Hardware Breakpoint / Watchpoint module
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 175 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-01-30 22:21:42 +0100 (Wed, 30 Jan 2013) $
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
-module  omsp_dbg_hwbrk (
-
-// OUTPUTs
-    brk_halt,                // Hardware breakpoint command
-    brk_pnd,                 // Hardware break/watch-point pending
-    brk_dout,                // Hardware break/watch-point register data input
-			     
-// INPUTs
-    brk_reg_rd,              // Hardware break/watch-point register read select
-    brk_reg_wr,              // Hardware break/watch-point register write select
-    dbg_clk,                 // Debug unit clock
-    dbg_din,                 // Debug register data input
-    dbg_rst,                 // Debug unit reset
-    decode_noirq,            // Frontend decode instruction
-    eu_mab,                  // Execution-Unit Memory address bus
-    eu_mb_en,                // Execution-Unit Memory bus enable
-    eu_mb_wr,                // Execution-Unit Memory bus write transfer
-    pc                       // Program counter
-);
-
-// OUTPUTs
-//=========
-output         brk_halt;     // Hardware breakpoint command
-output         brk_pnd;      // Hardware break/watch-point pending
-output  [15:0] brk_dout;     // Hardware break/watch-point register data input
-
-// INPUTs
-//=========
-input    [3:0] brk_reg_rd;   // Hardware break/watch-point register read select
-input    [3:0] brk_reg_wr;   // Hardware break/watch-point register write select
-input          dbg_clk;      // Debug unit clock
-input   [15:0] dbg_din;      // Debug register data input
-input          dbg_rst;      // Debug unit reset
-input          decode_noirq; // Frontend decode instruction
-input   [15:0] eu_mab;       // Execution-Unit Memory address bus
-input          eu_mb_en;     // Execution-Unit Memory bus enable
-input    [1:0] eu_mb_wr;     // Execution-Unit Memory bus write transfer
-input   [15:0] pc;           // Program counter
-
-
-//=============================================================================
-// 1)  WIRE & PARAMETER DECLARATION
-//=============================================================================
-
-wire      range_wr_set;
-wire      range_rd_set;
-wire      addr1_wr_set;
-wire      addr1_rd_set;
-wire      addr0_wr_set;
-wire      addr0_rd_set;
-
-   
-parameter BRK_CTL   = 0,
-          BRK_STAT  = 1,
-          BRK_ADDR0 = 2,
-          BRK_ADDR1 = 3;
-
-   
-//=============================================================================
-// 2)  CONFIGURATION REGISTERS
-//=============================================================================
-
-// BRK_CTL Register
-//-----------------------------------------------------------------------------
-//       7   6   5        4            3          2            1  0
-//        Reserved    RANGE_MODE    INST_EN    BREAK_EN    ACCESS_MODE
-//
-// ACCESS_MODE: - 00 : Disabled
-//              - 01 : Detect read access
-//              - 10 : Detect write access
-//              - 11 : Detect read/write access
-//              NOTE: '10' & '11' modes are not supported on the instruction flow
-//
-// BREAK_EN:    -  0 : Watchmode enable
-//              -  1 : Break enable
-//
-// INST_EN:     -  0 : Checks are done on the execution unit (data flow)
-//              -  1 : Checks are done on the frontend (instruction flow)
-//
-// RANGE_MODE:  -  0 : Address match on BRK_ADDR0 or BRK_ADDR1
-//              -  1 : Address match on BRK_ADDR0->BRK_ADDR1 range
-//
-//-----------------------------------------------------------------------------
-reg   [4:0] brk_ctl;
-
-wire        brk_ctl_wr = brk_reg_wr[BRK_CTL];
-   
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)         brk_ctl <=  5'h00;
-  else if (brk_ctl_wr) brk_ctl <=  {1'b0 & dbg_din[4], dbg_din[3:0]};
-
-wire  [7:0] brk_ctl_full = {3'b000, brk_ctl};
-
-   
-// BRK_STAT Register
-//-----------------------------------------------------------------------------
-//     7    6       5         4         3         2         1         0
-//    Reserved  RANGE_WR  RANGE_RD  ADDR1_WR  ADDR1_RD  ADDR0_WR  ADDR0_RD
-//-----------------------------------------------------------------------------
-reg   [5:0] brk_stat;
-
-wire        brk_stat_wr  = brk_reg_wr[BRK_STAT];
-wire  [5:0] brk_stat_set = {range_wr_set & 1'b0,
-                            range_rd_set & 1'b0,
-			    addr1_wr_set, addr1_rd_set,
-			    addr0_wr_set, addr0_rd_set};
-wire  [5:0] brk_stat_clr = ~dbg_din[5:0];
-
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)          brk_stat <=  6'h00;
-  else if (brk_stat_wr) brk_stat <= ((brk_stat & brk_stat_clr) | brk_stat_set);
-  else                  brk_stat <=  (brk_stat                 | brk_stat_set);
-
-wire  [7:0] brk_stat_full = {2'b00, brk_stat};
-wire        brk_pnd       = |brk_stat;
-
-
-// BRK_ADDR0 Register
-//-----------------------------------------------------------------------------
-reg  [15:0] brk_addr0;
-
-wire        brk_addr0_wr = brk_reg_wr[BRK_ADDR0];
-   
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)           brk_addr0 <=  16'h0000;
-  else if (brk_addr0_wr) brk_addr0 <=  dbg_din;
-
-   
-// BRK_ADDR1/DATA0 Register
-//-----------------------------------------------------------------------------
-reg  [15:0] brk_addr1;
-
-wire        brk_addr1_wr = brk_reg_wr[BRK_ADDR1];
-   
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)           brk_addr1 <=  16'h0000;
-  else if (brk_addr1_wr) brk_addr1 <=  dbg_din;
-
-   
-//============================================================================
-// 3) DATA OUTPUT GENERATION
-//============================================================================
-
-wire [15:0] brk_ctl_rd   = {8'h00, brk_ctl_full}  & {16{brk_reg_rd[BRK_CTL]}};
-wire [15:0] brk_stat_rd  = {8'h00, brk_stat_full} & {16{brk_reg_rd[BRK_STAT]}};
-wire [15:0] brk_addr0_rd = brk_addr0              & {16{brk_reg_rd[BRK_ADDR0]}};
-wire [15:0] brk_addr1_rd = brk_addr1              & {16{brk_reg_rd[BRK_ADDR1]}};
-
-wire [15:0] brk_dout = brk_ctl_rd   |
-                       brk_stat_rd  |
-                       brk_addr0_rd |
-                       brk_addr1_rd;
-
-   
-//============================================================================
-// 4) BREAKPOINT / WATCHPOINT GENERATION
-//============================================================================
-
-// Comparators
-//---------------------------
-// Note: here the comparison logic is instanciated several times in order
-//       to improve the timings, at the cost of a bit more area.
-   
-wire        equ_d_addr0 = eu_mb_en & (eu_mab==brk_addr0) & ~brk_ctl[4];
-wire        equ_d_addr1 = eu_mb_en & (eu_mab==brk_addr1) & ~brk_ctl[4];
-wire        equ_d_range = eu_mb_en & ((eu_mab>=brk_addr0) & (eu_mab<=brk_addr1)) & 
-                          brk_ctl[4] & 1'b0;
-
-
-wire        equ_i_addr0 = decode_noirq & (pc==brk_addr0) & ~brk_ctl[4];
-wire        equ_i_addr1 = decode_noirq & (pc==brk_addr1) & ~brk_ctl[4];
-wire        equ_i_range = decode_noirq & ((pc>=brk_addr0) & (pc<=brk_addr1)) &
-                          brk_ctl[4] & 1'b0;
-
-
-// Detect accesses
-//---------------------------
-
-// Detect Instruction read access
-wire i_addr0_rd =  equ_i_addr0 &  brk_ctl[3];
-wire i_addr1_rd =  equ_i_addr1 &  brk_ctl[3];
-wire i_range_rd =  equ_i_range &  brk_ctl[3];
-
-// Detect Execution-Unit write access
-wire d_addr0_wr =  equ_d_addr0 & ~brk_ctl[3] &  |eu_mb_wr;
-wire d_addr1_wr =  equ_d_addr1 & ~brk_ctl[3] &  |eu_mb_wr;
-wire d_range_wr =  equ_d_range & ~brk_ctl[3] &  |eu_mb_wr;
-
-// Detect DATA read access
-wire d_addr0_rd =  equ_d_addr0 & ~brk_ctl[3] & ~|eu_mb_wr;
-wire d_addr1_rd =  equ_d_addr1 & ~brk_ctl[3] & ~|eu_mb_wr;
-wire d_range_rd =  equ_d_range & ~brk_ctl[3] & ~|eu_mb_wr;
-   
-// Set flags
-assign addr0_rd_set = brk_ctl[0] & (d_addr0_rd  | i_addr0_rd);
-assign addr0_wr_set = brk_ctl[1] &  d_addr0_wr;
-assign addr1_rd_set = brk_ctl[0] & (d_addr1_rd  | i_addr1_rd);
-assign addr1_wr_set = brk_ctl[1] &  d_addr1_wr;
-assign range_rd_set = brk_ctl[0] & (d_range_rd  | i_range_rd);
-assign range_wr_set = brk_ctl[1] &  d_range_wr;
-
-   
-// Break CPU
-assign brk_halt     = brk_ctl[2] & |brk_stat_set;
-   
-     
-endmodule // omsp_dbg_hwbrk
-
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-
-// Data Memory sizes
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include Debug interface
-
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-
-// Include/Exclude Watchdog timer
-
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-
-// Input synchronizers
-
-
-// Peripheral Memory Space:
-
-
-// Let the CPU break after a PUC occurrence by default
-
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-
-
-// Data Memory Size
-
-
-
-// Peripheral Memory Size
-
-
-
-// Data Memory Base Adresses
-
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-
-
-
-// Instructions type
-
-
-
-
-// Single-operand arithmetic
-
-
-
-
-
-
-
-
-
-// Conditional jump
-
-
-
-
-
-
-
-
-
-// Two-operand arithmetic
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Addressing modes
-
-
-
-
-
-
-
-
-
-// Instruction state machine
-
-
-
-
-
-
-
-// Execution state machine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// ALU control signals
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Debug interface
-
-
-
-
-// Debug interface CPU_CTL register
-
-
-
-
-
-
-
-
-// Debug interface CPU_STAT register
-
-
-
-
-
-
-// Debug interface BRKx_CTL register
-
-
-
-
-
-
-
-// Basic clock module: BCSCTL1 Control Register
-
-
-// Basic clock module: BCSCTL2 Control Register
-
-
-
-
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-
-// Debug interface: Software breakpoint opcode
-
-
-// Debug UART interface auto data synchronization
-
-
-// Debug UART interface data rate
-
-
-
-
-// Debug interface input synchronizer
-
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-
-// Counter width for the debug interface UART
-
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_dbg_i2c.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_dbg_i2c.v
deleted file mode 100644
index 0410a38..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_dbg_i2c.v
+++ /dev/null
@@ -1,1381 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_dbg_i2c.v
-// 
-// *Module Description:
-//                       Debug I2C Slave communication interface
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 103 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2011-03-05 15:44:48 +0100 (Sat, 05 Mar 2011) $
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
-module  omsp_dbg_i2c (
-
-// OUTPUTs
-    dbg_addr,                          // Debug register address
-    dbg_din,                           // Debug register data input
-    dbg_i2c_sda_out,                   // Debug interface: I2C SDA OUT
-    dbg_rd,                            // Debug register data read
-    dbg_wr,                            // Debug register data write
-
-// INPUTs
-    dbg_clk,                           // Debug unit clock
-    dbg_dout,                          // Debug register data output
-    dbg_i2c_addr,                      // Debug interface: I2C ADDRESS
-    dbg_i2c_broadcast,                 // Debug interface: I2C Broadcast Address (for multicore systems)
-    dbg_i2c_scl,                       // Debug interface: I2C SCL
-    dbg_i2c_sda_in,                    // Debug interface: I2C SDA IN
-    dbg_rd_rdy,                        // Debug register data is ready for read
-    dbg_rst,                           // Debug unit reset
-    mem_burst,                         // Burst on going
-    mem_burst_end,                     // End TX/RX burst
-    mem_burst_rd,                      // Start TX burst
-    mem_burst_wr,                      // Start RX burst
-    mem_bw                             // Burst byte width
-);
-
-// OUTPUTs
-//=========
-output        [5:0] dbg_addr;          // Debug register address
-output       [15:0] dbg_din;           // Debug register data input
-output              dbg_i2c_sda_out;   // Debug interface: I2C SDA OUT
-output              dbg_rd;            // Debug register data read
-output              dbg_wr;            // Debug register data write
-
-// INPUTs
-//=========
-input               dbg_clk;           // Debug unit clock
-input        [15:0] dbg_dout;          // Debug register data output
-input         [6:0] dbg_i2c_addr;      // Debug interface: I2C ADDRESS
-input         [6:0] dbg_i2c_broadcast; // Debug interface: I2C Broadcast Address (for multicore systems)
-input               dbg_i2c_scl;       // Debug interface: I2C SCL
-input               dbg_i2c_sda_in;    // Debug interface: I2C SDA IN
-input               dbg_rd_rdy;        // Debug register data is ready for read
-input               dbg_rst;           // Debug unit reset
-input               mem_burst;         // Burst on going
-input               mem_burst_end;     // End TX/RX burst
-input               mem_burst_rd;      // Start TX burst
-input               mem_burst_wr;      // Start RX burst
-input               mem_bw;            // Burst byte width
-
-
-//=============================================================================
-// 1) I2C RECEIVE LINE SYNCHRONIZTION & FILTERING
-//=============================================================================
-
-// Synchronize SCL/SDA inputs
-//--------------------------------
-
-wire scl_sync_n;
-omsp_sync_cell sync_cell_i2c_scl (
-    .data_out  (scl_sync_n),
-    .data_in   (~dbg_i2c_scl),
-    .clk       (dbg_clk),
-    .rst       (dbg_rst)
-);
-wire scl_sync = ~scl_sync_n;
-
-wire sda_in_sync_n;
-omsp_sync_cell sync_cell_i2c_sda (
-    .data_out  (sda_in_sync_n),
-    .data_in   (~dbg_i2c_sda_in),
-    .clk       (dbg_clk),
-    .rst       (dbg_rst)
-);
-wire sda_in_sync = ~sda_in_sync_n;
-
-    
-// SCL/SDA input buffers
-//--------------------------------
-
-reg  [1:0] scl_buf;
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst) scl_buf <=  2'h3;
-  else         scl_buf <=  {scl_buf[0], scl_sync};
-
-reg  [1:0] sda_in_buf;
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst) sda_in_buf <=  2'h3;
-  else         sda_in_buf <=  {sda_in_buf[0], sda_in_sync};
-
-
-// SCL/SDA Majority decision
-//------------------------------
-
-wire scl         =  (scl_sync      & scl_buf[0])    |
-                    (scl_sync      & scl_buf[1])    |
-                    (scl_buf[0]    & scl_buf[1]);
-   
-wire sda_in      =  (sda_in_sync   & sda_in_buf[0]) |
-                    (sda_in_sync   & sda_in_buf[1]) |
-                    (sda_in_buf[0] & sda_in_buf[1]);
-
-
-// SCL/SDA Edge detection
-//------------------------------
-
-// SDA Edge detection
-reg        sda_in_dly;
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst) sda_in_dly <=  1'b1;
-  else         sda_in_dly <=  sda_in;
-
-wire sda_in_fe   =  sda_in_dly & ~sda_in;
-wire sda_in_re   = ~sda_in_dly &  sda_in;
-wire sda_in_edge =  sda_in_dly ^  sda_in;
-
-// SCL Edge detection
-reg        scl_dly;
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst) scl_dly <=  1'b1;
-  else         scl_dly <=  scl;
-
-wire scl_fe      =  scl_dly    & ~scl;
-wire scl_re      = ~scl_dly    &  scl;
-wire scl_edge    =  scl_dly    ^  scl;
-
-
-// Delayed SCL Rising-Edge for SDA data sampling
-reg  [1:0] scl_re_dly;
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst) scl_re_dly <=  2'b00;
-  else         scl_re_dly <=  {scl_re_dly[0], scl_re};
-
-wire scl_sample  =  scl_re_dly[1];
-
-   
-//=============================================================================
-// 2) I2C START & STOP CONDITION DETECTION
-//=============================================================================
-
-//-----------------
-// Start condition
-//-----------------
-
-wire start_detect = sda_in_fe & scl;
-
-//-----------------
-// Stop condition
-//-----------------
-
- wire stop_detect = sda_in_re & scl;
-  
-//-----------------
-// I2C Slave Active
-//-----------------
-// The I2C logic will be activated whenever a start condition
-// is detected and will be disactivated if the slave address
-// doesn't match or if a stop condition is detected.
-
-wire i2c_addr_not_valid;
-
-reg  i2c_active_seq;
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)                                 i2c_active_seq <= 1'b0;
-  else if (start_detect)                       i2c_active_seq <= 1'b1;
-  else if (stop_detect || i2c_addr_not_valid)  i2c_active_seq <= 1'b0;
-
-wire i2c_active =  i2c_active_seq & ~stop_detect;
-wire i2c_init   = ~i2c_active     |  start_detect;
-   
-
-//=============================================================================
-// 3) I2C STATE MACHINE
-//=============================================================================
-
-// State register/wires
-reg   [2:0] i2c_state;
-reg   [2:0] i2c_state_nxt;
-
-// Utility signals
-reg   [8:0] shift_buf;
-wire        shift_rx_done;
-wire        shift_tx_done;
-reg         dbg_rd;
-   
-// State machine definition
-parameter   RX_ADDR      =  3'h0;
-parameter   RX_ADDR_ACK  =  3'h1;
-parameter   RX_DATA      =  3'h2;
-parameter   RX_DATA_ACK  =  3'h3;
-parameter   TX_DATA      =  3'h4;
-parameter   TX_DATA_ACK  =  3'h5;
-
-// State transition
-always @(i2c_state or i2c_init or shift_rx_done or i2c_addr_not_valid or shift_tx_done or scl_fe or shift_buf or sda_in)
-  case (i2c_state)
-    RX_ADDR     : i2c_state_nxt =   i2c_init           ?  RX_ADDR      :
-                                   ~shift_rx_done      ?  RX_ADDR      :
-                                    i2c_addr_not_valid ?  RX_ADDR      :
-                                                          RX_ADDR_ACK;
-
-    RX_ADDR_ACK : i2c_state_nxt =   i2c_init           ?  RX_ADDR      :
-                                   ~scl_fe             ?  RX_ADDR_ACK  :
-                                    shift_buf[0]       ?  TX_DATA      :
-                                                          RX_DATA;
-
-    RX_DATA     : i2c_state_nxt =   i2c_init           ?  RX_ADDR      :
-                                   ~shift_rx_done      ?  RX_DATA      :
-                                                          RX_DATA_ACK;
-
-    RX_DATA_ACK : i2c_state_nxt =   i2c_init           ?  RX_ADDR      :
-                                   ~scl_fe             ?  RX_DATA_ACK  :
-                                                          RX_DATA;
-
-    TX_DATA     : i2c_state_nxt =   i2c_init           ?  RX_ADDR      :
-                                   ~shift_tx_done      ?  TX_DATA      :
-                                                          TX_DATA_ACK;
-
-    TX_DATA_ACK : i2c_state_nxt =   i2c_init           ?  RX_ADDR      :
-                                   ~scl_fe             ?  TX_DATA_ACK  :
-                                   ~sda_in             ?  TX_DATA      :
-                                                          RX_ADDR;
-  // pragma coverage off
-    default     : i2c_state_nxt =                         RX_ADDR;
-  // pragma coverage on
-  endcase
-   
-// State machine
-always @(posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)       i2c_state <= RX_ADDR;
-  else               i2c_state <= i2c_state_nxt;
-
-
-//=============================================================================
-// 4) I2C SHIFT REGISTER (FOR RECEIVING & TRANSMITING)
-//=============================================================================
-
-wire       shift_rx_en       = ((i2c_state==RX_ADDR) | (i2c_state    ==RX_DATA) | (i2c_state    ==RX_DATA_ACK));
-wire       shift_tx_en       =                         (i2c_state    ==TX_DATA) | (i2c_state    ==TX_DATA_ACK);
-wire       shift_tx_en_pre   =                         (i2c_state_nxt==TX_DATA) | (i2c_state_nxt==TX_DATA_ACK);
-
-assign     shift_rx_done     = shift_rx_en & scl_fe & shift_buf[8];
-assign     shift_tx_done     = shift_tx_en & scl_fe & (shift_buf==9'h100);
-
-wire       shift_buf_rx_init = i2c_init | ((i2c_state==RX_ADDR_ACK) & scl_fe & ~shift_buf[0]) |
-                                          ((i2c_state==RX_DATA_ACK) & scl_fe);
-wire       shift_buf_rx_en   = shift_rx_en     & scl_sample;
-
-wire       shift_buf_tx_init =            ((i2c_state==RX_ADDR_ACK) & scl_re &  shift_buf[0]) |
-                                          ((i2c_state==TX_DATA_ACK) & scl_re);
-wire       shift_buf_tx_en   = shift_tx_en_pre & scl_fe & (shift_buf!=9'h100);
-
-wire [7:0] shift_tx_val;
-   
-wire [8:0] shift_buf_nxt     = shift_buf_rx_init  ? 9'h001 : // RX Init 
-                               shift_buf_tx_init  ? {shift_tx_val,   1'b1}   : // TX Init 
-                               shift_buf_rx_en    ? {shift_buf[7:0], sda_in} : // RX Shift
-                               shift_buf_tx_en    ? {shift_buf[7:0], 1'b0}   : // TX Shift
-                                                     shift_buf[8:0];           // Hold
-
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst) shift_buf <= 9'h001;
-  else         shift_buf <= shift_buf_nxt;
-
-// Detect when the received I2C device address is not valid
-assign i2c_addr_not_valid =  (i2c_state == RX_ADDR) && shift_rx_done && (
-                              (shift_buf[7:1] != dbg_i2c_addr[6:0]));
-
-// Utility signals
-wire        shift_rx_data_done = shift_rx_done & (i2c_state==RX_DATA); 
-wire        shift_tx_data_done = shift_tx_done; 
-
-
-//=============================================================================
-// 5) I2C TRANSMIT BUFFER
-//=============================================================================
-
-reg dbg_i2c_sda_out;
-
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)     dbg_i2c_sda_out <= 1'b1;
-  else if (scl_fe) dbg_i2c_sda_out <= ~((i2c_state_nxt==RX_ADDR_ACK) ||
-                                        (i2c_state_nxt==RX_DATA_ACK) ||
-                                       (shift_buf_tx_en & ~shift_buf[8]));
-   
-   
-//=============================================================================
-// 6) DEBUG INTERFACE STATE MACHINE
-//=============================================================================
-
-// State register/wires
-reg   [2:0] dbg_state;
-reg   [2:0] dbg_state_nxt;
-
-// Utility signals
-reg         dbg_bw;
-
-// State machine definition
-parameter  RX_CMD     = 3'h0;
-parameter  RX_BYTE_LO = 3'h1;
-parameter  RX_BYTE_HI = 3'h2;
-parameter  TX_BYTE_LO = 3'h3;
-parameter  TX_BYTE_HI = 3'h4;
-
-// State transition
-always @(dbg_state    or shift_rx_data_done or shift_tx_data_done or shift_buf     or dbg_bw or
-         mem_burst_wr or mem_burst_rd       or mem_burst          or mem_burst_end or mem_bw)
-  case (dbg_state)
-    RX_CMD     : dbg_state_nxt =  mem_burst_wr                ? RX_BYTE_LO  :
-                                  mem_burst_rd                ? TX_BYTE_LO  :
-                                  ~shift_rx_data_done         ? RX_CMD      :
-                                   shift_buf[7]               ? RX_BYTE_LO  :
-                                                                TX_BYTE_LO;
-
-    RX_BYTE_LO : dbg_state_nxt = (mem_burst &  mem_burst_end) ? RX_CMD      :
-                                  ~shift_rx_data_done         ? RX_BYTE_LO  :
-                                 (mem_burst & ~mem_burst_end) ?
-                                 (mem_bw                      ? RX_BYTE_LO  :
-                                                                RX_BYTE_HI) :
-                                  dbg_bw                      ? RX_CMD      :
-                                                                RX_BYTE_HI;
-
-    RX_BYTE_HI : dbg_state_nxt =  ~shift_rx_data_done         ? RX_BYTE_HI  :
-                                 (mem_burst & ~mem_burst_end) ? RX_BYTE_LO  :
-                                                                RX_CMD;
-
-    TX_BYTE_LO : dbg_state_nxt =  ~shift_tx_data_done         ? TX_BYTE_LO  :
-                                 ( mem_burst &  mem_bw)       ? TX_BYTE_LO  :
-                                 ( mem_burst & ~mem_bw)       ? TX_BYTE_HI  :
-                                  ~dbg_bw                     ? TX_BYTE_HI  :
-                                                                RX_CMD;
-
-    TX_BYTE_HI : dbg_state_nxt =  ~shift_tx_data_done         ? TX_BYTE_HI  :
-                                   mem_burst                  ? TX_BYTE_LO  :
-                                                                RX_CMD;
-
-  // pragma coverage off
-    default    : dbg_state_nxt =                                RX_CMD;
-  // pragma coverage on
-  endcase
-   
-// State machine
-always @(posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst) dbg_state <= RX_CMD;
-  else         dbg_state <= dbg_state_nxt;
-
-// Utility signals
-wire cmd_valid   = (dbg_state==RX_CMD)     & shift_rx_data_done;
-wire rx_lo_valid = (dbg_state==RX_BYTE_LO) & shift_rx_data_done;
-wire rx_hi_valid = (dbg_state==RX_BYTE_HI) & shift_rx_data_done;
-
-
-//=============================================================================
-// 7) REGISTER READ/WRITE ACCESS
-//=============================================================================
-
-parameter MEM_DATA = 6'h06;
-
-// Debug register address & bit width
-reg [5:0] dbg_addr;
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)
-    begin
-       dbg_bw   <= 1'b0;
-       dbg_addr <= 6'h00;
-    end
-  else if (cmd_valid)
-    begin
-       dbg_bw   <= shift_buf[6];
-       dbg_addr <= shift_buf[5:0];
-    end
-  else if (mem_burst)
-    begin
-       dbg_bw   <= mem_bw;
-       dbg_addr <= MEM_DATA;
-    end
-
-
-// Debug register data input
-reg [7:0] dbg_din_lo;
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)          dbg_din_lo <= 8'h00;
-  else if (rx_lo_valid) dbg_din_lo <= shift_buf[7:0];
-
-reg [7:0] dbg_din_hi;
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)          dbg_din_hi <= 8'h00;
-  else if (rx_lo_valid) dbg_din_hi <= 8'h00;
-  else if (rx_hi_valid) dbg_din_hi <= shift_buf[7:0];
-   
-assign dbg_din = {dbg_din_hi, dbg_din_lo};
-
-
-// Debug register data write command
-reg  dbg_wr;
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst) dbg_wr <= 1'b0;
-  else         dbg_wr <= (mem_burst &  mem_bw) ? rx_lo_valid :
-                         (mem_burst & ~mem_bw) ? rx_hi_valid :
-                         dbg_bw                ? rx_lo_valid :
-                                                 rx_hi_valid;
-
-
-// Debug register data read command
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst) dbg_rd <= 1'b0;
-  else         dbg_rd <= (mem_burst &  mem_bw) ? (shift_tx_data_done & (dbg_state==TX_BYTE_LO)) :
-                         (mem_burst & ~mem_bw) ? (shift_tx_data_done & (dbg_state==TX_BYTE_HI)) :        
-                         cmd_valid             ?  ~shift_buf[7]                                 :
-                                                  1'b0;
-
-
-// Debug register data read value 
-assign shift_tx_val = (dbg_state==TX_BYTE_HI) ? dbg_dout[15:8] :
-                                                dbg_dout[7:0];
-
-endmodule
-
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-
-// Data Memory sizes
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include Debug interface
-
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-
-// Include/Exclude Watchdog timer
-
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-
-// Input synchronizers
-
-
-// Peripheral Memory Space:
-
-
-// Let the CPU break after a PUC occurrence by default
-
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-
-
-// Data Memory Size
-
-
-
-// Peripheral Memory Size
-
-
-
-// Data Memory Base Adresses
-
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-
-
-
-// Instructions type
-
-
-
-
-// Single-operand arithmetic
-
-
-
-
-
-
-
-
-
-// Conditional jump
-
-
-
-
-
-
-
-
-
-// Two-operand arithmetic
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Addressing modes
-
-
-
-
-
-
-
-
-
-// Instruction state machine
-
-
-
-
-
-
-
-// Execution state machine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// ALU control signals
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Debug interface
-
-
-
-
-// Debug interface CPU_CTL register
-
-
-
-
-
-
-
-
-// Debug interface CPU_STAT register
-
-
-
-
-
-
-// Debug interface BRKx_CTL register
-
-
-
-
-
-
-
-// Basic clock module: BCSCTL1 Control Register
-
-
-// Basic clock module: BCSCTL2 Control Register
-
-
-
-
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-
-// Debug interface: Software breakpoint opcode
-
-
-// Debug UART interface auto data synchronization
-
-
-// Debug UART interface data rate
-
-
-
-
-// Debug interface input synchronizer
-
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-
-// Counter width for the debug interface UART
-
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_dbg_uart.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_dbg_uart.v
deleted file mode 100644
index a28a3ef..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_dbg_uart.v
+++ /dev/null
@@ -1,1203 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_dbg_uart.v
-// 
-// *Module Description:
-//                       Debug UART communication interface (8N1, Half-duplex)
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 134 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2012-03-22 21:31:06 +0100 (Thu, 22 Mar 2012) $
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
-module  omsp_dbg_uart (
-
-// OUTPUTs
-    dbg_addr,                       // Debug register address
-    dbg_din,                        // Debug register data input
-    dbg_rd,                         // Debug register data read
-    dbg_uart_txd,                   // Debug interface: UART TXD
-    dbg_wr,                         // Debug register data write
-			     
-// INPUTs
-    dbg_clk,                        // Debug unit clock
-    dbg_dout,                       // Debug register data output
-    dbg_rd_rdy,                     // Debug register data is ready for read
-    dbg_rst,                        // Debug unit reset
-    dbg_uart_rxd,                   // Debug interface: UART RXD
-    mem_burst,                      // Burst on going
-    mem_burst_end,                  // End TX/RX burst
-    mem_burst_rd,                   // Start TX burst
-    mem_burst_wr,                   // Start RX burst
-    mem_bw                          // Burst byte width
-);
-
-// OUTPUTs
-//=========
-output        [5:0] dbg_addr;       // Debug register address
-output       [15:0] dbg_din;        // Debug register data input
-output              dbg_rd;         // Debug register data read
-output              dbg_uart_txd;   // Debug interface: UART TXD
-output              dbg_wr;         // Debug register data write
-
-// INPUTs
-//=========
-input               dbg_clk;        // Debug unit clock
-input        [15:0] dbg_dout;       // Debug register data output
-input               dbg_rd_rdy;     // Debug register data is ready for read
-input               dbg_rst;        // Debug unit reset
-input               dbg_uart_rxd;   // Debug interface: UART RXD
-input               mem_burst;      // Burst on going
-input               mem_burst_end;  // End TX/RX burst
-input               mem_burst_rd;   // Start TX burst
-input               mem_burst_wr;   // Start RX burst
-input               mem_bw;         // Burst byte width
-
-
-//=============================================================================
-// 1)  UART RECEIVE LINE SYNCHRONIZTION & FILTERING
-//=============================================================================
-
-// Synchronize RXD input
-//--------------------------------
-
-    wire uart_rxd_n;
-
-    omsp_sync_cell sync_cell_uart_rxd (
-        .data_out  (uart_rxd_n),
-        .data_in   (~dbg_uart_rxd),
-        .clk       (dbg_clk),
-        .rst       (dbg_rst)
-    );
-    wire uart_rxd = ~uart_rxd_n;
-   
-// RXD input buffer
-//--------------------------------
-reg  [1:0] rxd_buf;
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst) rxd_buf <=  2'h3;
-  else         rxd_buf <=  {rxd_buf[0], uart_rxd};
-
-// Majority decision
-//------------------------
-reg        rxd_maj;
-
-wire       rxd_maj_nxt = (uart_rxd   & rxd_buf[0]) |
-			 (uart_rxd   & rxd_buf[1]) |
-			 (rxd_buf[0] & rxd_buf[1]);
-   
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst) rxd_maj <=  1'b1;
-  else         rxd_maj <=  rxd_maj_nxt;
-
-wire rxd_s    =  rxd_maj;
-wire rxd_fe   =  rxd_maj & ~rxd_maj_nxt;
-wire rxd_re   = ~rxd_maj &  rxd_maj_nxt;
-wire rxd_edge =  rxd_maj ^  rxd_maj_nxt;
-   
-//=============================================================================
-// 2)  UART STATE MACHINE
-//=============================================================================
-
-// Receive state
-//------------------------
-reg   [2:0] uart_state;
-reg   [2:0] uart_state_nxt;
-
-wire        sync_done;
-wire        xfer_done;
-reg  [19:0] xfer_buf;
-wire [19:0] xfer_buf_nxt;
-
-// State machine definition
-parameter  RX_SYNC  = 3'h0;
-parameter  RX_CMD   = 3'h1;
-parameter  RX_DATA1 = 3'h2;
-parameter  RX_DATA2 = 3'h3;
-parameter  TX_DATA1 = 3'h4;
-parameter  TX_DATA2 = 3'h5;
-
-// State transition
-always @(uart_state or xfer_buf_nxt or mem_burst or mem_burst_wr or mem_burst_rd or mem_burst_end or mem_bw)
-  case (uart_state)
-    RX_SYNC  : uart_state_nxt =  RX_CMD;
-    RX_CMD   : uart_state_nxt =  mem_burst_wr                ?
-                                (mem_bw                      ? RX_DATA2 : RX_DATA1) :
-                                 mem_burst_rd                ?
-                                (mem_bw                      ? TX_DATA2 : TX_DATA1) :
-                                (xfer_buf_nxt[18]  ?
-                                (xfer_buf_nxt[17]  ? RX_DATA2 : RX_DATA1) :
-                                (xfer_buf_nxt[17]  ? TX_DATA2 : TX_DATA1));
-    RX_DATA1 : uart_state_nxt =  RX_DATA2;
-    RX_DATA2 : uart_state_nxt = (mem_burst & ~mem_burst_end) ?
-                                (mem_bw                      ? RX_DATA2 : RX_DATA1) :
-                                 RX_CMD;
-    TX_DATA1 : uart_state_nxt =  TX_DATA2;
-    TX_DATA2 : uart_state_nxt = (mem_burst & ~mem_burst_end) ?
-                                (mem_bw                      ? TX_DATA2 : TX_DATA1) :
-                                 RX_CMD;
-  // pragma coverage off
-    default  : uart_state_nxt =  RX_CMD;
-  // pragma coverage on
-  endcase
-   
-// State machine
-always @(posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)                          uart_state <= RX_SYNC;
-  else if (xfer_done    | sync_done |
-           mem_burst_wr | mem_burst_rd) uart_state <= uart_state_nxt;
-
-// Utility signals
-wire cmd_valid = (uart_state==RX_CMD) & xfer_done;
-wire rx_active = (uart_state==RX_DATA1) | (uart_state==RX_DATA2) | (uart_state==RX_CMD);
-wire tx_active = (uart_state==TX_DATA1) | (uart_state==TX_DATA2);
-
-   
-//=============================================================================
-// 3)  UART SYNCHRONIZATION
-//=============================================================================
-// After DBG_RST, the host needs to fist send a synchronization character (0x80)
-// If this feature doesn't work properly, it is possible to disable it by
-// commenting the DBG_UART_AUTO_SYNC define in the openMSP430.inc file.
-
-reg        sync_busy;
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)                             sync_busy <=  1'b0;
-  else if ((uart_state==RX_SYNC) & rxd_fe) sync_busy <=  1'b1;
-  else if ((uart_state==RX_SYNC) & rxd_re) sync_busy <=  1'b0;
-
-assign sync_done =  (uart_state==RX_SYNC) & rxd_re & sync_busy;
-
-
-reg [16+2:0] sync_cnt;
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)                                     sync_cnt <=  {{16{1'b1}}, 3'b000};
-  else if (sync_busy | (~sync_busy & sync_cnt[2])) sync_cnt <=  sync_cnt+{{16+2{1'b0}}, 1'b1};
-
-wire [16-1:0] bit_cnt_max = sync_cnt[16+2:3];
-   
-   
-//=============================================================================
-// 4)  UART RECEIVE / TRANSMIT
-//=============================================================================
-   
-// Transfer counter
-//------------------------
-reg                      [3:0] xfer_bit;
-reg [16-1:0] xfer_cnt;
-
-wire       txd_start    = dbg_rd_rdy | (xfer_done & (uart_state==TX_DATA1));
-wire       rxd_start    = (xfer_bit==4'h0) & rxd_fe & ((uart_state!=RX_SYNC));
-wire       xfer_bit_inc = (xfer_bit!=4'h0) & (xfer_cnt=={16{1'b0}});
-assign     xfer_done    = rx_active ? (xfer_bit==4'ha) : (xfer_bit==4'hb);
-   
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)                       xfer_bit <=  4'h0;
-  else if (txd_start | rxd_start)    xfer_bit <=  4'h1;
-  else if (xfer_done)                xfer_bit <=  4'h0;
-  else if (xfer_bit_inc)             xfer_bit <=  xfer_bit+4'h1;
-
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)                       xfer_cnt <=  {16{1'b0}};
-  else if (rx_active & rxd_edge)     xfer_cnt <=  {1'b0, bit_cnt_max[16-1:1]};
-  else if (txd_start | xfer_bit_inc) xfer_cnt <=  bit_cnt_max;
-  else if (|xfer_cnt)                xfer_cnt <=  xfer_cnt+{16{1'b1}};
-
-
-// Receive/Transmit buffer
-//-------------------------
-assign xfer_buf_nxt =  {rxd_s, xfer_buf[19:1]};
-
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)           xfer_buf <=  20'h00000;
-  else if (dbg_rd_rdy)   xfer_buf <=  {1'b1, dbg_dout[15:8], 2'b01, dbg_dout[7:0], 1'b0};
-  else if (xfer_bit_inc) xfer_buf <=  xfer_buf_nxt;
-
-
-// Generate TXD output
-//------------------------
-reg dbg_uart_txd;
-   
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)                       dbg_uart_txd <=  1'b1;
-  else if (xfer_bit_inc & tx_active) dbg_uart_txd <=  xfer_buf[0];
-
- 
-//=============================================================================
-// 5) INTERFACE TO DEBUG REGISTERS
-//=============================================================================
-
-reg [5:0] dbg_addr;
- always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)        dbg_addr <=  6'h00;
-  else if (cmd_valid) dbg_addr <=  xfer_buf_nxt[16:11];
-
-reg       dbg_bw;
-always @ (posedge dbg_clk or posedge dbg_rst)
-  if (dbg_rst)        dbg_bw   <=  1'b0;
-  else if (cmd_valid) dbg_bw   <=  xfer_buf_nxt[17];
-
-wire        dbg_din_bw =  mem_burst  ? mem_bw : dbg_bw;
-
-wire [15:0] dbg_din    =  dbg_din_bw ? {8'h00,           xfer_buf_nxt[18:11]} :
-                                       {xfer_buf_nxt[18:11], xfer_buf_nxt[9:2]};
-wire        dbg_wr     = (xfer_done & (uart_state==RX_DATA2));
-wire        dbg_rd     = mem_burst ? (xfer_done & (uart_state==TX_DATA2)) :
-                                     (cmd_valid & ~xfer_buf_nxt[18]) | mem_burst_rd;
-
-	    
-   
-endmodule // omsp_dbg_uart
-
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-
-// Data Memory sizes
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include Debug interface
-
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-
-// Include/Exclude Watchdog timer
-
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-
-// Input synchronizers
-
-
-// Peripheral Memory Space:
-
-
-// Let the CPU break after a PUC occurrence by default
-
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-
-
-// Data Memory Size
-
-
-
-// Peripheral Memory Size
-
-
-
-// Data Memory Base Adresses
-
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-
-
-
-// Instructions type
-
-
-
-
-// Single-operand arithmetic
-
-
-
-
-
-
-
-
-
-// Conditional jump
-
-
-
-
-
-
-
-
-
-// Two-operand arithmetic
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Addressing modes
-
-
-
-
-
-
-
-
-
-// Instruction state machine
-
-
-
-
-
-
-
-// Execution state machine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// ALU control signals
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Debug interface
-
-
-
-
-// Debug interface CPU_CTL register
-
-
-
-
-
-
-
-
-// Debug interface CPU_STAT register
-
-
-
-
-
-
-// Debug interface BRKx_CTL register
-
-
-
-
-
-
-
-// Basic clock module: BCSCTL1 Control Register
-
-
-// Basic clock module: BCSCTL2 Control Register
-
-
-
-
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-
-// Debug interface: Software breakpoint opcode
-
-
-// Debug UART interface auto data synchronization
-
-
-// Debug UART interface data rate
-
-
-
-
-// Debug interface input synchronizer
-
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-
-// Counter width for the debug interface UART
-
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_execution_unit.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_execution_unit.v
deleted file mode 100644
index 7224cf4..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_execution_unit.v
+++ /dev/null
@@ -1,1313 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_execution_unit.v
-// 
-// *Module Description:
-//                       openMSP430 Execution unit
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 190 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-07-30 22:19:34 +0200 (Tue, 30 Jul 2013) $
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
-module  omsp_execution_unit (
-
-// OUTPUTs
-    cpuoff,                        // Turns off the CPU
-    dbg_reg_din,                   // Debug unit CPU register data input
-    gie,                           // General interrupt enable
-    mab,                           // Memory address bus
-    mb_en,                         // Memory bus enable
-    mb_wr,                         // Memory bus write transfer
-    mdb_out,                       // Memory data bus output
-    oscoff,                        // Turns off LFXT1 clock input
-    pc_sw,                         // Program counter software value
-    pc_sw_wr,                      // Program counter software write
-    scg0,                          // System clock generator 1. Turns off the DCO
-    scg1,                          // System clock generator 1. Turns off the SMCLK
-
-// INPUTs
-    dbg_halt_st,                   // Halt/Run status from CPU
-    dbg_mem_dout,                  // Debug unit data output
-    dbg_reg_wr,                    // Debug unit CPU register write
-    e_state,                       // Execution state
-    exec_done,                     // Execution completed
-    inst_ad,                       // Decoded Inst: destination addressing mode
-    inst_as,                       // Decoded Inst: source addressing mode
-    inst_alu,                      // ALU control signals
-    inst_bw,                       // Decoded Inst: byte width
-    inst_dest,                     // Decoded Inst: destination (one hot)
-    inst_dext,                     // Decoded Inst: destination extended instruction word
-    inst_irq_rst,                  // Decoded Inst: reset interrupt
-    inst_jmp,                      // Decoded Inst: Conditional jump
-    inst_mov,                      // Decoded Inst: mov instruction
-    inst_sext,                     // Decoded Inst: source extended instruction word
-    inst_so,                       // Decoded Inst: Single-operand arithmetic
-    inst_src,                      // Decoded Inst: source (one hot)
-    inst_type,                     // Decoded Instruction type
-    mclk,                          // Main system clock
-    mdb_in,                        // Memory data bus input
-    pc,                            // Program counter
-    pc_nxt,                        // Next PC value (for CALL & IRQ)
-    puc_rst,                       // Main system reset
-    scan_enable                    // Scan enable (active during scan shifting)
-);
-
-// OUTPUTs
-//=========
-output 	            cpuoff;        // Turns off the CPU
-output       [15:0] dbg_reg_din;   // Debug unit CPU register data input
-output 	            gie;           // General interrupt enable
-output       [15:0] mab;           // Memory address bus
-output              mb_en;         // Memory bus enable
-output        [1:0] mb_wr;         // Memory bus write transfer
-output       [15:0] mdb_out;       // Memory data bus output
-output 	            oscoff;        // Turns off LFXT1 clock input
-output       [15:0] pc_sw;         // Program counter software value
-output              pc_sw_wr;      // Program counter software write
-output              scg0;          // System clock generator 1. Turns off the DCO
-output              scg1;          // System clock generator 1. Turns off the SMCLK
-
-// INPUTs
-//=========
-input               dbg_halt_st;   // Halt/Run status from CPU
-input        [15:0] dbg_mem_dout;  // Debug unit data output
-input               dbg_reg_wr;    // Debug unit CPU register write
-input         [3:0] e_state;       // Execution state
-input               exec_done;     // Execution completed
-input         [7:0] inst_ad;       // Decoded Inst: destination addressing mode
-input         [7:0] inst_as;       // Decoded Inst: source addressing mode
-input        [11:0] inst_alu;      // ALU control signals
-input               inst_bw;       // Decoded Inst: byte width
-input        [15:0] inst_dest;     // Decoded Inst: destination (one hot)
-input        [15:0] inst_dext;     // Decoded Inst: destination extended instruction word
-input               inst_irq_rst;  // Decoded Inst: reset interrupt
-input         [7:0] inst_jmp;      // Decoded Inst: Conditional jump
-input               inst_mov;      // Decoded Inst: mov instruction
-input        [15:0] inst_sext;     // Decoded Inst: source extended instruction word
-input         [7:0] inst_so;       // Decoded Inst: Single-operand arithmetic
-input        [15:0] inst_src;      // Decoded Inst: source (one hot)
-input         [2:0] inst_type;     // Decoded Instruction type
-input               mclk;          // Main system clock
-input        [15:0] mdb_in;        // Memory data bus input
-input        [15:0] pc;            // Program counter
-input        [15:0] pc_nxt;        // Next PC value (for CALL & IRQ)
-input               puc_rst;       // Main system reset
-input               scan_enable;   // Scan enable (active during scan shifting)
-
-
-//=============================================================================
-// 1)  INTERNAL WIRES/REGISTERS/PARAMETERS DECLARATION
-//=============================================================================
-
-wire         [15:0] alu_out;
-wire         [15:0] alu_out_add;
-wire          [3:0] alu_stat;
-wire          [3:0] alu_stat_wr;
-wire         [15:0] op_dst;
-wire         [15:0] op_src;
-wire         [15:0] reg_dest;
-wire         [15:0] reg_src;
-wire         [15:0] mdb_in_bw;
-wire         [15:0] mdb_in_val;
-wire          [3:0] status;
-
-
-//=============================================================================
-// 2)  REGISTER FILE
-//=============================================================================
-
-wire reg_dest_wr  = ((e_state==4'hB) & (
-                     (inst_type[2] & inst_ad[0] & ~inst_alu[11])  |
-                     (inst_type[0] & inst_as[0] & ~(inst_so[4] | inst_so[5] | inst_so[6])) |
-                      inst_type[1])) | dbg_reg_wr;
-
-wire reg_sp_wr    = (((e_state==4'h1) | (e_state==4'h3)) & ~inst_irq_rst) |
-                     ((e_state==4'h9) & ((inst_so[4] | inst_so[5]) &  ~inst_as[1] & ~((inst_as[2] | inst_as[3]) & inst_src[1]))) |
-                     ((e_state==4'h5) & ((inst_so[4] | inst_so[5]) &  inst_as[1])) |
-                     ((e_state==4'h6) & ((inst_so[4] | inst_so[5]) &  ((inst_as[2] | inst_as[3]) & inst_src[1])));
-
-wire reg_sr_wr    =  (e_state==4'h9) & inst_so[6];
-
-wire reg_sr_clr   =  (e_state==4'h0);
-
-wire reg_pc_call  = ((e_state==4'hB)   & inst_so[5]) | 
-                    ((e_state==4'hA) & inst_so[6]);
-
-wire reg_incr     =  (exec_done          & inst_as[3]) |
-                    ((e_state==4'h6) & inst_so[6])    |
-                    ((e_state==4'hB)   & inst_so[6]);
-
-assign dbg_reg_din = reg_dest;
-
-
-omsp_register_file register_file_0 (
-
-// OUTPUTs
-    .cpuoff       (cpuoff),       // Turns off the CPU
-    .gie          (gie),          // General interrupt enable
-    .oscoff       (oscoff),       // Turns off LFXT1 clock input
-    .pc_sw        (pc_sw),        // Program counter software value
-    .pc_sw_wr     (pc_sw_wr),     // Program counter software write
-    .reg_dest     (reg_dest),     // Selected register destination content
-    .reg_src      (reg_src),      // Selected register source content
-    .scg0         (scg0),         // System clock generator 1. Turns off the DCO
-    .scg1         (scg1),         // System clock generator 1. Turns off the SMCLK
-    .status       (status),       // R2 Status {V,N,Z,C}
-
-// INPUTs
-    .alu_stat     (alu_stat),     // ALU Status {V,N,Z,C}
-    .alu_stat_wr  (alu_stat_wr),  // ALU Status write {V,N,Z,C}
-    .inst_bw      (inst_bw),      // Decoded Inst: byte width
-    .inst_dest    (inst_dest),    // Register destination selection
-    .inst_src     (inst_src),     // Register source selection
-    .mclk         (mclk),         // Main system clock
-    .pc           (pc),           // Program counter
-    .puc_rst      (puc_rst),      // Main system reset
-    .reg_dest_val (alu_out),      // Selected register destination value
-    .reg_dest_wr  (reg_dest_wr),  // Write selected register destination
-    .reg_pc_call  (reg_pc_call),  // Trigger PC update for a CALL instruction
-    .reg_sp_val   (alu_out_add),  // Stack Pointer next value
-    .reg_sp_wr    (reg_sp_wr),    // Stack Pointer write
-    .reg_sr_clr   (reg_sr_clr),   // Status register clear for interrupts
-    .reg_sr_wr    (reg_sr_wr),    // Status Register update for RETI instruction
-    .reg_incr     (reg_incr),     // Increment source register
-    .scan_enable  (scan_enable)   // Scan enable (active during scan shifting)
-);
-
-
-//=============================================================================
-// 3)  SOURCE OPERAND MUXING
-//=============================================================================
-// inst_as[`DIR]    : Register direct.   -> Source is in register
-// inst_as[`IDX]    : Register indexed.  -> Source is in memory, address is register+offset
-// inst_as[`INDIR]  : Register indirect.
-// inst_as[`INDIR_I]: Register indirect autoincrement.
-// inst_as[`SYMB]   : Symbolic (operand is in memory at address PC+x).
-// inst_as[`IMM]    : Immediate (operand is next word in the instruction stream).
-// inst_as[`ABS]    : Absolute (operand is in memory at address x).
-// inst_as[`CONST]  : Constant.
-
-wire src_reg_src_sel    =  (e_state==4'h2)                    |
-                           (e_state==4'h0)                    |
-                          ((e_state==4'h6) & ~inst_as[6]) |
-                          ((e_state==4'h7) & ~inst_as[6]) |
-                          ((e_state==4'hB)   &  inst_as[0] & ~inst_type[1]);
-
-wire src_reg_dest_sel   =  (e_state==4'h1)                    |
-                           (e_state==4'h3)                    |
-                          ((e_state==4'h9) & (inst_so[4] | inst_so[5])) |
-                          ((e_state==4'h5) & (inst_so[4] | inst_so[5]) & inst_as[1]);
-
-wire src_mdb_in_val_sel = ((e_state==4'h9) &  inst_so[6])                     |
-                          ((e_state==4'hB)   & (inst_as[2] | inst_as[3] |
-                                                   inst_as[1]   | inst_as[4]    |
-                                                   inst_as[6]));
-
-wire src_inst_dext_sel =  ((e_state==4'h9) & ~(inst_so[4] | inst_so[5])) |
-                          ((e_state==4'hA) & ~(inst_so[4] | inst_so[5]   |
-                                                    inst_so[6]));
-
-wire src_inst_sext_sel =  ((e_state==4'hB)   &  (inst_type[1] | inst_as[5] |
-                                                    inst_as[7]      | inst_so[6]));
-
-
-assign op_src = src_reg_src_sel     ?  reg_src    :
-                src_reg_dest_sel    ?  reg_dest   :
-                src_mdb_in_val_sel  ?  mdb_in_val :
-                src_inst_dext_sel   ?  inst_dext  :
-                src_inst_sext_sel   ?  inst_sext  : 16'h0000;
-
-
-//=============================================================================
-// 4)  DESTINATION OPERAND MUXING
-//=============================================================================
-// inst_ad[`DIR]    : Register direct.
-// inst_ad[`IDX]    : Register indexed.
-// inst_ad[`SYMB]   : Symbolic (operand is in memory at address PC+x).
-// inst_ad[`ABS]    : Absolute (operand is in memory at address x).
-
-
-wire dst_inst_sext_sel  = ((e_state==4'h6) & (inst_as[1] | inst_as[4] |
-                                                   inst_as[6]))                |
-                          ((e_state==4'h7) & (inst_as[1] | inst_as[4] |
-                                                   inst_as[6]));
-
-wire dst_mdb_in_bw_sel  = ((e_state==4'hA) &   inst_so[6]) |
-                          ((e_state==4'hB)   & ~(inst_ad[0] | inst_type[1] |
-                                                    inst_type[0]) & ~inst_so[6]);
-
-wire dst_fffe_sel       =  (e_state==4'h2)  |
-                           (e_state==4'h1)  |
-                           (e_state==4'h3)  |
-                          ((e_state==4'h9) & (inst_so[4] | inst_so[5]) & ~inst_so[6]) |
-                          ((e_state==4'h5) & (inst_so[4] | inst_so[5]) & inst_as[1]) |
-                          ((e_state==4'h6) & (inst_so[4] | inst_so[5]) & (inst_as[2] | inst_as[3]) & inst_src[1]);
-
-wire dst_reg_dest_sel   = ((e_state==4'h9) & ~(inst_so[4] | inst_so[5] | inst_ad[6] | inst_so[6])) |
-                          ((e_state==4'hA) &  ~inst_ad[6]) |
-                          ((e_state==4'hB)   &  (inst_ad[0] | inst_type[1] |
-                                                    inst_type[0]) & ~inst_so[6]);
-
-
-assign op_dst = dbg_halt_st        ? dbg_mem_dout  :
-                dst_inst_sext_sel  ? inst_sext     :
-                dst_mdb_in_bw_sel  ? mdb_in_bw     :
-                dst_reg_dest_sel   ? reg_dest      :
-                dst_fffe_sel       ? 16'hfffe : 16'h0000;
-
-
-//=============================================================================
-// 5)  ALU
-//=============================================================================
-
-wire exec_cycle = (e_state==4'hB);
-
-omsp_alu alu_0 (
-
-// OUTPUTs
-    .alu_out      (alu_out),      // ALU output value
-    .alu_out_add  (alu_out_add),  // ALU adder output value
-    .alu_stat     (alu_stat),     // ALU Status {V,N,Z,C}
-    .alu_stat_wr  (alu_stat_wr),  // ALU Status write {V,N,Z,C}
-
-// INPUTs
-    .dbg_halt_st  (dbg_halt_st),  // Halt/Run status from CPU
-    .exec_cycle   (exec_cycle),   // Instruction execution cycle
-    .inst_alu     (inst_alu),     // ALU control signals
-    .inst_bw      (inst_bw),      // Decoded Inst: byte width
-    .inst_jmp     (inst_jmp),     // Decoded Inst: Conditional jump
-    .inst_so      (inst_so),      // Single-operand arithmetic
-    .op_dst       (op_dst),       // Destination operand
-    .op_src       (op_src),       // Source operand
-    .status       (status)        // R2 Status {V,N,Z,C}
-);
-
-
-//=============================================================================
-// 6)  MEMORY INTERFACE
-//=============================================================================
-
-// Detect memory read/write access
-wire        mb_rd_det = ((e_state==4'h6) & ~inst_as[5])       |
-                        ((e_state==4'hB)   &  inst_so[6])      |
-                        ((e_state==4'h9) & ~inst_type[0]
-                                              & ~inst_mov);
-
-wire        mb_wr_det = ((e_state==4'h1)  & ~inst_irq_rst)        |
-                        ((e_state==4'h3)  & ~inst_irq_rst)        |
-                        ((e_state==4'hA) & ~inst_so[6])      |
-                         (e_state==4'h7);
-
-wire  [1:0] mb_wr_msk =  inst_alu[11]  ? 2'b00 :
-                        ~inst_bw                ? 2'b11 :
-                         alu_out_add[0]         ? 2'b10 : 2'b01;
-
-assign      mb_en     = mb_rd_det | (mb_wr_det & ~inst_alu[11]);
-
-assign      mb_wr     = ({2{mb_wr_det}}) & mb_wr_msk;
-
-
-
-// Memory address bus
-assign      mab       = alu_out_add[15:0];
-
-// Memory data bus output
-reg  [15:0] mdb_out_nxt;
-
-wire        mclk_mdb_out_nxt = mclk;
-
-always @(posedge mclk_mdb_out_nxt or posedge puc_rst)
-  if (puc_rst)                                        mdb_out_nxt <= 16'h0000;
-  else if (e_state==4'h9)                        mdb_out_nxt <= pc_nxt;
-  else if ((e_state==4'hB & ~inst_so[5]) |
-           (e_state==4'h2) | (e_state==4'h0)) mdb_out_nxt <= alu_out;
-
-assign      mdb_out = inst_bw ? {2{mdb_out_nxt[7:0]}} : mdb_out_nxt;
-
-// Format memory data bus input depending on BW
-reg        mab_lsb;
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst)    mab_lsb <= 1'b0;
-  else if (mb_en) mab_lsb <= alu_out_add[0];
-
-assign mdb_in_bw  = ~inst_bw ? mdb_in :
-                     mab_lsb ? {2{mdb_in[15:8]}} : mdb_in;
-
-// Memory data bus input buffer (buffer after a source read)
-reg         mdb_in_buf_en;
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst)  mdb_in_buf_en <= 1'b0;
-  else          mdb_in_buf_en <= (e_state==4'h6);
-
-reg         mdb_in_buf_valid;
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst)               mdb_in_buf_valid <= 1'b0;
-  else if (e_state==4'hB) mdb_in_buf_valid <= 1'b0;
-  else if (mdb_in_buf_en)    mdb_in_buf_valid <= 1'b1;
-
-reg  [15:0] mdb_in_buf;
-
-wire        mclk_mdb_in_buf = mclk;
-
-always @(posedge mclk_mdb_in_buf or posedge puc_rst)
-  if (puc_rst)            mdb_in_buf <= 16'h0000;
-  else if (mdb_in_buf_en) mdb_in_buf <= mdb_in_bw;
-
-assign mdb_in_val = mdb_in_buf_valid ? mdb_in_buf : mdb_in_bw;
-
-
-endmodule // omsp_execution_unit
-
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-
-// Data Memory sizes
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include Debug interface
-
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-
-// Include/Exclude Watchdog timer
-
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-
-// Input synchronizers
-
-
-// Peripheral Memory Space:
-
-
-// Let the CPU break after a PUC occurrence by default
-
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-
-
-// Data Memory Size
-
-
-
-// Peripheral Memory Size
-
-
-
-// Data Memory Base Adresses
-
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-
-
-
-// Instructions type
-
-
-
-
-// Single-operand arithmetic
-
-
-
-
-
-
-
-
-
-// Conditional jump
-
-
-
-
-
-
-
-
-
-// Two-operand arithmetic
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Addressing modes
-
-
-
-
-
-
-
-
-
-// Instruction state machine
-
-
-
-
-
-
-
-// Execution state machine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// ALU control signals
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Debug interface
-
-
-
-
-// Debug interface CPU_CTL register
-
-
-
-
-
-
-
-
-// Debug interface CPU_STAT register
-
-
-
-
-
-
-// Debug interface BRKx_CTL register
-
-
-
-
-
-
-
-// Basic clock module: BCSCTL1 Control Register
-
-
-// Basic clock module: BCSCTL2 Control Register
-
-
-
-
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-
-// Debug interface: Software breakpoint opcode
-
-
-// Debug UART interface auto data synchronization
-
-
-// Debug UART interface data rate
-
-
-
-
-// Debug interface input synchronizer
-
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-
-// Counter width for the debug interface UART
-
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_frontend.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_frontend.v
deleted file mode 100644
index 371c7ff..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_frontend.v
+++ /dev/null
@@ -1,1767 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_frontend.v
-// 
-// *Module Description:
-//                       openMSP430 Instruction fetch and decode unit
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 134 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2012-03-22 21:31:06 +0100 (Thu, 22 Mar 2012) $
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
-module  omsp_frontend (
-
-// OUTPUTs
-    dbg_halt_st,                   // Halt/Run status from CPU
-    decode_noirq,                  // Frontend decode instruction
-    e_state,                       // Execution state
-    exec_done,                     // Execution completed
-    inst_ad,                       // Decoded Inst: destination addressing mode
-    inst_as,                       // Decoded Inst: source addressing mode
-    inst_alu,                      // ALU control signals
-    inst_bw,                       // Decoded Inst: byte width
-    inst_dest,                     // Decoded Inst: destination (one hot)
-    inst_dext,                     // Decoded Inst: destination extended instruction word
-    inst_irq_rst,                  // Decoded Inst: Reset interrupt
-    inst_jmp,                      // Decoded Inst: Conditional jump
-    inst_mov,                      // Decoded Inst: mov instruction
-    inst_sext,                     // Decoded Inst: source extended instruction word
-    inst_so,                       // Decoded Inst: Single-operand arithmetic
-    inst_src,                      // Decoded Inst: source (one hot)
-    inst_type,                     // Decoded Instruction type
-    irq_acc,                       // Interrupt request accepted (one-hot signal)
-    mab,                           // Frontend Memory address bus
-    mb_en,                         // Frontend Memory bus enable
-    mclk_enable,                   // Main System Clock enable
-    mclk_wkup,                     // Main System Clock wake-up (asynchronous)
-    nmi_acc,                       // Non-Maskable interrupt request accepted
-    pc,                            // Program counter
-    pc_nxt,                        // Next PC value (for CALL & IRQ)
-
-// INPUTs
-    cpu_en_s,                      // Enable CPU code execution (synchronous)
-    cpuoff,                        // Turns off the CPU
-    dbg_halt_cmd,                  // Halt CPU command
-    dbg_reg_sel,                   // Debug selected register for rd/wr access
-    fe_pmem_wait,                  // Frontend wait for Instruction fetch
-    gie,                           // General interrupt enable
-    irq,                           // Maskable interrupts
-    mclk,                          // Main system clock
-    mdb_in,                        // Frontend Memory data bus input
-    nmi_pnd,                       // Non-maskable interrupt pending
-    nmi_wkup,                      // NMI Wakeup
-    pc_sw,                         // Program counter software value
-    pc_sw_wr,                      // Program counter software write
-    puc_rst,                       // Main system reset
-    scan_enable,                   // Scan enable (active during scan shifting)
-    wdt_irq,                       // Watchdog-timer interrupt
-    wdt_wkup,                      // Watchdog Wakeup
-    wkup                           // System Wake-up (asynchronous)
-);
-
-// OUTPUTs
-//=========
-output              dbg_halt_st;   // Halt/Run status from CPU
-output              decode_noirq;  // Frontend decode instruction
-output        [3:0] e_state;       // Execution state
-output              exec_done;     // Execution completed
-output        [7:0] inst_ad;       // Decoded Inst: destination addressing mode
-output        [7:0] inst_as;       // Decoded Inst: source addressing mode
-output       [11:0] inst_alu;      // ALU control signals
-output              inst_bw;       // Decoded Inst: byte width
-output       [15:0] inst_dest;     // Decoded Inst: destination (one hot)
-output       [15:0] inst_dext;     // Decoded Inst: destination extended instruction word
-output              inst_irq_rst;  // Decoded Inst: Reset interrupt
-output        [7:0] inst_jmp;      // Decoded Inst: Conditional jump
-output              inst_mov;      // Decoded Inst: mov instruction
-output       [15:0] inst_sext;     // Decoded Inst: source extended instruction word
-output        [7:0] inst_so;       // Decoded Inst: Single-operand arithmetic
-output       [15:0] inst_src;      // Decoded Inst: source (one hot)
-output        [2:0] inst_type;     // Decoded Instruction type
-output       [13:0] irq_acc;       // Interrupt request accepted (one-hot signal)
-output       [15:0] mab;           // Frontend Memory address bus
-output              mb_en;         // Frontend Memory bus enable
-output              mclk_enable;   // Main System Clock enable
-output              mclk_wkup;     // Main System Clock wake-up (asynchronous)
-output              nmi_acc;       // Non-Maskable interrupt request accepted
-output       [15:0] pc;            // Program counter
-output       [15:0] pc_nxt;        // Next PC value (for CALL & IRQ)
-
-// INPUTs
-//=========
-input               cpu_en_s;      // Enable CPU code execution (synchronous)
-input               cpuoff;        // Turns off the CPU
-input               dbg_halt_cmd;  // Halt CPU command
-input         [3:0] dbg_reg_sel;   // Debug selected register for rd/wr access
-input               fe_pmem_wait;  // Frontend wait for Instruction fetch
-input               gie;           // General interrupt enable
-input        [13:0] irq;           // Maskable interrupts
-input               mclk;          // Main system clock
-input        [15:0] mdb_in;        // Frontend Memory data bus input
-input               nmi_pnd;       // Non-maskable interrupt pending
-input               nmi_wkup;      // NMI Wakeup
-input        [15:0] pc_sw;         // Program counter software value
-input               pc_sw_wr;      // Program counter software write
-input               puc_rst;       // Main system reset
-input               scan_enable;   // Scan enable (active during scan shifting)
-input               wdt_irq;       // Watchdog-timer interrupt
-input               wdt_wkup;      // Watchdog Wakeup
-input               wkup;          // System Wake-up (asynchronous)
-
-
-//=============================================================================
-// 1)  UTILITY FUNCTIONS
-//=============================================================================
-
-// 16 bits one-hot decoder
-function [15:0] one_hot16;
-   input  [3:0] binary;
-   begin
-      one_hot16         = 16'h0000;
-      one_hot16[binary] =  1'b1;
-   end
-endfunction
-   
-// 8 bits one-hot decoder
-function [7:0] one_hot8;
-   input  [2:0] binary;
-   begin
-      one_hot8         = 8'h00;
-      one_hot8[binary] = 1'b1;
-   end
-endfunction
-   
-
-//=============================================================================
-// 2)  PARAMETER DEFINITIONS
-//=============================================================================
-
-//
-// 2.1) Instruction State machine definitons
-//-------------------------------------------
-
-parameter I_IRQ_FETCH = 3'h0;
-parameter I_IRQ_DONE  = 3'h1;
-parameter I_DEC       = 3'h2;        // New instruction ready for decode
-parameter I_EXT1      = 3'h3;       // 1st Extension word
-parameter I_EXT2      = 3'h4;       // 2nd Extension word
-parameter I_IDLE      = 3'h5;       // CPU is in IDLE mode
-
-//
-// 2.2) Execution State machine definitons
-//-------------------------------------------
-
-parameter E_IRQ_0     = 4'h2;
-parameter E_IRQ_1     = 4'h1;
-parameter E_IRQ_2     = 4'h0;
-parameter E_IRQ_3     = 4'h3;
-parameter E_IRQ_4     = 4'h4;
-parameter E_SRC_AD    = 4'h5;
-parameter E_SRC_RD    = 4'h6;
-parameter E_SRC_WR    = 4'h7;
-parameter E_DST_AD    = 4'h8;
-parameter E_DST_RD    = 4'h9;
-parameter E_DST_WR    = 4'hA;
-parameter E_EXEC      = 4'hB;
-parameter E_JUMP      = 4'hC;
-parameter E_IDLE      = 4'hD;
-
-
-//=============================================================================
-// 3)  FRONTEND STATE MACHINE
-//=============================================================================
-
-// The wire "conv" is used as state bits to calculate the next response
-reg  [2:0] i_state;
-reg  [2:0] i_state_nxt;
-
-reg  [1:0] inst_sz;
-wire [1:0] inst_sz_nxt;
-wire       irq_detect;
-wire [2:0] inst_type_nxt;
-wire       is_const;
-reg [15:0] sconst_nxt;
-reg  [3:0] e_state_nxt;
-           
-// CPU on/off through the debug interface or cpu_en port
-wire   cpu_halt_cmd = dbg_halt_cmd | ~cpu_en_s;
-   
-// States Transitions
-always @(i_state    or inst_sz  or inst_sz_nxt  or pc_sw_wr or exec_done or
-         irq_detect or cpuoff   or cpu_halt_cmd or e_state)
-    case(i_state)
-      I_IDLE     : i_state_nxt = (irq_detect & ~cpu_halt_cmd) ? I_IRQ_FETCH :
-                                 (~cpuoff    & ~cpu_halt_cmd) ? I_DEC       : I_IDLE;
-      I_IRQ_FETCH: i_state_nxt =  I_IRQ_DONE;
-      I_IRQ_DONE : i_state_nxt =  I_DEC;
-      I_DEC      : i_state_nxt =  irq_detect                  ? I_IRQ_FETCH :
-                          (cpuoff | cpu_halt_cmd) & exec_done ? I_IDLE      :
-                            cpu_halt_cmd & (e_state==E_IDLE)  ? I_IDLE      :
-                                  pc_sw_wr                    ? I_DEC       :
-                             ~exec_done & ~(e_state==E_IDLE)  ? I_DEC       :        // Wait in decode state
-                                  (inst_sz_nxt!=2'b00)        ? I_EXT1      : I_DEC; // until execution is completed
-      I_EXT1     : i_state_nxt =  pc_sw_wr                    ? I_DEC       : 
-                                  (inst_sz!=2'b01)            ? I_EXT2      : I_DEC;
-      I_EXT2     : i_state_nxt =  I_DEC;
-    // pragma coverage off
-      default    : i_state_nxt =  I_IRQ_FETCH;
-    // pragma coverage on
-    endcase
-
-// State machine
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst) i_state  <= I_IRQ_FETCH;
-  else         i_state  <= i_state_nxt;
-
-// Utility signals
-wire   decode_noirq =  ((i_state==I_DEC) &  (exec_done | (e_state==E_IDLE)));
-wire   decode       =  decode_noirq | irq_detect;
-wire   fetch        = ~((i_state==I_DEC) & ~(exec_done | (e_state==E_IDLE))) & ~(e_state_nxt==E_IDLE);
-
-// Debug interface cpu status
-reg    dbg_halt_st;
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst)  dbg_halt_st <= 1'b0;
-  else          dbg_halt_st <= cpu_halt_cmd & (i_state_nxt==I_IDLE);
-
-
-//=============================================================================
-// 4)  INTERRUPT HANDLING & SYSTEM WAKEUP
-//=============================================================================
-
-//
-// 4.1) INTERRUPT HANDLING
-//-----------------------------------------
-
-// Detect reset interrupt
-reg         inst_irq_rst;
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst)                  inst_irq_rst <= 1'b1;
-  else if (exec_done)           inst_irq_rst <= 1'b0;
-
-//  Detect other interrupts
-assign  irq_detect = (nmi_pnd | ((|irq | wdt_irq) & gie)) & ~cpu_halt_cmd & ~dbg_halt_st & (exec_done | (i_state==I_IDLE));
-
-wire       mclk_irq_num = mclk;
-
-// Select interrupt vector
-reg  [3:0] irq_num;
-always @(posedge mclk_irq_num or posedge puc_rst)
-  if (puc_rst)         irq_num <= 4'hf;
-  else if (irq_detect) irq_num <= nmi_pnd            ?  4'he :
-                                  irq[13]            ?  4'hd :
-                                  irq[12]            ?  4'hc :
-                                  irq[11]            ?  4'hb :
-                                 (irq[10] | wdt_irq) ?  4'ha :
-                                  irq[9]             ?  4'h9 :
-                                  irq[8]             ?  4'h8 :
-                                  irq[7]             ?  4'h7 :
-                                  irq[6]             ?  4'h6 :
-                                  irq[5]             ?  4'h5 :
-                                  irq[4]             ?  4'h4 :
-                                  irq[3]             ?  4'h3 :
-                                  irq[2]             ?  4'h2 :
-                                  irq[1]             ?  4'h1 :
-                                  irq[0]             ?  4'h0 : 4'hf;
-
-wire [15:0] irq_addr    = {11'h7ff, irq_num, 1'b0};
-
-// Interrupt request accepted
-wire [15:0] irq_acc_all = one_hot16(irq_num) & {16{(i_state==I_IRQ_FETCH)}};
-wire [13:0] irq_acc     = irq_acc_all[13:0];
-wire        nmi_acc     = irq_acc_all[14];
-
-//
-// 4.2) SYSTEM WAKEUP
-//-----------------------------------------
-
-// In the CPUOFF feature is disabled, the wake-up and enable signals are always 1
-assign  mclk_wkup   = 1'b1;
-assign  mclk_enable = 1'b1;
-
-//=============================================================================
-// 5)  FETCH INSTRUCTION
-//=============================================================================
-
-//
-// 5.1) PROGRAM COUNTER & MEMORY INTERFACE
-//-----------------------------------------
-
-// Program counter
-reg  [15:0] pc;
-
-// Compute next PC value
-wire [15:0] pc_incr = pc + {14'h0000, fetch, 1'b0};
-wire [15:0] pc_nxt  = pc_sw_wr               ? pc_sw    :
-                      (i_state==I_IRQ_FETCH) ? irq_addr :
-                      (i_state==I_IRQ_DONE)  ? mdb_in   :  pc_incr;
-
-wire       mclk_pc = mclk;
-
-always @(posedge mclk_pc or posedge puc_rst)
-  if (puc_rst)  pc <= 16'h0000;
-  else          pc <= pc_nxt;
-
-// Check if ROM has been busy in order to retry ROM access
-reg pmem_busy;
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst)  pmem_busy <= 1'b0;
-  else          pmem_busy <= fe_pmem_wait;
-   
-// Memory interface
-wire [15:0] mab      = pc_nxt;
-wire        mb_en    = fetch | pc_sw_wr | (i_state==I_IRQ_FETCH) | pmem_busy | (dbg_halt_st & ~cpu_halt_cmd);
-
-
-//
-// 5.2) INSTRUCTION REGISTER
-//--------------------------------
-
-// Instruction register
-wire [15:0] ir  = mdb_in;
-
-// Detect if source extension word is required
-wire is_sext = (inst_as[1] | inst_as[4] | inst_as[6] | inst_as[5]);
-
-// For the Symbolic addressing mode, add -2 to the extension word in order
-// to make up for the PC address
-wire [15:0] ext_incr = ((i_state==I_EXT1)     &  inst_as[4]) |
-                       ((i_state==I_EXT2)     &  inst_ad[4]) |
-                       ((i_state==I_EXT1)     & ~inst_as[4] &
-                       ~(i_state_nxt==I_EXT2) &  inst_ad[4])   ? 16'hfffe : 16'h0000;
-
-wire [15:0] ext_nxt  = ir + ext_incr;
-
-// Store source extension word
-reg [15:0] inst_sext;
-
-wire       mclk_inst_sext = mclk;
-
-always @(posedge mclk_inst_sext or posedge puc_rst)
-  if (puc_rst)                                 inst_sext <= 16'h0000;
-  else if (decode & is_const)                  inst_sext <= sconst_nxt;
-  else if (decode & inst_type_nxt[1])  inst_sext <= {{5{ir[9]}},ir[9:0],1'b0};
-  else if ((i_state==I_EXT1) & is_sext)        inst_sext <= ext_nxt;
-
-// Source extension word is ready
-wire inst_sext_rdy = (i_state==I_EXT1) & is_sext;
-
-
-// Store destination extension word
-reg [15:0] inst_dext;
-
-wire       mclk_inst_dext = mclk;
-
-always @(posedge mclk_inst_dext or posedge puc_rst)
-  if (puc_rst)                           inst_dext <= 16'h0000;
-  else if ((i_state==I_EXT1) & ~is_sext) inst_dext <= ext_nxt;
-  else if  (i_state==I_EXT2)             inst_dext <= ext_nxt;
-
-// Destination extension word is ready
-wire inst_dext_rdy = (((i_state==I_EXT1) & ~is_sext) | (i_state==I_EXT2));
-
-
-//=============================================================================
-// 6)  DECODE INSTRUCTION
-//=============================================================================
-
-wire       mclk_decode = mclk;
-
-//
-// 6.1) OPCODE: INSTRUCTION TYPE
-//----------------------------------------
-// Instructions type is encoded in a one hot fashion as following:
-//
-// 3'b001: Single-operand arithmetic
-// 3'b010: Conditional jump
-// 3'b100: Two-operand arithmetic
-
-reg  [2:0] inst_type;
-assign     inst_type_nxt = {(ir[15:14]!=2'b00),
-                            (ir[15:13]==3'b001),
-                            (ir[15:13]==3'b000)} & {3{~irq_detect}};
-   
-always @(posedge mclk_decode or posedge puc_rst)
-  if (puc_rst)      inst_type <= 3'b000;
-  else if (decode)  inst_type <= inst_type_nxt;
-
-//
-// 6.2) OPCODE: SINGLE-OPERAND ARITHMETIC
-//----------------------------------------
-// Instructions are encoded in a one hot fashion as following:
-//
-// 8'b00000001: RRC
-// 8'b00000010: SWPB
-// 8'b00000100: RRA
-// 8'b00001000: SXT
-// 8'b00010000: PUSH
-// 8'b00100000: CALL
-// 8'b01000000: RETI
-// 8'b10000000: IRQ
-
-reg   [7:0] inst_so;
-wire  [7:0] inst_so_nxt = irq_detect ? 8'h80 : (one_hot8(ir[9:7]) & {8{inst_type_nxt[0]}});
-
-always @(posedge mclk_decode or posedge puc_rst)
-  if (puc_rst)     inst_so <= 8'h00;
-  else if (decode) inst_so <= inst_so_nxt;
-
-//
-// 6.3) OPCODE: CONDITIONAL JUMP
-//--------------------------------
-// Instructions are encoded in a one hot fashion as following:
-//
-// 8'b00000001: JNE/JNZ
-// 8'b00000010: JEQ/JZ
-// 8'b00000100: JNC/JLO
-// 8'b00001000: JC/JHS
-// 8'b00010000: JN
-// 8'b00100000: JGE
-// 8'b01000000: JL
-// 8'b10000000: JMP
-
-reg   [2:0] inst_jmp_bin;
-always @(posedge mclk_decode or posedge puc_rst)
-  if (puc_rst)     inst_jmp_bin <= 3'h0;
-  else if (decode) inst_jmp_bin <= ir[12:10];
-
-wire [7:0] inst_jmp = one_hot8(inst_jmp_bin) & {8{inst_type[1]}};
-
-
-//
-// 6.4) OPCODE: TWO-OPERAND ARITHMETIC
-//-------------------------------------
-// Instructions are encoded in a one hot fashion as following:
-//
-// 12'b000000000001: MOV
-// 12'b000000000010: ADD
-// 12'b000000000100: ADDC
-// 12'b000000001000: SUBC
-// 12'b000000010000: SUB
-// 12'b000000100000: CMP
-// 12'b000001000000: DADD
-// 12'b000010000000: BIT
-// 12'b000100000000: BIC
-// 12'b001000000000: BIS
-// 12'b010000000000: XOR
-// 12'b100000000000: AND
-
-wire [15:0] inst_to_1hot = one_hot16(ir[15:12]) & {16{inst_type_nxt[2]}};
-wire [11:0] inst_to_nxt  = inst_to_1hot[15:4];
-
-reg         inst_mov;
-always @(posedge mclk_decode or posedge puc_rst)
-  if (puc_rst)     inst_mov <= 1'b0;
-  else if (decode) inst_mov <= inst_to_nxt[0];
-
-
-//
-// 6.5) SOURCE AND DESTINATION REGISTERS
-//---------------------------------------
-
-// Destination register
-reg [3:0] inst_dest_bin;
-always @(posedge mclk_decode or posedge puc_rst)
-  if (puc_rst)     inst_dest_bin <= 4'h0;
-  else if (decode) inst_dest_bin <= ir[3:0];
-
-wire  [15:0] inst_dest = dbg_halt_st          ? one_hot16(dbg_reg_sel) :
-                         inst_type[1] ? 16'h0001 :
-                         inst_so[7]  |
-                         inst_so[4] |
-                         inst_so[5]       ? 16'h0002 :
-                                                one_hot16(inst_dest_bin);
-
-
-// Source register
-reg [3:0] inst_src_bin;
-always @(posedge mclk_decode or posedge puc_rst)
-  if (puc_rst)     inst_src_bin <= 4'h0;
-  else if (decode) inst_src_bin <= ir[11:8];
-
-wire  [15:0] inst_src = inst_type[2] ? one_hot16(inst_src_bin)  :
-                        inst_so[6]      ? 16'h0002 :
-                        inst_so[7]       ? 16'h0001 :
-                        inst_type[0] ? one_hot16(inst_dest_bin) : 16'h0000;
-
-
-//
-// 6.6) SOURCE ADDRESSING MODES
-//--------------------------------
-// Source addressing modes are encoded in a one hot fashion as following:
-//
-// 13'b0000000000001: Register direct.
-// 13'b0000000000010: Register indexed.
-// 13'b0000000000100: Register indirect.
-// 13'b0000000001000: Register indirect autoincrement.
-// 13'b0000000010000: Symbolic (operand is in memory at address PC+x).
-// 13'b0000000100000: Immediate (operand is next word in the instruction stream).
-// 13'b0000001000000: Absolute (operand is in memory at address x).
-// 13'b0000010000000: Constant 4.
-// 13'b0000100000000: Constant 8.
-// 13'b0001000000000: Constant 0.
-// 13'b0010000000000: Constant 1.
-// 13'b0100000000000: Constant 2.
-// 13'b1000000000000: Constant -1.
-
-reg [12:0] inst_as_nxt;
-
-wire [3:0] src_reg = inst_type_nxt[0] ? ir[3:0] : ir[11:8];
-
-always @(src_reg or ir or inst_type_nxt)
-  begin
-     if (inst_type_nxt[1])
-       inst_as_nxt =  13'b0000000000001;
-     else if (src_reg==4'h3) // Addressing mode using R3
-       case (ir[5:4])
-         2'b11 : inst_as_nxt =  13'b1000000000000;
-         2'b10 : inst_as_nxt =  13'b0100000000000;
-         2'b01 : inst_as_nxt =  13'b0010000000000;
-         default: inst_as_nxt =  13'b0001000000000;
-       endcase
-     else if (src_reg==4'h2) // Addressing mode using R2
-       case (ir[5:4])
-         2'b11 : inst_as_nxt =  13'b0000100000000;
-         2'b10 : inst_as_nxt =  13'b0000010000000;
-         2'b01 : inst_as_nxt =  13'b0000001000000;
-         default: inst_as_nxt =  13'b0000000000001;
-       endcase
-     else if (src_reg==4'h0) // Addressing mode using R0
-       case (ir[5:4])
-         2'b11 : inst_as_nxt =  13'b0000000100000;
-         2'b10 : inst_as_nxt =  13'b0000000000100;
-         2'b01 : inst_as_nxt =  13'b0000000010000;
-         default: inst_as_nxt =  13'b0000000000001;
-       endcase
-     else                    // General Addressing mode
-       case (ir[5:4])
-         2'b11 : inst_as_nxt =  13'b0000000001000;
-         2'b10 : inst_as_nxt =  13'b0000000000100;
-         2'b01 : inst_as_nxt =  13'b0000000000010;
-         default: inst_as_nxt =  13'b0000000000001;
-       endcase
-  end
-assign    is_const = |inst_as_nxt[12:7];
-
-reg [7:0] inst_as;
-always @(posedge mclk_decode or posedge puc_rst)
-  if (puc_rst)     inst_as <= 8'h00;
-  else if (decode) inst_as <= {is_const, inst_as_nxt[6:0]};
-
-
-// 13'b0000010000000: Constant 4.
-// 13'b0000100000000: Constant 8.
-// 13'b0001000000000: Constant 0.
-// 13'b0010000000000: Constant 1.
-// 13'b0100000000000: Constant 2.
-// 13'b1000000000000: Constant -1.
-always @(inst_as_nxt)
-  begin
-     if (inst_as_nxt[7])        sconst_nxt = 16'h0004;
-     else if (inst_as_nxt[8])   sconst_nxt = 16'h0008;
-     else if (inst_as_nxt[9])   sconst_nxt = 16'h0000;
-     else if (inst_as_nxt[10])  sconst_nxt = 16'h0001;
-     else if (inst_as_nxt[11])  sconst_nxt = 16'h0002;
-     else if (inst_as_nxt[12])  sconst_nxt = 16'hffff;
-     else                       sconst_nxt = 16'h0000;
-  end
-
-
-//
-// 6.7) DESTINATION ADDRESSING MODES
-//-----------------------------------
-// Destination addressing modes are encoded in a one hot fashion as following:
-//
-// 8'b00000001: Register direct.
-// 8'b00000010: Register indexed.
-// 8'b00010000: Symbolic (operand is in memory at address PC+x).
-// 8'b01000000: Absolute (operand is in memory at address x).
-
-reg  [7:0] inst_ad_nxt;
-
-wire [3:0] dest_reg = ir[3:0];
-
-always @(dest_reg or ir or inst_type_nxt)
-  begin
-     if (~inst_type_nxt[2])
-       inst_ad_nxt =  8'b00000000;
-     else if (dest_reg==4'h2)   // Addressing mode using R2
-       case (ir[7])
-         1'b1 : inst_ad_nxt =  8'b01000000;
-         default: inst_ad_nxt =  8'b00000001;
-       endcase
-     else if (dest_reg==4'h0)   // Addressing mode using R0
-       case (ir[7])
-         1'b1 : inst_ad_nxt =  8'b00010000;
-         default: inst_ad_nxt =  8'b00000001;
-       endcase
-     else                       // General Addressing mode
-       case (ir[7])
-         1'b1 : inst_ad_nxt =  8'b00000010;
-         default: inst_ad_nxt =  8'b00000001;
-       endcase
-  end
-
-reg [7:0] inst_ad;
-always @(posedge mclk_decode or posedge puc_rst)
-  if (puc_rst)     inst_ad <= 8'h00;
-  else if (decode) inst_ad <= inst_ad_nxt;
-
-
-//
-// 6.8) REMAINING INSTRUCTION DECODING
-//-------------------------------------
-
-// Operation size
-reg       inst_bw;
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst)     inst_bw     <= 1'b0;
-  else if (decode) inst_bw     <= ir[6] & ~inst_type_nxt[1] & ~irq_detect & ~cpu_halt_cmd;
-
-// Extended instruction size
-assign    inst_sz_nxt = {1'b0,  (inst_as_nxt[1] | inst_as_nxt[4] | inst_as_nxt[6] | inst_as_nxt[5])} +
-                        {1'b0, ((inst_ad_nxt[1] | inst_ad_nxt[4] | inst_ad_nxt[6]) & ~inst_type_nxt[0])};
-always @(posedge mclk_decode or posedge puc_rst)
-  if (puc_rst)     inst_sz     <= 2'b00;
-  else if (decode) inst_sz     <= inst_sz_nxt;
-
-
-//=============================================================================
-// 7)  EXECUTION-UNIT STATE MACHINE
-//=============================================================================
-
-// State machine registers
-reg  [3:0] e_state;
-
-
-// State machine control signals
-//--------------------------------
-
-wire src_acalc_pre =  inst_as_nxt[1]   | inst_as_nxt[4]    | inst_as_nxt[6];
-wire src_rd_pre    =  inst_as_nxt[2] | inst_as_nxt[3] | inst_as_nxt[5]  | inst_so_nxt[6];
-wire dst_acalc_pre =  inst_ad_nxt[1]   | inst_ad_nxt[4]    | inst_ad_nxt[6];
-wire dst_acalc     =  inst_ad[1]       | inst_ad[4]        | inst_ad[6];
-wire dst_rd_pre    =  inst_ad_nxt[1]   | inst_so_nxt[4]    | inst_so_nxt[5] | inst_so_nxt[6];
-wire dst_rd        =  inst_ad[1]       | inst_so[4]        | inst_so[5]     | inst_so[6];
-
-wire inst_branch   =  (inst_ad_nxt[0] & (ir[3:0]==4'h0)) | inst_type_nxt[1] | inst_so_nxt[6];
-
-reg exec_jmp;
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst)                   exec_jmp <= 1'b0;
-  else if (inst_branch & decode) exec_jmp <= 1'b1;
-  else if (e_state==E_JUMP)      exec_jmp <= 1'b0;
-
-reg exec_dst_wr;
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst)                exec_dst_wr <= 1'b0;
-  else if (e_state==E_DST_RD) exec_dst_wr <= 1'b1;
-  else if (e_state==E_DST_WR) exec_dst_wr <= 1'b0;
-
-reg exec_src_wr;
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst)                                         exec_src_wr <= 1'b0;
-  else if (inst_type[0] & (e_state==E_SRC_RD))  exec_src_wr <= 1'b1;
-  else if ((e_state==E_SRC_WR) || (e_state==E_DST_WR)) exec_src_wr <= 1'b0;
-
-reg exec_dext_rdy;
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst)                exec_dext_rdy <= 1'b0;
-  else if (e_state==E_DST_RD) exec_dext_rdy <= 1'b0;
-  else if (inst_dext_rdy)     exec_dext_rdy <= 1'b1;
-
-// Execution first state
-wire [3:0] e_first_state = ~dbg_halt_st  & inst_so_nxt[7] ? E_IRQ_0  :
-                            cpu_halt_cmd | (i_state==I_IDLE) ? E_IDLE   :
-                            cpuoff                           ? E_IDLE   :
-                            src_acalc_pre                    ? E_SRC_AD :
-                            src_rd_pre                       ? E_SRC_RD :
-                            dst_acalc_pre                    ? E_DST_AD :
-                            dst_rd_pre                       ? E_DST_RD : E_EXEC;
-
-
-// State machine
-//--------------------------------
-
-// States Transitions
-always @(e_state       or dst_acalc     or dst_rd   or inst_sext_rdy or
-         inst_dext_rdy or exec_dext_rdy or exec_jmp or exec_dst_wr   or
-         e_first_state or exec_src_wr)
-    case(e_state)
-      E_IDLE   : e_state_nxt =  e_first_state;
-      E_IRQ_0  : e_state_nxt =  E_IRQ_1;
-      E_IRQ_1  : e_state_nxt =  E_IRQ_2;
-      E_IRQ_2  : e_state_nxt =  E_IRQ_3;
-      E_IRQ_3  : e_state_nxt =  E_IRQ_4;
-      E_IRQ_4  : e_state_nxt =  E_EXEC;
-
-      E_SRC_AD : e_state_nxt =  inst_sext_rdy     ? E_SRC_RD : E_SRC_AD;
-
-      E_SRC_RD : e_state_nxt =  dst_acalc         ? E_DST_AD : 
-                                 dst_rd           ? E_DST_RD : E_EXEC;
-
-      E_DST_AD : e_state_nxt =  (inst_dext_rdy |
-                                 exec_dext_rdy)   ? E_DST_RD : E_DST_AD;
-
-      E_DST_RD : e_state_nxt =  E_EXEC;
-
-      E_EXEC   : e_state_nxt =  exec_dst_wr       ? E_DST_WR :
-                                exec_jmp          ? E_JUMP   :
-                                exec_src_wr       ? E_SRC_WR : e_first_state;
-
-      E_JUMP   : e_state_nxt =  e_first_state;
-      E_DST_WR : e_state_nxt =  exec_jmp          ? E_JUMP   : e_first_state;
-      E_SRC_WR : e_state_nxt =  e_first_state;
-    // pragma coverage off
-      default  : e_state_nxt =  E_IRQ_0;
-    // pragma coverage on
-    endcase
-
-// State machine
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst) e_state  <= E_IRQ_1;
-  else         e_state  <= e_state_nxt;
-
-
-// Frontend State machine control signals
-//----------------------------------------
-
-wire exec_done = exec_jmp        ? (e_state==E_JUMP)   :
-                 exec_dst_wr     ? (e_state==E_DST_WR) :
-                 exec_src_wr     ? (e_state==E_SRC_WR) : (e_state==E_EXEC);
-
-
-//=============================================================================
-// 8)  EXECUTION-UNIT STATE CONTROL
-//=============================================================================
-
-//
-// 8.1) ALU CONTROL SIGNALS
-//-------------------------------------
-//
-// 12'b000000000001: Enable ALU source inverter
-// 12'b000000000010: Enable Incrementer
-// 12'b000000000100: Enable Incrementer on carry bit
-// 12'b000000001000: Select Adder
-// 12'b000000010000: Select AND
-// 12'b000000100000: Select OR
-// 12'b000001000000: Select XOR
-// 12'b000010000000: Select DADD
-// 12'b000100000000: Update N, Z & C (C=~Z)
-// 12'b001000000000: Update all status bits
-// 12'b010000000000: Update status bit for XOR instruction
-// 12'b100000000000: Don't write to destination
-
-reg  [11:0] inst_alu;
-
-wire        alu_src_inv   = inst_to_nxt[4]  | inst_to_nxt[3] |
-                            inst_to_nxt[5]  | inst_to_nxt[8] ;
-
-wire        alu_inc       = inst_to_nxt[4]  | inst_to_nxt[5];
-
-wire        alu_inc_c     = inst_to_nxt[2] | inst_to_nxt[6] |
-                            inst_to_nxt[3];
-
-wire        alu_add       = inst_to_nxt[1]  | inst_to_nxt[2]       |
-                            inst_to_nxt[4]  | inst_to_nxt[3]       |
-                            inst_to_nxt[5]  | inst_type_nxt[1] |
-                            inst_so_nxt[6];
-
- 
-wire        alu_and       = inst_to_nxt[11]  | inst_to_nxt[8]  |
-                            inst_to_nxt[7];
-
-wire        alu_or        = inst_to_nxt[9];
-
-wire        alu_xor       = inst_to_nxt[10];
-
-wire        alu_dadd      = inst_to_nxt[6];
-
-wire        alu_stat_7    = inst_to_nxt[7]  | inst_to_nxt[11]  |
-                            inst_so_nxt[3];
-
-wire        alu_stat_f    = inst_to_nxt[1]  | inst_to_nxt[2] |
-                            inst_to_nxt[4]  | inst_to_nxt[3] |
-                            inst_to_nxt[5]  | inst_to_nxt[6] |
-                            inst_to_nxt[7]  | inst_to_nxt[10]  |
-                            inst_to_nxt[11]  |
-                            inst_so_nxt[0]  | inst_so_nxt[2]  |
-                            inst_so_nxt[3];
-
-wire        alu_shift     = inst_so_nxt[0]  | inst_so_nxt[2];
-
-wire        exec_no_wr    = inst_to_nxt[5] | inst_to_nxt[7];
-
-wire [11:0] inst_alu_nxt  = {exec_no_wr,
-                             alu_shift,
-                             alu_stat_f,
-                             alu_stat_7,
-                             alu_dadd,
-                             alu_xor,
-                             alu_or,
-                             alu_and,
-                             alu_add,
-                             alu_inc_c,
-                             alu_inc,
-                             alu_src_inv};
-
-always @(posedge mclk_decode or posedge puc_rst)
-  if (puc_rst)     inst_alu <= 12'h000;
-  else if (decode) inst_alu <= inst_alu_nxt;
-
-
-endmodule // omsp_frontend
-
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-
-// Data Memory sizes
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include Debug interface
-
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-
-// Include/Exclude Watchdog timer
-
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-
-// Input synchronizers
-
-
-// Peripheral Memory Space:
-
-
-// Let the CPU break after a PUC occurrence by default
-
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-
-
-// Data Memory Size
-
-
-
-// Peripheral Memory Size
-
-
-
-// Data Memory Base Adresses
-
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-
-
-
-// Instructions type
-
-
-
-
-// Single-operand arithmetic
-
-
-
-
-
-
-
-
-
-// Conditional jump
-
-
-
-
-
-
-
-
-
-// Two-operand arithmetic
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Addressing modes
-
-
-
-
-
-
-
-
-
-// Instruction state machine
-
-
-
-
-
-
-
-// Execution state machine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// ALU control signals
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Debug interface
-
-
-
-
-// Debug interface CPU_CTL register
-
-
-
-
-
-
-
-
-// Debug interface CPU_STAT register
-
-
-
-
-
-
-// Debug interface BRKx_CTL register
-
-
-
-
-
-
-
-// Basic clock module: BCSCTL1 Control Register
-
-
-// Basic clock module: BCSCTL2 Control Register
-
-
-
-
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-
-// Debug interface: Software breakpoint opcode
-
-
-// Debug UART interface auto data synchronization
-
-
-// Debug UART interface data rate
-
-
-
-
-// Debug interface input synchronizer
-
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-
-// Counter width for the debug interface UART
-
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_mem_backbone.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_mem_backbone.v
deleted file mode 100644
index 74d327f..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_mem_backbone.v
+++ /dev/null
@@ -1,1174 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_mem_backbone.v
-// 
-// *Module Description:
-//                       Memory interface backbone (decoder + arbiter)
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 151 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2012-07-23 00:24:11 +0200 (Mon, 23 Jul 2012) $
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
-module  omsp_mem_backbone (
-
-// OUTPUTs
-    dbg_mem_din,                    // Debug unit Memory data input
-    dmem_addr,                      // Data Memory address
-    dmem_cen,                       // Data Memory chip enable (low active)
-    dmem_din,                       // Data Memory data input
-    dmem_wen,                       // Data Memory write enable (low active)
-    eu_mdb_in,                      // Execution Unit Memory data bus input
-    fe_mdb_in,                      // Frontend Memory data bus input
-    fe_pmem_wait,                   // Frontend wait for Instruction fetch
-    per_addr,                       // Peripheral address
-    per_din,                        // Peripheral data input
-    per_we,                         // Peripheral write enable (high active)
-    per_en,                         // Peripheral enable (high active)
-    pmem_addr,                      // Program Memory address
-    pmem_cen,                       // Program Memory chip enable (low active)
-    pmem_din,                       // Program Memory data input (optional)
-    pmem_wen,                       // Program Memory write enable (low active) (optional)
-
-// INPUTs
-    dbg_halt_st,                    // Halt/Run status from CPU
-    dbg_mem_addr,                   // Debug address for rd/wr access
-    dbg_mem_dout,                   // Debug unit data output
-    dbg_mem_en,                     // Debug unit memory enable
-    dbg_mem_wr,                     // Debug unit memory write
-    dmem_dout,                      // Data Memory data output
-    eu_mab,                         // Execution Unit Memory address bus
-    eu_mb_en,                       // Execution Unit Memory bus enable
-    eu_mb_wr,                       // Execution Unit Memory bus write transfer
-    eu_mdb_out,                     // Execution Unit Memory data bus output
-    fe_mab,                         // Frontend Memory address bus
-    fe_mb_en,                       // Frontend Memory bus enable
-    mclk,                           // Main system clock
-    per_dout,                       // Peripheral data output
-    pmem_dout,                      // Program Memory data output
-    puc_rst,                        // Main system reset
-    scan_enable                     // Scan enable (active during scan shifting)
-);
-
-// OUTPUTs
-//=========
-output        [15:0] dbg_mem_din;   // Debug unit Memory data input
-output [6-1:0] dmem_addr;     // Data Memory address
-output               dmem_cen;      // Data Memory chip enable (low active)
-output        [15:0] dmem_din;      // Data Memory data input
-output         [1:0] dmem_wen;      // Data Memory write enable (low active)
-output        [15:0] eu_mdb_in;     // Execution Unit Memory data bus input
-output        [15:0] fe_mdb_in;     // Frontend Memory data bus input
-output               fe_pmem_wait;  // Frontend wait for Instruction fetch
-output        [13:0] per_addr;      // Peripheral address
-output        [15:0] per_din;       // Peripheral data input
-output         [1:0] per_we;        // Peripheral write enable (high active)
-output               per_en;        // Peripheral enable (high active)
-output [10-1:0] pmem_addr;     // Program Memory address
-output               pmem_cen;      // Program Memory chip enable (low active)
-output        [15:0] pmem_din;      // Program Memory data input (optional)
-output         [1:0] pmem_wen;      // Program Memory write enable (low active) (optional)
-
-// INPUTs
-//=========
-input                dbg_halt_st;   // Halt/Run status from CPU
-input         [15:0] dbg_mem_addr;  // Debug address for rd/wr access
-input         [15:0] dbg_mem_dout;  // Debug unit data output
-input                dbg_mem_en;    // Debug unit memory enable
-input          [1:0] dbg_mem_wr;    // Debug unit memory write
-input         [15:0] dmem_dout;     // Data Memory data output
-input         [14:0] eu_mab;        // Execution Unit Memory address bus
-input                eu_mb_en;      // Execution Unit Memory bus enable
-input          [1:0] eu_mb_wr;      // Execution Unit Memory bus write transfer
-input         [15:0] eu_mdb_out;    // Execution Unit Memory data bus output
-input         [14:0] fe_mab;        // Frontend Memory address bus
-input                fe_mb_en;      // Frontend Memory bus enable
-input                mclk;          // Main system clock
-input         [15:0] per_dout;      // Peripheral data output
-input         [15:0] pmem_dout;     // Program Memory data output
-input                puc_rst;       // Main system reset
-input                scan_enable;   // Scan enable (active during scan shifting)
-
-
-//=============================================================================
-// 1)  DECODER
-//=============================================================================
-
-// RAM Interface
-//------------------
-
-// Execution unit access
-wire               eu_dmem_cen   = ~(eu_mb_en & (eu_mab>=(512>>1)) &
-                                                (eu_mab<((512+128)>>1)));
-wire        [15:0] eu_dmem_addr  = {1'b0, eu_mab}-(512>>1);
-
-// Debug interface access
-wire               dbg_dmem_cen  = ~(dbg_mem_en & (dbg_mem_addr[15:1]>=(512>>1)) &
-                                                  (dbg_mem_addr[15:1]<((512+128)>>1)));
-wire        [15:0] dbg_dmem_addr = {1'b0, dbg_mem_addr[15:1]}-(512>>1);
-
-   
-// RAM Interface
-wire [6-1:0] dmem_addr     = ~dbg_dmem_cen ? dbg_dmem_addr[6-1:0] : eu_dmem_addr[6-1:0];
-wire               dmem_cen      =  dbg_dmem_cen & eu_dmem_cen;
-wire         [1:0] dmem_wen      = ~(dbg_mem_wr | eu_mb_wr);
-wire        [15:0] dmem_din      = ~dbg_dmem_cen ? dbg_mem_dout : eu_mdb_out;
-
-
-// ROM Interface
-//------------------
-parameter          PMEM_OFFSET   = (16'hFFFF-2048+1);
-
-// Execution unit access (only read access are accepted)
-wire               eu_pmem_cen   = ~(eu_mb_en & ~|eu_mb_wr & (eu_mab>=(PMEM_OFFSET>>1)));
-wire        [15:0] eu_pmem_addr  = eu_mab-(PMEM_OFFSET>>1);
-
-// Front-end access
-wire               fe_pmem_cen   = ~(fe_mb_en & (fe_mab>=(PMEM_OFFSET>>1)));
-wire        [15:0] fe_pmem_addr  = fe_mab-(PMEM_OFFSET>>1);
-
-// Debug interface access
-wire               dbg_pmem_cen  = ~(dbg_mem_en & (dbg_mem_addr[15:1]>=(PMEM_OFFSET>>1)));
-wire        [15:0] dbg_pmem_addr = {1'b0, dbg_mem_addr[15:1]}-(PMEM_OFFSET>>1);
-
-   
-// ROM Interface (Execution unit has priority)
-wire [10-1:0] pmem_addr     = ~dbg_pmem_cen ? dbg_pmem_addr[10-1:0] :
-                                   ~eu_pmem_cen  ? eu_pmem_addr[10-1:0]  : fe_pmem_addr[10-1:0];
-wire               pmem_cen      =  fe_pmem_cen & eu_pmem_cen & dbg_pmem_cen;
-wire         [1:0] pmem_wen      = ~dbg_mem_wr;
-wire        [15:0] pmem_din      =  dbg_mem_dout;
-
-wire               fe_pmem_wait  = (~fe_pmem_cen & ~eu_pmem_cen);
-
-
-// Peripherals
-//--------------------
-wire              dbg_per_en   =  dbg_mem_en & (dbg_mem_addr[15:1]<(512>>1));
-wire              eu_per_en    =  eu_mb_en   & (eu_mab<(512>>1));
-
-wire       [15:0] per_din      =  dbg_mem_en ? dbg_mem_dout               : eu_mdb_out;
-wire        [1:0] per_we       =  dbg_mem_en ? dbg_mem_wr                 : eu_mb_wr;
-wire              per_en       =  dbg_mem_en ? dbg_per_en                 : eu_per_en;
-wire [8-1:0] per_addr_mux =  dbg_mem_en ? dbg_mem_addr[8-1+1:1] : eu_mab[8-1:0];
-wire       [14:0] per_addr_ful =  {{15-8{1'b0}}, per_addr_mux};
-wire       [13:0] per_addr     =   per_addr_ful[13:0];
-
-reg   [15:0] per_dout_val;
-always @ (posedge mclk or posedge puc_rst)
-  if (puc_rst)  per_dout_val <= 16'h0000;
-  else          per_dout_val <= per_dout;
-
-
-// Frontend data Mux
-//---------------------------------
-// Whenever the frontend doesn't access the ROM,  backup the data
-
-// Detect whenever the data should be backuped and restored
-reg 	    fe_pmem_cen_dly;
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst) fe_pmem_cen_dly <=  1'b0;
-  else         fe_pmem_cen_dly <=  fe_pmem_cen;
-
-wire fe_pmem_save    = ( fe_pmem_cen & ~fe_pmem_cen_dly) & ~dbg_halt_st;
-wire fe_pmem_restore = (~fe_pmem_cen &  fe_pmem_cen_dly) |  dbg_halt_st;
-
-wire mclk_bckup = mclk;
-   
-reg  [15:0] pmem_dout_bckup;
-always @(posedge mclk_bckup or posedge puc_rst)
-  if (puc_rst)           pmem_dout_bckup     <=  16'h0000;
-  else if (fe_pmem_save) pmem_dout_bckup     <=  pmem_dout;
-
-// Mux between the ROM data and the backup
-reg         pmem_dout_bckup_sel;
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst)              pmem_dout_bckup_sel <=  1'b0;
-  else if (fe_pmem_save)    pmem_dout_bckup_sel <=  1'b1;
-  else if (fe_pmem_restore) pmem_dout_bckup_sel <=  1'b0;
-    
-assign fe_mdb_in = pmem_dout_bckup_sel ? pmem_dout_bckup : pmem_dout;
-
-
-// Execution-Unit data Mux
-//---------------------------------
-
-// Select between peripherals, RAM and ROM
-reg [1:0] eu_mdb_in_sel;
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst)  eu_mdb_in_sel <= 2'b00;
-  else          eu_mdb_in_sel <= {~eu_pmem_cen, per_en};
-
-// Mux
-assign      eu_mdb_in      = eu_mdb_in_sel[1] ? pmem_dout    :
-                             eu_mdb_in_sel[0] ? per_dout_val : dmem_dout;
-
-// Debug interface  data Mux
-//---------------------------------
-
-// Select between peripherals, RAM and ROM
-reg   [1:0] dbg_mem_din_sel;
-always @(posedge mclk or posedge puc_rst)
-  if (puc_rst)  dbg_mem_din_sel <= 2'b00;
-  else          dbg_mem_din_sel <= {~dbg_pmem_cen, dbg_per_en};
-
-       
-// Mux
-assign      dbg_mem_din  = dbg_mem_din_sel[1] ? pmem_dout    :
-                           dbg_mem_din_sel[0] ? per_dout_val : dmem_dout;
-
-   
-endmodule // omsp_mem_backbone
-
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-
-// Data Memory sizes
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include Debug interface
-
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-
-// Include/Exclude Watchdog timer
-
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-
-// Input synchronizers
-
-
-// Peripheral Memory Space:
-
-
-// Let the CPU break after a PUC occurrence by default
-
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-
-
-// Data Memory Size
-
-
-
-// Peripheral Memory Size
-
-
-
-// Data Memory Base Adresses
-
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-
-
-
-// Instructions type
-
-
-
-
-// Single-operand arithmetic
-
-
-
-
-
-
-
-
-
-// Conditional jump
-
-
-
-
-
-
-
-
-
-// Two-operand arithmetic
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Addressing modes
-
-
-
-
-
-
-
-
-
-// Instruction state machine
-
-
-
-
-
-
-
-// Execution state machine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// ALU control signals
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Debug interface
-
-
-
-
-// Debug interface CPU_CTL register
-
-
-
-
-
-
-
-
-// Debug interface CPU_STAT register
-
-
-
-
-
-
-// Debug interface BRKx_CTL register
-
-
-
-
-
-
-
-// Basic clock module: BCSCTL1 Control Register
-
-
-// Basic clock module: BCSCTL2 Control Register
-
-
-
-
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-
-// Debug interface: Software breakpoint opcode
-
-
-// Debug UART interface auto data synchronization
-
-
-// Debug UART interface data rate
-
-
-
-
-// Debug interface input synchronizer
-
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-
-// Counter width for the debug interface UART
-
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_multiplier.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_multiplier.v
deleted file mode 100644
index a9b368a..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_multiplier.v
+++ /dev/null
@@ -1,1247 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_multiplier.v
-// 
-// *Module Description:
-//                       16x16 Hardware multiplier.
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
-module  omsp_multiplier (
-
-// OUTPUTs
-    per_dout,                       // Peripheral data output
-
-// INPUTs
-    mclk,                           // Main system clock
-    per_addr,                       // Peripheral address
-    per_din,                        // Peripheral data input
-    per_en,                         // Peripheral enable (high active)
-    per_we,                         // Peripheral write enable (high active)
-    puc_rst,                        // Main system reset
-    scan_enable                     // Scan enable (active during scan shifting)
-);
-
-// OUTPUTs
-//=========
-output       [15:0] per_dout;       // Peripheral data output
-
-// INPUTs
-//=========
-input               mclk;           // Main system clock
-input        [13:0] per_addr;       // Peripheral address
-input        [15:0] per_din;        // Peripheral data input
-input               per_en;         // Peripheral enable (high active)
-input         [1:0] per_we;         // Peripheral write enable (high active)
-input               puc_rst;        // Main system reset
-input               scan_enable;    // Scan enable (active during scan shifting)
-
-
-//=============================================================================
-// 1)  PARAMETER/REGISTERS & WIRE DECLARATION
-//=============================================================================
-
-// Register base address (must be aligned to decoder bit width)
-parameter       [14:0] BASE_ADDR   = 15'h0130;
-
-// Decoder bit width (defines how many bits are considered for address decoding)
-parameter              DEC_WD      =  4;
-
-// Register addresses offset
-parameter [DEC_WD-1:0] OP1_MPY     = 'h0,
-                       OP1_MPYS    = 'h2,
-                       OP1_MAC     = 'h4,
-                       OP1_MACS    = 'h6,
-                       OP2         = 'h8,
-                       RESLO       = 'hA,
-                       RESHI       = 'hC,
-                       SUMEXT      = 'hE;
-
-// Register one-hot decoder utilities
-parameter              DEC_SZ      =  (1 << DEC_WD);
-parameter [DEC_SZ-1:0] BASE_REG    =  {{DEC_SZ-1{1'b0}}, 1'b1};
-
-// Register one-hot decoder
-parameter [DEC_SZ-1:0] OP1_MPY_D   = (BASE_REG << OP1_MPY),
-                       OP1_MPYS_D  = (BASE_REG << OP1_MPYS),
-                       OP1_MAC_D   = (BASE_REG << OP1_MAC),
-                       OP1_MACS_D  = (BASE_REG << OP1_MACS),
-                       OP2_D       = (BASE_REG << OP2),
-                       RESLO_D     = (BASE_REG << RESLO),
-                       RESHI_D     = (BASE_REG << RESHI),
-                       SUMEXT_D    = (BASE_REG << SUMEXT);
-
-
-// Wire pre-declarations
-wire  result_wr;
-wire  result_clr;
-wire  early_read;
-
-
-//============================================================================
-// 2)  REGISTER DECODER
-//============================================================================
-
-// Local register selection
-wire              reg_sel     =  per_en & (per_addr[13:DEC_WD-1]==BASE_ADDR[14:DEC_WD]);
-
-// Register local address
-wire [DEC_WD-1:0] reg_addr    =  {per_addr[DEC_WD-2:0], 1'b0};
-
-// Register address decode
-wire [DEC_SZ-1:0] reg_dec     =  (OP1_MPY_D   &  {DEC_SZ{(reg_addr == OP1_MPY  )}})  |
-                                 (OP1_MPYS_D  &  {DEC_SZ{(reg_addr == OP1_MPYS )}})  |
-                                 (OP1_MAC_D   &  {DEC_SZ{(reg_addr == OP1_MAC  )}})  |
-                                 (OP1_MACS_D  &  {DEC_SZ{(reg_addr == OP1_MACS )}})  |
-                                 (OP2_D       &  {DEC_SZ{(reg_addr == OP2      )}})  |
-                                 (RESLO_D     &  {DEC_SZ{(reg_addr == RESLO    )}})  |
-                                 (RESHI_D     &  {DEC_SZ{(reg_addr == RESHI    )}})  |
-                                 (SUMEXT_D    &  {DEC_SZ{(reg_addr == SUMEXT   )}});
-		   
-// Read/Write probes
-wire              reg_write   =  |per_we & reg_sel;
-wire              reg_read    = ~|per_we & reg_sel;
-
-// Read/Write vectors
-wire [DEC_SZ-1:0] reg_wr      = reg_dec & {DEC_SZ{reg_write}};
-wire [DEC_SZ-1:0] reg_rd      = reg_dec & {DEC_SZ{reg_read}};
-
-// Masked input data for byte access
-wire       [15:0] per_din_msk =  per_din & {{8{per_we[1]}}, 8'hff};
-
-//============================================================================
-// 3) REGISTERS
-//============================================================================
-
-// OP1 Register
-//-----------------   
-reg  [15:0] op1;
-
-wire        op1_wr = reg_wr[OP1_MPY]  |
-                     reg_wr[OP1_MPYS] |
-                     reg_wr[OP1_MAC]  |
-                     reg_wr[OP1_MACS];
-
-wire        mclk_op1 = mclk;
-
-always @ (posedge mclk_op1 or posedge puc_rst)
-  if (puc_rst)      op1 <=  16'h0000;
-  else if (op1_wr)  op1 <=  per_din_msk;
-
-wire [15:0] op1_rd  = op1;
-
-   
-// OP2 Register
-//-----------------   
-reg  [15:0] op2;
-
-wire        op2_wr = reg_wr[OP2];
-
-wire        mclk_op2 = mclk;
-
-always @ (posedge mclk_op2 or posedge puc_rst)
-  if (puc_rst)      op2 <=  16'h0000;
-  else if (op2_wr)  op2 <=  per_din_msk;
-
-wire [15:0] op2_rd  = op2;
-
-   
-// RESLO Register
-//-----------------   
-reg  [15:0] reslo;
-
-wire [15:0] reslo_nxt;
-wire        reslo_wr = reg_wr[RESLO];
-
-wire        mclk_reslo = mclk;
-
-always @ (posedge mclk_reslo or posedge puc_rst)
-  if (puc_rst)         reslo <=  16'h0000;
-  else if (reslo_wr)   reslo <=  per_din_msk;
-  else if (result_clr) reslo <=  16'h0000;
-  else if (result_wr)  reslo <=  reslo_nxt;
-
-wire [15:0] reslo_rd = early_read ? reslo_nxt : reslo;
-
-
-// RESHI Register
-//-----------------   
-reg  [15:0] reshi;
-
-wire [15:0] reshi_nxt;
-wire        reshi_wr = reg_wr[RESHI];
-
-wire        mclk_reshi = mclk;
-
-always @ (posedge mclk_reshi or posedge puc_rst)
-  if (puc_rst)         reshi <=  16'h0000;
-  else if (reshi_wr)   reshi <=  per_din_msk;
-  else if (result_clr) reshi <=  16'h0000;
-  else if (result_wr)  reshi <=  reshi_nxt;
-
-wire [15:0] reshi_rd = early_read ? reshi_nxt  : reshi;
-
- 
-// SUMEXT Register
-//-----------------   
-reg  [1:0] sumext_s;
-
-wire [1:0] sumext_s_nxt;
-
-always @ (posedge mclk or posedge puc_rst)
-  if (puc_rst)         sumext_s <=  2'b00;
-  else if (op2_wr)     sumext_s <=  2'b00;
-  else if (result_wr)  sumext_s <=  sumext_s_nxt;
-
-wire [15:0] sumext_nxt = {{14{sumext_s_nxt[1]}}, sumext_s_nxt};
-wire [15:0] sumext     = {{14{sumext_s[1]}},     sumext_s};
-wire [15:0] sumext_rd  = early_read ? sumext_nxt : sumext;
-
-
-//============================================================================
-// 4) DATA OUTPUT GENERATION
-//============================================================================
-
-// Data output mux
-wire [15:0] op1_mux    = op1_rd     & {16{reg_rd[OP1_MPY]  |
-                                          reg_rd[OP1_MPYS] |
-                                          reg_rd[OP1_MAC]  |
-                                          reg_rd[OP1_MACS]}};
-wire [15:0] op2_mux    = op2_rd     & {16{reg_rd[OP2]}};
-wire [15:0] reslo_mux  = reslo_rd   & {16{reg_rd[RESLO]}};
-wire [15:0] reshi_mux  = reshi_rd   & {16{reg_rd[RESHI]}};
-wire [15:0] sumext_mux = sumext_rd  & {16{reg_rd[SUMEXT]}};
-
-wire [15:0] per_dout   = op1_mux    |
-                         op2_mux    |
-                         reslo_mux  |
-                         reshi_mux  |
-                         sumext_mux;
-
-
-//============================================================================
-// 5) HARDWARE MULTIPLIER FUNCTIONAL LOGIC
-//============================================================================
-
-// Multiplier configuration
-//--------------------------
-
-// Detect signed mode
-reg sign_sel;
-always @ (posedge mclk_op1 or posedge puc_rst)
-  if (puc_rst)     sign_sel <=  1'b0;
-  else if (op1_wr) sign_sel <=  reg_wr[OP1_MPYS] | reg_wr[OP1_MACS];
-
-
-// Detect accumulate mode
-reg acc_sel;
-always @ (posedge mclk_op1 or posedge puc_rst)
-  if (puc_rst)     acc_sel  <=  1'b0;
-  else if (op1_wr) acc_sel  <=  reg_wr[OP1_MAC]  | reg_wr[OP1_MACS];
-
-
-// Detect whenever the RESHI and RESLO registers should be cleared
-assign      result_clr = op2_wr & ~acc_sel;
-
-// Combine RESHI & RESLO 
-wire [31:0] result     = {reshi, reslo};
-
-   
-// 16x16 Multiplier (result computed in 1 clock cycle)
-//-----------------------------------------------------
-  
-// Detect start of a multiplication
-reg [1:0] cycle;
-always @ (posedge mclk or posedge puc_rst)
-  if (puc_rst) cycle <=  2'b00;
-  else         cycle <=  {cycle[0], op2_wr};
-
-assign result_wr = |cycle;
-
-
-// Expand the operands to support signed & unsigned operations
-wire signed [16:0] op1_xp    = {sign_sel & op1[15], op1};
-wire signed  [8:0] op2_hi_xp = {sign_sel & op2[15], op2[15:8]};
-wire signed  [8:0] op2_lo_xp = {              1'b0, op2[7:0]};
-wire signed  [8:0] op2_xp    = cycle[0] ? op2_hi_xp : op2_lo_xp;
-
-     
-// 17x9 signed multiplication
-wire signed [25:0] product    = op1_xp * op2_xp;
-
-wire        [31:0] product_xp = cycle[0] ? {product[23:0], 8'h00} :
-                                           {{8{sign_sel & product[23]}}, product[23:0]};
-   
-// Accumulate
-wire [32:0] result_nxt  = {1'b0, result} + {1'b0, product_xp[31:0]};
-
-
-// Next register values
-assign reslo_nxt    = result_nxt[15:0];
-assign reshi_nxt    = result_nxt[31:16];
-assign sumext_s_nxt =  sign_sel ? {2{result_nxt[31]}} :
-                                  {1'b0, result_nxt[32] | sumext_s[0]};
-
-// Since the MAC is completed within 2 clock cycle,
-// an early read can happen during the second cycle.
-assign early_read   = cycle[1];
-
-
-
-endmodule // omsp_multiplier
-
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-
-// Data Memory sizes
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include Debug interface
-
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-
-// Include/Exclude Watchdog timer
-
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-
-// Input synchronizers
-
-
-// Peripheral Memory Space:
-
-
-// Let the CPU break after a PUC occurrence by default
-
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-
-
-// Data Memory Size
-
-
-
-// Peripheral Memory Size
-
-
-
-// Data Memory Base Adresses
-
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-
-
-
-// Instructions type
-
-
-
-
-// Single-operand arithmetic
-
-
-
-
-
-
-
-
-
-// Conditional jump
-
-
-
-
-
-
-
-
-
-// Two-operand arithmetic
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Addressing modes
-
-
-
-
-
-
-
-
-
-// Instruction state machine
-
-
-
-
-
-
-
-// Execution state machine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// ALU control signals
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Debug interface
-
-
-
-
-// Debug interface CPU_CTL register
-
-
-
-
-
-
-
-
-// Debug interface CPU_STAT register
-
-
-
-
-
-
-// Debug interface BRKx_CTL register
-
-
-
-
-
-
-
-// Basic clock module: BCSCTL1 Control Register
-
-
-// Basic clock module: BCSCTL2 Control Register
-
-
-
-
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-
-// Debug interface: Software breakpoint opcode
-
-
-// Debug UART interface auto data synchronization
-
-
-// Debug UART interface data rate
-
-
-
-
-// Debug interface input synchronizer
-
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-
-// Counter width for the debug interface UART
-
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_register_file.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_register_file.v
deleted file mode 100644
index c24cb0e..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_register_file.v
+++ /dev/null
@@ -1,1336 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_register_file.v
-// 
-// *Module Description:
-//                       openMSP430 Register files
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
-module  omsp_register_file (
-
-// OUTPUTs
-    cpuoff,                       // Turns off the CPU
-    gie,                          // General interrupt enable
-    oscoff,                       // Turns off LFXT1 clock input
-    pc_sw,                        // Program counter software value
-    pc_sw_wr,                     // Program counter software write
-    reg_dest,                     // Selected register destination content
-    reg_src,                      // Selected register source content
-    scg0,                         // System clock generator 1. Turns off the DCO
-    scg1,                         // System clock generator 1. Turns off the SMCLK
-    status,                       // R2 Status {V,N,Z,C}
-
-// INPUTs
-    alu_stat,                     // ALU Status {V,N,Z,C}
-    alu_stat_wr,                  // ALU Status write {V,N,Z,C}
-    inst_bw,                      // Decoded Inst: byte width
-    inst_dest,                    // Register destination selection
-    inst_src,                     // Register source selection
-    mclk,                         // Main system clock
-    pc,                           // Program counter
-    puc_rst,                      // Main system reset
-    reg_dest_val,                 // Selected register destination value
-    reg_dest_wr,                  // Write selected register destination
-    reg_pc_call,                  // Trigger PC update for a CALL instruction
-    reg_sp_val,                   // Stack Pointer next value
-    reg_sp_wr,                    // Stack Pointer write
-    reg_sr_wr,                    // Status register update for RETI instruction
-    reg_sr_clr,                   // Status register clear for interrupts
-    reg_incr,                     // Increment source register
-    scan_enable                   // Scan enable (active during scan shifting)
-);
-
-// OUTPUTs
-//=========
-output 	            cpuoff;       // Turns off the CPU
-output 	            gie;          // General interrupt enable
-output 	            oscoff;       // Turns off LFXT1 clock input
-output       [15:0] pc_sw;        // Program counter software value
-output              pc_sw_wr;     // Program counter software write
-output       [15:0] reg_dest;     // Selected register destination content
-output       [15:0] reg_src;      // Selected register source content
-output              scg0;         // System clock generator 1. Turns off the DCO
-output              scg1;         // System clock generator 1. Turns off the SMCLK
-output        [3:0] status;       // R2 Status {V,N,Z,C}
-
-// INPUTs
-//=========
-input         [3:0] alu_stat;     // ALU Status {V,N,Z,C}
-input         [3:0] alu_stat_wr;  // ALU Status write {V,N,Z,C}
-input               inst_bw;      // Decoded Inst: byte width
-input        [15:0] inst_dest;    // Register destination selection
-input        [15:0] inst_src;     // Register source selection
-input               mclk;         // Main system clock
-input        [15:0] pc;           // Program counter
-input               puc_rst;      // Main system reset
-input        [15:0] reg_dest_val; // Selected register destination value
-input               reg_dest_wr;  // Write selected register destination
-input               reg_pc_call;  // Trigger PC update for a CALL instruction
-input        [15:0] reg_sp_val;   // Stack Pointer next value
-input               reg_sp_wr;    // Stack Pointer write
-input               reg_sr_wr;    // Status register update for RETI instruction
-input               reg_sr_clr;   // Status register clear for interrupts
-input               reg_incr;     // Increment source register
-input               scan_enable;  // Scan enable (active during scan shifting)
-
-
-//=============================================================================
-// 1)  AUTOINCREMENT UNIT
-//=============================================================================
-
-wire [15:0] inst_src_in;
-wire [15:0] incr_op         = (inst_bw & ~inst_src_in[1]) ? 16'h0001 : 16'h0002;
-wire [15:0] reg_incr_val    = reg_src+incr_op;
-
-wire [15:0] reg_dest_val_in = inst_bw ? {8'h00,reg_dest_val[7:0]} : reg_dest_val;
-
-
-//=============================================================================
-// 2)  SPECIAL REGISTERS (R1/R2/R3)
-//=============================================================================
-
-// Source input selection mask (for interrupt support)
-//-----------------------------------------------------
-
-assign inst_src_in = reg_sr_clr ? 16'h0004 : inst_src;
-
-
-// R0: Program counter
-//---------------------
-
-wire [15:0] r0       = pc;
-
-wire [15:0] pc_sw    = reg_dest_val_in;
-wire        pc_sw_wr = (inst_dest[0] & reg_dest_wr) | reg_pc_call;
-
-
-// R1: Stack pointer
-//-------------------
-reg [15:0] r1;
-wire       r1_wr  = inst_dest[1] & reg_dest_wr;
-wire       r1_inc = inst_src_in[1]  & reg_incr;
-
-wire       mclk_r1 = mclk;
-
-always @(posedge mclk_r1 or posedge puc_rst)
-  if (puc_rst)        r1 <= 16'h0000;
-  else if (r1_wr)     r1 <= reg_dest_val_in & 16'hfffe;
-  else if (reg_sp_wr) r1 <= reg_sp_val      & 16'hfffe;
-  else if (r1_inc)    r1 <= reg_incr_val    & 16'hfffe;
-
-
-// R2: Status register
-//---------------------
-reg  [15:0] r2;
-wire        r2_wr  = (inst_dest[2] & reg_dest_wr) | reg_sr_wr;
-
-wire        r2_c   = alu_stat_wr[0] ? alu_stat[0]          :
-                     r2_wr          ? reg_dest_val_in[0]   : r2[0];              // C
-
-wire        r2_z   = alu_stat_wr[1] ? alu_stat[1]          :
-                     r2_wr          ? reg_dest_val_in[1]   : r2[1];              // Z
-
-wire        r2_n   = alu_stat_wr[2] ? alu_stat[2]          :
-                     r2_wr          ? reg_dest_val_in[2]   : r2[2];              // N
-
-wire  [7:3] r2_nxt = r2_wr          ? reg_dest_val_in[7:3] : r2[7:3];
-
-wire        r2_v   = alu_stat_wr[3] ? alu_stat[3]          :
-                     r2_wr          ? reg_dest_val_in[8]   : r2[8];              // V
-
-
-wire        mclk_r2 = mclk;
-
-   wire [15:0] cpuoff_mask = 16'h0010; // For the FPGA version: - the CPUOFF mode is emulated
-   wire [15:0] oscoff_mask = 16'h0020; //                       - the SCG1 mode is emulated
-   wire [15:0] scg0_mask   = 16'h0000; //                       - the SCG0 is not supported
-   wire [15:0] scg1_mask   = 16'h0080; //                       - the SCG1 mode is emulated
-   
-   wire [15:0] r2_mask     = cpuoff_mask | oscoff_mask | scg0_mask | scg1_mask | 16'h010f;
- 
-always @(posedge mclk_r2 or posedge puc_rst)
-  if (puc_rst)         r2 <= 16'h0000;
-  else if (reg_sr_clr) r2 <= 16'h0000;
-  else                 r2 <= {7'h00, r2_v, r2_nxt, r2_n, r2_z, r2_c} & r2_mask;
-
-assign status = {r2[8], r2[2:0]};
-assign gie    =  r2[3];
-assign cpuoff =  r2[4] | (r2_nxt[4] & r2_wr & cpuoff_mask[4]);
-assign oscoff =  r2[5];
-assign scg0   =  r2[6];
-assign scg1   =  r2[7];
-
-
-// R3: Constant generator
-//-------------------------------------------------------------
-// Note: the auto-increment feature is not implemented for R3
-//       because the @R3+ addressing mode is used for constant
-//       generation (#-1).
-reg [15:0] r3;
-wire       r3_wr  = inst_dest[3] & reg_dest_wr;
-
-wire       mclk_r3 = mclk;
-
-always @(posedge mclk_r3 or posedge puc_rst)
-  if (puc_rst)     r3 <= 16'h0000;
-  else if (r3_wr)  r3 <= reg_dest_val_in;
-
-
-//=============================================================================
-// 4)  GENERAL PURPOSE REGISTERS (R4...R15)
-//=============================================================================
-
-// R4
-//------------
-reg [15:0] r4;
-wire       r4_wr  = inst_dest[4] & reg_dest_wr;
-wire       r4_inc = inst_src_in[4]  & reg_incr;
-
-wire       mclk_r4 = mclk;
-
-always @(posedge mclk_r4 or posedge puc_rst)
-  if (puc_rst)      r4  <= 16'h0000;
-  else if (r4_wr)   r4  <= reg_dest_val_in;
-  else if (r4_inc)  r4  <= reg_incr_val;
-
-// R5
-//------------
-reg [15:0] r5;
-wire       r5_wr  = inst_dest[5] & reg_dest_wr;
-wire       r5_inc = inst_src_in[5]  & reg_incr;
-
-wire       mclk_r5 = mclk;
-
-always @(posedge mclk_r5 or posedge puc_rst)
-  if (puc_rst)      r5  <= 16'h0000;
-  else if (r5_wr)   r5  <= reg_dest_val_in;
-  else if (r5_inc)  r5  <= reg_incr_val;
-
-// R6
-//------------
-reg [15:0] r6;
-wire       r6_wr  = inst_dest[6] & reg_dest_wr;
-wire       r6_inc = inst_src_in[6]  & reg_incr;
-
-wire       mclk_r6 = mclk;
-
-always @(posedge mclk_r6 or posedge puc_rst)
-  if (puc_rst)      r6  <= 16'h0000;
-  else if (r6_wr)   r6  <= reg_dest_val_in;
-  else if (r6_inc)  r6  <= reg_incr_val;
-
-// R7
-//------------
-reg [15:0] r7;
-wire       r7_wr  = inst_dest[7] & reg_dest_wr;
-wire       r7_inc = inst_src_in[7]  & reg_incr;
-
-wire       mclk_r7 = mclk;
-
-always @(posedge mclk_r7 or posedge puc_rst)
-  if (puc_rst)      r7  <= 16'h0000;
-  else if (r7_wr)   r7  <= reg_dest_val_in;
-  else if (r7_inc)  r7  <= reg_incr_val;
-
-// R8
-//------------
-reg [15:0] r8;
-wire       r8_wr  = inst_dest[8] & reg_dest_wr;
-wire       r8_inc = inst_src_in[8]  & reg_incr;
-
-wire       mclk_r8 = mclk;
-
-always @(posedge mclk_r8 or posedge puc_rst)
-  if (puc_rst)      r8  <= 16'h0000;
-  else if (r8_wr)   r8  <= reg_dest_val_in;
-  else if (r8_inc)  r8  <= reg_incr_val;
-
-// R9
-//------------
-reg [15:0] r9;
-wire       r9_wr  = inst_dest[9] & reg_dest_wr;
-wire       r9_inc = inst_src_in[9]  & reg_incr;
-
-wire       mclk_r9 = mclk;
-
-always @(posedge mclk_r9 or posedge puc_rst)
-  if (puc_rst)      r9  <= 16'h0000;
-  else if (r9_wr)   r9  <= reg_dest_val_in;
-  else if (r9_inc)  r9  <= reg_incr_val;
-
-// R10
-//------------
-reg [15:0] r10;
-wire       r10_wr  = inst_dest[10] & reg_dest_wr;
-wire       r10_inc = inst_src_in[10]  & reg_incr;
-
-wire       mclk_r10 = mclk;
-
-always @(posedge mclk_r10 or posedge puc_rst)
-  if (puc_rst)      r10 <= 16'h0000;
-  else if (r10_wr)  r10 <= reg_dest_val_in;
-  else if (r10_inc) r10 <= reg_incr_val;
-
-// R11
-//------------
-reg [15:0] r11;
-wire       r11_wr  = inst_dest[11] & reg_dest_wr;
-wire       r11_inc = inst_src_in[11]  & reg_incr;
-
-wire       mclk_r11 = mclk;
-
-always @(posedge mclk_r11 or posedge puc_rst)
-  if (puc_rst)      r11 <= 16'h0000;
-  else if (r11_wr)  r11 <= reg_dest_val_in;
-  else if (r11_inc) r11 <= reg_incr_val;
-
-// R12
-//------------
-reg [15:0] r12;
-wire       r12_wr  = inst_dest[12] & reg_dest_wr;
-wire       r12_inc = inst_src_in[12]  & reg_incr;
-
-wire       mclk_r12 = mclk;
-
-always @(posedge mclk_r12 or posedge puc_rst)
-  if (puc_rst)      r12 <= 16'h0000;
-  else if (r12_wr)  r12 <= reg_dest_val_in;
-  else if (r12_inc) r12 <= reg_incr_val;
-
-// R13
-//------------
-reg [15:0] r13;
-wire       r13_wr  = inst_dest[13] & reg_dest_wr;
-wire       r13_inc = inst_src_in[13]  & reg_incr;
-
-wire       mclk_r13 = mclk;
-
-always @(posedge mclk_r13 or posedge puc_rst)
-  if (puc_rst)      r13 <= 16'h0000;
-  else if (r13_wr)  r13 <= reg_dest_val_in;
-  else if (r13_inc) r13 <= reg_incr_val;
-
-// R14
-//------------
-reg [15:0] r14;
-wire       r14_wr  = inst_dest[14] & reg_dest_wr;
-wire       r14_inc = inst_src_in[14]  & reg_incr;
-
-wire       mclk_r14 = mclk;
-
-always @(posedge mclk_r14 or posedge puc_rst)
-  if (puc_rst)      r14 <= 16'h0000;
-  else if (r14_wr)  r14 <= reg_dest_val_in;
-  else if (r14_inc) r14 <= reg_incr_val;
-
-// R15
-//------------
-reg [15:0] r15;
-wire       r15_wr  = inst_dest[15] & reg_dest_wr;
-wire       r15_inc = inst_src_in[15]  & reg_incr;
-
-wire       mclk_r15 = mclk;
-
-always @(posedge mclk_r15 or posedge puc_rst)
-  if (puc_rst)      r15 <= 16'h0000;
-  else if (r15_wr)  r15 <= reg_dest_val_in;
-  else if (r15_inc)  r15 <= reg_incr_val;
-
-
-//=============================================================================
-// 5)  READ MUX
-//=============================================================================
-
-assign reg_src  = (r0      & {16{inst_src_in[0]}})   | 
-                  (r1      & {16{inst_src_in[1]}})   | 
-                  (r2      & {16{inst_src_in[2]}})   | 
-                  (r3      & {16{inst_src_in[3]}})   | 
-                  (r4      & {16{inst_src_in[4]}})   | 
-                  (r5      & {16{inst_src_in[5]}})   | 
-                  (r6      & {16{inst_src_in[6]}})   | 
-                  (r7      & {16{inst_src_in[7]}})   | 
-                  (r8      & {16{inst_src_in[8]}})   | 
-                  (r9      & {16{inst_src_in[9]}})   | 
-                  (r10     & {16{inst_src_in[10]}})  | 
-                  (r11     & {16{inst_src_in[11]}})  | 
-                  (r12     & {16{inst_src_in[12]}})  | 
-                  (r13     & {16{inst_src_in[13]}})  | 
-                  (r14     & {16{inst_src_in[14]}})  | 
-                  (r15     & {16{inst_src_in[15]}});
-
-assign reg_dest = (r0      & {16{inst_dest[0]}})  | 
-                  (r1      & {16{inst_dest[1]}})  | 
-                  (r2      & {16{inst_dest[2]}})  | 
-                  (r3      & {16{inst_dest[3]}})  | 
-                  (r4      & {16{inst_dest[4]}})  | 
-                  (r5      & {16{inst_dest[5]}})  | 
-                  (r6      & {16{inst_dest[6]}})  | 
-                  (r7      & {16{inst_dest[7]}})  | 
-                  (r8      & {16{inst_dest[8]}})  | 
-                  (r9      & {16{inst_dest[9]}})  | 
-                  (r10     & {16{inst_dest[10]}}) | 
-                  (r11     & {16{inst_dest[11]}}) | 
-                  (r12     & {16{inst_dest[12]}}) | 
-                  (r13     & {16{inst_dest[13]}}) | 
-                  (r14     & {16{inst_dest[14]}}) | 
-                  (r15     & {16{inst_dest[15]}});
-
-
-endmodule // omsp_register_file
-
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-
-// Data Memory sizes
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include Debug interface
-
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-
-// Include/Exclude Watchdog timer
-
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-
-// Input synchronizers
-
-
-// Peripheral Memory Space:
-
-
-// Let the CPU break after a PUC occurrence by default
-
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-
-
-// Data Memory Size
-
-
-
-// Peripheral Memory Size
-
-
-
-// Data Memory Base Adresses
-
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-
-
-
-// Instructions type
-
-
-
-
-// Single-operand arithmetic
-
-
-
-
-
-
-
-
-
-// Conditional jump
-
-
-
-
-
-
-
-
-
-// Two-operand arithmetic
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Addressing modes
-
-
-
-
-
-
-
-
-
-// Instruction state machine
-
-
-
-
-
-
-
-// Execution state machine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// ALU control signals
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Debug interface
-
-
-
-
-// Debug interface CPU_CTL register
-
-
-
-
-
-
-
-
-// Debug interface CPU_STAT register
-
-
-
-
-
-
-// Debug interface BRKx_CTL register
-
-
-
-
-
-
-
-// Basic clock module: BCSCTL1 Control Register
-
-
-// Basic clock module: BCSCTL2 Control Register
-
-
-
-
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-
-// Debug interface: Software breakpoint opcode
-
-
-// Debug UART interface auto data synchronization
-
-
-// Debug UART interface data rate
-
-
-
-
-// Debug interface input synchronizer
-
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-
-// Counter width for the debug interface UART
-
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_scan_mux.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_scan_mux.v
deleted file mode 100644
index 9a90647..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_scan_mux.v
+++ /dev/null
@@ -1,75 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_scan_mux.v
-// 
-// *Module Description:
-//                       Generic mux for scan mode
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 103 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2011-03-05 15:44:48 +0100 (Sat, 05 Mar 2011) $
-//----------------------------------------------------------------------------
-
-module  omsp_scan_mux (
-
-// OUTPUTs
-    data_out,                      // Scan mux data output
-
-// INPUTs
-    data_in_scan,                  // Selected data input for scan mode
-    data_in_func,                  // Selected data input for functional mode
-    scan_mode                      // Scan mode
-);
-
-// OUTPUTs
-//=========
-output              data_out;      // Scan mux data output
-
-// INPUTs
-//=========
-input               data_in_scan;  // Selected data input for scan mode
-input               data_in_func;  // Selected data input for functional mode
-input               scan_mode;     // Scan mode
-
-
-//=============================================================================
-// 1)  SCAN MUX
-//=============================================================================
-
-assign  data_out  =  scan_mode ? data_in_scan : data_in_func;
-
-
-endmodule // omsp_scan_mux
-
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_sfr.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_sfr.v
deleted file mode 100644
index e063720..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_sfr.v
+++ /dev/null
@@ -1,1225 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_sfr.v
-// 
-// *Module Description:
-//                       Processor Special function register
-//                       Non-Maskable Interrupt generation
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
-module  omsp_sfr (
-
-// OUTPUTs
-    cpu_id,                       // CPU ID
-    nmi_pnd,                      // NMI Pending
-    nmi_wkup,                     // NMI Wakeup
-    per_dout,                     // Peripheral data output
-    wdtie,                        // Watchdog-timer interrupt enable
-    wdtifg_sw_clr,                // Watchdog-timer interrupt flag software clear
-    wdtifg_sw_set,                // Watchdog-timer interrupt flag software set
-
-// INPUTs
-    cpu_nr_inst,                  // Current oMSP instance number
-    cpu_nr_total,                 // Total number of oMSP instances-1
-    mclk,                         // Main system clock
-    nmi,                          // Non-maskable interrupt (asynchronous)
-    nmi_acc,                      // Non-Maskable interrupt request accepted
-    per_addr,                     // Peripheral address
-    per_din,                      // Peripheral data input
-    per_en,                       // Peripheral enable (high active)
-    per_we,                       // Peripheral write enable (high active)
-    puc_rst,                      // Main system reset
-    scan_mode,                    // Scan mode
-    wdtifg,                       // Watchdog-timer interrupt flag
-    wdtnmies                      // Watchdog-timer NMI edge selection
-);
-
-// OUTPUTs
-//=========
-output       [31:0] cpu_id;       // CPU ID
-output              nmi_pnd;      // NMI Pending
-output              nmi_wkup;     // NMI Wakeup
-output       [15:0] per_dout;     // Peripheral data output
-output              wdtie;        // Watchdog-timer interrupt enable
-output              wdtifg_sw_clr;// Watchdog-timer interrupt flag software clear
-output              wdtifg_sw_set;// Watchdog-timer interrupt flag software set
-
-// INPUTs
-//=========
-input         [7:0] cpu_nr_inst;  // Current oMSP instance number
-input         [7:0] cpu_nr_total; // Total number of oMSP instances-1
-input               mclk;         // Main system clock
-input               nmi;          // Non-maskable interrupt (asynchronous)
-input               nmi_acc;      // Non-Maskable interrupt request accepted
-input        [13:0] per_addr;     // Peripheral address
-input        [15:0] per_din;      // Peripheral data input
-input               per_en;       // Peripheral enable (high active)
-input         [1:0] per_we;       // Peripheral write enable (high active)
-input               puc_rst;      // Main system reset
-input               scan_mode;    // Scan mode
-input               wdtifg;       // Watchdog-timer interrupt flag
-input               wdtnmies;     // Watchdog-timer NMI edge selection
-
-
-//=============================================================================
-// 1)  PARAMETER DECLARATION
-//=============================================================================
-
-// Register base address (must be aligned to decoder bit width)
-parameter       [14:0] BASE_ADDR   = 15'h0000;
-
-// Decoder bit width (defines how many bits are considered for address decoding)
-parameter              DEC_WD      =  4;
-
-// Register addresses offset
-parameter [DEC_WD-1:0] IE1         =  'h0,
-                       IFG1        =  'h2,
-                       CPU_ID_LO   =  'h4,
-                       CPU_ID_HI   =  'h6,
-                       CPU_NR      =  'h8;
-
-// Register one-hot decoder utilities
-parameter              DEC_SZ      =  (1 << DEC_WD);
-parameter [DEC_SZ-1:0] BASE_REG    =  {{DEC_SZ-1{1'b0}}, 1'b1};
-
-// Register one-hot decoder
-parameter [DEC_SZ-1:0] IE1_D       = (BASE_REG << IE1),
-                       IFG1_D      = (BASE_REG << IFG1),
-                       CPU_ID_LO_D = (BASE_REG << CPU_ID_LO),
-                       CPU_ID_HI_D = (BASE_REG << CPU_ID_HI),
-                       CPU_NR_D    = (BASE_REG << CPU_NR);
-
-
-//============================================================================
-// 2)  REGISTER DECODER
-//============================================================================
-
-// Local register selection
-wire              reg_sel      =  per_en & (per_addr[13:DEC_WD-1]==BASE_ADDR[14:DEC_WD]);
-
-// Register local address
-wire [DEC_WD-1:0] reg_addr     =  {1'b0, per_addr[DEC_WD-2:0]};
-
-// Register address decode
-wire [DEC_SZ-1:0] reg_dec      = (IE1_D        &  {DEC_SZ{(reg_addr==(IE1       >>1))}})  |
-                                 (IFG1_D       &  {DEC_SZ{(reg_addr==(IFG1      >>1))}})  |
-                                 (CPU_ID_LO_D  &  {DEC_SZ{(reg_addr==(CPU_ID_LO >>1))}})  |
-                                 (CPU_ID_HI_D  &  {DEC_SZ{(reg_addr==(CPU_ID_HI >>1))}})  |
-                                 (CPU_NR_D     &  {DEC_SZ{(reg_addr==(CPU_NR    >>1))}});
-
-// Read/Write probes
-wire              reg_lo_write =  per_we[0] & reg_sel;
-wire              reg_hi_write =  per_we[1] & reg_sel;
-wire              reg_read     = ~|per_we   & reg_sel;
-
-// Read/Write vectors
-wire [DEC_SZ-1:0] reg_hi_wr    = reg_dec & {DEC_SZ{reg_hi_write}};
-wire [DEC_SZ-1:0] reg_lo_wr    = reg_dec & {DEC_SZ{reg_lo_write}};
-wire [DEC_SZ-1:0] reg_rd       = reg_dec & {DEC_SZ{reg_read}};
-
-
-//============================================================================
-// 3) REGISTERS
-//============================================================================
-
-// IE1 Register
-//--------------
-wire [7:0] ie1;
-wire       ie1_wr  = IE1[0] ? reg_hi_wr[IE1] : reg_lo_wr[IE1];
-wire [7:0] ie1_nxt = IE1[0] ? per_din[15:8]  : per_din[7:0];
-
-reg        nmie;
-always @ (posedge mclk or posedge puc_rst)
-  if (puc_rst)      nmie  <=  1'b0;
-  else if (nmi_acc) nmie  <=  1'b0; 
-  else if (ie1_wr)  nmie  <=  ie1_nxt[4];    
-
-reg        wdtie;
-always @ (posedge mclk or posedge puc_rst)
-  if (puc_rst)      wdtie <=  1'b0;
-  else if (ie1_wr)  wdtie <=  ie1_nxt[0];    
-
-assign  ie1 = {3'b000, nmie, 3'b000, wdtie};
-
-
-// IFG1 Register
-//---------------
-wire [7:0] ifg1;
-
-wire       ifg1_wr  = IFG1[0] ? reg_hi_wr[IFG1] : reg_lo_wr[IFG1];
-wire [7:0] ifg1_nxt = IFG1[0] ? per_din[15:8]   : per_din[7:0];
-
-reg        nmiifg;
-wire       nmi_edge;
-always @ (posedge mclk or posedge puc_rst)
-  if (puc_rst)       nmiifg <=  1'b0;
-  else if (nmi_edge) nmiifg <=  1'b1;
-  else if (ifg1_wr)  nmiifg <=  ifg1_nxt[4];
-
-assign  wdtifg_sw_clr = ifg1_wr & ~ifg1_nxt[0];
-assign  wdtifg_sw_set = ifg1_wr &  ifg1_nxt[0];
-
-assign  ifg1 = {3'b000, nmiifg, 3'b000, wdtifg};
-
-
-// CPU_ID Register (READ ONLY)
-//-----------------------------
-//              -------------------------------------------------------------------
-// CPU_ID_LO:  | 15  14  13  12  11  10  9  |  8  7  6  5  4  |  3   |   2  1  0   |
-//             |----------------------------+-----------------+------+-------------|
-//             |        PER_SPACE           |   USER_VERSION  | ASIC | CPU_VERSION |
-//              --------------------------------------------------------------------
-// CPU_ID_HI:  |   15  14  13  12  11  10   |   9  8  7  6  5  4  3  2  1   |   0  |
-//             |----------------------------+-------------------------------+------|
-//             |         PMEM_SIZE          |            DMEM_SIZE          |  MPY |
-//              -------------------------------------------------------------------
-
-wire  [2:0] cpu_version  =  3'h2;
-wire        cpu_asic     =  1'b0;
-wire  [4:0] user_version =  5'b00000;
-wire  [6:0] per_space    = (512  >> 9);  // cpu_id_per  *  512 = peripheral space size
-wire        mpy_info     =  1'b1;
-wire  [8:0] dmem_size    = (128 >> 7);  // cpu_id_dmem *  128 = data memory size
-wire  [5:0] pmem_size    = (2048 >> 10); // cpu_id_pmem * 1024 = program memory size
-
-assign      cpu_id       = {pmem_size,
-			    dmem_size,
-			    mpy_info,
-			    per_space,
-			    user_version,
-			    cpu_asic,
-                            cpu_version};
-
-
-// CPU_NR Register (READ ONLY)
-//-----------------------------
-//    -------------------------------------------------------------------
-//   | 15  14  13  12  11  10   9   8  |  7   6   5   4   3   2   1   0  |
-//   |---------------------------------+---------------------------------|
-//   |            CPU_TOTAL_NR         |           CPU_INST_NR           |
-//    -------------------------------------------------------------------
-
-wire [15:0] cpu_nr = {cpu_nr_total, cpu_nr_inst};
-
-
-//============================================================================
-// 4) DATA OUTPUT GENERATION
-//============================================================================
-
-// Data output mux
-wire [15:0] ie1_rd        = {8'h00, (ie1  &  {8{reg_rd[IE1]}})}  << (8 & {4{IE1[0]}});
-wire [15:0] ifg1_rd       = {8'h00, (ifg1 &  {8{reg_rd[IFG1]}})} << (8 & {4{IFG1[0]}});
-wire [15:0] cpu_id_lo_rd  = cpu_id[15:0]  & {16{reg_rd[CPU_ID_LO]}};
-wire [15:0] cpu_id_hi_rd  = cpu_id[31:16] & {16{reg_rd[CPU_ID_HI]}};
-wire [15:0] cpu_nr_rd     = cpu_nr        & {16{reg_rd[CPU_NR]}};
-
-wire [15:0] per_dout =  ie1_rd       |
-                        ifg1_rd      |
-                        cpu_id_lo_rd |
-                        cpu_id_hi_rd |
-                        cpu_nr_rd;
-
-
-//=============================================================================
-// 5)  NMI GENERATION
-//=============================================================================
-// NOTE THAT THE NMI INPUT IS ASSUMED TO BE NON-GLITCHY
-
-//-----------------------------------
-// Edge selection
-//-----------------------------------
-wire nmi_pol = nmi ^ wdtnmies;
-
-//-----------------------------------
-// Pulse capture and synchronization
-//-----------------------------------
-     wire   nmi_capture = nmi_pol;
-  
-   // Synchronization
-   wire   nmi_s;
-   omsp_sync_cell sync_cell_nmi (
-       .data_out  (nmi_s),
-       .data_in   (nmi_capture),
-       .clk       (mclk),
-       .rst       (puc_rst)
-   );
-
-
-//-----------------------------------
-// NMI Pending flag
-//-----------------------------------
-
-// Delay
-reg  nmi_dly;
-always @ (posedge mclk or posedge puc_rst)
-  if (puc_rst) nmi_dly <= 1'b0;
-  else         nmi_dly <= nmi_s;
-
-// Edge detection
-assign      nmi_edge  = ~nmi_dly & nmi_s;
-
-// NMI pending
-wire        nmi_pnd   = nmiifg & nmie;
-
-// NMI wakeup
-wire        nmi_wkup  = 1'b0;
-
-
-endmodule // omsp_sfr
-
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-
-// Data Memory sizes
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include Debug interface
-
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-
-// Include/Exclude Watchdog timer
-
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-
-// Input synchronizers
-
-
-// Peripheral Memory Space:
-
-
-// Let the CPU break after a PUC occurrence by default
-
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-
-
-// Data Memory Size
-
-
-
-// Peripheral Memory Size
-
-
-
-// Data Memory Base Adresses
-
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-
-
-
-// Instructions type
-
-
-
-
-// Single-operand arithmetic
-
-
-
-
-
-
-
-
-
-// Conditional jump
-
-
-
-
-
-
-
-
-
-// Two-operand arithmetic
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Addressing modes
-
-
-
-
-
-
-
-
-
-// Instruction state machine
-
-
-
-
-
-
-
-// Execution state machine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// ALU control signals
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Debug interface
-
-
-
-
-// Debug interface CPU_CTL register
-
-
-
-
-
-
-
-
-// Debug interface CPU_STAT register
-
-
-
-
-
-
-// Debug interface BRKx_CTL register
-
-
-
-
-
-
-
-// Basic clock module: BCSCTL1 Control Register
-
-
-// Basic clock module: BCSCTL2 Control Register
-
-
-
-
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-
-// Debug interface: Software breakpoint opcode
-
-
-// Debug UART interface auto data synchronization
-
-
-// Debug UART interface data rate
-
-
-
-
-// Debug interface input synchronizer
-
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-
-// Counter width for the debug interface UART
-
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_sync_cell.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_sync_cell.v
deleted file mode 100644
index ece0682..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_sync_cell.v
+++ /dev/null
@@ -1,80 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_sync_cell.v
-// 
-// *Module Description:
-//                       Generic synchronizer for the openMSP430
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 103 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2011-03-05 15:44:48 +0100 (Sat, 05 Mar 2011) $
-//----------------------------------------------------------------------------
-
-module  omsp_sync_cell (
-
-// OUTPUTs
-    data_out,                      // Synchronized data output
-
-// INPUTs
-    clk,                           // Receiving clock
-    data_in,                       // Asynchronous data input
-    rst                            // Receiving reset (active high)
-);
-
-// OUTPUTs
-//=========
-output              data_out;      // Synchronized data output
-
-// INPUTs
-//=========
-input               clk;          // Receiving clock
-input               data_in;      // Asynchronous data input
-input               rst;          // Receiving reset (active high)
-
-
-//=============================================================================
-// 1)  SYNCHRONIZER
-//=============================================================================
-
-reg  [1:0] data_sync;
-
-always @(posedge clk or posedge rst)
-  if (rst) data_sync <=  2'b00;
-  else     data_sync <=  {data_sync[0], data_in};
-
-assign     data_out   =   data_sync[1];
-
-
-endmodule // omsp_sync_cell
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_sync_reset.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_sync_reset.v
deleted file mode 100644
index 15a158b..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_sync_reset.v
+++ /dev/null
@@ -1,78 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_sync_reset.v
-// 
-// *Module Description:
-//                       Generic reset synchronizer for the openMSP430
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 103 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2011-03-05 15:44:48 +0100 (Sat, 05 Mar 2011) $
-//----------------------------------------------------------------------------
-
-module  omsp_sync_reset (
-
-// OUTPUTs
-    rst_s,                        // Synchronized reset
-
-// INPUTs
-    clk,                          // Receiving clock
-    rst_a                         // Asynchronous reset
-);
-
-// OUTPUTs
-//=========
-output              rst_s;        // Synchronized reset
-
-// INPUTs
-//=========
-input               clk;          // Receiving clock
-input               rst_a;        // Asynchronous reset
-
-
-//=============================================================================
-// 1)  SYNCHRONIZER
-//=============================================================================
-
-reg    [1:0] data_sync;
-
-always @(posedge clk or posedge rst_a)
-  if (rst_a) data_sync <=  2'b11;
-  else       data_sync <=  {data_sync[0], 1'b0};
-
-assign       rst_s      =   data_sync[1];
-
-
-endmodule // omsp_sync_reset
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_wakeup_cell.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_wakeup_cell.v
deleted file mode 100644
index 4e3a64a..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_wakeup_cell.v
+++ /dev/null
@@ -1,1007 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_wakeup_cell.v
-// 
-// *Module Description:
-//                       Generic Wakeup cell
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 103 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2011-03-05 15:44:48 +0100 (Sat, 05 Mar 2011) $
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
-module  omsp_wakeup_cell (
-
-// OUTPUTs
-    wkup_out,                  // Wakup signal (asynchronous)
-
-// INPUTs
-    scan_clk,                  // Scan clock
-    scan_mode,                 // Scan mode
-    scan_rst,                  // Scan reset
-    wkup_clear,                // Glitch free wakeup event clear
-    wkup_event                 // Glitch free asynchronous wakeup event
-);
-
-// OUTPUTs
-//=========
-output         wkup_out;       // Wakup signal (asynchronous)
-
-// INPUTs
-//=========
-input          scan_clk;       // Scan clock
-input          scan_mode;      // Scan mode
-input          scan_rst;       // Scan reset
-input          wkup_clear;     // Glitch free wakeup event clear
-input          wkup_event;     // Glitch free asynchronous wakeup event
-
-
-//=============================================================================
-// 1)  AND GATE
-//=============================================================================
-
-// Scan stuff for the ASIC mode
-   wire wkup_rst  =  wkup_clear;
-   wire wkup_clk  =  wkup_event;
-
-// Wakeup capture
-reg    wkup_out;
-always @(posedge wkup_clk or posedge wkup_rst)
-  if (wkup_rst) wkup_out <= 1'b0;
-  else          wkup_out <= 1'b1;
-
-
-endmodule // omsp_wakeup_cell
-
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-
-// Data Memory sizes
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include Debug interface
-
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-
-// Include/Exclude Watchdog timer
-
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-
-// Input synchronizers
-
-
-// Peripheral Memory Space:
-
-
-// Let the CPU break after a PUC occurrence by default
-
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-
-
-// Data Memory Size
-
-
-
-// Peripheral Memory Size
-
-
-
-// Data Memory Base Adresses
-
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-
-
-
-// Instructions type
-
-
-
-
-// Single-operand arithmetic
-
-
-
-
-
-
-
-
-
-// Conditional jump
-
-
-
-
-
-
-
-
-
-// Two-operand arithmetic
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Addressing modes
-
-
-
-
-
-
-
-
-
-// Instruction state machine
-
-
-
-
-
-
-
-// Execution state machine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// ALU control signals
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Debug interface
-
-
-
-
-// Debug interface CPU_CTL register
-
-
-
-
-
-
-
-
-// Debug interface CPU_STAT register
-
-
-
-
-
-
-// Debug interface BRKx_CTL register
-
-
-
-
-
-
-
-// Basic clock module: BCSCTL1 Control Register
-
-
-// Basic clock module: BCSCTL2 Control Register
-
-
-
-
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-
-// Debug interface: Software breakpoint opcode
-
-
-// Debug UART interface auto data synchronization
-
-
-// Debug UART interface data rate
-
-
-
-
-// Debug interface input synchronizer
-
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-
-// Counter width for the debug interface UART
-
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_watchdog.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_watchdog.v
deleted file mode 100644
index e305f1e..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/omsp_watchdog.v
+++ /dev/null
@@ -1,1187 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: omsp_watchdog.v
-// 
-// *Module Description:
-//                       Watchdog Timer
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
-module  omsp_watchdog (
-
-// OUTPUTs
-    per_dout,                       // Peripheral data output
-    wdt_irq,                        // Watchdog-timer interrupt
-    wdt_reset,                      // Watchdog-timer reset
-    wdt_wkup,                       // Watchdog Wakeup
-    wdtifg,                         // Watchdog-timer interrupt flag
-    wdtnmies,                       // Watchdog-timer NMI edge selection
-
-// INPUTs
-    aclk,                           // ACLK
-    aclk_en,                        // ACLK enable
-    dbg_freeze,                     // Freeze Watchdog counter
-    mclk,                           // Main system clock
-    per_addr,                       // Peripheral address
-    per_din,                        // Peripheral data input
-    per_en,                         // Peripheral enable (high active)
-    per_we,                         // Peripheral write enable (high active)
-    por,                            // Power-on reset
-    puc_rst,                        // Main system reset
-    scan_enable,                    // Scan enable (active during scan shifting)
-    scan_mode,                      // Scan mode
-    smclk,                          // SMCLK
-    smclk_en,                       // SMCLK enable
-    wdtie,                          // Watchdog timer interrupt enable
-    wdtifg_irq_clr,                 // Watchdog-timer interrupt flag irq accepted clear
-    wdtifg_sw_clr,                  // Watchdog-timer interrupt flag software clear
-    wdtifg_sw_set                   // Watchdog-timer interrupt flag software set
-);
-
-// OUTPUTs
-//=========
-output       [15:0] per_dout;       // Peripheral data output
-output              wdt_irq;        // Watchdog-timer interrupt
-output              wdt_reset;      // Watchdog-timer reset
-output              wdt_wkup;       // Watchdog Wakeup
-output              wdtifg;         // Watchdog-timer interrupt flag
-output              wdtnmies;       // Watchdog-timer NMI edge selection
-
-// INPUTs
-//=========
-input               aclk;           // ACLK
-input               aclk_en;        // ACLK enable
-input               dbg_freeze;     // Freeze Watchdog counter
-input               mclk;           // Main system clock
-input        [13:0] per_addr;       // Peripheral address
-input        [15:0] per_din;        // Peripheral data input
-input               per_en;         // Peripheral enable (high active)
-input         [1:0] per_we;         // Peripheral write enable (high active)
-input               por;            // Power-on reset
-input               puc_rst;        // Main system reset
-input               scan_enable;    // Scan enable (active during scan shifting)
-input               scan_mode;      // Scan mode
-input               smclk;          // SMCLK
-input               smclk_en;       // SMCLK enable
-input               wdtie;          // Watchdog timer interrupt enable
-input               wdtifg_irq_clr; // Clear Watchdog-timer interrupt flag
-input               wdtifg_sw_clr;  // Watchdog-timer interrupt flag software clear
-input               wdtifg_sw_set;  // Watchdog-timer interrupt flag software set
-
-
-//=============================================================================
-// 1)  PARAMETER DECLARATION
-//=============================================================================
-
-// Register base address (must be aligned to decoder bit width)
-parameter       [14:0] BASE_ADDR   = 15'h0120;
-
-// Decoder bit width (defines how many bits are considered for address decoding)
-parameter              DEC_WD      =  2;
-
-// Register addresses offset
-parameter [DEC_WD-1:0] WDTCTL      = 'h0;
-
-// Register one-hot decoder utilities
-parameter              DEC_SZ      =  (1 << DEC_WD);
-parameter [DEC_SZ-1:0] BASE_REG    =  {{DEC_SZ-1{1'b0}}, 1'b1};
-
-// Register one-hot decoder
-parameter [DEC_SZ-1:0] WDTCTL_D    = (BASE_REG << WDTCTL);
-
-
-//============================================================================
-// 2)  REGISTER DECODER
-//============================================================================
-
-// Local register selection
-wire              reg_sel   =  per_en & (per_addr[13:DEC_WD-1]==BASE_ADDR[14:DEC_WD]);
-
-// Register local address
-wire [DEC_WD-1:0] reg_addr  =  {per_addr[DEC_WD-2:0], 1'b0};
-
-// Register address decode
-wire [DEC_SZ-1:0] reg_dec   =  (WDTCTL_D & {DEC_SZ{(reg_addr==WDTCTL)}});
-
-// Read/Write probes
-wire              reg_write =  |per_we & reg_sel;
-wire              reg_read  = ~|per_we & reg_sel;
-
-// Read/Write vectors
-wire [DEC_SZ-1:0] reg_wr    = reg_dec & {DEC_SZ{reg_write}};
-wire [DEC_SZ-1:0] reg_rd    = reg_dec & {DEC_SZ{reg_read}};
-
-
-//============================================================================
-// 3) REGISTERS
-//============================================================================
-
-// WDTCTL Register
-//-----------------
-// WDTNMI is not implemented and therefore masked
-   
-reg  [7:0] wdtctl;
-
-wire       wdtctl_wr = reg_wr[WDTCTL];
-
-wire       mclk_wdtctl = mclk;
-
-parameter [7:0] WDTNMIES_MASK = 8'h40;
-
-parameter [7:0] WDTSSEL_MASK  = 8'h04;
-
-parameter [7:0] WDTCTL_MASK   = (8'b1001_0011 | WDTSSEL_MASK | WDTNMIES_MASK);
-   
-always @ (posedge mclk_wdtctl or posedge puc_rst)
-  if (puc_rst)        wdtctl <=  8'h00;
-  else if (wdtctl_wr) wdtctl <=  per_din[7:0] & WDTCTL_MASK;
-
-wire       wdtpw_error = wdtctl_wr & (per_din[15:8]!=8'h5a);
-wire       wdttmsel    = wdtctl[4];
-wire       wdtnmies    = wdtctl[6];
-
-
-//============================================================================
-// 4) DATA OUTPUT GENERATION
-//============================================================================
-
-parameter [7:0] WDTNMI_RD_MASK  = 8'h20;
-  parameter [7:0] WDTSSEL_RD_MASK = 8'h00;
-  parameter [7:0] WDTCTL_RD_MASK  = WDTNMI_RD_MASK | WDTSSEL_RD_MASK;
-
-// Data output mux
-wire [15:0] wdtctl_rd  = {8'h69, wdtctl | WDTCTL_RD_MASK} & {16{reg_rd[WDTCTL]}};
-wire [15:0] per_dout   =  wdtctl_rd;
-
-
-//=============================================================================
-// 5)  WATCHDOG TIMER (ASIC IMPLEMENTATION)
-//=============================================================================
-
-// Watchdog clock source selection
-//---------------------------------
-wire  clk_src_en = wdtctl[2] ? aclk_en : smclk_en;
-
-
-// Watchdog 16 bit counter
-//--------------------------
-reg [15:0] wdtcnt;
-
-wire        wdtifg_evt;
-wire        wdtcnt_clr  = (wdtctl_wr & per_din[3]) | wdtifg_evt;
-wire        wdtcnt_incr = ~wdtctl[7] & clk_src_en & ~dbg_freeze;
-
-wire [15:0] wdtcnt_nxt  = wdtcnt+16'h0001;
-
-always @ (posedge mclk or posedge puc_rst)
-  if (puc_rst)           wdtcnt <= 16'h0000;
-  else if (wdtcnt_clr)   wdtcnt <= 16'h0000;
-  else if (wdtcnt_incr)  wdtcnt <= wdtcnt_nxt;
-
-   
-// Interval selection mux
-//--------------------------
-reg        wdtqn;
-
-always @(wdtctl or wdtcnt_nxt)
-    case(wdtctl[1:0])
-      2'b00 : wdtqn =  wdtcnt_nxt[15];
-      2'b01 : wdtqn =  wdtcnt_nxt[13];
-      2'b10 : wdtqn =  wdtcnt_nxt[9];
-      default: wdtqn =  wdtcnt_nxt[6];
-    endcase
-
-
-// Watchdog event detection
-//-----------------------------
-
-assign     wdtifg_evt =  (wdtqn & wdtcnt_incr) | wdtpw_error;
-
-
-// Watchdog interrupt flag
-//------------------------------
-reg        wdtifg;
-
-wire       wdtifg_set =  wdtifg_evt                  |  wdtifg_sw_set;
-wire       wdtifg_clr =  (wdtifg_irq_clr & wdttmsel) |  wdtifg_sw_clr;
-
-always @ (posedge mclk or posedge por)
-  if (por)             wdtifg <=  1'b0;
-  else if (wdtifg_set) wdtifg <=  1'b1;
-  else if (wdtifg_clr) wdtifg <=  1'b0;
-
-
-// Watchdog interrupt generation
-//---------------------------------
-wire    wdt_irq       = wdttmsel & wdtifg & wdtie;
-wire    wdt_wkup      =  1'b0;
-
-
-// Watchdog reset generation
-//-----------------------------
-reg     wdt_reset;
-
-always @ (posedge mclk or posedge por)
-  if (por) wdt_reset <= 1'b0;
-  else     wdt_reset <= wdtpw_error | (wdtifg_set & ~wdttmsel);
-
-
-
-
-endmodule // omsp_watchdog
-
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-
-// Data Memory sizes
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include Debug interface
-
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-
-// Include/Exclude Watchdog timer
-
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-
-// Input synchronizers
-
-
-// Peripheral Memory Space:
-
-
-// Let the CPU break after a PUC occurrence by default
-
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-
-
-// Data Memory Size
-
-
-
-// Peripheral Memory Size
-
-
-
-// Data Memory Base Adresses
-
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-
-
-
-// Instructions type
-
-
-
-
-// Single-operand arithmetic
-
-
-
-
-
-
-
-
-
-// Conditional jump
-
-
-
-
-
-
-
-
-
-// Two-operand arithmetic
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Addressing modes
-
-
-
-
-
-
-
-
-
-// Instruction state machine
-
-
-
-
-
-
-
-// Execution state machine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// ALU control signals
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Debug interface
-
-
-
-
-// Debug interface CPU_CTL register
-
-
-
-
-
-
-
-
-// Debug interface CPU_STAT register
-
-
-
-
-
-
-// Debug interface BRKx_CTL register
-
-
-
-
-
-
-
-// Basic clock module: BCSCTL1 Control Register
-
-
-// Basic clock module: BCSCTL2 Control Register
-
-
-
-
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-
-// Debug interface: Software breakpoint opcode
-
-
-// Debug UART interface auto data synchronization
-
-
-// Debug UART interface data rate
-
-
-
-
-// Debug interface input synchronizer
-
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-
-// Counter width for the debug interface UART
-
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/openMSP430.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/openMSP430.v
deleted file mode 100644
index d6f2d26..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/openMSP430.v
+++ /dev/null
@@ -1,1494 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-//
-// *File Name: openMSP430.v
-// 
-// *Module Description:
-//                       openMSP430 Top level file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 175 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-01-30 22:21:42 +0100 (Wed, 30 Jan 2013) $
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
-module  openMSP430 (
-
-// OUTPUTs
-    aclk,                               // ASIC ONLY: ACLK
-    aclk_en,                            // FPGA ONLY: ACLK enable
-    dbg_freeze,                         // Freeze peripherals
-    dbg_i2c_sda_out,                    // Debug interface: I2C SDA OUT
-    dbg_uart_txd,                       // Debug interface: UART TXD
-    dco_enable,                         // ASIC ONLY: Fast oscillator enable
-    dco_wkup,                           // ASIC ONLY: Fast oscillator wake-up (asynchronous)
-    dmem_addr,                          // Data Memory address
-    dmem_cen,                           // Data Memory chip enable (low active)
-    dmem_din,                           // Data Memory data input
-    dmem_wen,                           // Data Memory write enable (low active)
-    irq_acc,                            // Interrupt request accepted (one-hot signal)
-    lfxt_enable,                        // ASIC ONLY: Low frequency oscillator enable
-    lfxt_wkup,                          // ASIC ONLY: Low frequency oscillator wake-up (asynchronous)
-    mclk,                               // Main system clock
-    per_addr,                           // Peripheral address
-    per_din,                            // Peripheral data input
-    per_we,                             // Peripheral write enable (high active)
-    per_en,                             // Peripheral enable (high active)
-    pmem_addr,                          // Program Memory address
-    pmem_cen,                           // Program Memory chip enable (low active)
-    pmem_din,                           // Program Memory data input (optional)
-    pmem_wen,                           // Program Memory write enable (low active) (optional)
-    puc_rst,                            // Main system reset
-    smclk,                              // ASIC ONLY: SMCLK
-    smclk_en,                           // FPGA ONLY: SMCLK enable
-
-// INPUTs
-    cpu_en,                             // Enable CPU code execution (asynchronous and non-glitchy)
-    dbg_en,                             // Debug interface enable (asynchronous and non-glitchy)
-    dbg_i2c_addr,                       // Debug interface: I2C Address
-    dbg_i2c_broadcast,                  // Debug interface: I2C Broadcast Address (for multicore systems)
-    dbg_i2c_scl,                        // Debug interface: I2C SCL
-    dbg_i2c_sda_in,                     // Debug interface: I2C SDA IN
-    dbg_uart_rxd,                       // Debug interface: UART RXD (asynchronous)
-    dco_clk,                            // Fast oscillator (fast clock)
-    dmem_dout,                          // Data Memory data output
-    irq,                                // Maskable interrupts
-    lfxt_clk,                           // Low frequency oscillator (typ 32kHz)
-    nmi,                                // Non-maskable interrupt (asynchronous)
-    per_dout,                           // Peripheral data output
-    pmem_dout,                          // Program Memory data output
-    reset_n,                            // Reset Pin (low active, asynchronous and non-glitchy)
-    scan_enable,                        // ASIC ONLY: Scan enable (active during scan shifting)
-    scan_mode,                          // ASIC ONLY: Scan mode
-    wkup                                // ASIC ONLY: System Wake-up (asynchronous and non-glitchy)
-);
-
-// PARAMETERs
-//============
-parameter            INST_NR  = 8'h00;  // Current oMSP instance number     (for multicore systems)
-parameter            TOTAL_NR = 8'h00;  // Total number of oMSP instances-1 (for multicore systems)
-
-// OUTPUTs
-//============
-output               aclk;              // ASIC ONLY: ACLK
-output               aclk_en;           // FPGA ONLY: ACLK enable
-output               dbg_freeze;        // Freeze peripherals
-output               dbg_i2c_sda_out;   // Debug interface: I2C SDA OUT
-output               dbg_uart_txd;      // Debug interface: UART TXD
-output               dco_enable;        // ASIC ONLY: Fast oscillator enable
-output               dco_wkup;          // ASIC ONLY: Fast oscillator wake-up (asynchronous)
-output [6-1:0] dmem_addr;         // Data Memory address
-output               dmem_cen;          // Data Memory chip enable (low active)
-output        [15:0] dmem_din;          // Data Memory data input
-output         [1:0] dmem_wen;          // Data Memory write enable (low active)
-output        [13:0] irq_acc;           // Interrupt request accepted (one-hot signal)
-output               lfxt_enable;       // ASIC ONLY: Low frequency oscillator enable
-output               lfxt_wkup;         // ASIC ONLY: Low frequency oscillator wake-up (asynchronous)
-output               mclk;              // Main system clock
-output        [13:0] per_addr;          // Peripheral address
-output        [15:0] per_din;           // Peripheral data input
-output         [1:0] per_we;            // Peripheral write enable (high active)
-output               per_en;            // Peripheral enable (high active)
-output [10-1:0] pmem_addr;         // Program Memory address
-output               pmem_cen;          // Program Memory chip enable (low active)
-output        [15:0] pmem_din;          // Program Memory data input (optional)
-output         [1:0] pmem_wen;          // Program Memory write enable (low active) (optional)
-output               puc_rst;           // Main system reset
-output               smclk;             // ASIC ONLY: SMCLK
-output               smclk_en;          // FPGA ONLY: SMCLK enable
-
-
-// INPUTs
-//============
-input                cpu_en;            // Enable CPU code execution (asynchronous and non-glitchy)
-input                dbg_en;            // Debug interface enable (asynchronous and non-glitchy)
-input          [6:0] dbg_i2c_addr;      // Debug interface: I2C Address
-input          [6:0] dbg_i2c_broadcast; // Debug interface: I2C Broadcast Address (for multicore systems)
-input                dbg_i2c_scl;       // Debug interface: I2C SCL
-input                dbg_i2c_sda_in;    // Debug interface: I2C SDA IN
-input                dbg_uart_rxd;      // Debug interface: UART RXD (asynchronous)
-input                dco_clk;           // Fast oscillator (fast clock)
-input         [15:0] dmem_dout;         // Data Memory data output
-input  	      [13:0] irq;               // Maskable interrupts
-input                lfxt_clk;          // Low frequency oscillator (typ 32kHz)
-input  	             nmi;               // Non-maskable interrupt (asynchronous and non-glitchy)
-input         [15:0] per_dout;          // Peripheral data output
-input         [15:0] pmem_dout;         // Program Memory data output
-input                reset_n;           // Reset Pin (active low, asynchronous and non-glitchy)
-input                scan_enable;       // ASIC ONLY: Scan enable (active during scan shifting)
-input                scan_mode;         // ASIC ONLY: Scan mode
-input                wkup;              // ASIC ONLY: System Wake-up (asynchronous and non-glitchy)
-
-
-
-//=============================================================================
-// 1)  INTERNAL WIRES/REGISTERS/PARAMETERS DECLARATION
-//=============================================================================
-
-wire          [7:0] inst_ad;
-wire          [7:0] inst_as;
-wire         [11:0] inst_alu;
-wire                inst_bw;
-wire                inst_irq_rst;
-wire                inst_mov;
-wire         [15:0] inst_dest;
-wire         [15:0] inst_dext;
-wire         [15:0] inst_sext;
-wire          [7:0] inst_so;
-wire         [15:0] inst_src;
-wire          [2:0] inst_type;
-wire          [7:0] inst_jmp;
-wire          [3:0] e_state;
-wire                exec_done;
-wire                decode_noirq;
-wire                cpu_en_s;
-wire                cpuoff;
-wire                oscoff;
-wire                scg0;
-wire                scg1;
-wire                por;
-wire                gie;
-wire                mclk_enable;
-wire                mclk_wkup;
-wire         [31:0] cpu_id;
-wire          [7:0] cpu_nr_inst  = INST_NR;
-wire          [7:0] cpu_nr_total = TOTAL_NR;
-   
-wire         [15:0] eu_mab;
-wire         [15:0] eu_mdb_in;
-wire         [15:0] eu_mdb_out;
-wire          [1:0] eu_mb_wr;
-wire                eu_mb_en;
-wire         [15:0] fe_mab;
-wire         [15:0] fe_mdb_in;
-wire                fe_mb_en;
-wire                fe_pmem_wait;
-
-wire                pc_sw_wr;
-wire         [15:0] pc_sw;
-wire         [15:0] pc;
-wire         [15:0] pc_nxt;
-
-wire                nmi_acc;
-wire                nmi_pnd;
-wire                nmi_wkup;
-
-wire                wdtie;
-wire                wdtnmies;
-wire                wdtifg;
-wire                wdt_irq;
-wire                wdt_wkup;
-wire                wdt_reset;
-wire                wdtifg_sw_clr;
-wire                wdtifg_sw_set;
-
-wire                dbg_clk;
-wire                dbg_rst;
-wire                dbg_en_s;
-wire                dbg_halt_st;
-wire                dbg_halt_cmd;
-wire                dbg_mem_en;
-wire                dbg_reg_wr;
-wire                dbg_cpu_reset;
-wire         [15:0] dbg_mem_addr;
-wire         [15:0] dbg_mem_dout;
-wire         [15:0] dbg_mem_din;
-wire         [15:0] dbg_reg_din;
-wire          [1:0] dbg_mem_wr;
-wire                puc_pnd_set;
-   
-wire         [15:0] per_dout_or;
-wire         [15:0] per_dout_sfr;
-wire         [15:0] per_dout_wdog;
-wire         [15:0] per_dout_mpy;
-wire         [15:0] per_dout_clk;
-
-   
-//=============================================================================
-// 2)  GLOBAL CLOCK & RESET MANAGEMENT
-//=============================================================================
-
-omsp_clock_module clock_module_0 (
-
-// OUTPUTs
-    .aclk         (aclk),          // ACLK
-    .aclk_en      (aclk_en),       // ACLK enablex
-    .cpu_en_s     (cpu_en_s),      // Enable CPU code execution (synchronous)
-    .dbg_clk      (dbg_clk),       // Debug unit clock
-    .dbg_en_s     (dbg_en_s),      // Debug interface enable (synchronous)
-    .dbg_rst      (dbg_rst),       // Debug unit reset
-    .dco_enable   (dco_enable),    // Fast oscillator enable
-    .dco_wkup     (dco_wkup),      // Fast oscillator wake-up (asynchronous)
-    .lfxt_enable  (lfxt_enable),   // Low frequency oscillator enable
-    .lfxt_wkup    (lfxt_wkup),     // Low frequency oscillator wake-up (asynchronous)
-    .mclk         (mclk),          // Main system clock
-    .per_dout     (per_dout_clk),  // Peripheral data output
-    .por          (por),           // Power-on reset
-    .puc_pnd_set  (puc_pnd_set),   // PUC pending set for the serial debug interface
-    .puc_rst      (puc_rst),       // Main system reset
-    .smclk        (smclk),         // SMCLK
-    .smclk_en     (smclk_en),      // SMCLK enable
-	     
-// INPUTs
-    .cpu_en       (cpu_en),        // Enable CPU code execution (asynchronous)
-    .cpuoff       (cpuoff),        // Turns off the CPU
-    .dbg_cpu_reset(dbg_cpu_reset), // Reset CPU from debug interface
-    .dbg_en       (dbg_en),        // Debug interface enable (asynchronous)
-    .dco_clk      (dco_clk),       // Fast oscillator (fast clock)
-    .lfxt_clk     (lfxt_clk),      // Low frequency oscillator (typ 32kHz)
-    .mclk_enable  (mclk_enable),   // Main System Clock enable
-    .mclk_wkup    (mclk_wkup),     // Main System Clock wake-up (asynchronous)
-    .oscoff       (oscoff),        // Turns off LFXT1 clock input
-    .per_addr     (per_addr),      // Peripheral address
-    .per_din      (per_din),       // Peripheral data input
-    .per_en       (per_en),        // Peripheral enable (high active)
-    .per_we       (per_we),        // Peripheral write enable (high active)
-    .reset_n      (reset_n),       // Reset Pin (low active, asynchronous)
-    .scan_enable  (scan_enable),   // Scan enable (active during scan shifting)
-    .scan_mode    (scan_mode),     // Scan mode
-    .scg0         (scg0),          // System clock generator 1. Turns off the DCO
-    .scg1         (scg1),          // System clock generator 1. Turns off the SMCLK
-    .wdt_reset    (wdt_reset)      // Watchdog-timer reset
-);
-
-   
-//=============================================================================
-// 3)  FRONTEND (<=> FETCH & DECODE)
-//=============================================================================
-
-omsp_frontend frontend_0 (
-
-// OUTPUTs
-    .dbg_halt_st  (dbg_halt_st),   // Halt/Run status from CPU
-    .decode_noirq (decode_noirq),  // Frontend decode instruction
-    .e_state      (e_state),       // Execution state
-    .exec_done    (exec_done),     // Execution completed
-    .inst_ad      (inst_ad),       // Decoded Inst: destination addressing mode
-    .inst_as      (inst_as),       // Decoded Inst: source addressing mode
-    .inst_alu     (inst_alu),      // ALU control signals
-    .inst_bw      (inst_bw),       // Decoded Inst: byte width
-    .inst_dest    (inst_dest),     // Decoded Inst: destination (one hot)
-    .inst_dext    (inst_dext),     // Decoded Inst: destination extended instruction word
-    .inst_irq_rst (inst_irq_rst),  // Decoded Inst: Reset interrupt
-    .inst_jmp     (inst_jmp),      // Decoded Inst: Conditional jump
-    .inst_mov     (inst_mov),      // Decoded Inst: mov instruction
-    .inst_sext    (inst_sext),     // Decoded Inst: source extended instruction word
-    .inst_so      (inst_so),       // Decoded Inst: Single-operand arithmetic
-    .inst_src     (inst_src),      // Decoded Inst: source (one hot)
-    .inst_type    (inst_type),     // Decoded Instruction type
-    .irq_acc      (irq_acc),       // Interrupt request accepted
-    .mab          (fe_mab),        // Frontend Memory address bus
-    .mb_en        (fe_mb_en),      // Frontend Memory bus enable
-    .mclk_enable  (mclk_enable),   // Main System Clock enable
-    .mclk_wkup    (mclk_wkup),     // Main System Clock wake-up (asynchronous)
-    .nmi_acc      (nmi_acc),       // Non-Maskable interrupt request accepted
-    .pc           (pc),            // Program counter
-    .pc_nxt       (pc_nxt),        // Next PC value (for CALL & IRQ)
-			     
-// INPUTs
-    .cpu_en_s     (cpu_en_s),      // Enable CPU code execution (synchronous)
-    .cpuoff       (cpuoff),        // Turns off the CPU
-    .dbg_halt_cmd (dbg_halt_cmd),  // Halt CPU command
-    .dbg_reg_sel  (dbg_mem_addr[3:0]), // Debug selected register for rd/wr access
-    .fe_pmem_wait (fe_pmem_wait),  // Frontend wait for Instruction fetch
-    .gie          (gie),           // General interrupt enable
-    .irq          (irq),           // Maskable interrupts
-    .mclk         (mclk),          // Main system clock
-    .mdb_in       (fe_mdb_in),     // Frontend Memory data bus input
-    .nmi_pnd      (nmi_pnd),       // Non-maskable interrupt pending
-    .nmi_wkup     (nmi_wkup),      // NMI Wakeup
-    .pc_sw        (pc_sw),         // Program counter software value
-    .pc_sw_wr     (pc_sw_wr),      // Program counter software write
-    .puc_rst      (puc_rst),       // Main system reset
-    .scan_enable  (scan_enable),   // Scan enable (active during scan shifting)
-    .wdt_irq      (wdt_irq),       // Watchdog-timer interrupt
-    .wdt_wkup     (wdt_wkup),      // Watchdog Wakeup
-    .wkup         (wkup)           // System Wake-up (asynchronous)
-);
-
-
-//=============================================================================
-// 4)  EXECUTION UNIT
-//=============================================================================
-
-omsp_execution_unit execution_unit_0 (
-
-// OUTPUTs
-    .cpuoff       (cpuoff),        // Turns off the CPU
-    .dbg_reg_din  (dbg_reg_din),   // Debug unit CPU register data input
-    .mab          (eu_mab),        // Memory address bus
-    .mb_en        (eu_mb_en),      // Memory bus enable
-    .mb_wr        (eu_mb_wr),      // Memory bus write transfer
-    .mdb_out      (eu_mdb_out),    // Memory data bus output
-    .oscoff       (oscoff),        // Turns off LFXT1 clock input
-    .pc_sw        (pc_sw),         // Program counter software value
-    .pc_sw_wr     (pc_sw_wr),      // Program counter software write
-    .scg0         (scg0),          // System clock generator 1. Turns off the DCO
-    .scg1         (scg1),          // System clock generator 1. Turns off the SMCLK
-
-// INPUTs
-    .dbg_halt_st  (dbg_halt_st),   // Halt/Run status from CPU
-    .dbg_mem_dout (dbg_mem_dout),  // Debug unit data output
-    .dbg_reg_wr   (dbg_reg_wr),    // Debug unit CPU register write
-    .e_state      (e_state),       // Execution state
-    .exec_done    (exec_done),     // Execution completed
-    .gie          (gie),           // General interrupt enable
-    .inst_ad      (inst_ad),       // Decoded Inst: destination addressing mode
-    .inst_as      (inst_as),       // Decoded Inst: source addressing mode
-    .inst_alu     (inst_alu),      // ALU control signals
-    .inst_bw      (inst_bw),       // Decoded Inst: byte width
-    .inst_dest    (inst_dest),     // Decoded Inst: destination (one hot)
-    .inst_dext    (inst_dext),     // Decoded Inst: destination extended instruction word
-    .inst_irq_rst (inst_irq_rst),  // Decoded Inst: reset interrupt
-    .inst_jmp     (inst_jmp),      // Decoded Inst: Conditional jump
-    .inst_mov     (inst_mov),      // Decoded Inst: mov instruction
-    .inst_sext    (inst_sext),     // Decoded Inst: source extended instruction word
-    .inst_so      (inst_so),       // Decoded Inst: Single-operand arithmetic
-    .inst_src     (inst_src),      // Decoded Inst: source (one hot)
-    .inst_type    (inst_type),     // Decoded Instruction type
-    .mclk         (mclk),          // Main system clock
-    .mdb_in       (eu_mdb_in),     // Memory data bus input
-    .pc           (pc),            // Program counter
-    .pc_nxt       (pc_nxt),        // Next PC value (for CALL & IRQ)
-    .puc_rst      (puc_rst),       // Main system reset
-    .scan_enable  (scan_enable)    // Scan enable (active during scan shifting)
-);
-
-
-//=============================================================================
-// 5)  MEMORY BACKBONE
-//=============================================================================
-
-omsp_mem_backbone mem_backbone_0 (
-
-// OUTPUTs
-    .dbg_mem_din  (dbg_mem_din),   // Debug unit Memory data input
-    .dmem_addr    (dmem_addr),     // Data Memory address
-    .dmem_cen     (dmem_cen),      // Data Memory chip enable (low active)
-    .dmem_din     (dmem_din),      // Data Memory data input
-    .dmem_wen     (dmem_wen),      // Data Memory write enable (low active)
-    .eu_mdb_in    (eu_mdb_in),     // Execution Unit Memory data bus input
-    .fe_mdb_in    (fe_mdb_in),     // Frontend Memory data bus input
-    .fe_pmem_wait (fe_pmem_wait),  // Frontend wait for Instruction fetch
-    .per_addr     (per_addr),      // Peripheral address
-    .per_din      (per_din),       // Peripheral data input
-    .per_we       (per_we),        // Peripheral write enable (high active)
-    .per_en       (per_en),        // Peripheral enable (high active)
-    .pmem_addr    (pmem_addr),     // Program Memory address
-    .pmem_cen     (pmem_cen),      // Program Memory chip enable (low active)
-    .pmem_din     (pmem_din),      // Program Memory data input (optional)
-    .pmem_wen     (pmem_wen),      // Program Memory write enable (low active) (optional)
-			     
-// INPUTs
-    .dbg_halt_st  (dbg_halt_st),   // Halt/Run status from CPU
-    .dbg_mem_addr (dbg_mem_addr),  // Debug address for rd/wr access
-    .dbg_mem_dout (dbg_mem_dout),  // Debug unit data output
-    .dbg_mem_en   (dbg_mem_en),    // Debug unit memory enable
-    .dbg_mem_wr   (dbg_mem_wr),    // Debug unit memory write
-    .dmem_dout    (dmem_dout),     // Data Memory data output
-    .eu_mab       (eu_mab[15:1]),  // Execution Unit Memory address bus
-    .eu_mb_en     (eu_mb_en),      // Execution Unit Memory bus enable
-    .eu_mb_wr     (eu_mb_wr),      // Execution Unit Memory bus write transfer
-    .eu_mdb_out   (eu_mdb_out),    // Execution Unit Memory data bus output
-    .fe_mab       (fe_mab[15:1]),  // Frontend Memory address bus
-    .fe_mb_en     (fe_mb_en),      // Frontend Memory bus enable
-    .mclk         (mclk),          // Main system clock
-    .per_dout     (per_dout_or),   // Peripheral data output
-    .pmem_dout    (pmem_dout),     // Program Memory data output
-    .puc_rst      (puc_rst),       // Main system reset
-    .scan_enable  (scan_enable)    // Scan enable (active during scan shifting)
-);
-
-
-//=============================================================================
-// 6)  SPECIAL FUNCTION REGISTERS
-//=============================================================================
-omsp_sfr sfr_0 (
-
-// OUTPUTs
-    .cpu_id       (cpu_id),        // CPU ID
-    .nmi_pnd      (nmi_pnd),       // NMI Pending
-    .nmi_wkup     (nmi_wkup),      // NMI Wakeup
-    .per_dout     (per_dout_sfr),  // Peripheral data output
-    .wdtie        (wdtie),         // Watchdog-timer interrupt enable
-    .wdtifg_sw_clr(wdtifg_sw_clr), // Watchdog-timer interrupt flag software clear
-    .wdtifg_sw_set(wdtifg_sw_set), // Watchdog-timer interrupt flag software set
-			     
-// INPUTs
-    .cpu_nr_inst  (cpu_nr_inst),   // Current oMSP instance number
-    .cpu_nr_total (cpu_nr_total),  // Total number of oMSP instances-1
-    .mclk         (mclk),          // Main system clock
-    .nmi          (nmi),           // Non-maskable interrupt (asynchronous)
-    .nmi_acc      (nmi_acc),       // Non-Maskable interrupt request accepted
-    .per_addr     (per_addr),      // Peripheral address
-    .per_din      (per_din),       // Peripheral data input
-    .per_en       (per_en),        // Peripheral enable (high active)
-    .per_we       (per_we),        // Peripheral write enable (high active)
-    .puc_rst      (puc_rst),       // Main system reset
-    .scan_mode    (scan_mode),     // Scan mode
-    .wdtifg       (wdtifg),        // Watchdog-timer interrupt flag
-    .wdtnmies     (wdtnmies)       // Watchdog-timer NMI edge selection
-);
-
-
-//=============================================================================
-// 7)  WATCHDOG TIMER
-//=============================================================================
-omsp_watchdog watchdog_0 (
-
-// OUTPUTs
-    .per_dout       (per_dout_wdog), // Peripheral data output
-    .wdt_irq        (wdt_irq),       // Watchdog-timer interrupt
-    .wdt_reset      (wdt_reset),     // Watchdog-timer reset
-    .wdt_wkup       (wdt_wkup),      // Watchdog Wakeup
-    .wdtifg         (wdtifg),        // Watchdog-timer interrupt flag
-    .wdtnmies       (wdtnmies),      // Watchdog-timer NMI edge selection
-			     
-// INPUTs
-    .aclk           (aclk),          // ACLK
-    .aclk_en        (aclk_en),       // ACLK enable
-    .dbg_freeze     (dbg_freeze),    // Freeze Watchdog counter
-    .mclk           (mclk),          // Main system clock
-    .per_addr       (per_addr),      // Peripheral address
-    .per_din        (per_din),       // Peripheral data input
-    .per_en         (per_en),        // Peripheral enable (high active)
-    .per_we         (per_we),        // Peripheral write enable (high active)
-    .por            (por),           // Power-on reset
-    .puc_rst        (puc_rst),       // Main system reset
-    .scan_enable    (scan_enable),   // Scan enable (active during scan shifting)
-    .scan_mode      (scan_mode),     // Scan mode
-    .smclk          (smclk),         // SMCLK
-    .smclk_en       (smclk_en),      // SMCLK enable
-    .wdtie          (wdtie),         // Watchdog-timer interrupt enable
-    .wdtifg_irq_clr (irq_acc[10]),   // Clear Watchdog-timer interrupt flag
-    .wdtifg_sw_clr  (wdtifg_sw_clr), // Watchdog-timer interrupt flag software clear
-    .wdtifg_sw_set  (wdtifg_sw_set)  // Watchdog-timer interrupt flag software set
-);
-
-
-//=============================================================================
-// 8)  HARDWARE MULTIPLIER
-//=============================================================================
-omsp_multiplier multiplier_0 (
-
-// OUTPUTs
-    .per_dout     (per_dout_mpy),  // Peripheral data output
-			     
-// INPUTs
-    .mclk         (mclk),          // Main system clock
-    .per_addr     (per_addr),      // Peripheral address
-    .per_din      (per_din),       // Peripheral data input
-    .per_en       (per_en),        // Peripheral enable (high active)
-    .per_we       (per_we),        // Peripheral write enable (high active)
-    .puc_rst      (puc_rst),       // Main system reset
-    .scan_enable  (scan_enable)    // Scan enable (active during scan shifting)
-);
-   
-//=============================================================================
-// 9)  PERIPHERALS' OUTPUT BUS
-//=============================================================================
-
-assign  per_dout_or  =  per_dout      |
-                        per_dout_clk  |
-                        per_dout_sfr  |
-                        per_dout_wdog |
-                        per_dout_mpy;
-
-   
-//=============================================================================
-// 10)  DEBUG INTERFACE
-//=============================================================================
-
-omsp_dbg dbg_0 (
-
-// OUTPUTs
-    .dbg_cpu_reset     (dbg_cpu_reset),     // Reset CPU from debug interface
-    .dbg_freeze        (dbg_freeze),        // Freeze peripherals
-    .dbg_halt_cmd      (dbg_halt_cmd),      // Halt CPU command
-    .dbg_i2c_sda_out   (dbg_i2c_sda_out),   // Debug interface: I2C SDA OUT
-    .dbg_mem_addr      (dbg_mem_addr),      // Debug address for rd/wr access
-    .dbg_mem_dout      (dbg_mem_dout),      // Debug unit data output
-    .dbg_mem_en        (dbg_mem_en),        // Debug unit memory enable
-    .dbg_mem_wr        (dbg_mem_wr),        // Debug unit memory write
-    .dbg_reg_wr        (dbg_reg_wr),        // Debug unit CPU register write
-    .dbg_uart_txd      (dbg_uart_txd),      // Debug interface: UART TXD
-			     
-// INPUTs
-    .cpu_en_s          (cpu_en_s),          // Enable CPU code execution (synchronous)
-    .cpu_id            (cpu_id),            // CPU ID
-    .cpu_nr_inst       (cpu_nr_inst),       // Current oMSP instance number
-    .cpu_nr_total      (cpu_nr_total),      // Total number of oMSP instances-1
-    .dbg_clk           (dbg_clk),           // Debug unit clock
-    .dbg_en_s          (dbg_en_s),          // Debug interface enable (synchronous)
-    .dbg_halt_st       (dbg_halt_st),       // Halt/Run status from CPU
-    .dbg_i2c_addr      (dbg_i2c_addr),      // Debug interface: I2C Address
-    .dbg_i2c_broadcast (dbg_i2c_broadcast), // Debug interface: I2C Broadcast Address (for multicore systems)
-    .dbg_i2c_scl       (dbg_i2c_scl),       // Debug interface: I2C SCL
-    .dbg_i2c_sda_in    (dbg_i2c_sda_in),    // Debug interface: I2C SDA IN
-    .dbg_mem_din       (dbg_mem_din),       // Debug unit Memory data input
-    .dbg_reg_din       (dbg_reg_din),       // Debug unit CPU register data input
-    .dbg_rst           (dbg_rst),           // Debug unit reset
-    .dbg_uart_rxd      (dbg_uart_rxd),      // Debug interface: UART RXD (asynchronous)
-    .decode_noirq      (decode_noirq),      // Frontend decode instruction
-    .eu_mab            (eu_mab),            // Execution-Unit Memory address bus
-    .eu_mb_en          (eu_mb_en),          // Execution-Unit Memory bus enable
-    .eu_mb_wr          (eu_mb_wr),          // Execution-Unit Memory bus write transfer
-    .fe_mdb_in         (fe_mdb_in),         // Frontend Memory data bus input
-    .pc                (pc),                // Program counter
-    .puc_pnd_set       (puc_pnd_set)        // PUC pending set for the serial debug interface
-);
-
-
-   
-endmodule // openMSP430
-
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-
-// Data Memory sizes
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include Debug interface
-
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-
-// Include/Exclude Watchdog timer
-
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-
-// Input synchronizers
-
-
-// Peripheral Memory Space:
-
-
-// Let the CPU break after a PUC occurrence by default
-
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-
-
-// Data Memory Size
-
-
-
-// Peripheral Memory Size
-
-
-
-// Data Memory Base Adresses
-
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-
-
-
-// Instructions type
-
-
-
-
-// Single-operand arithmetic
-
-
-
-
-
-
-
-
-
-// Conditional jump
-
-
-
-
-
-
-
-
-
-// Two-operand arithmetic
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Addressing modes
-
-
-
-
-
-
-
-
-
-// Instruction state machine
-
-
-
-
-
-
-
-// Execution state machine
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// ALU control signals
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Debug interface
-
-
-
-
-// Debug interface CPU_CTL register
-
-
-
-
-
-
-
-
-// Debug interface CPU_STAT register
-
-
-
-
-
-
-// Debug interface BRKx_CTL register
-
-
-
-
-
-
-
-// Basic clock module: BCSCTL1 Control Register
-
-
-// Basic clock module: BCSCTL2 Control Register
-
-
-
-
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-
-// Debug interface: Software breakpoint opcode
-
-
-// Debug UART interface auto data synchronization
-
-
-// Debug UART interface data rate
-
-
-
-
-// Debug interface input synchronizer
-
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-
-// Counter width for the debug interface UART
-
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/openMSP430_defines.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/openMSP430_defines.v
deleted file mode 100644
index c3f098c..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/openMSP430_defines.v
+++ /dev/null
@@ -1,594 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
\ No newline at end of file
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/openMSP430_undefines.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/openMSP430_undefines.v
deleted file mode 100644
index 41c3220..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/rtl/openMSP430_undefines.v
+++ /dev/null
@@ -1,201 +0,0 @@
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/sim/bench.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/sim/bench.v
deleted file mode 100644
index 4060008..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/sim/bench.v
+++ /dev/null
@@ -1,939 +0,0 @@
-
-`timescale 1ns/1ps
-
-// for memory layout
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_defines.v
-// 
-// *Module Description:
-//                      openMSP430 Configuration file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 180 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2013-02-25 22:23:18 +0100 (Mon, 25 Feb 2013) $
-//----------------------------------------------------------------------------
-//`define OMSP_NO_INCLUDE
-//----------------------------------------------------------------------------
-// Copyright (C) 2009 , Olivier Girard
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//     * Neither the name of the authors nor the names of its contributors
-//       may be used to endorse or promote products derived from this software
-//       without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
-// THE POSSIBILITY OF SUCH DAMAGE
-//
-//----------------------------------------------------------------------------
-// 
-// *File Name: openMSP430_undefines.v
-// 
-// *Module Description:
-//                      openMSP430 Verilog `undef file
-//
-// *Author(s):
-//              - Olivier Girard,    olgirard@gmail.com
-//
-//----------------------------------------------------------------------------
-// $Rev: 23 $
-// $LastChangedBy: olivier.girard $
-// $LastChangedDate: 2009-08-30 18:39:26 +0200 (Sun, 30 Aug 2009) $
-//----------------------------------------------------------------------------
-
-//----------------------------------------------------------------------------
-// BASIC SYSTEM CONFIGURATION
-//----------------------------------------------------------------------------
-
-// Program Memory sizes
-
-// Data Memory sizes
-
-// Include/Exclude Hardware Multiplier
-
-// Include Debug interface
-
-
-//----------------------------------------------------------------------------
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//----------------------------------------------------------------------------
-
-// Custom user version number
-
-// Include/Exclude Watchdog timer
-
-// Include/Exclude Non-Maskable-Interrupt support
-
-// Input synchronizers
-
-// Peripheral Memory Space:
-
-// Let the CPU break after a PUC occurrence by default
-
-
-//----------------------------------------------------------------------------
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// Serial Debug interface protocol
-
-// Enable the I2C broadcast address
-
-// Number of hardware breakpoint units
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Custom Program/Data and Peripheral Memory Spaces
-
-
-
-
-
-
-
-// ASIC version
-
-
-//----------------------------------------------------------------------------
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//----------------------------------------------------------------------------
-
-// ASIC/FPGA-like clocking
-
-// Fine grained clock gating
-
-// LFXT clock domain
-
-// MCLK: Clock Mux
-
-// SMCLK: Clock Mux
-
-// WATCHDOG: Clock Mux
-
-// MCLK: Clock divider
-
-// SMCLK: Clock divider (/1/2/4/8)
-
-// ACLK: Clock divider (/1/2/4/8)
-
-// LOW POWER MODE: CPUOFF
-
-// LOW POWER MODE: SCG0
-
-// LOW POWER MODE: SCG1
-
-// LOW POWER MODE: OSCOFF
-
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-// Program Memory Size
-
-// Data Memory Size
-
-// Peripheral Memory Size
-
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-
-// Debug UART interface data rate
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
-
-// Counter width for the debug interface UART
-
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-
-//============================================================================
-//============================================================================
-// BASIC SYSTEM CONFIGURATION
-//============================================================================
-//============================================================================
-//
-// Note: the sum of program, data and peripheral memory spaces must not
-//      exceed 64 kB
-//
-
-// Program Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define PMEM_SIZE_CUSTOM
-//`define PMEM_SIZE_59_KB
-//`define PMEM_SIZE_55_KB
-//`define PMEM_SIZE_54_KB
-//`define PMEM_SIZE_51_KB
-//`define PMEM_SIZE_48_KB
-//`define PMEM_SIZE_41_KB
-//`define PMEM_SIZE_32_KB
-//`define PMEM_SIZE_24_KB
-//`define PMEM_SIZE_16_KB
-//`define PMEM_SIZE_12_KB
-//`define PMEM_SIZE_8_KB
-//`define PMEM_SIZE_4_KB
-//`define PMEM_SIZE_1_KB
-
-
-// Data Memory Size:
-//                     Uncomment the required memory size
-//-------------------------------------------------------
-//`define DMEM_SIZE_CUSTOM
-//`define DMEM_SIZE_32_KB
-//`define DMEM_SIZE_24_KB
-//`define DMEM_SIZE_16_KB
-//`define DMEM_SIZE_10_KB
-//`define DMEM_SIZE_8_KB
-//`define DMEM_SIZE_5_KB
-//`define DMEM_SIZE_4_KB
-//`define DMEM_SIZE_2p5_KB
-//`define DMEM_SIZE_2_KB
-//`define DMEM_SIZE_1_KB
-//`define DMEM_SIZE_512_B
-//`define DMEM_SIZE_256_B
-
-
-// Include/Exclude Hardware Multiplier
-
-
-// Include/Exclude Serial Debug interface
-
-
-//============================================================================
-//============================================================================
-// ADVANCED SYSTEM CONFIGURATION (FOR EXPERIENCED USERS)
-//============================================================================
-//============================================================================
-
-//-------------------------------------------------------
-// Custom user version number
-//-------------------------------------------------------
-// This 5 bit field can be freely used in order to allow
-// custom identification of the system through the debug
-// interface.
-// (see CPU_ID.USER_VERSION field in the documentation)
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Watchdog timer
-//-------------------------------------------------------
-// When excluded, the following functionality will be
-// lost:
-//        - Watchog (both interval and watchdog modes)
-//        - NMI interrupt edge selection
-//        - Possibility to generate a software PUC reset
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Include/Exclude Non-Maskable-Interrupt support
-//-------------------------------------------------------
-
-
-//-------------------------------------------------------
-// Input synchronizers
-//-------------------------------------------------------
-// In some cases, the asynchronous input ports might
-// already be synchronized externally.
-// If an extensive CDC design review showed that this
-// is really the case,  the individual synchronizers
-// can be disabled with the following defines.
-//
-// Notes:
-//        - all three signals are all sampled in the MCLK domain
-//
-//        - the dbg_en signal reset the debug interface
-//         when 0. Therefore make sure it is glitch free.
-//
-//-------------------------------------------------------
-//`define SYNC_CPU_EN
-//`define SYNC_DBG_EN
-
-
-//-------------------------------------------------------
-// Peripheral Memory Space:
-//-------------------------------------------------------
-// The original MSP430 architecture map the peripherals
-// from 0x0000 to 0x01FF (i.e. 512B of the memory space).
-// The following defines allow you to expand this space
-// up to 32 kB (i.e. from 0x0000 to 0x7fff).
-// As a consequence, the data memory mapping will be
-// shifted up and a custom linker script will therefore
-// be required by the GCC compiler.
-//-------------------------------------------------------
-//`define PER_SIZE_CUSTOM
-//`define PER_SIZE_32_KB
-//`define PER_SIZE_16_KB
-//`define PER_SIZE_8_KB
-//`define PER_SIZE_4_KB
-//`define PER_SIZE_2_KB
-//`define PER_SIZE_1_KB
-
-
-//-------------------------------------------------------
-// Defines the debugger CPU_CTL.RST_BRK_EN reset value
-// (CPU break on PUC reset)
-//-------------------------------------------------------
-// When defined, the CPU will automatically break after
-// a PUC occurrence by default. This is typically useful
-// when the program memory can only be initialized through
-// the serial debug interface.
-//-------------------------------------------------------
-
-
-//============================================================================
-//============================================================================
-// EXPERT SYSTEM CONFIGURATION ( !!!! EXPERTS ONLY !!!! )
-//============================================================================
-//============================================================================
-//
-// IMPORTANT NOTE:  Please update following configuration options ONLY if
-//                 you have a good reason to do so... and if you know what
-//                 you are doing :-P
-//
-//============================================================================
-
-//-------------------------------------------------------
-// Select serial debug interface protocol
-//-------------------------------------------------------
-//    DBG_UART -> Enable UART (8N1) debug interface
-//    DBG_I2C  -> Enable I2C debug interface
-//-------------------------------------------------------
-//`define DBG_I2C
-
-
-//-------------------------------------------------------
-// Enable the I2C broadcast address
-//-------------------------------------------------------
-// For multicore systems, a common I2C broadcast address
-// can be given to all oMSP cores in order to
-// synchronously RESET, START, STOP, or STEP all CPUs
-// at once with a single I2C command.
-// If you have a single openMSP430 in your system,
-// this option can stay commented-out.
-//-------------------------------------------------------
-//`define DBG_I2C_BROADCAST
-
-
-//-------------------------------------------------------
-// Number of hardware breakpoint/watchpoint units
-// (each unit contains two hardware addresses available
-// for breakpoints or watchpoints):
-//   - DBG_HWBRK_0 -> Include hardware breakpoints unit 0
-//   - DBG_HWBRK_1 -> Include hardware breakpoints unit 1
-//   - DBG_HWBRK_2 -> Include hardware breakpoints unit 2
-//   - DBG_HWBRK_3 -> Include hardware breakpoints unit 3
-//-------------------------------------------------------
-// Please keep in mind that hardware breakpoints only
-// make sense whenever the program memory is not an SRAM
-// (i.e. Flash/OTP/ROM/...) or when you are interested
-// in data breakpoints.
-//-------------------------------------------------------
-//`define  DBG_HWBRK_0
-//`define  DBG_HWBRK_1
-//`define  DBG_HWBRK_2
-//`define  DBG_HWBRK_3
-
-
-//-------------------------------------------------------
-// Enable/Disable the hardware breakpoint RANGE mode
-//-------------------------------------------------------
-// When enabled this feature allows the hardware breakpoint
-// units to stop the cpu whenever an instruction or data
-// access lays within an address range.
-// Note that this feature is not supported by GDB.
-//-------------------------------------------------------
-//`define DBG_HWBRK_RANGE
-
-
-//-------------------------------------------------------
-// Custom Program/Data and Peripheral Memory Spaces
-//-------------------------------------------------------
-// The following values are valid only if the
-// corresponding *_SIZE_CUSTOM defines are uncommented:
-//
-//  - *_SIZE   : size of the section in bytes.
-//  - *_AWIDTH : address port width, this value must allow
-//               to address all WORDS of the section
-//               (i.e. the *_SIZE divided by 2)
-//-------------------------------------------------------
-
-// Custom Program memory (enabled with PMEM_SIZE_CUSTOM)
-
-// Custom Data memory    (enabled with DMEM_SIZE_CUSTOM)
-
-// Custom Peripheral memory  (enabled with PER_SIZE_CUSTOM)
-
-
-//-------------------------------------------------------
-// ASIC version
-//-------------------------------------------------------
-// When uncommented, this define will enable the
-// ASIC system configuration section (see below) and
-// will activate scan support for production test.
-//
-// WARNING: if you target an FPGA, leave this define
-//          commented.
-//-------------------------------------------------------
-//`define ASIC
-
-
-//============================================================================
-//============================================================================
-// ASIC SYSTEM CONFIGURATION ( !!!! EXPERTS/PROFESSIONALS ONLY !!!! )
-//============================================================================
-//============================================================================
-
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//=====        SYSTEM CONSTANTS --- !!!!!!!! DO NOT EDIT !!!!!!!!      =====//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-//==========================================================================//
-
-//
-// PROGRAM, DATA & PERIPHERAL MEMORY CONFIGURATION
-//==================================================
-
-// Program Memory Size
-    
-// Data Memory Size
-    
-// Peripheral Memory Size
-    
-// Data Memory Base Adresses
-
-// Program & Data Memory most significant address bit (for 16 bit words)
-
-//
-// STATES, REGISTER FIELDS, ...
-//======================================
-
-// Instructions type
-
-// Single-operand arithmetic
-
-// Conditional jump
-
-// Two-operand arithmetic
-
-// Addressing modes
-
-// Instruction state machine
-
-// Execution state machine
-// (swapped E_IRQ_0 and E_IRQ_2 values to suppress glitch generation warning from lint tool)
-
-// ALU control signals
-
-// Debug interface
-
-// Debug interface CPU_CTL register
-
-// Debug interface CPU_STAT register
-
-// Debug interface BRKx_CTL register
-
-// Basic clock module: BCSCTL1 Control Register
-
-// Basic clock module: BCSCTL2 Control Register
-
-// MCLK Clock gate
-
-// SMCLK Clock gate
-
-//
-// DEBUG INTERFACE EXTRA CONFIGURATION
-//======================================
-
-// Debug interface: CPU version
-
-// Debug interface: Software breakpoint opcode
-
-// Debug UART interface auto data synchronization
-// If the following define is commented out, then
-// the DBG_UART_BAUD and DBG_DCO_FREQ need to be properly
-// defined.
-
-// Debug UART interface data rate
-//      In order to properly setup the UART debug interface, you
-//      need to specify the DCO_CLK frequency (DBG_DCO_FREQ) and
-//      the chosen BAUD rate from the UART interface.
-//
-//`define DBG_UART_BAUD    9600
-//`define DBG_UART_BAUD   19200
-//`define DBG_UART_BAUD   38400
-//`define DBG_UART_BAUD   57600
-//`define DBG_UART_BAUD  115200
-//`define DBG_UART_BAUD  230400
-//`define DBG_UART_BAUD  460800
-//`define DBG_UART_BAUD  576000
-//`define DBG_UART_BAUD  921600
-
-// Debug interface input synchronizer
-
-// Enable/Disable the hardware breakpoint RANGE mode
- 
-// Counter width for the debug interface UART
-
-// Check configuration
-     
-//
-// MULTIPLIER CONFIGURATION
-//======================================
-
-// If uncommented, the following define selects
-// the 16x16 multiplier (1 cycle) instead of the
-// default 16x8 multplier (2 cycles)
-//`define MPY_16x16
-  
-//======================================
-// CONFIGURATION CHECKS
-//======================================
-        
-module testbench;
-
-// UUT OUTPUTs
-//============
-wire               aclk;              // ASIC ONLY: ACLK
-wire               aclk_en;           // FPGA ONLY: ACLK enable
-wire               dbg_freeze;        // Freeze peripherals
-wire               dbg_i2c_sda_out;   // Debug interface: I2C SDA OUT
-wire               dbg_uart_txd;      // Debug interface: UART TXD
-wire               dco_enable;        // ASIC ONLY: Fast oscillator enable
-wire               dco_wkup;          // ASIC ONLY: Fast oscillator wake-up (asynchronous)
-wire [6-1:0] dmem_addr;         // Data Memory address
-wire               dmem_cen;          // Data Memory chip enable (low active)
-wire        [15:0] dmem_din;          // Data Memory data input
-wire         [1:0] dmem_wen;          // Data Memory write enable (low active)
-wire        [13:0] irq_acc;           // Interrupt request accepted (one-hot signal)
-wire               lfxt_enable;       // ASIC ONLY: Low frequency oscillator enable
-wire               lfxt_wkup;         // ASIC ONLY: Low frequency oscillator wake-up (asynchronous)
-wire               mclk;              // Main system clock
-wire        [13:0] per_addr;          // Peripheral address
-wire        [15:0] per_din;           // Peripheral data input
-wire         [1:0] per_we;            // Peripheral write enable (high active)
-wire               per_en;            // Peripheral enable (high active)
-wire [10-1:0] pmem_addr;         // Program Memory address
-wire               pmem_cen;          // Program Memory chip enable (low active)
-wire        [15:0] pmem_din;          // Program Memory data input (optional)
-wire         [1:0] pmem_wen;          // Program Memory write enable (low active) (optional)
-wire               puc_rst;           // Main system reset
-wire               smclk;             // ASIC ONLY: SMCLK
-wire               smclk_en;          // FPGA ONLY: SMCLK enable
-
-
-// UUT INPUTs
-//===========
-wire                cpu_en;            // Enable CPU code execution (asynchronous and non-glitchy)
-wire                dbg_en;            // Debug interface enable (asynchronous and non-glitchy)
-wire          [6:0] dbg_i2c_addr;      // Debug interface: I2C Address
-wire          [6:0] dbg_i2c_broadcast; // Debug interface: I2C Broadcast Address (for multicore systems)
-wire                dbg_i2c_scl;       // Debug interface: I2C SCL
-wire                dbg_i2c_sda_in;    // Debug interface: I2C SDA IN
-wire                dbg_uart_rxd;      // Debug interface: UART RXD (asynchronous)
-wire                dco_clk;           // Fast oscillator (fast clock)
-reg          [15:0] dmem_dout;         // Data Memory data output
-wire  	     [13:0] irq;               // Maskable interrupts
-wire                lfxt_clk;          // Low frequency oscillator (typ 32kHz)
-wire  	            nmi;               // Non-maskable interrupt (asynchronous and non-glitchy)
-reg          [15:0] per_dout;          // Peripheral data output
-reg          [15:0] pmem_dout;         // Program Memory data output
-wire                reset_n;           // Reset Pin (active low, asynchronous and non-glitchy)
-wire                scan_enable;       // ASIC ONLY: Scan enable (active during scan shifting)
-wire                scan_mode;         // ASIC ONLY: Scan mode
-wire                wkup;              // ASIC ONLY: System Wake-up (asynchronous and non-glitchy)
-
-openMSP430 UUT (
-
-// OUTPUTs
-    aclk,                               // ASIC ONLY: ACLK
-    aclk_en,                            // FPGA ONLY: ACLK enable
-    dbg_freeze,                         // Freeze peripherals
-    dbg_i2c_sda_out,                    // Debug interface: I2C SDA OUT
-    dbg_uart_txd,                       // Debug interface: UART TXD
-    dco_enable,                         // ASIC ONLY: Fast oscillator enable
-    dco_wkup,                           // ASIC ONLY: Fast oscillator wake-up (asynchronous)
-    dmem_addr,                          // Data Memory address
-    dmem_cen,                           // Data Memory chip enable (low active)
-    dmem_din,                           // Data Memory data input
-    dmem_wen,                           // Data Memory write enable (low active)
-    irq_acc,                            // Interrupt request accepted (one-hot signal)
-    lfxt_enable,                        // ASIC ONLY: Low frequency oscillator enable
-    lfxt_wkup,                          // ASIC ONLY: Low frequency oscillator wake-up (asynchronous)
-    mclk,                               // Main system clock
-    per_addr,                           // Peripheral address
-    per_din,                            // Peripheral data input
-    per_we,                             // Peripheral write enable (high active)
-    per_en,                             // Peripheral enable (high active)
-    pmem_addr,                          // Program Memory address
-    pmem_cen,                           // Program Memory chip enable (low active)
-    pmem_din,                           // Program Memory data input (optional)
-    pmem_wen,                           // Program Memory write enable (low active) (optional)
-    puc_rst,                            // Main system reset
-    smclk,                              // ASIC ONLY: SMCLK
-    smclk_en,                           // FPGA ONLY: SMCLK enable
-
-// INPUTs
-    cpu_en,                             // Enable CPU code execution (asynchronous and non-glitchy)
-    dbg_en,                             // Debug interface enable (asynchronous and non-glitchy)
-    dbg_i2c_addr,                       // Debug interface: I2C Address
-    dbg_i2c_broadcast,                  // Debug interface: I2C Broadcast Address (for multicore systems)
-    dbg_i2c_scl,                        // Debug interface: I2C SCL
-    dbg_i2c_sda_in,                     // Debug interface: I2C SDA IN
-    dbg_uart_rxd,                       // Debug interface: UART RXD (asynchronous)
-    dco_clk,                            // Fast oscillator (fast clock)
-    dmem_dout,                          // Data Memory data output
-    irq,                                // Maskable interrupts
-    lfxt_clk,                           // Low frequency oscillator (typ 32kHz)
-    nmi,                                // Non-maskable interrupt (asynchronous)
-    per_dout,                           // Peripheral data output
-    pmem_dout,                          // Program Memory data output
-    reset_n,                            // Reset Pin (low active, asynchronous and non-glitchy)
-    scan_enable,                        // ASIC ONLY: Scan enable (active during scan shifting)
-    scan_mode,                          // ASIC ONLY: Scan mode
-    wkup                                // ASIC ONLY: System Wake-up (asynchronous and non-glitchy)
-);
-
-// -----------------------------------------------------------------------------------
-
-assign cpu_en = 1, dbg_en = 0;
-
-reg clk, rst;
-integer cycles;
-initial begin
-	clk <= 1;
-	rst <= 0;
-	cycles = 0;
-	while (cycles < 8) begin
-		#50; clk <= ~clk;
-		cycles = cycles + 1;
-		#50; clk <= ~clk;
-	end
-	rst <= #20 1;
-	forever begin
-		#50; clk <= ~clk;
-		cycles = cycles + 1;
-		#50; clk <= ~clk;
-		if (cycles == 20000)
-			$finish;
-	end
-end
-
-assign dco_clk = clk;
-assign lfxt_clk = 0;
-assign irq = 0, nmi = 0;
-assign reset_n = rst;
-assign scan_enable = 0;
-assign scan_mode = 0;
-assign wkup = 0;
-
-assign dbg_i2c_addr = 45;
-assign dbg_i2c_broadcast = 67;
-assign dbg_i2c_scl = 0;
-assign dbg_i2c_sda_in = 0;
-assign dbg_uart_rxd = 0;
-
-// -----------------------------------------------------------------------------------
-
-reg [15:0] addr;
-
-reg [15:8] dmem_hi [128/2-1:0];
-reg [ 7:0] dmem_lo [128/2-1:0];
-reg [15:0] pmem    [2048/2-1:0];
-
-integer output_idx;
-reg [15:0] output_buf [1023:0];
-event output_eof;
-
-integer i;
-initial begin
-	for (i = 0; i < 128/2; i=i+1) begin
-		dmem_hi[i] = 0;
-		dmem_lo[i] = 0;
-	end
-	pmem[ 512] = 16'h4031;
-pmem[ 513] = 16'h0280;
-pmem[ 514] = 16'h4215;
-pmem[ 515] = 16'h0120;
-pmem[ 516] = 16'hf375;
-pmem[ 517] = 16'hd035;
-pmem[ 518] = 16'h5a08;
-pmem[ 519] = 16'h403f;
-pmem[ 520] = 16'h0000;
-pmem[ 521] = 16'h930f;
-pmem[ 522] = 16'h2407;
-pmem[ 523] = 16'h4582;
-pmem[ 524] = 16'h0120;
-pmem[ 525] = 16'h832f;
-pmem[ 526] = 16'h4f9f;
-pmem[ 527] = 16'hfccc;
-pmem[ 528] = 16'h0200;
-pmem[ 529] = 16'h23f9;
-pmem[ 530] = 16'h403f;
-pmem[ 531] = 16'h0008;
-pmem[ 532] = 16'h930f;
-pmem[ 533] = 16'h2406;
-pmem[ 534] = 16'h4582;
-pmem[ 535] = 16'h0120;
-pmem[ 536] = 16'h831f;
-pmem[ 537] = 16'h43cf;
-pmem[ 538] = 16'h0200;
-pmem[ 539] = 16'h23fa;
-pmem[ 540] = 16'h43a2;
-pmem[ 541] = 16'h0100;
-pmem[ 542] = 16'h403c;
-pmem[ 543] = 16'h0003;
-pmem[ 544] = 16'h430d;
-pmem[ 545] = 16'h431a;
-pmem[ 546] = 16'h4037;
-pmem[ 547] = 16'h003f;
-pmem[ 548] = 16'h4d0f;
-pmem[ 549] = 16'hf03f;
-pmem[ 550] = 16'h000f;
-pmem[ 551] = 16'h4a0e;
-pmem[ 552] = 16'h930f;
-pmem[ 553] = 16'h2403;
-pmem[ 554] = 16'h5e0e;
-pmem[ 555] = 16'h831f;
-pmem[ 556] = 16'h23fd;
-pmem[ 557] = 16'h4d0f;
-pmem[ 558] = 16'hc312;
-pmem[ 559] = 16'h100f;
-pmem[ 560] = 16'h110f;
-pmem[ 561] = 16'h110f;
-pmem[ 562] = 16'hf03f;
-pmem[ 563] = 16'h7ffe;
-pmem[ 564] = 16'hff1e;
-pmem[ 565] = 16'h0200;
-pmem[ 566] = 16'h2021;
-pmem[ 567] = 16'h4c82;
-pmem[ 568] = 16'h0100;
-pmem[ 569] = 16'h4c0b;
-pmem[ 570] = 16'h5b0b;
-pmem[ 571] = 16'h4319;
-pmem[ 572] = 16'hb31b;
-pmem[ 573] = 16'h2418;
-pmem[ 574] = 16'h4b0e;
-pmem[ 575] = 16'h503e;
-pmem[ 576] = 16'hfffd;
-pmem[ 577] = 16'hc312;
-pmem[ 578] = 16'h100e;
-pmem[ 579] = 16'h9e07;
-pmem[ 580] = 16'h2813;
-pmem[ 581] = 16'h4e0f;
-pmem[ 582] = 16'hc312;
-pmem[ 583] = 16'h100f;
-pmem[ 584] = 16'h110f;
-pmem[ 585] = 16'h110f;
-pmem[ 586] = 16'hf03f;
-pmem[ 587] = 16'h3ffe;
-pmem[ 588] = 16'hf03e;
-pmem[ 589] = 16'h000f;
-pmem[ 590] = 16'h4908;
-pmem[ 591] = 16'h930e;
-pmem[ 592] = 16'h2403;
-pmem[ 593] = 16'h5808;
-pmem[ 594] = 16'h831e;
-pmem[ 595] = 16'h23fd;
-pmem[ 596] = 16'hd88f;
-pmem[ 597] = 16'h0200;
-pmem[ 598] = 16'h5c0b;
-pmem[ 599] = 16'h3fe4;
-pmem[ 600] = 16'h531d;
-pmem[ 601] = 16'h532c;
-pmem[ 602] = 16'h903d;
-pmem[ 603] = 16'h0040;
-pmem[ 604] = 16'h23c7;
-pmem[ 605] = 16'h4382;
-pmem[ 606] = 16'h0100;
-pmem[ 607] = 16'h430f;
-pmem[ 608] = 16'hd032;
-pmem[ 609] = 16'h00f0;
-pmem[ 610] = 16'h3ffd;
-pmem[ 611] = 16'h4030;
-pmem[ 612] = 16'hfcca;
-pmem[ 613] = 16'h1300;
-pmem[1008] = 16'hfcc6;
-pmem[1009] = 16'hfcc6;
-pmem[1010] = 16'hfcc6;
-pmem[1011] = 16'hfcc6;
-pmem[1012] = 16'hfcc6;
-pmem[1013] = 16'hfcc6;
-pmem[1014] = 16'hfcc6;
-pmem[1015] = 16'hfcc6;
-pmem[1016] = 16'hfcc6;
-pmem[1017] = 16'hfcc6;
-pmem[1018] = 16'hfcc6;
-pmem[1019] = 16'hfcc6;
-pmem[1020] = 16'hfcc6;
-pmem[1021] = 16'hfcc6;
-pmem[1022] = 16'hfcc6;
-pmem[1023] = 16'hfc00;
-	output_idx = 0;
-end
-
-always @(posedge mclk) begin
-	dmem_dout <= 'bx;
-	pmem_dout <= 'bx;
-
-	if (~dmem_cen && &dmem_wen) begin
-		addr = 2*dmem_addr + 512;
-		$display("+LOG+ %t -- DR  @%04x %x%x", $time, addr, dmem_hi[dmem_addr], dmem_lo[dmem_addr]);
-		dmem_dout[15:8] <= dmem_hi[dmem_addr];
-		dmem_dout[ 7:0] <= dmem_lo[dmem_addr];
-	end
-
-	if (~pmem_cen) begin
-		addr = 2*pmem_addr - 2048;
-		$display("+LOG+ %t -- PR  @%04x %x", $time, addr, pmem[pmem_addr]);
-		pmem_dout <= pmem[pmem_addr];
-	end
-
-	if (~dmem_cen && ~dmem_wen) begin
-		addr = 2*dmem_addr + 512;
-		$display("+LOG+ %t -- DW  @%04x %x%x", $time, addr, ~dmem_wen[1] ? dmem_din[15:8] : 8'hzz, ~dmem_wen[0] ? dmem_din[ 7:0] : 8'hzz);
-		if (~dmem_wen[1])
-			dmem_hi[dmem_addr] <= dmem_din[15:8];
-		if (~dmem_wen[0])
-			dmem_lo[dmem_addr] <= dmem_din[ 7:0];
-	end
-end
-
-always @(posedge mclk) begin
-	per_dout <= 0;
-
-	if (per_en && per_we) begin
-		addr = 2*per_addr;
-		$display("+LOG+ %t -- PER @%04x %x%x  <---", $time, addr, per_we[1] ? per_din[15:8] : 8'hzz, per_we[0] ? per_din[ 7:0] : 8'hzz);
-
-		if (addr == 16'h0100) begin
-			if (per_din == 0) begin
-				-> output_eof;
-			end else begin
-				output_buf[output_idx] = per_din;
-				output_idx = output_idx + 1;
-			end
-		end
-	end
-end
-
-always @(output_eof) begin
-	#1001;
-	for (i = 0; i < output_idx; i = i + 1) begin
-		$display("+OUT+ %t %d", $time, output_buf[i]);
-	end
-	$finish;
-end
-
-initial begin
-	// $dumpfile("bench.vcd");
-	// $dumpvars(0, testbench);
-end
-
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/sim/sieve.v b/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/sim/sieve.v
deleted file mode 100644
index 8c097cb..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/openmsp430/slpp_unit/work/sim/sieve.v
+++ /dev/null
@@ -1,118 +0,0 @@
-pmem[ 512] = 16'h4031;
-pmem[ 513] = 16'h0280;
-pmem[ 514] = 16'h4215;
-pmem[ 515] = 16'h0120;
-pmem[ 516] = 16'hf375;
-pmem[ 517] = 16'hd035;
-pmem[ 518] = 16'h5a08;
-pmem[ 519] = 16'h403f;
-pmem[ 520] = 16'h0000;
-pmem[ 521] = 16'h930f;
-pmem[ 522] = 16'h2407;
-pmem[ 523] = 16'h4582;
-pmem[ 524] = 16'h0120;
-pmem[ 525] = 16'h832f;
-pmem[ 526] = 16'h4f9f;
-pmem[ 527] = 16'hfccc;
-pmem[ 528] = 16'h0200;
-pmem[ 529] = 16'h23f9;
-pmem[ 530] = 16'h403f;
-pmem[ 531] = 16'h0008;
-pmem[ 532] = 16'h930f;
-pmem[ 533] = 16'h2406;
-pmem[ 534] = 16'h4582;
-pmem[ 535] = 16'h0120;
-pmem[ 536] = 16'h831f;
-pmem[ 537] = 16'h43cf;
-pmem[ 538] = 16'h0200;
-pmem[ 539] = 16'h23fa;
-pmem[ 540] = 16'h43a2;
-pmem[ 541] = 16'h0100;
-pmem[ 542] = 16'h403c;
-pmem[ 543] = 16'h0003;
-pmem[ 544] = 16'h430d;
-pmem[ 545] = 16'h431a;
-pmem[ 546] = 16'h4037;
-pmem[ 547] = 16'h003f;
-pmem[ 548] = 16'h4d0f;
-pmem[ 549] = 16'hf03f;
-pmem[ 550] = 16'h000f;
-pmem[ 551] = 16'h4a0e;
-pmem[ 552] = 16'h930f;
-pmem[ 553] = 16'h2403;
-pmem[ 554] = 16'h5e0e;
-pmem[ 555] = 16'h831f;
-pmem[ 556] = 16'h23fd;
-pmem[ 557] = 16'h4d0f;
-pmem[ 558] = 16'hc312;
-pmem[ 559] = 16'h100f;
-pmem[ 560] = 16'h110f;
-pmem[ 561] = 16'h110f;
-pmem[ 562] = 16'hf03f;
-pmem[ 563] = 16'h7ffe;
-pmem[ 564] = 16'hff1e;
-pmem[ 565] = 16'h0200;
-pmem[ 566] = 16'h2021;
-pmem[ 567] = 16'h4c82;
-pmem[ 568] = 16'h0100;
-pmem[ 569] = 16'h4c0b;
-pmem[ 570] = 16'h5b0b;
-pmem[ 571] = 16'h4319;
-pmem[ 572] = 16'hb31b;
-pmem[ 573] = 16'h2418;
-pmem[ 574] = 16'h4b0e;
-pmem[ 575] = 16'h503e;
-pmem[ 576] = 16'hfffd;
-pmem[ 577] = 16'hc312;
-pmem[ 578] = 16'h100e;
-pmem[ 579] = 16'h9e07;
-pmem[ 580] = 16'h2813;
-pmem[ 581] = 16'h4e0f;
-pmem[ 582] = 16'hc312;
-pmem[ 583] = 16'h100f;
-pmem[ 584] = 16'h110f;
-pmem[ 585] = 16'h110f;
-pmem[ 586] = 16'hf03f;
-pmem[ 587] = 16'h3ffe;
-pmem[ 588] = 16'hf03e;
-pmem[ 589] = 16'h000f;
-pmem[ 590] = 16'h4908;
-pmem[ 591] = 16'h930e;
-pmem[ 592] = 16'h2403;
-pmem[ 593] = 16'h5808;
-pmem[ 594] = 16'h831e;
-pmem[ 595] = 16'h23fd;
-pmem[ 596] = 16'hd88f;
-pmem[ 597] = 16'h0200;
-pmem[ 598] = 16'h5c0b;
-pmem[ 599] = 16'h3fe4;
-pmem[ 600] = 16'h531d;
-pmem[ 601] = 16'h532c;
-pmem[ 602] = 16'h903d;
-pmem[ 603] = 16'h0040;
-pmem[ 604] = 16'h23c7;
-pmem[ 605] = 16'h4382;
-pmem[ 606] = 16'h0100;
-pmem[ 607] = 16'h430f;
-pmem[ 608] = 16'hd032;
-pmem[ 609] = 16'h00f0;
-pmem[ 610] = 16'h3ffd;
-pmem[ 611] = 16'h4030;
-pmem[ 612] = 16'hfcca;
-pmem[ 613] = 16'h1300;
-pmem[1008] = 16'hfcc6;
-pmem[1009] = 16'hfcc6;
-pmem[1010] = 16'hfcc6;
-pmem[1011] = 16'hfcc6;
-pmem[1012] = 16'hfcc6;
-pmem[1013] = 16'hfcc6;
-pmem[1014] = 16'hfcc6;
-pmem[1015] = 16'hfcc6;
-pmem[1016] = 16'hfcc6;
-pmem[1017] = 16'hfcc6;
-pmem[1018] = 16'hfcc6;
-pmem[1019] = 16'hfcc6;
-pmem[1020] = 16'hfcc6;
-pmem[1021] = 16'hfcc6;
-pmem[1022] = 16'hfcc6;
-pmem[1023] = 16'hfc00;
diff --git a/SVIncCompil/Testcases/YosysBigSim/reed_solomon_decoder/slpp_unit/surelog.log b/SVIncCompil/Testcases/YosysBigSim/reed_solomon_decoder/slpp_unit/surelog.log
deleted file mode 100644
index 4120d3e..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/reed_solomon_decoder/slpp_unit/surelog.log
+++ /dev/null
@@ -1,115 +0,0 @@
-********************************************
-*  SURELOG System Verilog Compiler/Linter  *
-********************************************
-
-Copyright (c) 2017-2019 ACE Cloud,
-Authorized used only.
-
-VERSION: 0.05
-BUILT  : Nov  3 2019
-DATE   : 2019-11-03.21:43:09
-COMMAND: -writepp -parse -mt max -nopython -fileunit rtl/BM_lamda.v rtl/DP_RAM.v rtl/GF_matrix_ascending_binary.v rtl/GF_matrix_dec.v rtl/GF_mult_add_syndromes.v rtl/Omega_Phy.v rtl/RS_dec.v rtl/error_correction.v rtl/input_syndromes.v rtl/lamda_roots.v rtl/out_stage.v rtl/transport_in2out.v sim/RS_dec_tb.v +incdir+./rtl/+./sim/ -nobuiltin -nocache
-
-[INFO :CM0023] Creating log file ./slpp_unit/surelog.log.
-
-[INFO :CM0024] Executing with 4 threads.
-
-[INFO :CM0020] Separate compilation-unit mode is on.
-
-[ERROR:PP0125] Cannot read the file's content "rtl/BM_lamda.v". Only UTF-8 is supported.
-
-[WARNI:PA0205] rtl/GF_matrix_ascending_binary.v:20 No timescale set for "GF_matrix_ascending_binary".
-
-[WARNI:PA0205] rtl/GF_matrix_dec.v:21 No timescale set for "GF_matrix_dec".
-
-[WARNI:PA0205] rtl/DP_RAM.v:18 No timescale set for "DP_RAM".
-
-[WARNI:PA0205] rtl/GF_mult_add_syndromes.v:28 No timescale set for "GF_mult_add_syndromes".
-
-[WARNI:PA0205] rtl/input_syndromes.v:24 No timescale set for "input_syndromes".
-
-[WARNI:PA0205] rtl/RS_dec.v:21 No timescale set for "RS_dec".
-
-[WARNI:PA0205] rtl/Omega_Phy.v:21 No timescale set for "Omega_Phy".
-
-[WARNI:PA0205] rtl/transport_in2out.v:22 No timescale set for "transport_in2out".
-
-[WARNI:PA0205] rtl/error_correction.v:20 No timescale set for "error_correction".
-
-[WARNI:PA0205] rtl/lamda_roots.v:21 No timescale set for "lamda_roots".
-
-[WARNI:PA0205] rtl/out_stage.v:21 No timescale set for "out_stage".
-
-[WARNI:PA0205] sim/RS_dec_tb.v:3 No timescale set for "testbench".
-
-[INFO :CP0300] Compilation...
-
-[INFO :CP0303] rtl/GF_matrix_ascending_binary.v:20 Compile module "work@GF_matrix_ascending_binary".
-
-[INFO :CP0303] rtl/RS_dec.v:21 Compile module "work@RS_dec".
-
-[INFO :CP0303] rtl/GF_mult_add_syndromes.v:28 Compile module "work@GF_mult_add_syndromes".
-
-[INFO :CP0303] rtl/DP_RAM.v:18 Compile module "work@DP_RAM".
-
-[INFO :CP0303] rtl/GF_matrix_dec.v:21 Compile module "work@GF_matrix_dec".
-
-[INFO :CP0303] rtl/input_syndromes.v:24 Compile module "work@input_syndromes".
-
-[INFO :CP0303] rtl/out_stage.v:21 Compile module "work@out_stage".
-
-[INFO :CP0303] rtl/Omega_Phy.v:21 Compile module "work@Omega_Phy".
-
-[INFO :CP0303] rtl/error_correction.v:20 Compile module "work@error_correction".
-
-[INFO :CP0303] rtl/transport_in2out.v:22 Compile module "work@transport_in2out".
-
-[INFO :CP0303] rtl/lamda_roots.v:21 Compile module "work@lamda_roots".
-
-[INFO :CP0303] sim/RS_dec_tb.v:3 Compile module "work@testbench".
-
-[NOTE :CP0309] rtl/Omega_Phy.v:44 Implicit port type (wire) for "add_pow2",
-there are 20 more instances of this message.
-
-[NOTE :CP0309] rtl/lamda_roots.v:30 Implicit port type (wire) for "add_GF_dec1",
-there are 8 more instances of this message.
-
-[NOTE :CP0309] rtl/RS_dec.v:29 Implicit port type (wire) for "Out_byte",
-there are 2 more instances of this message.
-
-[NOTE :CP0309] rtl/error_correction.v:44 Implicit port type (wire) for "add_pow2",
-there are 8 more instances of this message.
-
-[NOTE :CP0309] rtl/input_syndromes.v:38 Implicit port type (wire) for "s1",
-there are 15 more instances of this message.
-
-[NOTE :CP0309] rtl/transport_in2out.v:32 Implicit port type (wire) for "WE",
-there are 1 more instances of this message.
-
-[INFO :EL0526] Design Elaboration...
-
-[NOTE :EL0503] sim/RS_dec_tb.v:3 Top level module "work@testbench".
-
-[WARNI:EL0500] rtl/RS_dec.v:106 Cannot find a module definition for "work@RS_dec::BM_lamda".
-
-[NOTE :EL0508] Nb Top level modules: 1.
-
-[NOTE :EL0509] Max instance depth: 5.
-
-[NOTE :EL0510] Nb instances: 26.
-
-[NOTE :EL0511] Nb leaf instances: 1.
-
-[WARNI:EL0512] Nb undefined modules: 1.
-
-[WARNI:EL0513] Nb undefined instances: 1.
-
-[  FATAL] : 0
-[  ERROR] : 1
-[WARNING] : 15
-[   NOTE] : 11
-
-********************************************
-*   End SURELOG SVerilog Compiler/Linter   *
-********************************************
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/softusb_navre/slpp_unit/surelog.log b/SVIncCompil/Testcases/YosysBigSim/softusb_navre/slpp_unit/surelog.log
deleted file mode 100644
index 1301dc8..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/softusb_navre/slpp_unit/surelog.log
+++ /dev/null
@@ -1,52 +0,0 @@
-********************************************
-*  SURELOG System Verilog Compiler/Linter  *
-********************************************
-
-Copyright (c) 2017-2019 ACE Cloud,
-Authorized used only.
-
-VERSION: 0.05
-BUILT  : Nov  3 2019
-DATE   : 2019-11-03.21:37:19
-COMMAND: -writepp -parse -mt max -nopython -fileunit rtl/softusb_navre.v sim/bench.v +incdir+./rtl/+./sim/ -nobuiltin -nocache
-
-[INFO :CM0023] Creating log file ./slpp_unit/surelog.log.
-
-[INFO :CM0024] Executing with 4 threads.
-
-[INFO :CM0020] Separate compilation-unit mode is on.
-
-[WARNI:PA0205] sim/bench.v:2 No timescale set for "testbench".
-
-[WARNI:PA0205] rtl/softusb_navre.v:18 No timescale set for "softusb_navre".
-
-[INFO :CP0300] Compilation...
-
-[INFO :CP0303] rtl/softusb_navre.v:18 Compile module "work@softusb_navre".
-
-[INFO :CP0303] sim/bench.v:2 Compile module "work@testbench".
-
-[NOTE :CP0309] rtl/softusb_navre.v:26 Implicit port type (wire) for "pmem_a",
-there are 2 more instances of this message.
-
-[INFO :EL0526] Design Elaboration...
-
-[NOTE :EL0503] sim/bench.v:2 Top level module "work@testbench".
-
-[NOTE :EL0508] Nb Top level modules: 1.
-
-[NOTE :EL0509] Max instance depth: 2.
-
-[NOTE :EL0510] Nb instances: 2.
-
-[NOTE :EL0511] Nb leaf instances: 0.
-
-[  FATAL] : 0
-[  ERROR] : 0
-[WARNING] : 2
-[   NOTE] : 6
-
-********************************************
-*   End SURELOG SVerilog Compiler/Linter   *
-********************************************
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/softusb_navre/slpp_unit/work/rtl/softusb_navre.v b/SVIncCompil/Testcases/YosysBigSim/softusb_navre/slpp_unit/work/rtl/softusb_navre.v
deleted file mode 100644
index 1fc9db0..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/softusb_navre/slpp_unit/work/rtl/softusb_navre.v
+++ /dev/null
@@ -1,974 +0,0 @@
-/*
- * Milkymist SoC
- * Copyright (C) 2007, 2008, 2009, 2010 Sebastien Bourdeauducq
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-module softusb_navre #(
-	parameter pmem_width = 11, /* < in 16-bit instructions */
-	parameter dmem_width = 13 /* < in bytes */
-) (
-	input clk,
-	input rst,
-
-	output reg pmem_ce,
-	output [pmem_width-1:0] pmem_a,
-	input [15:0] pmem_d,
-
-	output reg dmem_we,
-	output reg [dmem_width-1:0] dmem_a,
-	input [7:0] dmem_di,
-	output reg [7:0] dmem_do,
-
-	output reg io_re,
-	output reg io_we,
-	output [5:0] io_a,
-	output [7:0] io_do,
-	input [7:0] io_di,
-
-	input [7:0] irq,
-	output reg [7:0] irq_ack,
-
-	output reg [pmem_width-1:0] dbg_pc
-);
-
-/* Register file */
-reg [pmem_width-1:0] PC;
-reg [7:0] GPR[0:23];
-reg [15:0] U;	/* < R24-R25 */
-reg [15:0] pX;	/* < R26-R27 */
-reg [15:0] pY;	/* < R28-R29 */
-reg [15:0] pZ;	/* < R30-R31 */
-reg I, T, H, S, V, N, Z, C;
-
-/* Stack */
-reg [7:0] io_sp;
-reg [15:0] SP;
-reg push;
-reg pop;
-always @(posedge clk) begin
-	if(rst) begin
-		io_sp <= 8'd0;
-		SP <= 16'd0;
-	end else begin
-		io_sp <= io_a[0] ? SP[7:0] : SP[15:8];
-		if((io_a == 6'b111101) | (io_a == 6'b111110)) begin
-			if(io_we) begin
-				if(io_a[0])
-					SP[7:0] <= io_do;
-				else
-					SP[15:8] <= io_do;
-			end
-		end
-		if(push)
-			SP <= SP - 16'd1;
-		if(pop)
-			SP <= SP + 16'd1;
-	end
-end
-
-/* I/O mapped registers */
-
-localparam IO_SEL_EXT	= 2'd0;
-localparam IO_SEL_STACK	= 2'd1;
-localparam IO_SEL_SREG	= 2'd2;
-
-reg [1:0] io_sel;
-always @(posedge clk) begin
-	if(rst)
-		io_sel <= IO_SEL_EXT;
-	else begin
-		case(io_a)
-			6'b111101,
-			6'b111110: io_sel <= IO_SEL_STACK;
-			6'b111111: io_sel <= IO_SEL_SREG;
-			default: io_sel <= IO_SEL_EXT;
-		endcase
-	end
-end
-
-/* Register operations */
-wire immediate = (pmem_d[14]
-	| (pmem_d[15:12] == 4'b0011))		/* CPI */
-	& (pmem_d[15:10] != 6'b111111)		/* SBRC - SBRS */
-	& (pmem_d[15:10] != 6'b111110);		/* BST - BLD */
-reg lpm_en;
-wire [4:0] Rd = lpm_en ? 5'd0 : {immediate | pmem_d[8], pmem_d[7:4]};
-wire [4:0] Rr = {pmem_d[9], pmem_d[3:0]};
-wire [7:0] K = {pmem_d[11:8], pmem_d[3:0]};
-wire [2:0] b = pmem_d[2:0];
-wire [11:0] Kl = pmem_d[11:0];
-wire [6:0] Ks = pmem_d[9:3];
-wire [1:0] Rd16 = pmem_d[5:4];
-wire [5:0] K16 = {pmem_d[7:6], pmem_d[3:0]};
-wire [5:0] q = {pmem_d[13], pmem_d[11:10], pmem_d[2:0]};
-
-wire [7:0] GPR_Rd8 = GPR[Rd];
-wire [7:0] GPR_Rr8 = GPR[Rr];
-reg [7:0] GPR_Rd;
-always @(*) begin
-	case(Rd)
-		default: GPR_Rd = GPR_Rd8;
-		5'd24: GPR_Rd = U[7:0];
-		5'd25: GPR_Rd = U[15:8];
-		5'd26: GPR_Rd = pX[7:0];
-		5'd27: GPR_Rd = pX[15:8];
-		5'd28: GPR_Rd = pY[7:0];
-		5'd29: GPR_Rd = pY[15:8];
-		5'd30: GPR_Rd = pZ[7:0];
-		5'd31: GPR_Rd = pZ[15:8];
-	endcase
-end
-reg [7:0] GPR_Rr;
-always @(*) begin
-	case(Rr)
-		default: GPR_Rr = GPR_Rr8;
-		5'd24: GPR_Rr = U[7:0];
-		5'd25: GPR_Rr = U[15:8];
-		5'd26: GPR_Rr = pX[7:0];
-		5'd27: GPR_Rr = pX[15:8];
-		5'd28: GPR_Rr = pY[7:0];
-		5'd29: GPR_Rr = pY[15:8];
-		5'd30: GPR_Rr = pZ[7:0];
-		5'd31: GPR_Rr = pZ[15:8];
-	endcase
-end
-wire GPR_Rd_b = GPR_Rd[b];
-
-reg [15:0] GPR_Rd16;
-always @(*) begin
-	case(Rd16)
-		2'd0: GPR_Rd16 = U;
-		2'd1: GPR_Rd16 = pX;
-		2'd2: GPR_Rd16 = pY;
-		2'd3: GPR_Rd16 = pZ;
-	endcase
-end
-
-/* Memorize values to support 16-bit instructions */
-reg regmem_ce;
-
-reg [4:0] Rd_r;
-reg [7:0] GPR_Rd_r;
-always @(posedge clk) begin
-	if(regmem_ce)
-		Rd_r <= Rd; /* < control with regmem_ce */
-	GPR_Rd_r <= GPR_Rd; /* < always loaded */
-end
-
-/* PC */
-
-reg [3:0] pc_sel;
-
-localparam PC_SEL_NOP		= 4'd0;
-localparam PC_SEL_INC		= 4'd1;
-localparam PC_SEL_KL		= 4'd2;
-localparam PC_SEL_KS		= 4'd3;
-localparam PC_SEL_DMEML		= 4'd4;
-localparam PC_SEL_DMEMH		= 4'd6;
-localparam PC_SEL_DEC		= 4'd7;
-localparam PC_SEL_Z		= 4'd8;
-localparam PC_SEL_EX		= 4'd9;
-
-/* Exceptions */
-
-reg [7:0] next_irq_ack;
-always @(*) begin
-	next_irq_ack = 8'b0;
-	casex(irq)
-		8'bxxxx_xxx1: next_irq_ack = 8'b0000_0001;
-		8'bxxxx_xx10: next_irq_ack = 8'b0000_0010;
-		8'bxxxx_x100: next_irq_ack = 8'b0000_0100;
-		8'bxxxx_1000: next_irq_ack = 8'b0000_1000;
-		8'bxxx1_0000: next_irq_ack = 8'b0001_0000;
-		8'bxx10_0000: next_irq_ack = 8'b0010_0000;
-		8'bx100_0000: next_irq_ack = 8'b0100_0000;
-		8'b1000_0000: next_irq_ack = 8'b1000_0000;
-	endcase
-end
-
-reg irq_ack_en;
-always @(posedge clk) begin
-	if(rst)
-		irq_ack <= 8'b0;
-	else begin
-		irq_ack <= 1'b0;
-		if(irq_ack_en)
-			irq_ack <= next_irq_ack;
-	end
-end
-
-/* Priority encoder */
-
-reg [3:0] PC_ex;
-always @(*) begin
-	PC_ex = 4'b0;
-	casex(irq)
-		8'bxxxx_xxx1: PC_ex = 4'h0;
-		8'bxxxx_xx10: PC_ex = 4'h1;
-		8'bxxxx_x100: PC_ex = 4'h2;
-		8'bxxxx_1000: PC_ex = 4'h3;
-		8'bxxx1_0000: PC_ex = 4'h4;
-		8'bxx10_0000: PC_ex = 4'h5;
-		8'bx100_0000: PC_ex = 4'h6;
-		8'b1000_0000: PC_ex = 4'h7;
-	endcase
-end
-
-/* AVR cores always execute at least one instruction after an IRET.
- * Therefore, the I bit is only valid one clock after it has been set. */
-
-reg I_r;
-always @(posedge clk) begin
-	if(rst)
-		I_r <= 1'b0;
-	else
-		I_r <= I;
-end
-wire irq_asserted = |irq;
-wire irq_request = I & I_r & irq_asserted;
-
-always @(posedge clk) begin
-	if(rst) begin
-		PC <= 0;
-	end else begin
-		case(pc_sel)
-			PC_SEL_NOP:;
-			PC_SEL_INC: PC <= PC + 1;
-			// !!! WARNING !!! replace with PC <= PC + {{pmem_width-12{Kl[11]}}, Kl}; if pmem_width>12
-			PC_SEL_KL: PC <= PC + Kl;
-			PC_SEL_KS: PC <= PC + {{pmem_width-7{Ks[6]}}, Ks};
-			PC_SEL_DMEML: PC[7:0] <= dmem_di;
-			PC_SEL_DMEMH: PC[pmem_width-1:8] <= dmem_di;
-			PC_SEL_DEC: PC <= PC - 1;
-			PC_SEL_Z: PC <= pZ - 1;
-			PC_SEL_EX: PC <= {{pmem_width-4{1'b0}}, PC_ex};
-		endcase
-	end
-	dbg_pc <= PC;
-end
-reg pmem_selz;
-assign pmem_a = rst ?
-	0
-	: (pmem_selz ? pZ[15:1] : PC + 1);
-
-/* Load/store operations */
-reg [3:0] dmem_sel;
-
-localparam DMEM_SEL_UNDEFINED	= 3'bxxx;
-localparam DMEM_SEL_X		= 4'd0;
-localparam DMEM_SEL_XPLUS	= 4'd1;
-localparam DMEM_SEL_XMINUS	= 4'd2;
-localparam DMEM_SEL_YPLUS	= 4'd3;
-localparam DMEM_SEL_YMINUS	= 4'd4;
-localparam DMEM_SEL_YQ		= 4'd5;
-localparam DMEM_SEL_ZPLUS	= 4'd6;
-localparam DMEM_SEL_ZMINUS	= 4'd7;
-localparam DMEM_SEL_ZQ		= 4'd8;
-localparam DMEM_SEL_SP_R	= 4'd9;
-localparam DMEM_SEL_SP_PCL	= 4'd10;
-localparam DMEM_SEL_SP_PCH	= 4'd11;
-localparam DMEM_SEL_PMEM	= 4'd12;
-
-/* ALU */
-
-reg normal_en;
-reg lds_writeback;
-
-wire [4:0] write_dest = lds_writeback ? Rd_r : Rd;
-
-integer i_rst_regf;
-reg [7:0] R;
-reg writeback;
-reg update_svnz;
-reg change_z;
-reg [15:0] R16;
-reg mode16;
-reg _N;
-reg _V;
-reg _C;
-reg I_clr;
-reg I_set;
-always @(posedge clk) begin
-	R = 8'hxx;
-	writeback = 1'b0;
-	update_svnz = 1'b0;
-	change_z = 1'b1;
-	R16 = 16'hxxxx;
-	mode16 = 1'b0;
-	if(rst) begin
-		/*
-		 * Not resetting the register file enables the use of more efficient
-		 * distributed block RAM.
-		 */
-		for(i_rst_regf=0;i_rst_regf<24;i_rst_regf=i_rst_regf+1)
-			GPR[i_rst_regf] <= 8'd0;
-		U <= 16'd0;
-		pX <= 16'd0;
-		pY <= 16'd0;
-		pZ <= 16'd0;
-		I <= 1'b0;
-		T <= 1'b0;
-		H <= 1'b0;
-		S <= 1'b0;
-		V <= 1'b0;
-		N <= 1'b0;
-		Z <= 1'b0;
-		C <= 1'b0;
-		_V = 1'b0;
-		_N = 1'b0;
-		_C = 1'b0;
-	end else begin
-		if(I_set)
-			I <= 1'b1;
-		if(normal_en) begin
-			writeback = 1'b1;
-			update_svnz = 1'b1;
-			casex(pmem_d)
-				16'b000x_11xx_xxxx_xxxx: begin
-					/* ADD - ADC */
-					{_C, R} = GPR_Rd + GPR_Rr + (pmem_d[12] & C);
-					C <= _C;
-					H <= (GPR_Rd[3] & GPR_Rr[3])|(GPR_Rr[3] & ~R[3])|(~R[3] & GPR_Rd[3]);
-					_V = (GPR_Rd[7] & GPR_Rr[7] & ~R[7])|(~GPR_Rd[7] & ~GPR_Rr[7] & R[7]);
-				end
-				16'b000x_10xx_xxxx_xxxx, /* subtract */
-				16'b000x_01xx_xxxx_xxxx: /* compare  */ begin
-					/* SUB - SBC / CP - CPC */
-					{_C, R} = GPR_Rd - GPR_Rr - (~pmem_d[12] & C);
-					C <= _C;
-					H <= (~GPR_Rd[3] & GPR_Rr[3])|(GPR_Rr[3] & R[3])|(R[3] & ~GPR_Rd[3]);
-					_V = (GPR_Rd[7] & ~GPR_Rr[7] & ~R[7])|(~GPR_Rd[7] & GPR_Rr[7] & R[7]);
-					if(~pmem_d[12])
-						change_z = 1'b0;
-					writeback = pmem_d[11];
-				end
-				16'b010x_xxxx_xxxx_xxxx, /* subtract */
-				16'b0011_xxxx_xxxx_xxxx: /* compare  */ begin
-					/* SUBI - SBCI / CPI */
-					{_C, R} = GPR_Rd - K - (~pmem_d[12] & C);
-					C <= _C;
-					H <= (~GPR_Rd[3] & K[3])|(K[3] & R[3])|(R[3] & ~GPR_Rd[3]);
-					_V = (GPR_Rd[7] & ~K[7] & ~R[7])|(~GPR_Rd[7] & K[7] & R[7]);
-					if(~pmem_d[12])
-						change_z = 1'b0;
-					writeback = pmem_d[14];
-				end
-				16'b0010_00xx_xxxx_xxxx: begin
-					/* AND */
-					R = GPR_Rd & GPR_Rr;
-					_V = 1'b0;
-				end
-				16'b0111_xxxx_xxxx_xxxx: begin
-					/* ANDI */
-					R = GPR_Rd & K;
-					_V = 1'b0;
-				end
-				16'b0010_10xx_xxxx_xxxx: begin
-					/* OR */
-					R = GPR_Rd | GPR_Rr;
-					_V = 1'b0;
-				end
-				16'b0110_xxxx_xxxx_xxxx: begin
-					/* ORI */
-					R = GPR_Rd | K;
-					_V = 1'b0;
-				end
-				16'b0010_01xx_xxxx_xxxx: begin
-					/* EOR */
-					R = GPR_Rd ^ GPR_Rr;
-					_V = 1'b0;
-				end
-				16'b1001_010x_xxxx_0000: begin
-					/* COM */
-					R = ~GPR_Rd;
-					_V = 1'b0;
-					C <= 1'b1;
-				end
-				16'b1001_010x_xxxx_0001: begin
-					/* NEG */
-					{_C, R} = 8'h00 - GPR_Rd;
-					C <= _C;
-					H <= R[3] | GPR_Rd[3];
-					_V = R == 8'h80;
-				end
-				16'b1001_010x_xxxx_0011: begin
-					/* INC */
-					R = GPR_Rd + 8'd1;
-					_V = R == 8'h80;
-				end
-				16'b1001_010x_xxxx_1010: begin
-					/* DEC */
-					R = GPR_Rd - 8'd1;
-					_V = R == 8'h7f;
-				end
-				16'b1001_010x_xxxx_011x: begin
-					/* LSR - ROR */
-					R = {pmem_d[0] & C, GPR_Rd[7:1]};
-					C <= GPR_Rd[0];
-					_V = R[7] ^ GPR_Rd[0];
-				end
-				16'b1001_010x_xxxx_0101: begin
-					/* ASR */
-					R = {GPR_Rd[7], GPR_Rd[7:1]};
-					C <= GPR_Rd[0];
-					_V = R[7] ^ GPR_Rd[0];
-				end
-				16'b1001_010x_xxxx_0010: begin
-					/* SWAP */
-					R = {GPR_Rd[3:0], GPR_Rd[7:4]};
-					update_svnz = 1'b0;
-				end
-				16'b1001_010x_xxxx_1000: begin
-					/* BSET - BCLR */
-					case(pmem_d[7:4])
-						4'b0000: C <= 1'b1;
-						4'b0001: Z <= 1'b1;
-						4'b0010: N <= 1'b1;
-						4'b0011: V <= 1'b1;
-						4'b0100: S <= 1'b1;
-						4'b0101: H <= 1'b1;
-						4'b0110: T <= 1'b1;
-						4'b0111: I <= 1'b1;
-						4'b1000: C <= 1'b0;
-						4'b1001: Z <= 1'b0;
-						4'b1010: N <= 1'b0;
-						4'b1011: V <= 1'b0;
-						4'b1100: S <= 1'b0;
-						4'b1101: H <= 1'b0;
-						4'b1110: T <= 1'b0;
-						4'b1111: I <= 1'b0;
-					endcase
-					update_svnz = 1'b0;
-					writeback = 1'b0;
-				end
-				16'b1001_011x_xxxx_xxxx: begin
-					mode16 = 1'b1;
-					if(pmem_d[8]) begin
-						/* SBIW */
-						{_C, R16} = GPR_Rd16 - K16;
-						C <= _C;
-						_V = GPR_Rd16[15] & ~R16[15];
-					end else begin
-						/* ADIW */
-						{_C, R16} = GPR_Rd16 + K16;
-						C <= _C;
-						_V = ~GPR_Rd16[15] & R16[15];
-					end
-				end
-				/* SBR and CBR are replaced with ORI and ANDI */
-				/* TST is replaced with AND */
-				/* CLR and SER are replaced with EOR and LDI */
-				16'b0010_11xx_xxxx_xxxx: begin
-					/* MOV */
-					R = GPR_Rr;
-					update_svnz = 1'b0;
-				end
-				16'b1110_xxxx_xxxx_xxxx: begin
-					/* LDI */
-					R = K;
-					update_svnz = 1'b0;
-				end
-				/* LSL is replaced with ADD */
-				/* ROL is replaced with ADC */
-				16'b1111_10xx_xxxx_0xxx: begin
-					if(pmem_d[9]) begin
-						/* BST */
-						T <= GPR_Rd_b;
-						writeback = 1'b0;
-					end else begin
-						/* BLD */
-						case(b)
-							3'd0: R = {GPR_Rd[7:1], T};
-							3'd1: R = {GPR_Rd[7:2], T, GPR_Rd[0]};
-							3'd2: R = {GPR_Rd[7:3], T, GPR_Rd[1:0]};
-							3'd3: R = {GPR_Rd[7:4], T, GPR_Rd[2:0]};
-							3'd4: R = {GPR_Rd[7:5], T, GPR_Rd[3:0]};
-							3'd5: R = {GPR_Rd[7:6], T, GPR_Rd[4:0]};
-							3'd6: R = {GPR_Rd[7], T, GPR_Rd[5:0]};
-							3'd7: R = {T, GPR_Rd[6:0]};
-						endcase
-					end
-					update_svnz = 1'b0;
-				end
-				/* SEC, CLC, SEN, CLN, SEZ, CLZ, SEI, CLI, SES, CLS, SEV, CLV, SET, CLT, SEH, CLH
-				 * are replaced with BSET and BCLR */
-				16'b0000_0000_0000_0000: begin
-					/* NOP */
-					update_svnz = 1'b0;
-					writeback = 1'b0;
-				end
-				/* SLEEP is not implemented */
-				/* WDR is not implemented */
-				16'b1001_00xx_xxxx_1111, /* PUSH/POP */
-				16'b1001_00xx_xxxx_1100, /*  X   */
-				16'b1001_00xx_xxxx_1101, /*  X+  */
-				16'b1001_00xx_xxxx_1110, /* -X   */
-				16'b1001_00xx_xxxx_1001, /*  Y+  */
-				16'b1001_00xx_xxxx_1010, /* -Y   */
-				16'b10x0_xxxx_xxxx_1xxx, /*  Y+q */
-				16'b1001_00xx_xxxx_0001, /*  Z+  */
-				16'b1001_00xx_xxxx_0010, /* -Z   */
-				16'b10x0_xxxx_xxxx_0xxx: /*  Z+q */
-				begin
-					/* LD - POP (run from state WRITEBACK) */
-					R = dmem_di;
-					update_svnz = 1'b0;
-				end
-				16'b1011_0xxx_xxxx_xxxx: begin
-					/* IN (run from state WRITEBACK) */
-					case(io_sel)
-						IO_SEL_EXT: R = io_di;
-						IO_SEL_STACK: R = io_sp;
-						IO_SEL_SREG: R = {I, T, H, S, V, N, Z, C};
-						default: R = 8'hxx;
-					endcase
-					update_svnz = 1'b0;
-				end
-			endcase
-		end /* if(normal_en) */
-		if(lds_writeback) begin
-			R = dmem_di;
-			writeback = 1'b1;
-		end
-		if(lpm_en) begin
-			R = pZ[0] ? pmem_d[15:8] : pmem_d[7:0];
-			writeback = 1'b1;
-		end
-		if(update_svnz) begin
-			_N = mode16 ? R16[15] : R[7];
-			S <= _N ^ _V;
-			V <= _V;
-			N <= _N;
-			Z <= mode16 ? R16 == 16'h0000 : ((R == 8'h00) & (change_z|Z));
-		end
-		if(io_we & (io_a == 6'b111111))
-			{I, T, H, S, V, N, Z, C} <= io_do[7:0];
-		if(I_clr)
-			I <= 1'b0;
-		if(writeback) begin
-			if(mode16) begin
-				// $display("REG WRITE(16): %d < %d", Rd16, R16);
-				case(Rd16)
-					2'd0: U <= R16;
-					2'd1: pX <= R16;
-					2'd2: pY <= R16;
-					2'd3: pZ <= R16;
-				endcase
-			end else begin
-				// $display("REG WRITE: %d < %d", Rd, R);
-				case(write_dest)
-					default: GPR[write_dest] <= R;
-					5'd24: U[7:0] <= R;
-					5'd25: U[15:8] <= R;
-					5'd26: pX[7:0] <= R;
-					5'd27: pX[15:8] <= R;
-					5'd28: pY[7:0] <= R;
-					5'd29: pY[15:8] <= R;
-					5'd30: pZ[7:0] <= R;
-					5'd31: pZ[15:8] <= R;
-				endcase
-			end
-		end else begin /* if(writeback) */
-			case(dmem_sel)
-				DMEM_SEL_XPLUS:		pX <= pX + 16'd1;
-				DMEM_SEL_XMINUS:	pX <= pX - 16'd1;
-				DMEM_SEL_YPLUS:		pY <= pY + 16'd1;
-				DMEM_SEL_YMINUS:	pY <= pY - 16'd1;
-				DMEM_SEL_ZPLUS:		pZ <= pZ + 16'd1;
-				DMEM_SEL_ZMINUS:	pZ <= pZ - 16'd1;
-				default:;
-			endcase
-		end
-	end /* if(rst) ... else */
-end
-
-/* I/O port */
-assign io_a = {pmem_d[10:9], pmem_d[3:0]};
-assign io_do = GPR_Rd;
-
-/* Data memory */
-always @(*) begin
-	case(dmem_sel)
-		DMEM_SEL_X,
-		DMEM_SEL_XPLUS:		dmem_a = pX;
-		DMEM_SEL_XMINUS:	dmem_a = pX - 16'd1;
-		DMEM_SEL_YPLUS:		dmem_a = pY;
-		DMEM_SEL_YMINUS:	dmem_a = pY - 16'd1;
-		DMEM_SEL_YQ:		dmem_a = pY + q;
-		DMEM_SEL_ZPLUS:		dmem_a = pZ;
-		DMEM_SEL_ZMINUS:	dmem_a = pZ - 16'd1;
-		DMEM_SEL_ZQ:		dmem_a = pZ + q;
-		DMEM_SEL_SP_R,
-		DMEM_SEL_SP_PCL,
-		DMEM_SEL_SP_PCH:	dmem_a = SP + pop;
-		DMEM_SEL_PMEM:		dmem_a = pmem_d;
-		default:		dmem_a = {dmem_width{1'bx}};
-	endcase
-end
-
-wire [pmem_width-1:0] PC_inc = PC + 1;
-reg exception;
-always @(*) begin
-	case(dmem_sel)
-		DMEM_SEL_X,
-		DMEM_SEL_XPLUS,
-		DMEM_SEL_XMINUS,
-		DMEM_SEL_YPLUS,
-		DMEM_SEL_YMINUS,
-		DMEM_SEL_YQ,
-		DMEM_SEL_ZPLUS,
-		DMEM_SEL_ZMINUS,
-		DMEM_SEL_ZQ,
-		DMEM_SEL_SP_R:		dmem_do = GPR_Rd;
-		DMEM_SEL_SP_PCL:	dmem_do = exception ? PC[7:0] : PC_inc[7:0];
-		DMEM_SEL_SP_PCH:	dmem_do = exception ? PC[pmem_width-1:8] : PC_inc[pmem_width-1:8];
-		DMEM_SEL_PMEM:		dmem_do = GPR_Rd_r;
-		default:		dmem_do = 8'hxx;
-	endcase
-end
-
-/* Multi-cycle operation sequencer */
-
-wire reg_equal = GPR_Rd == GPR_Rr;
-
-reg sreg_read;
-always @(*) begin
-	case(b)
-		3'd0: sreg_read = C;
-		3'd1: sreg_read = Z;
-		3'd2: sreg_read = N;
-		3'd3: sreg_read = V;
-		3'd4: sreg_read = S;
-		3'd5: sreg_read = H;
-		3'd6: sreg_read = T;
-		3'd7: sreg_read = I;
-	endcase
-end
-
-reg [4:0] state;
-reg [4:0] next_state;
-
-localparam NORMAL	= 5'd0;
-localparam RCALL	= 5'd1;
-localparam ICALL	= 5'd2;
-localparam STALL	= 5'd3;
-localparam RET1		= 5'd4;
-localparam RET2		= 5'd5;
-localparam RET3		= 5'd6;
-localparam LPM		= 5'd7;
-localparam STS		= 5'd8;
-localparam LDS1		= 5'd9;
-localparam LDS2		= 5'd10;
-localparam SKIP		= 5'd11;
-localparam WRITEBACK	= 5'd12;
-localparam EXCEPTION	= 5'd13;
-localparam RETI1	= 5'd14;
-localparam RETI2	= 5'd15;
-localparam RETI3	= 5'd16;
-localparam RETI4	= 5'd17;
-
-always @(posedge clk) begin
-	if(rst)
-		state <= NORMAL;
-	else
-		state <= next_state;
-end
-
-always @(*) begin
-	next_state = state;
-
-	pmem_ce = rst;
-
-	pc_sel = PC_SEL_NOP;
-	normal_en = 1'b0;
-	lpm_en = 1'b0;
-
-	io_re = 1'b0;
-	io_we = 1'b0;
-
-	dmem_we = 1'b0;
-	dmem_sel = DMEM_SEL_UNDEFINED;
-
-	push = 1'b0;
-	pop = 1'b0;
-
-	exception = 1'b0;
-	irq_ack_en = 1'b0;
-	I_set = 1'b0;
-	I_clr = 1'b0;
-
-	pmem_selz = 1'b0;
-
-	regmem_ce = 1'b1;
-	lds_writeback = 1'b0;
-	
-	case(state)
-		NORMAL: begin
-			if(irq_request) begin
-				dmem_sel = DMEM_SEL_SP_PCL;
-				dmem_we = 1'b1;
-				exception = 1'b1;
-				push = 1'b1;
-				irq_ack_en = 1'b1;
-				I_clr = 1'b1;
-				next_state = EXCEPTION;
-			end else begin
-				casex(pmem_d)
-					16'b1100_xxxx_xxxx_xxxx: begin
-						/* RJMP */
-						pc_sel = PC_SEL_KL;
-						next_state = STALL;
-					end
-					16'b1101_xxxx_xxxx_xxxx: begin
-						/* RCALL */
-						dmem_sel = DMEM_SEL_SP_PCL;
-						dmem_we = 1'b1;
-						push = 1'b1;
-						next_state = RCALL;
-					end
-					16'b0001_00xx_xxxx_xxxx: begin
-						/* CPSE */
-						pc_sel = PC_SEL_INC;
-						pmem_ce = 1'b1;
-						if(reg_equal)
-							next_state = SKIP;
-					end
-					16'b1111_11xx_xxxx_0xxx: begin
-						/* SBRC - SBRS */
-						pc_sel = PC_SEL_INC;
-						pmem_ce = 1'b1;
-						if(GPR_Rd_b == pmem_d[9])
-							next_state = SKIP;
-					end
-					/* SBIC, SBIS, SBI, CBI are not implemented */
-					16'b1111_0xxx_xxxx_xxxx: begin
-						/* BRBS - BRBC */
-						pmem_ce = 1'b1;
-						if(sreg_read ^ pmem_d[10]) begin
-							pc_sel = PC_SEL_KS;
-							next_state = STALL;
-						end else
-							pc_sel = PC_SEL_INC;
-					end
-					/* BREQ, BRNE, BRCS, BRCC, BRSH, BRLO, BRMI, BRPL, BRGE, BRLT,
-					 * BRHS, BRHC, BRTS, BRTC, BRVS, BRVC, BRIE, BRID are replaced
-					 * with BRBS/BRBC */
-					16'b1001_00xx_xxxx_1100, /*  X   */
-					16'b1001_00xx_xxxx_1101, /*  X+  */
-					16'b1001_00xx_xxxx_1110, /* -X   */
-					16'b1001_00xx_xxxx_1001, /*  Y+  */
-					16'b1001_00xx_xxxx_1010, /* -Y   */
-					16'b10x0_xxxx_xxxx_1xxx, /*  Y+q */
-					16'b1001_00xx_xxxx_0001, /*  Z+  */
-					16'b1001_00xx_xxxx_0010, /* -Z   */
-					16'b10x0_xxxx_xxxx_0xxx: /*  Z+q */
-					begin
-						casex({pmem_d[12], pmem_d[3:0]})
-							5'b1_1100: dmem_sel = DMEM_SEL_X;
-							5'b1_1101: dmem_sel = DMEM_SEL_XPLUS;
-							5'b1_1110: dmem_sel = DMEM_SEL_XMINUS;
-							5'b1_1001: dmem_sel = DMEM_SEL_YPLUS;
-							5'b1_1010: dmem_sel = DMEM_SEL_YMINUS;
-							5'b0_1xxx: dmem_sel = DMEM_SEL_YQ;
-							5'b1_0001: dmem_sel = DMEM_SEL_ZPLUS;
-							5'b1_0010: dmem_sel = DMEM_SEL_ZMINUS;
-							5'b0_0xxx: dmem_sel = DMEM_SEL_ZQ;
-						endcase
-						if(pmem_d[9]) begin
-							/* ST */
-							pc_sel = PC_SEL_INC;
-							pmem_ce = 1'b1;
-							dmem_we = 1'b1;
-						end else begin
-							/* LD */
-							next_state = WRITEBACK;
-						end
-					end
-					16'b1011_0xxx_xxxx_xxxx: begin
-						/* IN */
-						io_re = 1'b1;
-						next_state = WRITEBACK;
-					end
-					16'b1011_1xxx_xxxx_xxxx: begin
-						/* OUT */
-						io_we = 1'b1;
-						pc_sel = PC_SEL_INC;
-						pmem_ce = 1'b1;
-					end
-					16'b1001_00xx_xxxx_1111: begin
-						if(pmem_d[9]) begin
-							/* PUSH */
-							push = 1'b1;
-							dmem_sel = DMEM_SEL_SP_R;
-							dmem_we = 1'b1;
-							pc_sel = PC_SEL_INC;
-							pmem_ce = 1'b1;
-						end else begin
-							/* POP */
-							pop = 1'b1;
-							dmem_sel = DMEM_SEL_SP_R;
-							next_state = WRITEBACK;
-						end
-					end
-					16'b1001_00xx_xxxx_0000: begin
-						pc_sel = PC_SEL_INC;
-						pmem_ce = 1'b1;
-						if(pmem_d[9])
-							/* STS */
-							next_state = STS;
-						else
-							/* LDS */
-							next_state = LDS1;
-					end
-					16'b1001_0101_000x_1000: begin
-						/* RET / RETI */
-						dmem_sel = DMEM_SEL_SP_PCH;
-						pop = 1'b1;
-						if(pmem_d[4] == 1'b0)
-							next_state = RET1;
-						else
-							next_state = RETI1;
-					end
-					16'b1001_0101_1100_1000: begin
-						/* LPM */
-						pmem_selz = 1'b1;
-						pmem_ce = 1'b1;
-						next_state = LPM;
-					end
-					16'b1001_0100_0000_1001: begin
-						/* IJMP */
-						pc_sel = PC_SEL_Z;
-						next_state = STALL;
-					end
-					16'b1001_0101_0000_1001: begin
-						/* ICALL */
-						dmem_sel = DMEM_SEL_SP_PCL;
-						dmem_we = 1'b1;
-						push = 1'b1;
-						next_state = ICALL;
-					end
-					default: begin
-						pc_sel = PC_SEL_INC;
-						normal_en = 1'b1;
-						pmem_ce = 1'b1;
-					end
-				endcase
-			end
-		end
-		RCALL: begin
-			dmem_sel = DMEM_SEL_SP_PCH;
-			dmem_we = 1'b1;
-			push = 1'b1;
-			pc_sel = PC_SEL_KL;
-			next_state = STALL;
-		end
-		EXCEPTION: begin
-			dmem_sel = DMEM_SEL_SP_PCH;
-			dmem_we = 1'b1;
-			exception = 1'b1;
-			push = 1'b1;
-			pc_sel = PC_SEL_EX;
-			next_state = STALL;
-		end
-		ICALL: begin
-			dmem_sel = DMEM_SEL_SP_PCH;
-			dmem_we = 1'b1;
-			push = 1'b1;
-			pc_sel = PC_SEL_Z;
-			next_state = STALL;
-		end
-		RET1: begin
-			pc_sel = PC_SEL_DMEMH;
-			dmem_sel = DMEM_SEL_SP_PCL;
-			pop = 1'b1;
-			next_state = RET2;
-		end
-		RET2: begin
-			pc_sel = PC_SEL_DMEML;
-			next_state = RET3;
-		end
-		RET3: begin
-			pc_sel = PC_SEL_DEC;
-			next_state = STALL;
-		end
-		RETI1: begin
-			pc_sel = PC_SEL_DMEMH;
-			dmem_sel = DMEM_SEL_SP_PCL;
-			pop = 1'b1;
-			next_state = RETI2;
-		end
-		RETI2: begin
-			pc_sel = PC_SEL_DMEML;
-			next_state = RETI3;
-		end
-		RETI3: begin
-			pc_sel = PC_SEL_DEC;
-			next_state = RETI4;
-		end
-		RETI4: begin
-			pc_sel = PC_SEL_INC;
-			pmem_ce = 1'b1;
-			I_set = 1'b1;
-			next_state = NORMAL;
-		end
-		LPM: begin
-			lpm_en = 1'b1;
-			pc_sel = PC_SEL_INC;
-			pmem_ce = 1'b1;
-			next_state = NORMAL;
-		end
-		STS: begin
-			pc_sel = PC_SEL_INC;
-			pmem_ce = 1'b1;
-			dmem_sel = DMEM_SEL_PMEM;
-			dmem_we = 1'b1;
-			next_state = NORMAL;
-		end
-		LDS1: begin
-			dmem_sel = DMEM_SEL_PMEM;
-			regmem_ce = 1'b0;
-			next_state = LDS2;
-		end
-		LDS2: begin
-			pc_sel = PC_SEL_INC;
-			pmem_ce = 1'b1;
-			lds_writeback = 1'b1;
-			next_state = NORMAL;
-		end
-		SKIP: begin
-			pc_sel = PC_SEL_INC;
-			pmem_ce = 1'b1;
-			/* test for STS and LDS */
-			if((pmem_d[15:10] == 6'b100100) & (pmem_d[3:0] == 4'h0))
-				next_state = STALL; /* 2-word instruction, skip the second word as well */
-			else
-				next_state = NORMAL; /* 1-word instruction */
-		end
-		STALL: begin
-			pc_sel = PC_SEL_INC;
-			pmem_ce = 1'b1;
-			next_state = NORMAL;
-		end
-		WRITEBACK: begin
-			pmem_ce = 1'b1;
-			pc_sel = PC_SEL_INC;
-			normal_en = 1'b1;
-			next_state = NORMAL;
-		end
-	endcase
-end
-
-
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/softusb_navre/slpp_unit/work/sim/bench.v b/SVIncCompil/Testcases/YosysBigSim/softusb_navre/slpp_unit/work/sim/bench.v
deleted file mode 100644
index a33a72f..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/softusb_navre/slpp_unit/work/sim/bench.v
+++ /dev/null
@@ -1,258 +0,0 @@
-
-module testbench;
-
-parameter pmem_width = 11;
-parameter dmem_width = 13;
-
-// navre inputs
-reg clk;
-reg rst;
-reg [15:0] pmem_d;
-reg [7:0] dmem_di;
-reg [7:0] io_di;
-reg [7:0] irq;
-
-// navre outputs
-wire pmem_ce;
-wire [pmem_width-1:0] pmem_a;
-wire dmem_we;
-wire [dmem_width-1:0] dmem_a;
-wire [7:0] dmem_do;
-wire io_re;
-wire io_we;
-wire [5:0] io_a;
-wire [7:0] io_do;
-wire [7:0] irq_ack;
-wire [pmem_width-1:0] dbg_pc;
-
-softusb_navre #(
-	pmem_width,
-	dmem_width
-) UUT (
-	clk,
-	rst,
-
-	pmem_ce,
-	pmem_a,
-	pmem_d,
-
-	dmem_we,
-	dmem_a,
-	dmem_di,
-	dmem_do,
-
-	io_re,
-	io_we,
-	io_a,
-	io_do,
-	io_di,
-
-	irq,
-	irq_ack,
-	dbg_pc
-);
-
-integer cycles;
-initial begin
-	clk <= 1;
-	rst <= 1;
-	cycles = 0;
-	while (cycles < 8) begin
-		#50; clk <= ~clk;
-		cycles = cycles + 1;
-		#50; clk <= ~clk;
-	end
-	rst <= #20 0;
-	forever begin
-		#50; clk <= ~clk;
-		cycles = cycles + 1;
-		#50; clk <= ~clk;
-		if (cycles == 10000) begin
-			$display("Reached limit of 10000 cpu cycles.");
-			$finish;
-		end
-	end
-end
-
-reg [15:0] addr;
-reg [15:0] pmem [2**pmem_width-1:0];
-reg [ 7:0] dmem [2**dmem_width-1:0];
-
-integer output_idx;
-reg [7:0] output_buf [1023:0];
-event output_eof;
-
-integer i;
-initial begin
-	for (i=0; i < 2**pmem_width; i = i+1) begin
-		pmem[i] = 0;
-	end
-	for (i=0; i < 2**dmem_width; i = i+1) begin
-		dmem[i] = 0;
-	end
-	pmem[   0] = 16'hc00c;
-pmem[   1] = 16'hc01b;
-pmem[   2] = 16'hc01a;
-pmem[   3] = 16'hc019;
-pmem[   4] = 16'hc018;
-pmem[   5] = 16'hc017;
-pmem[   6] = 16'hc016;
-pmem[   7] = 16'hc015;
-pmem[   8] = 16'hc014;
-pmem[   9] = 16'hc013;
-pmem[  10] = 16'hc012;
-pmem[  11] = 16'hc011;
-pmem[  12] = 16'hc010;
-pmem[  13] = 16'h2411;
-pmem[  14] = 16'hbe1f;
-pmem[  15] = 16'he5cf;
-pmem[  16] = 16'he0d2;
-pmem[  17] = 16'hbfde;
-pmem[  18] = 16'hbfcd;
-pmem[  19] = 16'he010;
-pmem[  20] = 16'he6a0;
-pmem[  21] = 16'he0b0;
-pmem[  22] = 16'hc001;
-pmem[  23] = 16'h921d;
-pmem[  24] = 16'h36a3;
-pmem[  25] = 16'h07b1;
-pmem[  26] = 16'hf7e1;
-pmem[  27] = 16'hd028;
-pmem[  28] = 16'hc059;
-pmem[  29] = 16'hcfe2;
-pmem[  30] = 16'h2fe8;
-pmem[  31] = 16'h95e6;
-pmem[  32] = 16'h95e6;
-pmem[  33] = 16'h95e6;
-pmem[  34] = 16'he0f0;
-pmem[  35] = 16'h5ae0;
-pmem[  36] = 16'h4fff;
-pmem[  37] = 16'h7087;
-pmem[  38] = 16'he021;
-pmem[  39] = 16'he030;
-pmem[  40] = 16'hc001;
-pmem[  41] = 16'h0f22;
-pmem[  42] = 16'h958a;
-pmem[  43] = 16'hf7ea;
-pmem[  44] = 16'h8180;
-pmem[  45] = 16'h2b82;
-pmem[  46] = 16'h8380;
-pmem[  47] = 16'h9508;
-pmem[  48] = 16'h2fe8;
-pmem[  49] = 16'h95e6;
-pmem[  50] = 16'h95e6;
-pmem[  51] = 16'h95e6;
-pmem[  52] = 16'he0f0;
-pmem[  53] = 16'h5ae0;
-pmem[  54] = 16'h4fff;
-pmem[  55] = 16'h8120;
-pmem[  56] = 16'he030;
-pmem[  57] = 16'h7087;
-pmem[  58] = 16'hc002;
-pmem[  59] = 16'h9535;
-pmem[  60] = 16'h9527;
-pmem[  61] = 16'h958a;
-pmem[  62] = 16'hf7e2;
-pmem[  63] = 16'h2f82;
-pmem[  64] = 16'h7081;
-pmem[  65] = 16'h9508;
-pmem[  66] = 16'hbd8a;
-pmem[  67] = 16'h9508;
-pmem[  68] = 16'h931f;
-pmem[  69] = 16'h93cf;
-pmem[  70] = 16'h93df;
-pmem[  71] = 16'he082;
-pmem[  72] = 16'hdff9;
-pmem[  73] = 16'he0c3;
-pmem[  74] = 16'he0d0;
-pmem[  75] = 16'h2f8d;
-pmem[  76] = 16'hdfe3;
-pmem[  77] = 16'h1181;
-pmem[  78] = 16'hc01b;
-pmem[  79] = 16'h2f8c;
-pmem[  80] = 16'hdff1;
-pmem[  81] = 16'h2f1c;
-pmem[  82] = 16'h0f11;
-pmem[  83] = 16'hff10;
-pmem[  84] = 16'hc013;
-pmem[  85] = 16'h2f41;
-pmem[  86] = 16'he050;
-pmem[  87] = 16'h2f24;
-pmem[  88] = 16'h2f35;
-pmem[  89] = 16'h5023;
-pmem[  90] = 16'h0931;
-pmem[  91] = 16'hff37;
-pmem[  92] = 16'hc004;
-pmem[  93] = 16'h2f24;
-pmem[  94] = 16'h2f35;
-pmem[  95] = 16'h5022;
-pmem[  96] = 16'h0931;
-pmem[  97] = 16'h2f82;
-pmem[  98] = 16'h2f93;
-pmem[  99] = 16'h9595;
-pmem[ 100] = 16'h9587;
-pmem[ 101] = 16'h3188;
-pmem[ 102] = 16'hf418;
-pmem[ 103] = 16'hdfb6;
-pmem[ 104] = 16'h0f1c;
-pmem[ 105] = 16'hcfe9;
-pmem[ 106] = 16'h5fdf;
-pmem[ 107] = 16'h5fce;
-pmem[ 108] = 16'h31d8;
-pmem[ 109] = 16'hf6e9;
-pmem[ 110] = 16'he080;
-pmem[ 111] = 16'hdfd2;
-pmem[ 112] = 16'he080;
-pmem[ 113] = 16'he090;
-pmem[ 114] = 16'h91df;
-pmem[ 115] = 16'h91cf;
-pmem[ 116] = 16'h911f;
-pmem[ 117] = 16'h9508;
-pmem[ 118] = 16'h94f8;
-pmem[ 119] = 16'hcfff;
-	output_idx = 0;
-end
-
-always @(posedge clk) begin
-	if (rst) begin
-		pmem_d <= 0;
-		irq <= 0;
-	end else if (pmem_ce) begin
-		addr = pmem_a * 2;
-		$display("+LOG+ %t PR @%x %x", $time, addr, pmem[pmem_a]);
-		pmem_d <= pmem[pmem_a];
-	end
-	if (dmem_we) begin
-		addr = dmem_a;
-		$display("+LOG+ %t DW @%x   %x", $time, addr, dmem_do);
-		dmem[dmem_a] <= dmem_do;
-	end
-	if (io_we && io_a == 42) begin
-		addr = io_a;
-		$display("+LOG+ %t IO @%x   %x  <---", $time, addr, io_do);
-		if (io_do == 0) begin
-			-> output_eof;
-		end else begin
-			output_buf[output_idx] = io_do;
-			output_idx = output_idx + 1;
-		end
-	end
-	dmem_di <= dmem[dmem_a];
-	io_di <= 0;
-end
-
-always @(output_eof) begin
-	#1001;
-	$display("Got EOF marker on IO port.");
-	for (i = 0; i < output_idx; i = i + 1) begin
-		$display("+OUT+ %t %d", $time, output_buf[i]);
-	end
-	$finish;
-end
-
-initial begin
-	// $dumpfile("bench.vcd");
-	// $dumpvars(0, testbench);
-end
-
-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/surelog.log b/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/surelog.log
deleted file mode 100644
index 8423876..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/surelog.log
+++ /dev/null
@@ -1,76 +0,0 @@
-********************************************
-*  SURELOG System Verilog Compiler/Linter  *
-********************************************
-
-Copyright (c) 2017-2019 ACE Cloud,
-Authorized used only.
-
-VERSION: 0.05
-BUILT  : Nov  3 2019
-DATE   : 2019-11-03.21:44:10
-COMMAND: -writepp -parse -mt max -nopython -fileunit rtl/data.v rtl/debounce.v rtl/front_rom.v rtl/pong_graph.v rtl/text_graph.v rtl/top.v rtl/vga_sync.v sim/bench.v +incdir+./rtl/+./sim/ -nobuiltin -nocache
-
-[INFO :CM0023] Creating log file ./slpp_unit/surelog.log.
-
-[INFO :CM0024] Executing with 4 threads.
-
-[INFO :CM0020] Separate compilation-unit mode is on.
-
-[WARNI:PP0103] sim/bench.v:5 Undefining an unknown macro "WRITE_FRAMES_PPM".
-
-[WARNI:PA0205] rtl/front_rom.v:1 No timescale set for "font_rom".
-
-[WARNI:PA0205] rtl/text_graph.v:1 No timescale set for "text_graph".
-
-[WARNI:PA0205] rtl/vga_sync.v:1 No timescale set for "vga_sync".
-
-[WARNI:PA0205] sim/bench.v:7 No timescale set for "testbench".
-
-[INFO :CP0300] Compilation...
-
-[INFO :CP0303] rtl/debounce.v:3 Compile module "work@debounce".
-
-[INFO :CP0303] sim/bench.v:7 Compile module "work@testbench".
-
-[INFO :CP0303] rtl/front_rom.v:1 Compile module "work@font_rom".
-
-[INFO :CP0303] rtl/pong_graph.v:3 Compile module "work@pong_graph".
-
-[INFO :CP0303] rtl/text_graph.v:1 Compile module "work@text_graph".
-
-[INFO :CP0303] rtl/vga_sync.v:1 Compile module "work@vga_sync".
-
-[INFO :CP0303] rtl/top.v:3 Compile module "work@top".
-
-[NOTE :CP0309] rtl/top.v:7 Implicit port type (wire) for "vsync".
-
-[NOTE :CP0309] rtl/pong_graph.v:9 Implicit port type (wire) for "hit_left",
-there are 2 more instances of this message.
-
-[NOTE :CP0309] rtl/vga_sync.v:4 Implicit port type (wire) for "vsync",
-there are 3 more instances of this message.
-
-[INFO :EL0526] Design Elaboration...
-
-[NOTE :EL0503] sim/bench.v:7 Top level module "work@testbench".
-
-[WARNI:EL0505] rtl/data.v:1 Multiply defined module "work@font_rom",
-               rtl/front_rom.v:1 previous definition.
-
-[NOTE :EL0508] Nb Top level modules: 1.
-
-[NOTE :EL0509] Max instance depth: 4.
-
-[NOTE :EL0510] Nb instances: 10.
-
-[NOTE :EL0511] Nb leaf instances: 1.
-
-[  FATAL] : 0
-[  ERROR] : 0
-[WARNING] : 6
-[   NOTE] : 8
-
-********************************************
-*   End SURELOG SVerilog Compiler/Linter   *
-********************************************
-
diff --git a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/data.v b/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/data.v
deleted file mode 100644
index a3f3af3..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/data.v
+++ /dev/null
@@ -1,2192 +0,0 @@
-module font_rom
-   (
-    input wire clk,
-    input wire [10:0] addr,
-    output reg [7:0] data
-   );
-   reg [10:0] addr_reg; 

-	
-   always @(posedge clk) 
-      addr_reg <= addr;
-      
-   always @*
-      case (addr_reg)
-         //code x00
-         11'h000: data = 8'b00000000; // 
-         11'h001: data = 8'b00000000; // 
-         11'h002: data = 8'b00000000; // 
-         11'h003: data = 8'b00000000; // 
-         11'h004: data = 8'b00000000; // 
-         11'h005: data = 8'b00000000; // 
-         11'h006: data = 8'b00000000; // 
-         11'h007: data = 8'b00000000; // 
-         11'h008: data = 8'b00000000; // 
-         11'h009: data = 8'b00000000; // 
-         11'h00a: data = 8'b00000000; // 
-         11'h00b: data = 8'b00000000; // 
-         11'h00c: data = 8'b00000000; // 
-         11'h00d: data = 8'b00000000; // 
-         11'h00e: data = 8'b00000000; // 
-         11'h00f: data = 8'b00000000; // 
-         //code x01
-         11'h010: data = 8'b00000000; // 
-         11'h011: data = 8'b00000000; // 
-         11'h012: data = 8'b01111110; //  ******
-         11'h013: data = 8'b10000001; // *      *
-         11'h014: data = 8'b10100101; // * *  * *
-         11'h015: data = 8'b10000001; // *      *
-         11'h016: data = 8'b10000001; // *      *
-         11'h017: data = 8'b10111101; // * **** *
-         11'h018: data = 8'b10011001; // *  **  *
-         11'h019: data = 8'b10000001; // *      *
-         11'h01a: data = 8'b10000001; // *      *
-         11'h01b: data = 8'b01111110; //  ******
-         11'h01c: data = 8'b00000000; // 
-         11'h01d: data = 8'b00000000; // 
-         11'h01e: data = 8'b00000000; // 
-         11'h01f: data = 8'b00000000; // 
-         //code x02
-         11'h020: data = 8'b00000000; // 
-         11'h021: data = 8'b00000000; // 
-         11'h022: data = 8'b01111110; //  ******
-         11'h023: data = 8'b11111111; // ********
-         11'h024: data = 8'b11011011; // ** ** **
-         11'h025: data = 8'b11111111; // ********
-         11'h026: data = 8'b11111111; // ********
-         11'h027: data = 8'b11000011; // **    **
-         11'h028: data = 8'b11100111; // ***  ***
-         11'h029: data = 8'b11111111; // ********
-         11'h02a: data = 8'b11111111; // ********
-         11'h02b: data = 8'b01111110; //  ******
-         11'h02c: data = 8'b00000000; // 
-         11'h02d: data = 8'b00000000; // 
-         11'h02e: data = 8'b00000000; // 
-         11'h02f: data = 8'b00000000; // 
-         //code x03
-         11'h030: data = 8'b00000000; // 
-         11'h031: data = 8'b00000000; // 
-         11'h032: data = 8'b00000000; // 
-         11'h033: data = 8'b00000000; // 
-         11'h034: data = 8'b01101100; //  ** **
-         11'h035: data = 8'b11111110; // *******
-         11'h036: data = 8'b11111110; // *******
-         11'h037: data = 8'b11111110; // *******
-         11'h038: data = 8'b11111110; // *******
-         11'h039: data = 8'b01111100; //  *****
-         11'h03a: data = 8'b00111000; //   ***
-         11'h03b: data = 8'b00010000; //    *
-         11'h03c: data = 8'b00000000; // 
-         11'h03d: data = 8'b00000000; // 
-         11'h03e: data = 8'b00000000; // 
-         11'h03f: data = 8'b00000000; // 
-         //code x04
-         11'h040: data = 8'b00000000; // 
-         11'h041: data = 8'b00000000; // 
-         11'h042: data = 8'b00000000; // 
-         11'h043: data = 8'b00000000; // 
-         11'h044: data = 8'b00010000; //    *
-         11'h045: data = 8'b00111000; //   ***
-         11'h046: data = 8'b01111100; //  *****
-         11'h047: data = 8'b11111110; // *******
-         11'h048: data = 8'b01111100; //  *****
-         11'h049: data = 8'b00111000; //   ***
-         11'h04a: data = 8'b00010000; //    *
-         11'h04b: data = 8'b00000000; // 
-         11'h04c: data = 8'b00000000; // 
-         11'h04d: data = 8'b00000000; // 
-         11'h04e: data = 8'b00000000; // 
-         11'h04f: data = 8'b00000000; // 
-         //code x05
-         11'h050: data = 8'b00000000; // 
-         11'h051: data = 8'b00000000; // 
-         11'h052: data = 8'b00000000; // 
-         11'h053: data = 8'b00011000; //    **
-         11'h054: data = 8'b00111100; //   ****
-         11'h055: data = 8'b00111100; //   ****
-         11'h056: data = 8'b11100111; // ***  ***
-         11'h057: data = 8'b11100111; // ***  ***
-         11'h058: data = 8'b11100111; // ***  ***
-         11'h059: data = 8'b00011000; //    **
-         11'h05a: data = 8'b00011000; //    **
-         11'h05b: data = 8'b00111100; //   ****
-         11'h05c: data = 8'b00000000; // 
-         11'h05d: data = 8'b00000000; // 
-         11'h05e: data = 8'b00000000; // 
-         11'h05f: data = 8'b00000000; // 
-         //code x06
-         11'h060: data = 8'b00000000; // 
-         11'h061: data = 8'b00000000; // 
-         11'h062: data = 8'b00000000; // 
-         11'h063: data = 8'b00011000; //    **
-         11'h064: data = 8'b00111100; //   ****
-         11'h065: data = 8'b01111110; //  ******
-         11'h066: data = 8'b11111111; // ********
-         11'h067: data = 8'b11111111; // ********
-         11'h068: data = 8'b01111110; //  ******
-         11'h069: data = 8'b00011000; //    **
-         11'h06a: data = 8'b00011000; //    **
-         11'h06b: data = 8'b00111100; //   ****
-         11'h06c: data = 8'b00000000; // 
-         11'h06d: data = 8'b00000000; // 
-         11'h06e: data = 8'b00000000; // 
-         11'h06f: data = 8'b00000000; // 
-         //code x07
-         11'h070: data = 8'b00000000; // 
-         11'h071: data = 8'b00000000; // 
-         11'h072: data = 8'b00000000; // 
-         11'h073: data = 8'b00000000; // 
-         11'h074: data = 8'b00000000; // 
-         11'h075: data = 8'b00000000; // 
-         11'h076: data = 8'b00011000; //    **
-         11'h077: data = 8'b00111100; //   ****
-         11'h078: data = 8'b00111100; //   ****
-         11'h079: data = 8'b00011000; //    **
-         11'h07a: data = 8'b00000000; // 
-         11'h07b: data = 8'b00000000; // 
-         11'h07c: data = 8'b00000000; // 
-         11'h07d: data = 8'b00000000; // 
-         11'h07e: data = 8'b00000000; // 
-         11'h07f: data = 8'b00000000; // 
-         //code x08
-         11'h080: data = 8'b11111111; // ********
-         11'h081: data = 8'b11111111; // ********
-         11'h082: data = 8'b11111111; // ********
-         11'h083: data = 8'b11111111; // ********
-         11'h084: data = 8'b11111111; // ********
-         11'h085: data = 8'b11111111; // ********
-         11'h086: data = 8'b11100111; // ***  ***
-         11'h087: data = 8'b11000011; // **    **
-         11'h088: data = 8'b11000011; // **    **
-         11'h089: data = 8'b11100111; // ***  ***
-         11'h08a: data = 8'b11111111; // ********
-         11'h08b: data = 8'b11111111; // ********
-         11'h08c: data = 8'b11111111; // ********
-         11'h08d: data = 8'b11111111; // ********
-         11'h08e: data = 8'b11111111; // ********
-         11'h08f: data = 8'b11111111; // ********
-         //code x09
-         11'h090: data = 8'b00000000; // 
-         11'h091: data = 8'b00000000; // 
-         11'h092: data = 8'b00000000; // 
-         11'h093: data = 8'b00000000; // 
-         11'h094: data = 8'b00000000; // 
-         11'h095: data = 8'b00111100; //   ****
-         11'h096: data = 8'b01100110; //  **  **
-         11'h097: data = 8'b01000010; //  *    *
-         11'h098: data = 8'b01000010; //  *    *
-         11'h099: data = 8'b01100110; //  **  **
-         11'h09a: data = 8'b00111100; //   ****
-         11'h09b: data = 8'b00000000; // 
-         11'h09c: data = 8'b00000000; // 
-         11'h09d: data = 8'b00000000; // 
-         11'h09e: data = 8'b00000000; // 
-         11'h09f: data = 8'b00000000; // 
-         //code x0a
-         11'h0a0: data = 8'b11111111; // ********
-         11'h0a1: data = 8'b11111111; // ********
-         11'h0a2: data = 8'b11111111; // ********
-         11'h0a3: data = 8'b11111111; // ********
-         11'h0a4: data = 8'b11111111; // ********
-         11'h0a5: data = 8'b11000011; // **    **
-         11'h0a6: data = 8'b10011001; // *  **  *
-         11'h0a7: data = 8'b10111101; // * **** *
-         11'h0a8: data = 8'b10111101; // * **** *
-         11'h0a9: data = 8'b10011001; // *  **  *
-         11'h0aa: data = 8'b11000011; // **    **
-         11'h0ab: data = 8'b11111111; // ********
-         11'h0ac: data = 8'b11111111; // ********
-         11'h0ad: data = 8'b11111111; // ********
-         11'h0ae: data = 8'b11111111; // ********
-         11'h0af: data = 8'b11111111; // ********
-         //code x0b
-         11'h0b0: data = 8'b00000000; // 
-         11'h0b1: data = 8'b00000000; // 
-         11'h0b2: data = 8'b00011110; //    ****
-         11'h0b3: data = 8'b00001110; //     ***
-         11'h0b4: data = 8'b00011010; //    ** *
-         11'h0b5: data = 8'b00110010; //   **  *
-         11'h0b6: data = 8'b01111000; //  ****
-         11'h0b7: data = 8'b11001100; // **  **
-         11'h0b8: data = 8'b11001100; // **  **
-         11'h0b9: data = 8'b11001100; // **  **
-         11'h0ba: data = 8'b11001100; // **  **
-         11'h0bb: data = 8'b01111000; //  ****
-         11'h0bc: data = 8'b00000000; // 
-         11'h0bd: data = 8'b00000000; // 
-         11'h0be: data = 8'b00000000; // 
-         11'h0bf: data = 8'b00000000; // 
-         //code x0c
-         11'h0c0: data = 8'b00000000; // 
-         11'h0c1: data = 8'b00000000; // 
-         11'h0c2: data = 8'b00111100; //   ****
-         11'h0c3: data = 8'b01100110; //  **  **
-         11'h0c4: data = 8'b01100110; //  **  **
-         11'h0c5: data = 8'b01100110; //  **  **
-         11'h0c6: data = 8'b01100110; //  **  **
-         11'h0c7: data = 8'b00111100; //   ****
-         11'h0c8: data = 8'b00011000; //    **
-         11'h0c9: data = 8'b01111110; //  ******
-         11'h0ca: data = 8'b00011000; //    **
-         11'h0cb: data = 8'b00011000; //    **
-         11'h0cc: data = 8'b00000000; // 
-         11'h0cd: data = 8'b00000000; // 
-         11'h0ce: data = 8'b00000000; // 
-         11'h0cf: data = 8'b00000000; // 
-         //code x0d
-         11'h0d0: data = 8'b00000000; // 
-         11'h0d1: data = 8'b00000000; // 
-         11'h0d2: data = 8'b00111111; //   ******
-         11'h0d3: data = 8'b00110011; //   **  **
-         11'h0d4: data = 8'b00111111; //   ******
-         11'h0d5: data = 8'b00110000; //   **
-         11'h0d6: data = 8'b00110000; //   **
-         11'h0d7: data = 8'b00110000; //   **
-         11'h0d8: data = 8'b00110000; //   **
-         11'h0d9: data = 8'b01110000; //  ***
-         11'h0da: data = 8'b11110000; // ****
-         11'h0db: data = 8'b11100000; // ***
-         11'h0dc: data = 8'b00000000; // 
-         11'h0dd: data = 8'b00000000; // 
-         11'h0de: data = 8'b00000000; // 
-         11'h0df: data = 8'b00000000; // 
-         //code x0e
-         11'h0e0: data = 8'b00000000; // 
-         11'h0e1: data = 8'b00000000; // 
-         11'h0e2: data = 8'b01111111; //  *******
-         11'h0e3: data = 8'b01100011; //  **   **
-         11'h0e4: data = 8'b01111111; //  *******
-         11'h0e5: data = 8'b01100011; //  **   **
-         11'h0e6: data = 8'b01100011; //  **   **
-         11'h0e7: data = 8'b01100011; //  **   **
-         11'h0e8: data = 8'b01100011; //  **   **
-         11'h0e9: data = 8'b01100111; //  **  ***
-         11'h0ea: data = 8'b11100111; // ***  ***
-         11'h0eb: data = 8'b11100110; // ***  **
-         11'h0ec: data = 8'b11000000; // **
-         11'h0ed: data = 8'b00000000; // 
-         11'h0ee: data = 8'b00000000; // 
-         11'h0ef: data = 8'b00000000; // 
-         //code x0f
-         11'h0f0: data = 8'b00000000; // 
-         11'h0f1: data = 8'b00000000; // 
-         11'h0f2: data = 8'b00000000; // 
-         11'h0f3: data = 8'b00011000; //    **
-         11'h0f4: data = 8'b00011000; //    **
-         11'h0f5: data = 8'b11011011; // ** ** **
-         11'h0f6: data = 8'b00111100; //   ****
-         11'h0f7: data = 8'b11100111; // ***  ***
-         11'h0f8: data = 8'b00111100; //   ****
-         11'h0f9: data = 8'b11011011; // ** ** **
-         11'h0fa: data = 8'b00011000; //    **
-         11'h0fb: data = 8'b00011000; //    **
-         11'h0fc: data = 8'b00000000; // 
-         11'h0fd: data = 8'b00000000; // 
-         11'h0fe: data = 8'b00000000; // 
-         11'h0ff: data = 8'b00000000; // 
-         //code x10
-         11'h100: data = 8'b00000000; // 
-         11'h101: data = 8'b10000000; // *
-         11'h102: data = 8'b11000000; // **
-         11'h103: data = 8'b11100000; // ***
-         11'h104: data = 8'b11110000; // ****
-         11'h105: data = 8'b11111000; // *****
-         11'h106: data = 8'b11111110; // *******
-         11'h107: data = 8'b11111000; // *****
-         11'h108: data = 8'b11110000; // ****
-         11'h109: data = 8'b11100000; // ***
-         11'h10a: data = 8'b11000000; // **
-         11'h10b: data = 8'b10000000; // *
-         11'h10c: data = 8'b00000000; // 
-         11'h10d: data = 8'b00000000; // 
-         11'h10e: data = 8'b00000000; // 
-         11'h10f: data = 8'b00000000; // 
-         //code x11
-         11'h110: data = 8'b00000000; // 
-         11'h111: data = 8'b00000010; //       *
-         11'h112: data = 8'b00000110; //      **
-         11'h113: data = 8'b00001110; //     ***
-         11'h114: data = 8'b00011110; //    ****
-         11'h115: data = 8'b00111110; //   *****
-         11'h116: data = 8'b11111110; // *******
-         11'h117: data = 8'b00111110; //   *****
-         11'h118: data = 8'b00011110; //    ****
-         11'h119: data = 8'b00001110; //     ***
-         11'h11a: data = 8'b00000110; //      **
-         11'h11b: data = 8'b00000010; //       *
-         11'h11c: data = 8'b00000000; // 
-         11'h11d: data = 8'b00000000; // 
-         11'h11e: data = 8'b00000000; // 
-         11'h11f: data = 8'b00000000; // 
-         //code x12
-         11'h120: data = 8'b00000000; // 
-         11'h121: data = 8'b00000000; // 
-         11'h122: data = 8'b00011000; //    **
-         11'h123: data = 8'b00111100; //   ****
-         11'h124: data = 8'b01111110; //  ******
-         11'h125: data = 8'b00011000; //    **
-         11'h126: data = 8'b00011000; //    **
-         11'h127: data = 8'b00011000; //    **
-         11'h128: data = 8'b01111110; //  ******
-         11'h129: data = 8'b00111100; //   ****
-         11'h12a: data = 8'b00011000; //    **
-         11'h12b: data = 8'b00000000; // 
-         11'h12c: data = 8'b00000000; // 
-         11'h12d: data = 8'b00000000; // 
-         11'h12e: data = 8'b00000000; // 
-         11'h12f: data = 8'b00000000; // 
-         //code x13
-         11'h130: data = 8'b00000000; // 
-         11'h131: data = 8'b00000000; // 
-         11'h132: data = 8'b01100110; //  **  **
-         11'h133: data = 8'b01100110; //  **  **
-         11'h134: data = 8'b01100110; //  **  **
-         11'h135: data = 8'b01100110; //  **  **
-         11'h136: data = 8'b01100110; //  **  **
-         11'h137: data = 8'b01100110; //  **  **
-         11'h138: data = 8'b01100110; //  **  **
-         11'h139: data = 8'b00000000; // 
-         11'h13a: data = 8'b01100110; //  **  **
-         11'h13b: data = 8'b01100110; //  **  **
-         11'h13c: data = 8'b00000000; // 
-         11'h13d: data = 8'b00000000; // 
-         11'h13e: data = 8'b00000000; // 
-         11'h13f: data = 8'b00000000; // 
-         //code x14
-         11'h140: data = 8'b00000000; // 
-         11'h141: data = 8'b00000000; // 
-         11'h142: data = 8'b01111111; //  *******
-         11'h143: data = 8'b11011011; // ** ** **
-         11'h144: data = 8'b11011011; // ** ** **
-         11'h145: data = 8'b11011011; // ** ** **
-         11'h146: data = 8'b01111011; //  **** **
-         11'h147: data = 8'b00011011; //    ** **
-         11'h148: data = 8'b00011011; //    ** **
-         11'h149: data = 8'b00011011; //    ** **
-         11'h14a: data = 8'b00011011; //    ** **
-         11'h14b: data = 8'b00011011; //    ** **
-         11'h14c: data = 8'b00000000; // 
-         11'h14d: data = 8'b00000000; // 
-         11'h14e: data = 8'b00000000; // 
-         11'h14f: data = 8'b00000000; // 
-         //code x15
-         11'h150: data = 8'b00000000; // 
-         11'h151: data = 8'b01111100; //  *****
-         11'h152: data = 8'b11000110; // **   **
-         11'h153: data = 8'b01100000; //  **
-         11'h154: data = 8'b00111000; //   ***
-         11'h155: data = 8'b01101100; //  ** **
-         11'h156: data = 8'b11000110; // **   **
-         11'h157: data = 8'b11000110; // **   **
-         11'h158: data = 8'b01101100; //  ** **
-         11'h159: data = 8'b00111000; //   ***
-         11'h15a: data = 8'b00001100; //     **
-         11'h15b: data = 8'b11000110; // **   **
-         11'h15c: data = 8'b01111100; //  *****
-         11'h15d: data = 8'b00000000; // 
-         11'h15e: data = 8'b00000000; // 
-         11'h15f: data = 8'b00000000; // 
-         //code x16
-         11'h160: data = 8'b00000000; // 
-         11'h161: data = 8'b00000000; // 
-         11'h162: data = 8'b00000000; // 
-         11'h163: data = 8'b00000000; // 
-         11'h164: data = 8'b00000000; // 
-         11'h165: data = 8'b00000000; // 
-         11'h166: data = 8'b00000000; // 
-         11'h167: data = 8'b00000000; // 
-         11'h168: data = 8'b11111110; // *******
-         11'h169: data = 8'b11111110; // *******
-         11'h16a: data = 8'b11111110; // *******
-         11'h16b: data = 8'b11111110; // *******
-         11'h16c: data = 8'b00000000; // 
-         11'h16d: data = 8'b00000000; // 
-         11'h16e: data = 8'b00000000; // 
-         11'h16f: data = 8'b00000000; // 
-         //code x17
-         11'h170: data = 8'b00000000; // 
-         11'h171: data = 8'b00000000; // 
-         11'h172: data = 8'b00011000; //    **
-         11'h173: data = 8'b00111100; //   ****
-         11'h174: data = 8'b01111110; //  ******
-         11'h175: data = 8'b00011000; //    **
-         11'h176: data = 8'b00011000; //    **
-         11'h177: data = 8'b00011000; //    **
-         11'h178: data = 8'b01111110; //  ******
-         11'h179: data = 8'b00111100; //   ****
-         11'h17a: data = 8'b00011000; //    **
-         11'h17b: data = 8'b01111110; //  ******
-         11'h17c: data = 8'b00110000; // 
-         11'h17d: data = 8'b00000000; // 
-         11'h17e: data = 8'b00000000; // 
-         11'h17f: data = 8'b00000000; // 
-         //code x18
-         11'h180: data = 8'b00000000; // 
-         11'h181: data = 8'b00000000; // 
-         11'h182: data = 8'b00011000; //    **
-         11'h183: data = 8'b00111100; //   ****
-         11'h184: data = 8'b01111110; //  ******
-         11'h185: data = 8'b00011000; //    **
-         11'h186: data = 8'b00011000; //    **
-         11'h187: data = 8'b00011000; //    **
-         11'h188: data = 8'b00011000; //    **
-         11'h189: data = 8'b00011000; //    **
-         11'h18a: data = 8'b00011000; //    **
-         11'h18b: data = 8'b00011000; //    **
-         11'h18c: data = 8'b00000000; // 
-         11'h18d: data = 8'b00000000; // 
-         11'h18e: data = 8'b00000000; // 
-         11'h18f: data = 8'b00000000; // 
-         //code x19
-         11'h190: data = 8'b00000000; // 
-         11'h191: data = 8'b00000000; // 
-         11'h192: data = 8'b00011000; //    **
-         11'h193: data = 8'b00011000; //    **
-         11'h194: data = 8'b00011000; //    **
-         11'h195: data = 8'b00011000; //    **
-         11'h196: data = 8'b00011000; //    **
-         11'h197: data = 8'b00011000; //    **
-         11'h198: data = 8'b00011000; //    **
-         11'h199: data = 8'b01111110; //  ******
-         11'h19a: data = 8'b00111100; //   ****
-         11'h19b: data = 8'b00011000; //    **
-         11'h19c: data = 8'b00000000; // 
-         11'h19d: data = 8'b00000000; // 
-         11'h19e: data = 8'b00000000; // 
-         11'h19f: data = 8'b00000000; // 
-         //code x1a
-         11'h1a0: data = 8'b00000000; // 
-         11'h1a1: data = 8'b00000000; // 
-         11'h1a2: data = 8'b00000000; // 
-         11'h1a3: data = 8'b00000000; // 
-         11'h1a4: data = 8'b00000000; // 
-         11'h1a5: data = 8'b00011000; //    **
-         11'h1a6: data = 8'b00001100; //     **
-         11'h1a7: data = 8'b11111110; // *******
-         11'h1a8: data = 8'b00001100; //     **
-         11'h1a9: data = 8'b00011000; //    **
-         11'h1aa: data = 8'b00000000; // 
-         11'h1ab: data = 8'b00000000; // 
-         11'h1ac: data = 8'b00000000; // 
-         11'h1ad: data = 8'b00000000; // 
-         11'h1ae: data = 8'b00000000; // 
-         11'h1af: data = 8'b00000000; // 
-         //code x1b
-         11'h1b0: data = 8'b00000000; // 
-         11'h1b1: data = 8'b00000000; // 
-         11'h1b2: data = 8'b00000000; // 
-         11'h1b3: data = 8'b00000000; // 
-         11'h1b4: data = 8'b00000000; // 
-         11'h1b5: data = 8'b00110000; //   **
-         11'h1b6: data = 8'b01100000; //  **
-         11'h1b7: data = 8'b11111110; // *******
-         11'h1b8: data = 8'b01100000; //  **
-         11'h1b9: data = 8'b00110000; //   **
-         11'h1ba: data = 8'b00000000; // 
-         11'h1bb: data = 8'b00000000; // 
-         11'h1bc: data = 8'b00000000; // 
-         11'h1bd: data = 8'b00000000; // 
-         11'h1be: data = 8'b00000000; // 
-         11'h1bf: data = 8'b00000000; // 
-         //code x1c
-         11'h1c0: data = 8'b00000000; // 
-         11'h1c1: data = 8'b00000000; // 
-         11'h1c2: data = 8'b00000000; // 
-         11'h1c3: data = 8'b00000000; // 
-         11'h1c4: data = 8'b00000000; // 
-         11'h1c5: data = 8'b00000000; // 
-         11'h1c6: data = 8'b11000000; // **
-         11'h1c7: data = 8'b11000000; // **
-         11'h1c8: data = 8'b11000000; // **
-         11'h1c9: data = 8'b11111110; // *******
-         11'h1ca: data = 8'b00000000; // 
-         11'h1cb: data = 8'b00000000; // 
-         11'h1cc: data = 8'b00000000; // 
-         11'h1cd: data = 8'b00000000; // 
-         11'h1ce: data = 8'b00000000; // 
-         11'h1cf: data = 8'b00000000; // 
-         //code x1d
-         11'h1d0: data = 8'b00000000; // 
-         11'h1d1: data = 8'b00000000; // 
-         11'h1d2: data = 8'b00000000; // 
-         11'h1d3: data = 8'b00000000; // 
-         11'h1d4: data = 8'b00000000; // 
-         11'h1d5: data = 8'b00100100; //   *  *
-         11'h1d6: data = 8'b01100110; //  **  **
-         11'h1d7: data = 8'b11111111; // ********
-         11'h1d8: data = 8'b01100110; //  **  **
-         11'h1d9: data = 8'b00100100; //   *  *
-         11'h1da: data = 8'b00000000; // 
-         11'h1db: data = 8'b00000000; // 
-         11'h1dc: data = 8'b00000000; // 
-         11'h1dd: data = 8'b00000000; // 
-         11'h1de: data = 8'b00000000; // 
-         11'h1df: data = 8'b00000000; // 
-         //code x1e
-         11'h1e0: data = 8'b00000000; // 
-         11'h1e1: data = 8'b00000000; // 
-         11'h1e2: data = 8'b00000000; // 
-         11'h1e3: data = 8'b00000000; // 
-         11'h1e4: data = 8'b00010000; //    *
-         11'h1e5: data = 8'b00111000; //   ***
-         11'h1e6: data = 8'b00111000; //   ***
-         11'h1e7: data = 8'b01111100; //  *****
-         11'h1e8: data = 8'b01111100; //  *****
-         11'h1e9: data = 8'b11111110; // *******
-         11'h1ea: data = 8'b11111110; // *******
-         11'h1eb: data = 8'b00000000; // 
-         11'h1ec: data = 8'b00000000; // 
-         11'h1ed: data = 8'b00000000; // 
-         11'h1ee: data = 8'b00000000; // 
-         11'h1ef: data = 8'b00000000; // 
-         //code x1f
-         11'h1f0: data = 8'b00000000; // 
-         11'h1f1: data = 8'b00000000; // 
-         11'h1f2: data = 8'b00000000; // 
-         11'h1f3: data = 8'b00000000; // 
-         11'h1f4: data = 8'b11111110; // *******
-         11'h1f5: data = 8'b11111110; // *******
-         11'h1f6: data = 8'b01111100; //  *****
-         11'h1f7: data = 8'b01111100; //  *****
-         11'h1f8: data = 8'b00111000; //   ***
-         11'h1f9: data = 8'b00111000; //   ***
-         11'h1fa: data = 8'b00010000; //    *
-         11'h1fb: data = 8'b00000000; // 
-         11'h1fc: data = 8'b00000000; // 
-         11'h1fd: data = 8'b00000000; // 
-         11'h1fe: data = 8'b00000000; // 
-         11'h1ff: data = 8'b00000000; // 
-         //code x20
-         11'h200: data = 8'b00000000; // 
-         11'h201: data = 8'b00000000; // 
-         11'h202: data = 8'b00000000; // 
-         11'h203: data = 8'b00000000; // 
-         11'h204: data = 8'b00000000; // 
-         11'h205: data = 8'b00000000; // 
-         11'h206: data = 8'b00000000; // 
-         11'h207: data = 8'b00000000; // 
-         11'h208: data = 8'b00000000; // 
-         11'h209: data = 8'b00000000; // 
-         11'h20a: data = 8'b00000000; // 
-         11'h20b: data = 8'b00000000; // 
-         11'h20c: data = 8'b00000000; // 
-         11'h20d: data = 8'b00000000; // 
-         11'h20e: data = 8'b00000000; // 
-         11'h20f: data = 8'b00000000; // 
-         //code x21
-         11'h210: data = 8'b00000000; // 
-         11'h211: data = 8'b00000000; // 
-         11'h212: data = 8'b00011000; //    **
-         11'h213: data = 8'b00111100; //   ****
-         11'h214: data = 8'b00111100; //   ****
-         11'h215: data = 8'b00111100; //   ****
-         11'h216: data = 8'b00011000; //    **
-         11'h217: data = 8'b00011000; //    **
-         11'h218: data = 8'b00011000; //    **
-         11'h219: data = 8'b00000000; // 
-         11'h21a: data = 8'b00011000; //    **
-         11'h21b: data = 8'b00011000; //    **
-         11'h21c: data = 8'b00000000; // 
-         11'h21d: data = 8'b00000000; // 
-         11'h21e: data = 8'b00000000; // 
-         11'h21f: data = 8'b00000000; // 
-         //code x22
-         11'h220: data = 8'b00000000; // 
-         11'h221: data = 8'b01100110; //  **  **
-         11'h222: data = 8'b01100110; //  **  **
-         11'h223: data = 8'b01100110; //  **  **
-         11'h224: data = 8'b00100100; //   *  *
-         11'h225: data = 8'b00000000; // 
-         11'h226: data = 8'b00000000; // 
-         11'h227: data = 8'b00000000; // 
-         11'h228: data = 8'b00000000; // 
-         11'h229: data = 8'b00000000; // 
-         11'h22a: data = 8'b00000000; // 
-         11'h22b: data = 8'b00000000; // 
-         11'h22c: data = 8'b00000000; // 
-         11'h22d: data = 8'b00000000; // 
-         11'h22e: data = 8'b00000000; // 
-         11'h22f: data = 8'b00000000; // 
-         //code x23
-         11'h230: data = 8'b00000000; // 
-         11'h231: data = 8'b00000000; // 
-         11'h232: data = 8'b00000000; // 
-         11'h233: data = 8'b01101100; //  ** **
-         11'h234: data = 8'b01101100; //  ** **
-         11'h235: data = 8'b11111110; // *******
-         11'h236: data = 8'b01101100; //  ** **
-         11'h237: data = 8'b01101100; //  ** **
-         11'h238: data = 8'b01101100; //  ** **
-         11'h239: data = 8'b11111110; // *******
-         11'h23a: data = 8'b01101100; //  ** **
-         11'h23b: data = 8'b01101100; //  ** **
-         11'h23c: data = 8'b00000000; // 
-         11'h23d: data = 8'b00000000; // 
-         11'h23e: data = 8'b00000000; // 
-         11'h23f: data = 8'b00000000; // 
-         //code x24
-         11'h240: data = 8'b00011000; //     **
-         11'h241: data = 8'b00011000; //     **
-         11'h242: data = 8'b01111100; //   *****
-         11'h243: data = 8'b11000110; //  **   **
-         11'h244: data = 8'b11000010; //  **    *
-         11'h245: data = 8'b11000000; //  **
-         11'h246: data = 8'b01111100; //   *****
-         11'h247: data = 8'b00000110; //       **
-         11'h248: data = 8'b00000110; //       **
-         11'h249: data = 8'b10000110; //  *    **
-         11'h24a: data = 8'b11000110; //  **   **
-         11'h24b: data = 8'b01111100; //   *****
-         11'h24c: data = 8'b00011000; //     **
-         11'h24d: data = 8'b00011000; //     **
-         11'h24e: data = 8'b00000000; // 
-         11'h24f: data = 8'b00000000; // 
-         //code x25
-         11'h250: data = 8'b00000000; // 
-         11'h251: data = 8'b00000000; // 
-         11'h252: data = 8'b00000000; // 
-         11'h253: data = 8'b00000000; // 
-         11'h254: data = 8'b11000010; // **    *
-         11'h255: data = 8'b11000110; // **   **
-         11'h256: data = 8'b00001100; //     **
-         11'h257: data = 8'b00011000; //    **
-         11'h258: data = 8'b00110000; //   **
-         11'h259: data = 8'b01100000; //  **
-         11'h25a: data = 8'b11000110; // **   **
-         11'h25b: data = 8'b10000110; // *    **
-         11'h25c: data = 8'b00000000; // 
-         11'h25d: data = 8'b00000000; // 
-         11'h25e: data = 8'b00000000; // 
-         11'h25f: data = 8'b00000000; // 
-         //code x26
-         11'h260: data = 8'b00000000; // 
-         11'h261: data = 8'b00000000; // 
-         11'h262: data = 8'b00111000; //   ***
-         11'h263: data = 8'b01101100; //  ** **
-         11'h264: data = 8'b01101100; //  ** **
-         11'h265: data = 8'b00111000; //   ***
-         11'h266: data = 8'b01110110; //  *** **
-         11'h267: data = 8'b11011100; // ** ***
-         11'h268: data = 8'b11001100; // **  **
-         11'h269: data = 8'b11001100; // **  **
-         11'h26a: data = 8'b11001100; // **  **
-         11'h26b: data = 8'b01110110; //  *** **
-         11'h26c: data = 8'b00000000; // 
-         11'h26d: data = 8'b00000000; // 
-         11'h26e: data = 8'b00000000; // 
-         11'h26f: data = 8'b00000000; // 
-         //code x27
-         11'h270: data = 8'b00000000; // 
-         11'h271: data = 8'b00110000; //   **
-         11'h272: data = 8'b00110000; //   **
-         11'h273: data = 8'b00110000; //   **
-         11'h274: data = 8'b01100000; //  **
-         11'h275: data = 8'b00000000; // 
-         11'h276: data = 8'b00000000; // 
-         11'h277: data = 8'b00000000; // 
-         11'h278: data = 8'b00000000; // 
-         11'h279: data = 8'b00000000; // 
-         11'h27a: data = 8'b00000000; // 
-         11'h27b: data = 8'b00000000; // 
-         11'h27c: data = 8'b00000000; // 
-         11'h27d: data = 8'b00000000; // 
-         11'h27e: data = 8'b00000000; // 
-         11'h27f: data = 8'b00000000; // 
-         //code x28
-         11'h280: data = 8'b00000000; // 
-         11'h281: data = 8'b00000000; // 
-         11'h282: data = 8'b00001100; //     **
-         11'h283: data = 8'b00011000; //    **
-         11'h284: data = 8'b00110000; //   **
-         11'h285: data = 8'b00110000; //   **
-         11'h286: data = 8'b00110000; //   **
-         11'h287: data = 8'b00110000; //   **
-         11'h288: data = 8'b00110000; //   **
-         11'h289: data = 8'b00110000; //   **
-         11'h28a: data = 8'b00011000; //    **
-         11'h28b: data = 8'b00001100; //     **
-         11'h28c: data = 8'b00000000; // 
-         11'h28d: data = 8'b00000000; // 
-         11'h28e: data = 8'b00000000; // 
-         11'h28f: data = 8'b00000000; // 
-         //code x29
-         11'h290: data = 8'b00000000; // 
-         11'h291: data = 8'b00000000; // 
-         11'h292: data = 8'b00110000; //   **
-         11'h293: data = 8'b00011000; //    **
-         11'h294: data = 8'b00001100; //     **
-         11'h295: data = 8'b00001100; //     **
-         11'h296: data = 8'b00001100; //     **
-         11'h297: data = 8'b00001100; //     **
-         11'h298: data = 8'b00001100; //     **
-         11'h299: data = 8'b00001100; //     **
-         11'h29a: data = 8'b00011000; //    **
-         11'h29b: data = 8'b00110000; //   **
-         11'h29c: data = 8'b00000000; // 
-         11'h29d: data = 8'b00000000; // 
-         11'h29e: data = 8'b00000000; // 
-         11'h29f: data = 8'b00000000; // 
-         //code x2a
-         11'h2a0: data = 8'b00000000; // 
-         11'h2a1: data = 8'b00000000; // 
-         11'h2a2: data = 8'b00000000; // 
-         11'h2a3: data = 8'b00000000; // 
-         11'h2a4: data = 8'b00000000; // 
-         11'h2a5: data = 8'b01100110; //  **  **
-         11'h2a6: data = 8'b00111100; //   ****
-         11'h2a7: data = 8'b11111111; // ********
-         11'h2a8: data = 8'b00111100; //   ****
-         11'h2a9: data = 8'b01100110; //  **  **
-         11'h2aa: data = 8'b00000000; // 
-         11'h2ab: data = 8'b00000000; // 
-         11'h2ac: data = 8'b00000000; // 
-         11'h2ad: data = 8'b00000000; // 
-         11'h2ae: data = 8'b00000000; // 
-         11'h2af: data = 8'b00000000; // 
-         //code x2b
-         11'h2b0: data = 8'b00000000; // 
-         11'h2b1: data = 8'b00000000; // 
-         11'h2b2: data = 8'b00000000; // 
-         11'h2b3: data = 8'b00000000; // 
-         11'h2b4: data = 8'b00000000; // 
-         11'h2b5: data = 8'b00011000; //    **
-         11'h2b6: data = 8'b00011000; //    **
-         11'h2b7: data = 8'b01111110; //  ******
-         11'h2b8: data = 8'b00011000; //    **
-         11'h2b9: data = 8'b00011000; //    **
-         11'h2ba: data = 8'b00000000; // 
-         11'h2bb: data = 8'b00000000; // 
-         11'h2bc: data = 8'b00000000; // 
-         11'h2bd: data = 8'b00000000; // 
-         11'h2be: data = 8'b00000000; // 
-         11'h2bf: data = 8'b00000000; // 
-         //code x2c
-         11'h2c0: data = 8'b00000000; // 
-         11'h2c1: data = 8'b00000000; // 
-         11'h2c2: data = 8'b00000000; // 
-         11'h2c3: data = 8'b00000000; // 
-         11'h2c4: data = 8'b00000000; // 
-         11'h2c5: data = 8'b00000000; // 
-         11'h2c6: data = 8'b00000000; // 
-         11'h2c7: data = 8'b00000000; // 
-         11'h2c8: data = 8'b00000000; // 
-         11'h2c9: data = 8'b00011000; //    **
-         11'h2ca: data = 8'b00011000; //    **
-         11'h2cb: data = 8'b00011000; //    **
-         11'h2cc: data = 8'b00110000; //   **
-         11'h2cd: data = 8'b00000000; // 
-         11'h2ce: data = 8'b00000000; // 
-         11'h2cf: data = 8'b00000000; // 
-         //code x2d
-         11'h2d0: data = 8'b00000000; // 
-         11'h2d1: data = 8'b00000000; // 
-         11'h2d2: data = 8'b00000000; // 
-         11'h2d3: data = 8'b00000000; // 
-         11'h2d4: data = 8'b00000000; // 
-         11'h2d5: data = 8'b00000000; // 
-         11'h2d6: data = 8'b00000000; // 
-         11'h2d7: data = 8'b01111110; //  ******
-         11'h2d8: data = 8'b00000000; // 
-         11'h2d9: data = 8'b00000000; // 
-         11'h2da: data = 8'b00000000; // 
-         11'h2db: data = 8'b00000000; // 
-         11'h2dc: data = 8'b00000000; // 
-         11'h2dd: data = 8'b00000000; // 
-         11'h2de: data = 8'b00000000; // 
-         11'h2df: data = 8'b00000000; // 
-         //code x2e
-         11'h2e0: data = 8'b00000000; // 
-         11'h2e1: data = 8'b00000000; // 
-         11'h2e2: data = 8'b00000000; // 
-         11'h2e3: data = 8'b00000000; // 
-         11'h2e4: data = 8'b00000000; // 
-         11'h2e5: data = 8'b00000000; // 
-         11'h2e6: data = 8'b00000000; // 
-         11'h2e7: data = 8'b00000000; // 
-         11'h2e8: data = 8'b00000000; // 
-         11'h2e9: data = 8'b00000000; // 
-         11'h2ea: data = 8'b00011000; //    **
-         11'h2eb: data = 8'b00011000; //    **
-         11'h2ec: data = 8'b00000000; // 
-         11'h2ed: data = 8'b00000000; // 
-         11'h2ee: data = 8'b00000000; // 
-         11'h2ef: data = 8'b00000000; // 
-         //code x2f
-         11'h2f0: data = 8'b00000000; // 
-         11'h2f1: data = 8'b00000000; // 
-         11'h2f2: data = 8'b00000000; // 
-         11'h2f3: data = 8'b00000000; // 
-         11'h2f4: data = 8'b00000010; //       *
-         11'h2f5: data = 8'b00000110; //      **
-         11'h2f6: data = 8'b00001100; //     **
-         11'h2f7: data = 8'b00011000; //    **
-         11'h2f8: data = 8'b00110000; //   **
-         11'h2f9: data = 8'b01100000; //  **
-         11'h2fa: data = 8'b11000000; // **
-         11'h2fb: data = 8'b10000000; // *
-         11'h2fc: data = 8'b00000000; // 
-         11'h2fd: data = 8'b00000000; // 
-         11'h2fe: data = 8'b00000000; // 
-         11'h2ff: data = 8'b00000000; // 
-         //code x30
-         11'h300: data = 8'b00000000; // 
-         11'h301: data = 8'b00000000; // 
-         11'h302: data = 8'b01111100; //  *****
-         11'h303: data = 8'b11000110; // **   **
-         11'h304: data = 8'b11000110; // **   **
-         11'h305: data = 8'b11001110; // **  ***
-         11'h306: data = 8'b11011110; // ** ****
-         11'h307: data = 8'b11110110; // **** **
-         11'h308: data = 8'b11100110; // ***  **
-         11'h309: data = 8'b11000110; // **   **
-         11'h30a: data = 8'b11000110; // **   **
-         11'h30b: data = 8'b01111100; //  *****
-         11'h30c: data = 8'b00000000; // 
-         11'h30d: data = 8'b00000000; // 
-         11'h30e: data = 8'b00000000; // 
-         11'h30f: data = 8'b00000000; // 
-         //code x31
-         11'h310: data = 8'b00000000; // 
-         11'h311: data = 8'b00000000; // 
-         11'h312: data = 8'b00011000; // 
-         11'h313: data = 8'b00111000; // 
-         11'h314: data = 8'b01111000; //    **
-         11'h315: data = 8'b00011000; //   ***
-         11'h316: data = 8'b00011000; //  ****
-         11'h317: data = 8'b00011000; //    **
-         11'h318: data = 8'b00011000; //    **
-         11'h319: data = 8'b00011000; //    **
-         11'h31a: data = 8'b00011000; //    **
-         11'h31b: data = 8'b01111110; //    **
-         11'h31c: data = 8'b00000000; //    **
-         11'h31d: data = 8'b00000000; //  ******
-         11'h31e: data = 8'b00000000; // 
-         11'h31f: data = 8'b00000000; // 
-         //code x32
-         11'h320: data = 8'b00000000; // 
-         11'h321: data = 8'b00000000; // 
-         11'h322: data = 8'b01111100; //  *****
-         11'h323: data = 8'b11000110; // **   **
-         11'h324: data = 8'b00000110; //      **
-         11'h325: data = 8'b00001100; //     **
-         11'h326: data = 8'b00011000; //    **
-         11'h327: data = 8'b00110000; //   **
-         11'h328: data = 8'b01100000; //  **
-         11'h329: data = 8'b11000000; // **
-         11'h32a: data = 8'b11000110; // **   **
-         11'h32b: data = 8'b11111110; // *******
-         11'h32c: data = 8'b00000000; // 
-         11'h32d: data = 8'b00000000; // 
-         11'h32e: data = 8'b00000000; // 
-         11'h32f: data = 8'b00000000; // 
-         //code x33
-         11'h330: data = 8'b00000000; // 
-         11'h331: data = 8'b00000000; // 
-         11'h332: data = 8'b01111100; //  *****
-         11'h333: data = 8'b11000110; // **   **
-         11'h334: data = 8'b00000110; //      **
-         11'h335: data = 8'b00000110; //      **
-         11'h336: data = 8'b00111100; //   ****
-         11'h337: data = 8'b00000110; //      **
-         11'h338: data = 8'b00000110; //      **
-         11'h339: data = 8'b00000110; //      **
-         11'h33a: data = 8'b11000110; // **   **
-         11'h33b: data = 8'b01111100; //  *****
-         11'h33c: data = 8'b00000000; // 
-         11'h33d: data = 8'b00000000; // 
-         11'h33e: data = 8'b00000000; // 
-         11'h33f: data = 8'b00000000; // 
-         //code x34
-         11'h340: data = 8'b00000000; // 
-         11'h341: data = 8'b00000000; // 
-         11'h342: data = 8'b00001100; //     **
-         11'h343: data = 8'b00011100; //    ***
-         11'h344: data = 8'b00111100; //   ****
-         11'h345: data = 8'b01101100; //  ** **
-         11'h346: data = 8'b11001100; // **  **
-         11'h347: data = 8'b11111110; // *******
-         11'h348: data = 8'b00001100; //     **
-         11'h349: data = 8'b00001100; //     **
-         11'h34a: data = 8'b00001100; //     **
-         11'h34b: data = 8'b00011110; //    ****
-         11'h34c: data = 8'b00000000; // 
-         11'h34d: data = 8'b00000000; // 
-         11'h34e: data = 8'b00000000; // 
-         11'h34f: data = 8'b00000000; // 
-         //code x35
-         11'h350: data = 8'b00000000; // 
-         11'h351: data = 8'b00000000; // 
-         11'h352: data = 8'b11111110; // *******
-         11'h353: data = 8'b11000000; // **
-         11'h354: data = 8'b11000000; // **
-         11'h355: data = 8'b11000000; // **
-         11'h356: data = 8'b11111100; // ******
-         11'h357: data = 8'b00000110; //      **
-         11'h358: data = 8'b00000110; //      **
-         11'h359: data = 8'b00000110; //      **
-         11'h35a: data = 8'b11000110; // **   **
-         11'h35b: data = 8'b01111100; //  *****
-         11'h35c: data = 8'b00000000; // 
-         11'h35d: data = 8'b00000000; // 
-         11'h35e: data = 8'b00000000; // 
-         11'h35f: data = 8'b00000000; // 
-         //code x36
-         11'h360: data = 8'b00000000; // 
-         11'h361: data = 8'b00000000; // 
-         11'h362: data = 8'b00111000; //   ***
-         11'h363: data = 8'b01100000; //  **
-         11'h364: data = 8'b11000000; // **
-         11'h365: data = 8'b11000000; // **
-         11'h366: data = 8'b11111100; // ******
-         11'h367: data = 8'b11000110; // **   **
-         11'h368: data = 8'b11000110; // **   **
-         11'h369: data = 8'b11000110; // **   **
-         11'h36a: data = 8'b11000110; // **   **
-         11'h36b: data = 8'b01111100; //  *****
-         11'h36c: data = 8'b00000000; // 
-         11'h36d: data = 8'b00000000; // 
-         11'h36e: data = 8'b00000000; // 
-         11'h36f: data = 8'b00000000; // 
-         //code x37
-         11'h370: data = 8'b00000000; // 
-         11'h371: data = 8'b00000000; // 
-         11'h372: data = 8'b11111110; // *******
-         11'h373: data = 8'b11000110; // **   **
-         11'h374: data = 8'b00000110; //      **
-         11'h375: data = 8'b00000110; //      **
-         11'h376: data = 8'b00001100; //     **
-         11'h377: data = 8'b00011000; //    **
-         11'h378: data = 8'b00110000; //   **
-         11'h379: data = 8'b00110000; //   **
-         11'h37a: data = 8'b00110000; //   **
-         11'h37b: data = 8'b00110000; //   **
-         11'h37c: data = 8'b00000000; // 
-         11'h37d: data = 8'b00000000; // 
-         11'h37e: data = 8'b00000000; // 
-         11'h37f: data = 8'b00000000; // 
-         //code x38
-         11'h380: data = 8'b00000000; // 
-         11'h381: data = 8'b00000000; // 
-         11'h382: data = 8'b01111100; //  *****
-         11'h383: data = 8'b11000110; // **   **
-         11'h384: data = 8'b11000110; // **   **
-         11'h385: data = 8'b11000110; // **   **
-         11'h386: data = 8'b01111100; //  *****
-         11'h387: data = 8'b11000110; // **   **
-         11'h388: data = 8'b11000110; // **   **
-         11'h389: data = 8'b11000110; // **   **
-         11'h38a: data = 8'b11000110; // **   **
-         11'h38b: data = 8'b01111100; //  *****
-         11'h38c: data = 8'b00000000; // 
-         11'h38d: data = 8'b00000000; // 
-         11'h38e: data = 8'b00000000; // 
-         11'h38f: data = 8'b00000000; // 
-         //code x39
-         11'h390: data = 8'b00000000; // 
-         11'h391: data = 8'b00000000; // 
-         11'h392: data = 8'b01111100; //  *****
-         11'h393: data = 8'b11000110; // **   **
-         11'h394: data = 8'b11000110; // **   **
-         11'h395: data = 8'b11000110; // **   **
-         11'h396: data = 8'b01111110; //  ******
-         11'h397: data = 8'b00000110; //      **
-         11'h398: data = 8'b00000110; //      **
-         11'h399: data = 8'b00000110; //      **
-         11'h39a: data = 8'b00001100; //     **
-         11'h39b: data = 8'b01111000; //  ****
-         11'h39c: data = 8'b00000000; // 
-         11'h39d: data = 8'b00000000; // 
-         11'h39e: data = 8'b00000000; // 
-         11'h39f: data = 8'b00000000; // 
-         //code x3a 
-         11'h3a0: data = 8'b00000000; // 
-         11'h3a1: data = 8'b00000000; // 
-         11'h3a2: data = 8'b00000000; // 
-         11'h3a3: data = 8'b00000000; // 
-         11'h3a4: data = 8'b00011000; //    **
-         11'h3a5: data = 8'b00011000; //    **
-         11'h3a6: data = 8'b00000000; // 
-         11'h3a7: data = 8'b00000000; // 
-         11'h3a8: data = 8'b00000000; // 
-         11'h3a9: data = 8'b00011000; //    **
-         11'h3aa: data = 8'b00011000; //    **
-         11'h3ab: data = 8'b00000000; // 
-         11'h3ac: data = 8'b00000000; // 
-         11'h3ad: data = 8'b00000000; // 
-         11'h3ae: data = 8'b00000000; // 
-         11'h3af: data = 8'b00000000; // 
-         //code x3b 
-         11'h3b0: data = 8'b00000000; // 
-         11'h3b1: data = 8'b00000000; // 
-         11'h3b2: data = 8'b00000000; // 
-         11'h3b3: data = 8'b00000000; // 
-         11'h3b4: data = 8'b00011000; //    **
-         11'h3b5: data = 8'b00011000; //    **
-         11'h3b6: data = 8'b00000000; // 
-         11'h3b7: data = 8'b00000000; // 
-         11'h3b8: data = 8'b00000000; // 
-         11'h3b9: data = 8'b00011000; //    **
-         11'h3ba: data = 8'b00011000; //    **
-         11'h3bb: data = 8'b00110000; //   **
-         11'h3bc: data = 8'b00000000; // 
-         11'h3bd: data = 8'b00000000; // 
-         11'h3be: data = 8'b00000000; // 
-         11'h3bf: data = 8'b00000000; // 
-         //code x3c 
-         11'h3c0: data = 8'b00000000; // 
-         11'h3c1: data = 8'b00000000; // 
-         11'h3c2: data = 8'b00000000; // 
-         11'h3c3: data = 8'b00000110; //      **
-         11'h3c4: data = 8'b00001100; //     **
-         11'h3c5: data = 8'b00011000; //    **
-         11'h3c6: data = 8'b00110000; //   **
-         11'h3c7: data = 8'b01100000; //  **
-         11'h3c8: data = 8'b00110000; //   **
-         11'h3c9: data = 8'b00011000; //    **
-         11'h3ca: data = 8'b00001100; //     **
-         11'h3cb: data = 8'b00000110; //      **
-         11'h3cc: data = 8'b00000000; // 
-         11'h3cd: data = 8'b00000000; // 
-         11'h3ce: data = 8'b00000000; // 
-         11'h3cf: data = 8'b00000000; // 
-         //code x3d 
-         11'h3d0: data = 8'b00000000; // 
-         11'h3d1: data = 8'b00000000; // 
-         11'h3d2: data = 8'b00000000; // 
-         11'h3d3: data = 8'b00000000; // 
-         11'h3d4: data = 8'b00000000; // 
-         11'h3d5: data = 8'b01111110; //  ******
-         11'h3d6: data = 8'b00000000; // 
-         11'h3d7: data = 8'b00000000; // 
-         11'h3d8: data = 8'b01111110; //  ******
-         11'h3d9: data = 8'b00000000; // 
-         11'h3da: data = 8'b00000000; // 
-         11'h3db: data = 8'b00000000; // 
-         11'h3dc: data = 8'b00000000; // 
-         11'h3dd: data = 8'b00000000; // 
-         11'h3de: data = 8'b00000000; // 
-         11'h3df: data = 8'b00000000; // 
-         //code x3e 
-         11'h3e0: data = 8'b00000000; // 
-         11'h3e1: data = 8'b00000000; // 
-         11'h3e2: data = 8'b00000000; // 
-         11'h3e3: data = 8'b01100000; //  **
-         11'h3e4: data = 8'b00110000; //   **
-         11'h3e5: data = 8'b00011000; //    **
-         11'h3e6: data = 8'b00001100; //     **
-         11'h3e7: data = 8'b00000110; //      **
-         11'h3e8: data = 8'b00001100; //     **
-         11'h3e9: data = 8'b00011000; //    **
-         11'h3ea: data = 8'b00110000; //   **
-         11'h3eb: data = 8'b01100000; //  **
-         11'h3ec: data = 8'b00000000; // 
-         11'h3ed: data = 8'b00000000; // 
-         11'h3ee: data = 8'b00000000; // 
-         11'h3ef: data = 8'b00000000; // 
-         //code x3f 
-         11'h3f0: data = 8'b00000000; // 
-         11'h3f1: data = 8'b00000000; // 
-         11'h3f2: data = 8'b01111100; //  *****
-         11'h3f3: data = 8'b11000110; // **   **
-         11'h3f4: data = 8'b11000110; // **   **
-         11'h3f5: data = 8'b00001100; //     **
-         11'h3f6: data = 8'b00011000; //    **
-         11'h3f7: data = 8'b00011000; //    **
-         11'h3f8: data = 8'b00011000; //    **
-         11'h3f9: data = 8'b00000000; // 
-         11'h3fa: data = 8'b00011000; //    **
-         11'h3fb: data = 8'b00011000; //    **
-         11'h3fc: data = 8'b00000000; // 
-         11'h3fd: data = 8'b00000000; // 
-         11'h3fe: data = 8'b00000000; // 
-         11'h3ff: data = 8'b00000000; // 
-        //code x40 
-         11'h400: data = 8'b00000000; // 
-         11'h401: data = 8'b00000000; // 
-         11'h402: data = 8'b01111100; //  *****
-         11'h403: data = 8'b11000110; // **   **
-         11'h404: data = 8'b11000110; // **   **
-         11'h405: data = 8'b11000110; // **   **
-         11'h406: data = 8'b11011110; // ** ****
-         11'h407: data = 8'b11011110; // ** ****
-         11'h408: data = 8'b11011110; // ** ****
-         11'h409: data = 8'b11011100; // ** ***
-         11'h40a: data = 8'b11000000; // **
-         11'h40b: data = 8'b01111100; //  *****
-         11'h40c: data = 8'b00000000; // 
-         11'h40d: data = 8'b00000000; // 
-         11'h40e: data = 8'b00000000; // 
-         11'h40f: data = 8'b00000000; // 
-         //code x41 
-         11'h410: data = 8'b00000000; // 
-         11'h411: data = 8'b00000000; // 
-         11'h412: data = 8'b00010000; //    *
-         11'h413: data = 8'b00111000; //   ***
-         11'h414: data = 8'b01101100; //  ** **
-         11'h415: data = 8'b11000110; // **   **
-         11'h416: data = 8'b11000110; // **   **
-         11'h417: data = 8'b11111110; // *******
-         11'h418: data = 8'b11000110; // **   **
-         11'h419: data = 8'b11000110; // **   **
-         11'h41a: data = 8'b11000110; // **   **
-         11'h41b: data = 8'b11000110; // **   **
-         11'h41c: data = 8'b00000000; // 
-         11'h41d: data = 8'b00000000; // 
-         11'h41e: data = 8'b00000000; // 
-         11'h41f: data = 8'b00000000; // 
-         //code x42 
-         11'h420: data = 8'b00000000; // 
-         11'h421: data = 8'b00000000; // 
-         11'h422: data = 8'b11111100; // ******
-         11'h423: data = 8'b01100110; //  **  **
-         11'h424: data = 8'b01100110; //  **  **
-         11'h425: data = 8'b01100110; //  **  **
-         11'h426: data = 8'b01111100; //  *****
-         11'h427: data = 8'b01100110; //  **  **
-         11'h428: data = 8'b01100110; //  **  **
-         11'h429: data = 8'b01100110; //  **  **
-         11'h42a: data = 8'b01100110; //  **  **
-         11'h42b: data = 8'b11111100; // ******
-         11'h42c: data = 8'b00000000; // 
-         11'h42d: data = 8'b00000000; // 
-         11'h42e: data = 8'b00000000; // 
-         11'h42f: data = 8'b00000000; // 
-         //code x43 
-         11'h430: data = 8'b00000000; // 
-         11'h431: data = 8'b00000000; // 
-         11'h432: data = 8'b00111100; //   ****
-         11'h433: data = 8'b01100110; //  **  **
-         11'h434: data = 8'b11000010; // **    *
-         11'h435: data = 8'b11000000; // **
-         11'h436: data = 8'b11000000; // **
-         11'h437: data = 8'b11000000; // **
-         11'h438: data = 8'b11000000; // **
-         11'h439: data = 8'b11000010; // **    *
-         11'h43a: data = 8'b01100110; //  **  **
-         11'h43b: data = 8'b00111100; //   ****
-         11'h43c: data = 8'b00000000; // 
-         11'h43d: data = 8'b00000000; // 
-         11'h43e: data = 8'b00000000; // 
-         11'h43f: data = 8'b00000000; // 
-         //code x44 
-         11'h440: data = 8'b00000000; // 
-         11'h441: data = 8'b00000000; // 
-         11'h442: data = 8'b11111000; // *****
-         11'h443: data = 8'b01101100; //  ** **
-         11'h444: data = 8'b01100110; //  **  **
-         11'h445: data = 8'b01100110; //  **  **
-         11'h446: data = 8'b01100110; //  **  **
-         11'h447: data = 8'b01100110; //  **  **
-         11'h448: data = 8'b01100110; //  **  **
-         11'h449: data = 8'b01100110; //  **  **
-         11'h44a: data = 8'b01101100; //  ** **
-         11'h44b: data = 8'b11111000; // *****
-         11'h44c: data = 8'b00000000; // 
-         11'h44d: data = 8'b00000000; // 
-         11'h44e: data = 8'b00000000; // 
-         11'h44f: data = 8'b00000000; // 
-         //code x45 
-         11'h450: data = 8'b00000000; // 
-         11'h451: data = 8'b00000000; // 
-         11'h452: data = 8'b11111110; // *******
-         11'h453: data = 8'b01100110; //  **  **
-         11'h454: data = 8'b01100010; //  **   *
-         11'h455: data = 8'b01101000; //  ** *
-         11'h456: data = 8'b01111000; //  ****
-         11'h457: data = 8'b01101000; //  ** *
-         11'h458: data = 8'b01100000; //  **
-         11'h459: data = 8'b01100010; //  **   *
-         11'h45a: data = 8'b01100110; //  **  **
-         11'h45b: data = 8'b11111110; // *******
-         11'h45c: data = 8'b00000000; // 
-         11'h45d: data = 8'b00000000; // 
-         11'h45e: data = 8'b00000000; // 
-         11'h45f: data = 8'b00000000; // 
-         //code x46 
-         11'h460: data = 8'b00000000; // 
-         11'h461: data = 8'b00000000; // 
-         11'h462: data = 8'b11111110; // *******
-         11'h463: data = 8'b01100110; //  **  **
-         11'h464: data = 8'b01100010; //  **   *
-         11'h465: data = 8'b01101000; //  ** *
-         11'h466: data = 8'b01111000; //  ****
-         11'h467: data = 8'b01101000; //  ** *
-         11'h468: data = 8'b01100000; //  **
-         11'h469: data = 8'b01100000; //  **
-         11'h46a: data = 8'b01100000; //  **
-         11'h46b: data = 8'b11110000; // ****
-         11'h46c: data = 8'b00000000; // 
-         11'h46d: data = 8'b00000000; // 
-         11'h46e: data = 8'b00000000; // 
-         11'h46f: data = 8'b00000000; // 
-         //code x47 
-         11'h470: data = 8'b00000000; // 
-         11'h471: data = 8'b00000000; // 
-         11'h472: data = 8'b00111100; //   ****
-         11'h473: data = 8'b01100110; //  **  **
-         11'h474: data = 8'b11000010; // **    *
-         11'h475: data = 8'b11000000; // **
-         11'h476: data = 8'b11000000; // **
-         11'h477: data = 8'b11011110; // ** ****
-         11'h478: data = 8'b11000110; // **   **
-         11'h479: data = 8'b11000110; // **   **
-         11'h47a: data = 8'b01100110; //  **  **
-         11'h47b: data = 8'b00111010; //   *** *
-         11'h47c: data = 8'b00000000; // 
-         11'h47d: data = 8'b00000000; // 
-         11'h47e: data = 8'b00000000; // 
-         11'h47f: data = 8'b00000000; // 
-         //code x48 
-         11'h480: data = 8'b00000000; // 
-         11'h481: data = 8'b00000000; // 
-         11'h482: data = 8'b11000110; // **   **
-         11'h483: data = 8'b11000110; // **   **
-         11'h484: data = 8'b11000110; // **   **
-         11'h485: data = 8'b11000110; // **   **
-         11'h486: data = 8'b11111110; // *******
-         11'h487: data = 8'b11000110; // **   **
-         11'h488: data = 8'b11000110; // **   **
-         11'h489: data = 8'b11000110; // **   **
-         11'h48a: data = 8'b11000110; // **   **
-         11'h48b: data = 8'b11000110; // **   **
-         11'h48c: data = 8'b00000000; // 
-         11'h48d: data = 8'b00000000; // 
-         11'h48e: data = 8'b00000000; // 
-         11'h48f: data = 8'b00000000; // 
-         //code x49 
-         11'h490: data = 8'b00000000; // 
-         11'h491: data = 8'b00000000; // 
-         11'h492: data = 8'b00111100; //   ****
-         11'h493: data = 8'b00011000; //    **
-         11'h494: data = 8'b00011000; //    **
-         11'h495: data = 8'b00011000; //    **
-         11'h496: data = 8'b00011000; //    **
-         11'h497: data = 8'b00011000; //    **
-         11'h498: data = 8'b00011000; //    **
-         11'h499: data = 8'b00011000; //    **
-         11'h49a: data = 8'b00011000; //    **
-         11'h49b: data = 8'b00111100; //   ****
-         11'h49c: data = 8'b00000000; // 
-         11'h49d: data = 8'b00000000; // 
-         11'h49e: data = 8'b00000000; // 
-         11'h49f: data = 8'b00000000; // 
-         //code x4a   
-         11'h4a0: data = 8'b00000000; // 
-         11'h4a1: data = 8'b00000000; // 
-         11'h4a2: data = 8'b00011110; //    ****
-         11'h4a3: data = 8'b00001100; //     **
-         11'h4a4: data = 8'b00001100; //     **
-         11'h4a5: data = 8'b00001100; //     **
-         11'h4a6: data = 8'b00001100; //     **
-         11'h4a7: data = 8'b00001100; //     **
-         11'h4a8: data = 8'b11001100; // **  **
-         11'h4a9: data = 8'b11001100; // **  **
-         11'h4aa: data = 8'b11001100; // **  **
-         11'h4ab: data = 8'b01111000; //  ****
-         11'h4ac: data = 8'b00000000; // 
-         11'h4ad: data = 8'b00000000; // 
-         11'h4ae: data = 8'b00000000; // 
-         11'h4af: data = 8'b00000000; // 
-         //code x4b   
-         11'h4b0: data = 8'b00000000; // 
-         11'h4b1: data = 8'b00000000; // 
-         11'h4b2: data = 8'b11100110; // ***  **
-         11'h4b3: data = 8'b01100110; //  **  **
-         11'h4b4: data = 8'b01100110; //  **  **
-         11'h4b5: data = 8'b01101100; //  ** **
-         11'h4b6: data = 8'b01111000; //  ****
-         11'h4b7: data = 8'b01111000; //  ****
-         11'h4b8: data = 8'b01101100; //  ** **
-         11'h4b9: data = 8'b01100110; //  **  **
-         11'h4ba: data = 8'b01100110; //  **  **
-         11'h4bb: data = 8'b11100110; // ***  **
-         11'h4bc: data = 8'b00000000; // 
-         11'h4bd: data = 8'b00000000; // 
-         11'h4be: data = 8'b00000000; // 
-         11'h4bf: data = 8'b00000000; // 
-         //code x4c   
-         11'h4c0: data = 8'b00000000; // 
-         11'h4c1: data = 8'b00000000; // 
-         11'h4c2: data = 8'b11110000; // ****
-         11'h4c3: data = 8'b01100000; //  **
-         11'h4c4: data = 8'b01100000; //  **
-         11'h4c5: data = 8'b01100000; //  **
-         11'h4c6: data = 8'b01100000; //  **
-         11'h4c7: data = 8'b01100000; //  **
-         11'h4c8: data = 8'b01100000; //  **
-         11'h4c9: data = 8'b01100010; //  **   *
-         11'h4ca: data = 8'b01100110; //  **  **
-         11'h4cb: data = 8'b11111110; // *******
-         11'h4cc: data = 8'b00000000; // 
-         11'h4cd: data = 8'b00000000; // 
-         11'h4ce: data = 8'b00000000; // 
-         11'h4cf: data = 8'b00000000; // 
-         //code x4d   
-         11'h4d0: data = 8'b00000000; // 
-         11'h4d1: data = 8'b00000000; // 
-         11'h4d2: data = 8'b11000011; // **    **
-         11'h4d3: data = 8'b11100111; // ***  ***
-         11'h4d4: data = 8'b11111111; // ********
-         11'h4d5: data = 8'b11111111; // ********
-         11'h4d6: data = 8'b11011011; // ** ** **
-         11'h4d7: data = 8'b11000011; // **    **
-         11'h4d8: data = 8'b11000011; // **    **
-         11'h4d9: data = 8'b11000011; // **    **
-         11'h4da: data = 8'b11000011; // **    **
-         11'h4db: data = 8'b11000011; // **    **
-         11'h4dc: data = 8'b00000000; // 
-         11'h4dd: data = 8'b00000000; // 
-         11'h4de: data = 8'b00000000; // 
-         11'h4df: data = 8'b00000000; // 
-         //code x4e   
-         11'h4e0: data = 8'b00000000; // 
-         11'h4e1: data = 8'b00000000; // 
-         11'h4e2: data = 8'b11000110; // **   **
-         11'h4e3: data = 8'b11100110; // ***  **
-         11'h4e4: data = 8'b11110110; // **** **
-         11'h4e5: data = 8'b11111110; // *******
-         11'h4e6: data = 8'b11011110; // ** ****
-         11'h4e7: data = 8'b11001110; // **  ***
-         11'h4e8: data = 8'b11000110; // **   **
-         11'h4e9: data = 8'b11000110; // **   **
-         11'h4ea: data = 8'b11000110; // **   **
-         11'h4eb: data = 8'b11000110; // **   **
-         11'h4ec: data = 8'b00000000; // 
-         11'h4ed: data = 8'b00000000; // 
-         11'h4ee: data = 8'b00000000; // 
-         11'h4ef: data = 8'b00000000; // 
-         //code x4f   
-         11'h4f0: data = 8'b00000000; // 
-         11'h4f1: data = 8'b00000000; // 
-         11'h4f2: data = 8'b01111100; //  *****
-         11'h4f3: data = 8'b11000110; // **   **
-         11'h4f4: data = 8'b11000110; // **   **
-         11'h4f5: data = 8'b11000110; // **   **
-         11'h4f6: data = 8'b11000110; // **   **
-         11'h4f7: data = 8'b11000110; // **   **
-         11'h4f8: data = 8'b11000110; // **   **
-         11'h4f9: data = 8'b11000110; // **   **
-         11'h4fa: data = 8'b11000110; // **   **
-         11'h4fb: data = 8'b01111100; //  *****
-         11'h4fc: data = 8'b00000000; // 
-         11'h4fd: data = 8'b00000000; // 
-         11'h4fe: data = 8'b00000000; // 
-         11'h4ff: data = 8'b00000000; // 
-         //code x50   
-         11'h500: data = 8'b00000000; // 
-         11'h501: data = 8'b00000000; // 
-         11'h502: data = 8'b11111100; // ******
-         11'h503: data = 8'b01100110; //  **  **
-         11'h504: data = 8'b01100110; //  **  **
-         11'h505: data = 8'b01100110; //  **  **
-         11'h506: data = 8'b01111100; //  *****
-         11'h507: data = 8'b01100000; //  **
-         11'h508: data = 8'b01100000; //  **
-         11'h509: data = 8'b01100000; //  **
-         11'h50a: data = 8'b01100000; //  **
-         11'h50b: data = 8'b11110000; // ****
-         11'h50c: data = 8'b00000000; // 
-         11'h50d: data = 8'b00000000; // 
-         11'h50e: data = 8'b00000000; // 
-         11'h50f: data = 8'b00000000; // 
-         //code x510f
-         11'h510: data = 8'b00000000; // 
-         11'h511: data = 8'b00000000; // 
-         11'h512: data = 8'b01111100; //  *****
-         11'h513: data = 8'b11000110; // **   **
-         11'h514: data = 8'b11000110; // **   **
-         11'h515: data = 8'b11000110; // **   **
-         11'h516: data = 8'b11000110; // **   **
-         11'h517: data = 8'b11000110; // **   **
-         11'h518: data = 8'b11000110; // **   **
-         11'h519: data = 8'b11010110; // ** * **
-         11'h51a: data = 8'b11011110; // ** ****
-         11'h51b: data = 8'b01111100; //  *****
-         11'h51c: data = 8'b00001100; //     **
-         11'h51d: data = 8'b00001110; //     ***
-         11'h51e: data = 8'b00000000; // 
-         11'h51f: data = 8'b00000000; // 
-         //code x52   
-         11'h520: data = 8'b00000000; // 
-         11'h521: data = 8'b00000000; // 
-         11'h522: data = 8'b11111100; // ******
-         11'h523: data = 8'b01100110; //  **  **
-         11'h524: data = 8'b01100110; //  **  **
-         11'h525: data = 8'b01100110; //  **  **
-         11'h526: data = 8'b01111100; //  *****
-         11'h527: data = 8'b01101100; //  ** **
-         11'h528: data = 8'b01100110; //  **  **
-         11'h529: data = 8'b01100110; //  **  **
-         11'h52a: data = 8'b01100110; //  **  **
-         11'h52b: data = 8'b11100110; // ***  **
-         11'h52c: data = 8'b00000000; // 
-         11'h52d: data = 8'b00000000; // 
-         11'h52e: data = 8'b00000000; // 
-         11'h52f: data = 8'b00000000; // 
-         //code x53   
-         11'h530: data = 8'b00000000; // 
-         11'h531: data = 8'b00000000; // 
-         11'h532: data = 8'b01111100; //  *****
-         11'h533: data = 8'b11000110; // **   **
-         11'h534: data = 8'b11000110; // **   **
-         11'h535: data = 8'b01100000; //  **
-         11'h536: data = 8'b00111000; //   ***
-         11'h537: data = 8'b00001100; //     **
-         11'h538: data = 8'b00000110; //      **
-         11'h539: data = 8'b11000110; // **   **
-         11'h53a: data = 8'b11000110; // **   **
-         11'h53b: data = 8'b01111100; //  *****
-         11'h53c: data = 8'b00000000; // 
-         11'h53d: data = 8'b00000000; // 
-         11'h53e: data = 8'b00000000; // 
-         11'h53f: data = 8'b00000000; // 
-         //code x54   
-         11'h540: data = 8'b00000000; // 
-         11'h541: data = 8'b00000000; // 
-         11'h542: data = 8'b11111111; // ********
-         11'h543: data = 8'b11011011; // ** ** **
-         11'h544: data = 8'b10011001; // *  **  *
-         11'h545: data = 8'b00011000; //    **
-         11'h546: data = 8'b00011000; //    **
-         11'h547: data = 8'b00011000; //    **
-         11'h548: data = 8'b00011000; //    **
-         11'h549: data = 8'b00011000; //    **
-         11'h54a: data = 8'b00011000; //    **
-         11'h54b: data = 8'b00111100; //   ****
-         11'h54c: data = 8'b00000000; // 
-         11'h54d: data = 8'b00000000; // 
-         11'h54e: data = 8'b00000000; // 
-         11'h54f: data = 8'b00000000; // 
-         //code x55   
-         11'h550: data = 8'b00000000; // 
-         11'h551: data = 8'b00000000; // 
-         11'h552: data = 8'b11000110; // **   **
-         11'h553: data = 8'b11000110; // **   **
-         11'h554: data = 8'b11000110; // **   **
-         11'h555: data = 8'b11000110; // **   **
-         11'h556: data = 8'b11000110; // **   **
-         11'h557: data = 8'b11000110; // **   **
-         11'h558: data = 8'b11000110; // **   **
-         11'h559: data = 8'b11000110; // **   **
-         11'h55a: data = 8'b11000110; // **   **
-         11'h55b: data = 8'b01111100; //  *****
-         11'h55c: data = 8'b00000000; // 
-         11'h55d: data = 8'b00000000; // 
-         11'h55e: data = 8'b00000000; // 
-         11'h55f: data = 8'b00000000; // 
-         //code x56   
-         11'h560: data = 8'b00000000; // 
-         11'h561: data = 8'b00000000; // 
-         11'h562: data = 8'b11000011; // **    **
-         11'h563: data = 8'b11000011; // **    **
-         11'h564: data = 8'b11000011; // **    **
-         11'h565: data = 8'b11000011; // **    **
-         11'h566: data = 8'b11000011; // **    **
-         11'h567: data = 8'b11000011; // **    **
-         11'h568: data = 8'b11000011; // **    **
-         11'h569: data = 8'b01100110; //  **  **
-         11'h56a: data = 8'b00111100; //   ****
-         11'h56b: data = 8'b00011000; //    **
-         11'h56c: data = 8'b00000000; // 
-         11'h56d: data = 8'b00000000; // 
-         11'h56e: data = 8'b00000000; // 
-         11'h56f: data = 8'b00000000; // 
-         //code x57   
-         11'h570: data = 8'b00000000; // 
-         11'h571: data = 8'b00000000; // 
-         11'h572: data = 8'b11000011; // **    **
-         11'h573: data = 8'b11000011; // **    **
-         11'h574: data = 8'b11000011; // **    **
-         11'h575: data = 8'b11000011; // **    **
-         11'h576: data = 8'b11000011; // **    **
-         11'h577: data = 8'b11011011; // ** ** **
-         11'h578: data = 8'b11011011; // ** ** **
-         11'h579: data = 8'b11111111; // ********
-         11'h57a: data = 8'b01100110; //  **  **
-         11'h57b: data = 8'b01100110; //  **  **
-         11'h57c: data = 8'b00000000; // 
-         11'h57d: data = 8'b00000000; // 
-         11'h57e: data = 8'b00000000; // 
-         11'h57f: data = 8'b00000000; // 
-         //code x58   
-         11'h580: data = 8'b00000000; // 
-         11'h581: data = 8'b00000000; // 
-         11'h582: data = 8'b11000011; // **    **
-         11'h583: data = 8'b11000011; // **    **
-         11'h584: data = 8'b01100110; //  **  **
-         11'h585: data = 8'b00111100; //   ****
-         11'h586: data = 8'b00011000; //    **
-         11'h587: data = 8'b00011000; //    **
-         11'h588: data = 8'b00111100; //   ****
-         11'h589: data = 8'b01100110; //  **  **
-         11'h58a: data = 8'b11000011; // **    **
-         11'h58b: data = 8'b11000011; // **    **
-         11'h58c: data = 8'b00000000; // 
-         11'h58d: data = 8'b00000000; // 
-         11'h58e: data = 8'b00000000; // 
-         11'h58f: data = 8'b00000000; // 
-         //code x59   
-         11'h590: data = 8'b00000000; // 
-         11'h591: data = 8'b00000000; // 
-         11'h592: data = 8'b11000011; // **    **
-         11'h593: data = 8'b11000011; // **    **
-         11'h594: data = 8'b11000011; // **    **
-         11'h595: data = 8'b01100110; //  **  **
-         11'h596: data = 8'b00111100; //   ****
-         11'h597: data = 8'b00011000; //    **
-         11'h598: data = 8'b00011000; //    **
-         11'h599: data = 8'b00011000; //    **
-         11'h59a: data = 8'b00011000; //    **
-         11'h59b: data = 8'b00111100; //   ****
-         11'h59c: data = 8'b00000000; // 
-         11'h59d: data = 8'b00000000; // 
-         11'h59e: data = 8'b00000000; // 
-         11'h59f: data = 8'b00000000; // 
-         //code x5a   
-         11'h5a0: data = 8'b00000000; // 
-         11'h5a1: data = 8'b00000000; // 
-         11'h5a2: data = 8'b11111111; // ********
-         11'h5a3: data = 8'b11000011; // **    **
-         11'h5a4: data = 8'b10000110; // *    **
-         11'h5a5: data = 8'b00001100; //     **
-         11'h5a6: data = 8'b00011000; //    **
-         11'h5a7: data = 8'b00110000; //   **
-         11'h5a8: data = 8'b01100000; //  **
-         11'h5a9: data = 8'b11000001; // **     *
-         11'h5aa: data = 8'b11000011; // **    **
-         11'h5ab: data = 8'b11111111; // ********
-         11'h5ac: data = 8'b00000000; // 
-         11'h5ad: data = 8'b00000000; // 
-         11'h5ae: data = 8'b00000000; // 
-         11'h5af: data = 8'b00000000; // 
-         //code x5b   
-         11'h5b0: data = 8'b00000000; // 
-         11'h5b1: data = 8'b00000000; // 
-         11'h5b2: data = 8'b00111100; //   ****
-         11'h5b3: data = 8'b00110000; //   **
-         11'h5b4: data = 8'b00110000; //   **
-         11'h5b5: data = 8'b00110000; //   **
-         11'h5b6: data = 8'b00110000; //   **
-         11'h5b7: data = 8'b00110000; //   **
-         11'h5b8: data = 8'b00110000; //   **
-         11'h5b9: data = 8'b00110000; //   **
-         11'h5ba: data = 8'b00110000; //   **
-         11'h5bb: data = 8'b00111100; //   ****
-         11'h5bc: data = 8'b00000000; // 
-         11'h5bd: data = 8'b00000000; // 
-         11'h5be: data = 8'b00000000; // 
-         11'h5bf: data = 8'b00000000; // 
-         //code x5c   
-         11'h5c0: data = 8'b00000000; // 
-         11'h5c1: data = 8'b00000000; // 
-         11'h5c2: data = 8'b00000000; // 
-         11'h5c3: data = 8'b10000000; // *
-         11'h5c4: data = 8'b11000000; // **
-         11'h5c5: data = 8'b11100000; // ***
-         11'h5c6: data = 8'b01110000; //  ***
-         11'h5c7: data = 8'b00111000; //   ***
-         11'h5c8: data = 8'b00011100; //    ***
-         11'h5c9: data = 8'b00001110; //     ***
-         11'h5ca: data = 8'b00000110; //      **
-         11'h5cb: data = 8'b00000010; //       *
-         11'h5cc: data = 8'b00000000; // 
-         11'h5cd: data = 8'b00000000; // 
-         11'h5ce: data = 8'b00000000; // 
-         11'h5cf: data = 8'b00000000; // 
-         //code x5d   
-         11'h5d0: data = 8'b00000000; // 
-         11'h5d1: data = 8'b00000000; // 
-         11'h5d2: data = 8'b00111100; //   ****
-         11'h5d3: data = 8'b00001100; //     **
-         11'h5d4: data = 8'b00001100; //     **
-         11'h5d5: data = 8'b00001100; //     **
-         11'h5d6: data = 8'b00001100; //     **
-         11'h5d7: data = 8'b00001100; //     **
-         11'h5d8: data = 8'b00001100; //     **
-         11'h5d9: data = 8'b00001100; //     **
-         11'h5da: data = 8'b00001100; //     **
-         11'h5db: data = 8'b00111100; //   ****
-         11'h5dc: data = 8'b00000000; // 
-         11'h5dd: data = 8'b00000000; // 
-         11'h5de: data = 8'b00000000; // 
-         11'h5df: data = 8'b00000000; // 
-         //code x5e   
-         11'h5e0: data = 8'b00010000; //    *
-         11'h5e1: data = 8'b00111000; //   ***
-         11'h5e2: data = 8'b01101100; //  ** **
-         11'h5e3: data = 8'b11000110; // **   **
-         11'h5e4: data = 8'b00000000; // 
-         11'h5e5: data = 8'b00000000; // 
-         11'h5e6: data = 8'b00000000; // 
-         11'h5e7: data = 8'b00000000; // 
-         11'h5e8: data = 8'b00000000; // 
-         11'h5e9: data = 8'b00000000; // 
-         11'h5ea: data = 8'b00000000; // 
-         11'h5eb: data = 8'b00000000; // 
-         11'h5ec: data = 8'b00000000; // 
-         11'h5ed: data = 8'b00000000; // 
-         11'h5ee: data = 8'b00000000; // 
-         11'h5ef: data = 8'b00000000; // 
-         //code x5f   
-         11'h5f0: data = 8'b00000000; // 
-         11'h5f1: data = 8'b00000000; // 
-         11'h5f2: data = 8'b00000000; // 
-         11'h5f3: data = 8'b00000000; // 
-         11'h5f4: data = 8'b00000000; // 
-         11'h5f5: data = 8'b00000000; // 
-         11'h5f6: data = 8'b00000000; // 
-         11'h5f7: data = 8'b00000000; // 
-         11'h5f8: data = 8'b00000000; // 
-         11'h5f9: data = 8'b00000000; // 
-         11'h5fa: data = 8'b00000000; // 
-         11'h5fb: data = 8'b00000000; // 
-         11'h5fc: data = 8'b00000000; // 
-         11'h5fd: data = 8'b11111111; // ********
-         11'h5fe: data = 8'b00000000; // 
-         11'h5ff: data = 8'b00000000; // 
-         //code x60   
-         11'h600: data = 8'b00110000; //   **
-         11'h601: data = 8'b00110000; //   **
-         11'h602: data = 8'b00011000; //    **
-         11'h603: data = 8'b00000000; // 
-         11'h604: data = 8'b00000000; // 
-         11'h605: data = 8'b00000000; // 
-         11'h606: data = 8'b00000000; // 
-         11'h607: data = 8'b00000000; // 
-         11'h608: data = 8'b00000000; // 
-         11'h609: data = 8'b00000000; // 
-         11'h60a: data = 8'b00000000; // 
-         11'h60b: data = 8'b00000000; // 
-         11'h60c: data = 8'b00000000; // 
-         11'h60d: data = 8'b00000000; // 
-         11'h60e: data = 8'b00000000; // 
-         11'h60f: data = 8'b00000000; // 
-         //code x61   
-         11'h610: data = 8'b00000000; // 
-         11'h611: data = 8'b00000000; // 
-         11'h612: data = 8'b00000000; // 
-         11'h613: data = 8'b00000000; // 
-         11'h614: data = 8'b00000000; // 
-         11'h615: data = 8'b01111000; //  ****
-         11'h616: data = 8'b00001100; //     **
-         11'h617: data = 8'b01111100; //  *****
-         11'h618: data = 8'b11001100; // **  **
-         11'h619: data = 8'b11001100; // **  **
-         11'h61a: data = 8'b11001100; // **  **
-         11'h61b: data = 8'b01110110; //  *** **
-         11'h61c: data = 8'b00000000; // 
-         11'h61d: data = 8'b00000000; // 
-         11'h61e: data = 8'b00000000; // 
-         11'h61f: data = 8'b00000000; // 
-         //code x62   
-         11'h620: data = 8'b00000000; // 
-         11'h621: data = 8'b00000000; // 
-         11'h622: data = 8'b11100000; //  ***
-         11'h623: data = 8'b01100000; //   **
-         11'h624: data = 8'b01100000; //   **
-         11'h625: data = 8'b01111000; //   ****
-         11'h626: data = 8'b01101100; //   ** **
-         11'h627: data = 8'b01100110; //   **  **
-         11'h628: data = 8'b01100110; //   **  **
-         11'h629: data = 8'b01100110; //   **  **
-         11'h62a: data = 8'b01100110; //   **  **
-         11'h62b: data = 8'b01111100; //   *****
-         11'h62c: data = 8'b00000000; // 
-         11'h62d: data = 8'b00000000; // 
-         11'h62e: data = 8'b00000000; // 
-         11'h62f: data = 8'b00000000; // 
-         //code x63   
-         11'h630: data = 8'b00000000; // 
-         11'h631: data = 8'b00000000; // 
-         11'h632: data = 8'b00000000; // 
-         11'h633: data = 8'b00000000; // 
-         11'h634: data = 8'b00000000; // 
-         11'h635: data = 8'b01111100; //  *****
-         11'h636: data = 8'b11000110; // **   **
-         11'h637: data = 8'b11000000; // **
-         11'h638: data = 8'b11000000; // **
-         11'h639: data = 8'b11000000; // **
-         11'h63a: data = 8'b11000110; // **   **
-         11'h63b: data = 8'b01111100; //  *****
-         11'h63c: data = 8'b00000000; // 
-         11'h63d: data = 8'b00000000; // 
-         11'h63e: data = 8'b00000000; // 
-         11'h63f: data = 8'b00000000; // 
-         //code x64   
-         11'h640: data = 8'b00000000; // 
-         11'h641: data = 8'b00000000; // 
-         11'h642: data = 8'b00011100; //    ***
-         11'h643: data = 8'b00001100; //     **
-         11'h644: data = 8'b00001100; //     **
-         11'h645: data = 8'b00111100; //   ****
-         11'h646: data = 8'b01101100; //  ** **
-         11'h647: data = 8'b11001100; // **  **
-         11'h648: data = 8'b11001100; // **  **
-         11'h649: data = 8'b11001100; // **  **
-         11'h64a: data = 8'b11001100; // **  **
-         11'h64b: data = 8'b01110110; //  *** **
-         11'h64c: data = 8'b00000000; // 
-         11'h64d: data = 8'b00000000; // 
-         11'h64e: data = 8'b00000000; // 
-         11'h64f: data = 8'b00000000; // 
-         //code x65   
-         11'h650: data = 8'b00000000; // 
-         11'h651: data = 8'b00000000; // 
-         11'h652: data = 8'b00000000; // 
-         11'h653: data = 8'b00000000; // 
-         11'h654: data = 8'b00000000; // 
-         11'h655: data = 8'b01111100; //  *****
-         11'h656: data = 8'b11000110; // **   **
-         11'h657: data = 8'b11111110; // *******
-         11'h658: data = 8'b11000000; // **
-         11'h659: data = 8'b11000000; // **
-         11'h65a: data = 8'b11000110; // **   **
-         11'h65b: data = 8'b01111100; //  *****
-         11'h65c: data = 8'b00000000; // 
-         11'h65d: data = 8'b00000000; // 
-         11'h65e: data = 8'b00000000; // 
-         11'h65f: data = 8'b00000000; // 
-         //code x66   
-         11'h660: data = 8'b00000000; // 
-         11'h661: data = 8'b00000000; // 
-         11'h662: data = 8'b00111000; //   ***
-         11'h663: data = 8'b01101100; //  ** **
-         11'h664: data = 8'b01100100; //  **  *
-         11'h665: data = 8'b01100000; //  **
-         11'h666: data = 8'b11110000; // ****
-         11'h667: data = 8'b01100000; //  **
-         11'h668: data = 8'b01100000; //  **
-         11'h669: data = 8'b01100000; //  **
-         11'h66a: data = 8'b01100000; //  **
-         11'h66b: data = 8'b11110000; // ****
-         11'h66c: data = 8'b00000000; // 
-         11'h66d: data = 8'b00000000; // 
-         11'h66e: data = 8'b00000000; // 
-         11'h66f: data = 8'b00000000; // 
-         //code x67   
-         11'h670: data = 8'b00000000; // 
-         11'h671: data = 8'b00000000; // 
-         11'h672: data = 8'b00000000; // 
-         11'h673: data = 8'b00000000; // 
-         11'h674: data = 8'b00000000; // 
-         11'h675: data = 8'b01110110; //  *** **
-         11'h676: data = 8'b11001100; // **  **
-         11'h677: data = 8'b11001100; // **  **
-         11'h678: data = 8'b11001100; // **  **
-         11'h679: data = 8'b11001100; // **  **
-         11'h67a: data = 8'b11001100; // **  **
-         11'h67b: data = 8'b01111100; //  *****
-         11'h67c: data = 8'b00001100; //     **
-         11'h67d: data = 8'b11001100; // **  **
-         11'h67e: data = 8'b01111000; //  ****
-         11'h67f: data = 8'b00000000; // 
-         //code x68   
-         11'h680: data = 8'b00000000; // 
-         11'h681: data = 8'b00000000; // 
-         11'h682: data = 8'b11100000; // ***
-         11'h683: data = 8'b01100000; //  **
-         11'h684: data = 8'b01100000; //  **
-         11'h685: data = 8'b01101100; //  ** **
-         11'h686: data = 8'b01110110; //  *** **
-         11'h687: data = 8'b01100110; //  **  **
-         11'h688: data = 8'b01100110; //  **  **
-         11'h689: data = 8'b01100110; //  **  **
-         11'h68a: data = 8'b01100110; //  **  **
-         11'h68b: data = 8'b11100110; // ***  **
-         11'h68c: data = 8'b00000000; // 
-         11'h68d: data = 8'b00000000; // 
-         11'h68e: data = 8'b00000000; // 
-         11'h68f: data = 8'b00000000; // 
-         //code x69   
-         11'h690: data = 8'b00000000; // 
-         11'h691: data = 8'b00000000; // 
-         11'h692: data = 8'b00011000; //    **
-         11'h693: data = 8'b00011000; //    **
-         11'h694: data = 8'b00000000; // 
-         11'h695: data = 8'b00111000; //   ***
-         11'h696: data = 8'b00011000; //    **
-         11'h697: data = 8'b00011000; //    **
-         11'h698: data = 8'b00011000; //    **
-         11'h699: data = 8'b00011000; //    **
-         11'h69a: data = 8'b00011000; //    **
-         11'h69b: data = 8'b00111100; //   ****
-         11'h69c: data = 8'b00000000; // 
-         11'h69d: data = 8'b00000000; // 
-         11'h69e: data = 8'b00000000; // 
-         11'h69f: data = 8'b00000000; // 
-         //code x6a   
-         11'h6a0: data = 8'b00000000; // 
-         11'h6a1: data = 8'b00000000; // 
-         11'h6a2: data = 8'b00000110; //      **
-         11'h6a3: data = 8'b00000110; //      **
-         11'h6a4: data = 8'b00000000; // 
-         11'h6a5: data = 8'b00001110; //     ***
-         11'h6a6: data = 8'b00000110; //      **
-         11'h6a7: data = 8'b00000110; //      **
-         11'h6a8: data = 8'b00000110; //      **
-         11'h6a9: data = 8'b00000110; //      **
-         11'h6aa: data = 8'b00000110; //      **
-         11'h6ab: data = 8'b00000110; //      **
-         11'h6ac: data = 8'b01100110; //  **  **
-         11'h6ad: data = 8'b01100110; //  **  **
-         11'h6ae: data = 8'b00111100; //   ****
-         11'h6af: data = 8'b00000000; // 
-         //code x6b   
-         11'h6b0: data = 8'b00000000; // 
-         11'h6b1: data = 8'b00000000; // 
-         11'h6b2: data = 8'b11100000; // ***
-         11'h6b3: data = 8'b01100000; //  **
-         11'h6b4: data = 8'b01100000; //  **
-         11'h6b5: data = 8'b01100110; //  **  **
-         11'h6b6: data = 8'b01101100; //  ** **
-         11'h6b7: data = 8'b01111000; //  ****
-         11'h6b8: data = 8'b01111000; //  ****
-         11'h6b9: data = 8'b01101100; //  ** **
-         11'h6ba: data = 8'b01100110; //  **  **
-         11'h6bb: data = 8'b11100110; // ***  **
-         11'h6bc: data = 8'b00000000; // 
-         11'h6bd: data = 8'b00000000; // 
-         11'h6be: data = 8'b00000000; // 
-         11'h6bf: data = 8'b00000000; // 
-         //code x6c   
-         11'h6c0: data = 8'b00000000; // 
-         11'h6c1: data = 8'b00000000; // 
-         11'h6c2: data = 8'b00111000; //   ***
-         11'h6c3: data = 8'b00011000; //    **
-         11'h6c4: data = 8'b00011000; //    **
-         11'h6c5: data = 8'b00011000; //    **
-         11'h6c6: data = 8'b00011000; //    **
-         11'h6c7: data = 8'b00011000; //    **
-         11'h6c8: data = 8'b00011000; //    **
-         11'h6c9: data = 8'b00011000; //    **
-         11'h6ca: data = 8'b00011000; //    **
-         11'h6cb: data = 8'b00111100; //   ****
-         11'h6cc: data = 8'b00000000; // 
-         11'h6cd: data = 8'b00000000; // 
-         11'h6ce: data = 8'b00000000; // 
-         11'h6cf: data = 8'b00000000; // 
-         //code x6d   
-         11'h6d0: data = 8'b00000000; // 
-         11'h6d1: data = 8'b00000000; // 
-         11'h6d2: data = 8'b00000000; // 
-         11'h6d3: data = 8'b00000000; // 
-         11'h6d4: data = 8'b00000000; // 
-         11'h6d5: data = 8'b11100110; // ***  **
-         11'h6d6: data = 8'b11111111; // ********
-         11'h6d7: data = 8'b11011011; // ** ** **
-         11'h6d8: data = 8'b11011011; // ** ** **
-         11'h6d9: data = 8'b11011011; // ** ** **
-         11'h6da: data = 8'b11011011; // ** ** **
-         11'h6db: data = 8'b11011011; // ** ** **
-         11'h6dc: data = 8'b00000000; // 
-         11'h6dd: data = 8'b00000000; // 
-         11'h6de: data = 8'b00000000; // 
-         11'h6df: data = 8'b00000000; // 
-         //code x6e   
-         11'h6e0: data = 8'b00000000; // 
-         11'h6e1: data = 8'b00000000; // 
-         11'h6e2: data = 8'b00000000; // 
-         11'h6e3: data = 8'b00000000; // 
-         11'h6e4: data = 8'b00000000; // 
-         11'h6e5: data = 8'b11011100; // ** ***
-         11'h6e6: data = 8'b01100110; //  **  **
-         11'h6e7: data = 8'b01100110; //  **  **
-         11'h6e8: data = 8'b01100110; //  **  **
-         11'h6e9: data = 8'b01100110; //  **  **
-         11'h6ea: data = 8'b01100110; //  **  **
-         11'h6eb: data = 8'b01100110; //  **  **
-         11'h6ec: data = 8'b00000000; // 
-         11'h6ed: data = 8'b00000000; // 
-         11'h6ee: data = 8'b00000000; // 
-         11'h6ef: data = 8'b00000000; // 
-         //code x6f   
-         11'h6f0: data = 8'b00000000; // 
-         11'h6f1: data = 8'b00000000; // 
-         11'h6f2: data = 8'b00000000; // 
-         11'h6f3: data = 8'b00000000; // 
-         11'h6f4: data = 8'b00000000; // 
-         11'h6f5: data = 8'b01111100; //  *****
-         11'h6f6: data = 8'b11000110; // **   **
-         11'h6f7: data = 8'b11000110; // **   **
-         11'h6f8: data = 8'b11000110; // **   **
-         11'h6f9: data = 8'b11000110; // **   **
-         11'h6fa: data = 8'b11000110; // **   **
-         11'h6fb: data = 8'b01111100; //  *****
-         11'h6fc: data = 8'b00000000; // 
-         11'h6fd: data = 8'b00000000; // 
-         11'h6fe: data = 8'b00000000; // 
-         11'h6ff: data = 8'b00000000; // 
-         //code x70   
-         11'h700: data = 8'b00000000; // 
-         11'h701: data = 8'b00000000; // 
-         11'h702: data = 8'b00000000; // 
-         11'h703: data = 8'b00000000; // 
-         11'h704: data = 8'b00000000; // 
-         11'h705: data = 8'b11011100; // ** ***
-         11'h706: data = 8'b01100110; //  **  **
-         11'h707: data = 8'b01100110; //  **  **
-         11'h708: data = 8'b01100110; //  **  **
-         11'h709: data = 8'b01100110; //  **  **
-         11'h70a: data = 8'b01100110; //  **  **
-         11'h70b: data = 8'b01111100; //  *****
-         11'h70c: data = 8'b01100000; //  **
-         11'h70d: data = 8'b01100000; //  **
-         11'h70e: data = 8'b11110000; // ****
-         11'h70f: data = 8'b00000000; // 
-         //code x71   
-         11'h710: data = 8'b00000000; // 
-         11'h711: data = 8'b00000000; // 
-         11'h712: data = 8'b00000000; // 
-         11'h713: data = 8'b00000000; // 
-         11'h714: data = 8'b00000000; // 
-         11'h715: data = 8'b01110110; //  *** **
-         11'h716: data = 8'b11001100; // **  **
-         11'h717: data = 8'b11001100; // **  **
-         11'h718: data = 8'b11001100; // **  **
-         11'h719: data = 8'b11001100; // **  **
-         11'h71a: data = 8'b11001100; // **  **
-         11'h71b: data = 8'b01111100; //  *****
-         11'h71c: data = 8'b00001100; //     **
-         11'h71d: data = 8'b00001100; //     **
-         11'h71e: data = 8'b00011110; //    ****
-         11'h71f: data = 8'b00000000; // 
-         //code x72   
-         11'h720: data = 8'b00000000; // 
-         11'h721: data = 8'b00000000; // 
-         11'h722: data = 8'b00000000; // 
-         11'h723: data = 8'b00000000; // 
-         11'h724: data = 8'b00000000; // 
-         11'h725: data = 8'b11011100; // ** ***
-         11'h726: data = 8'b01110110; //  *** **
-         11'h727: data = 8'b01100110; //  **  **
-         11'h728: data = 8'b01100000; //  **
-         11'h729: data = 8'b01100000; //  **
-         11'h72a: data = 8'b01100000; //  **
-         11'h72b: data = 8'b11110000; // ****
-         11'h72c: data = 8'b00000000; // 
-         11'h72d: data = 8'b00000000; // 
-         11'h72e: data = 8'b00000000; // 
-         11'h72f: data = 8'b00000000; // 
-         //code x73   
-         11'h730: data = 8'b00000000; // 
-         11'h731: data = 8'b00000000; // 
-         11'h732: data = 8'b00000000; // 
-         11'h733: data = 8'b00000000; // 
-         11'h734: data = 8'b00000000; // 
-         11'h735: data = 8'b01111100; //  *****
-         11'h736: data = 8'b11000110; // **   **
-         11'h737: data = 8'b01100000; //  **
-         11'h738: data = 8'b00111000; //   ***
-         11'h739: data = 8'b00001100; //     **
-         11'h73a: data = 8'b11000110; // **   **
-         11'h73b: data = 8'b01111100; //  *****
-         11'h73c: data = 8'b00000000; // 
-         11'h73d: data = 8'b00000000; // 
-         11'h73e: data = 8'b00000000; // 
-         11'h73f: data = 8'b00000000; // 
-         //code x74   
-         11'h740: data = 8'b00000000; // 
-         11'h741: data = 8'b00000000; // 
-         11'h742: data = 8'b00010000; //    *
-         11'h743: data = 8'b00110000; //   **
-         11'h744: data = 8'b00110000; //   **
-         11'h745: data = 8'b11111100; // ******
-         11'h746: data = 8'b00110000; //   **
-         11'h747: data = 8'b00110000; //   **
-         11'h748: data = 8'b00110000; //   **
-         11'h749: data = 8'b00110000; //   **
-         11'h74a: data = 8'b00110110; //   ** **
-         11'h74b: data = 8'b00011100; //    ***
-         11'h74c: data = 8'b00000000; // 
-         11'h74d: data = 8'b00000000; // 
-         11'h74e: data = 8'b00000000; // 
-         11'h74f: data = 8'b00000000; // 
-         //code x75   
-         11'h750: data = 8'b00000000; // 
-         11'h751: data = 8'b00000000; // 
-         11'h752: data = 8'b00000000; // 
-         11'h753: data = 8'b00000000; // 
-         11'h754: data = 8'b00000000; // 
-         11'h755: data = 8'b11001100; // **  **
-         11'h756: data = 8'b11001100; // **  **
-         11'h757: data = 8'b11001100; // **  **
-         11'h758: data = 8'b11001100; // **  **
-         11'h759: data = 8'b11001100; // **  **
-         11'h75a: data = 8'b11001100; // **  **
-         11'h75b: data = 8'b01110110; //  *** **
-         11'h75c: data = 8'b00000000; // 
-         11'h75d: data = 8'b00000000; // 
-         11'h75e: data = 8'b00000000; // 
-         11'h75f: data = 8'b00000000; // 
-         //code x76   
-         11'h760: data = 8'b00000000; // 
-         11'h761: data = 8'b00000000; // 
-         11'h762: data = 8'b00000000; // 
-         11'h763: data = 8'b00000000; // 
-         11'h764: data = 8'b00000000; // 
-         11'h765: data = 8'b11000011; // **    **
-         11'h766: data = 8'b11000011; // **    **
-         11'h767: data = 8'b11000011; // **    **
-         11'h768: data = 8'b11000011; // **    **
-         11'h769: data = 8'b01100110; //  **  **
-         11'h76a: data = 8'b00111100; //   ****
-         11'h76b: data = 8'b00011000; //    **
-         11'h76c: data = 8'b00000000; // 
-         11'h76d: data = 8'b00000000; // 
-         11'h76e: data = 8'b00000000; // 
-         11'h76f: data = 8'b00000000; // 
-         //code x77   
-         11'h770: data = 8'b00000000; // 
-         11'h771: data = 8'b00000000; // 
-         11'h772: data = 8'b00000000; // 
-         11'h773: data = 8'b00000000; // 
-         11'h774: data = 8'b00000000; // 
-         11'h775: data = 8'b11000011; // **    **
-         11'h776: data = 8'b11000011; // **    **
-         11'h777: data = 8'b11000011; // **    **
-         11'h778: data = 8'b11011011; // ** ** **
-         11'h779: data = 8'b11011011; // ** ** **
-         11'h77a: data = 8'b11111111; // ********
-         11'h77b: data = 8'b01100110; //  **  **
-         11'h77c: data = 8'b00000000; // 
-         11'h77d: data = 8'b00000000; // 
-         11'h77e: data = 8'b00000000; // 
-         11'h77f: data = 8'b00000000; // 
-         //code x78   
-         11'h780: data = 8'b00000000; // 
-         11'h781: data = 8'b00000000; // 
-         11'h782: data = 8'b00000000; // 
-         11'h783: data = 8'b00000000; // 
-         11'h784: data = 8'b00000000; // 
-         11'h785: data = 8'b11000011; // **    **
-         11'h786: data = 8'b01100110; //  **  **
-         11'h787: data = 8'b00111100; //   ****
-         11'h788: data = 8'b00011000; //    **
-         11'h789: data = 8'b00111100; //   ****
-         11'h78a: data = 8'b01100110; //  **  **
-         11'h78b: data = 8'b11000011; // **    **
-         11'h78c: data = 8'b00000000; // 
-         11'h78d: data = 8'b00000000; // 
-         11'h78e: data = 8'b00000000; // 
-         11'h78f: data = 8'b00000000; // 
-         //code x79   
-         11'h790: data = 8'b00000000; // 
-         11'h791: data = 8'b00000000; // 
-         11'h792: data = 8'b00000000; // 
-         11'h793: data = 8'b00000000; // 
-         11'h794: data = 8'b00000000; // 
-         11'h795: data = 8'b11000110; // **   **
-         11'h796: data = 8'b11000110; // **   **
-         11'h797: data = 8'b11000110; // **   **
-         11'h798: data = 8'b11000110; // **   **
-         11'h799: data = 8'b11000110; // **   **
-         11'h79a: data = 8'b11000110; // **   **
-         11'h79b: data = 8'b01111110; //  ******
-         11'h79c: data = 8'b00000110; //      **
-         11'h79d: data = 8'b00001100; //     **
-         11'h79e: data = 8'b11111000; // *****
-         11'h79f: data = 8'b00000000; // 
-         //code x7a   
-         11'h7a0: data = 8'b00000000; // 
-         11'h7a1: data = 8'b00000000; // 
-         11'h7a2: data = 8'b00000000; // 
-         11'h7a3: data = 8'b00000000; // 
-         11'h7a4: data = 8'b00000000; // 
-         11'h7a5: data = 8'b11111110; // *******
-         11'h7a6: data = 8'b11001100; // **  **
-         11'h7a7: data = 8'b00011000; //    **
-         11'h7a8: data = 8'b00110000; //   **
-         11'h7a9: data = 8'b01100000; //  **
-         11'h7aa: data = 8'b11000110; // **   **
-         11'h7ab: data = 8'b11111110; // *******
-         11'h7ac: data = 8'b00000000; // 
-         11'h7ad: data = 8'b00000000; // 
-         11'h7ae: data = 8'b00000000; // 
-         11'h7af: data = 8'b00000000; // 
-         //code x7b   
-         11'h7b0: data = 8'b00000000; // 
-         11'h7b1: data = 8'b00000000; // 
-         11'h7b2: data = 8'b00001110; //     ***
-         11'h7b3: data = 8'b00011000; //    **
-         11'h7b4: data = 8'b00011000; //    **
-         11'h7b5: data = 8'b00011000; //    **
-         11'h7b6: data = 8'b01110000; //  ***
-         11'h7b7: data = 8'b00011000; //    **
-         11'h7b8: data = 8'b00011000; //    **
-         11'h7b9: data = 8'b00011000; //    **
-         11'h7ba: data = 8'b00011000; //    **
-         11'h7bb: data = 8'b00001110; //     ***
-         11'h7bc: data = 8'b00000000; // 
-         11'h7bd: data = 8'b00000000; // 
-         11'h7be: data = 8'b00000000; // 
-         11'h7bf: data = 8'b00000000; // 
-         //code x7c   
-         11'h7c0: data = 8'b00000000; // 
-         11'h7c1: data = 8'b00000000; // 
-         11'h7c2: data = 8'b00011000; //    **
-         11'h7c3: data = 8'b00011000; //    **
-         11'h7c4: data = 8'b00011000; //    **
-         11'h7c5: data = 8'b00011000; //    **
-         11'h7c6: data = 8'b00000000; // 
-         11'h7c7: data = 8'b00011000; //    **
-         11'h7c8: data = 8'b00011000; //    **
-         11'h7c9: data = 8'b00011000; //    **
-         11'h7ca: data = 8'b00011000; //    **
-         11'h7cb: data = 8'b00011000; //    **
-         11'h7cc: data = 8'b00000000; // 
-         11'h7cd: data = 8'b00000000; // 
-         11'h7ce: data = 8'b00000000; // 
-         11'h7cf: data = 8'b00000000; // 
-         //code x7d   
-         11'h7d0: data = 8'b00000000; // 
-         11'h7d1: data = 8'b00000000; // 
-         11'h7d2: data = 8'b01110000; //  ***
-         11'h7d3: data = 8'b00011000; //    **
-         11'h7d4: data = 8'b00011000; //    **
-         11'h7d5: data = 8'b00011000; //    **
-         11'h7d6: data = 8'b00001110; //     ***
-         11'h7d7: data = 8'b00011000; //    **
-         11'h7d8: data = 8'b00011000; //    **
-         11'h7d9: data = 8'b00011000; //    **
-         11'h7da: data = 8'b00011000; //    **
-         11'h7db: data = 8'b01110000; //  ***
-         11'h7dc: data = 8'b00000000; // 
-         11'h7dd: data = 8'b00000000; // 
-         11'h7de: data = 8'b00000000; // 
-         11'h7df: data = 8'b00000000; // 
-         //code x7e   
-         11'h7e0: data = 8'b00000000; // 
-         11'h7e1: data = 8'b00000000; // 
-         11'h7e2: data = 8'b01110110; //  *** **
-         11'h7e3: data = 8'b11011100; // ** ***
-         11'h7e4: data = 8'b00000000; // 
-         11'h7e5: data = 8'b00000000; // 
-         11'h7e6: data = 8'b00000000; // 
-         11'h7e7: data = 8'b00000000; // 
-         11'h7e8: data = 8'b00000000; // 
-         11'h7e9: data = 8'b00000000; // 
-         11'h7ea: data = 8'b00000000; // 
-         11'h7eb: data = 8'b00000000; // 
-         11'h7ec: data = 8'b00000000; // 
-         11'h7ed: data = 8'b00000000; // 
-         11'h7ee: data = 8'b00000000; // 
-         11'h7ef: data = 8'b00000000; // 
-         //code x7f   
-         11'h7f0: data = 8'b00000000; // 
-         11'h7f1: data = 8'b00000000; // 
-         11'h7f2: data = 8'b00000000; // 
-         11'h7f3: data = 8'b00000000; // 
-         11'h7f4: data = 8'b00010000; //    *
-         11'h7f5: data = 8'b00111000; //   ***
-         11'h7f6: data = 8'b01101100; //  ** **
-         11'h7f7: data = 8'b11000110; // **   **
-         11'h7f8: data = 8'b11000110; // **   **
-         11'h7f9: data = 8'b11000110; // **   **
-         11'h7fa: data = 8'b11111110; // *******
-         11'h7fb: data = 8'b00000000; // 
-         11'h7fc: data = 8'b00000000; // 
-         11'h7fd: data = 8'b00000000; // 
-         11'h7fe: data = 8'b00000000; // 
-         11'h7ff: data = 8'b00000000; // 	 
-   endcase  
-   	       
-endmodule
\ No newline at end of file
diff --git a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/debounce.v b/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/debounce.v
deleted file mode 100644
index 0aa3f70..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/debounce.v
+++ /dev/null
@@ -1,33 +0,0 @@
-`timescale 1ns / 1ps
-
-module debounce(

-		input wire clk,

-		input wire button,

-		output reg pbreg

-	);

-

-	reg [2:0] count;

-

-	always @(posedge clk)

-	begin

-		if(button == 0)

-		begin

-			pbreg = 0;

-			count = 0;

-		end

-		else

-		begin

-			if(count < 7)

-			begin

-				count = count + 1;

-				pbreg = 0;

-			end

-			else

-			begin

-				count = 7;

-				pbreg = 1;

-			end

-		end

-	end

-

-endmodule
diff --git a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/front_rom.v b/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/front_rom.v
deleted file mode 100644
index bd22c8d..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/front_rom.v
+++ /dev/null
@@ -1,2192 +0,0 @@
-module font_rom
-   (
-    input wire clk,
-    input wire [10:0] addr,
-    output reg [7:0] data
-   );
-   reg [10:0] addr_reg; 
-	
-   always @(posedge clk) 
-      addr_reg <= addr;
-      
-   always @*
-      case (addr_reg)
-         //code x00
-         11'h000: data = 8'b00000000; // 
-         11'h001: data = 8'b00000000; // 
-         11'h002: data = 8'b00000000; // 
-         11'h003: data = 8'b00000000; // 
-         11'h004: data = 8'b00000000; // 
-         11'h005: data = 8'b00000000; // 
-         11'h006: data = 8'b00000000; // 
-         11'h007: data = 8'b00000000; // 
-         11'h008: data = 8'b00000000; // 
-         11'h009: data = 8'b00000000; // 
-         11'h00a: data = 8'b00000000; // 
-         11'h00b: data = 8'b00000000; // 
-         11'h00c: data = 8'b00000000; // 
-         11'h00d: data = 8'b00000000; // 
-         11'h00e: data = 8'b00000000; // 
-         11'h00f: data = 8'b00000000; // 
-         //code x01
-         11'h010: data = 8'b00000000; // 
-         11'h011: data = 8'b00000000; // 
-         11'h012: data = 8'b01111110; //  ******
-         11'h013: data = 8'b10000001; // *      *
-         11'h014: data = 8'b10100101; // * *  * *
-         11'h015: data = 8'b10000001; // *      *
-         11'h016: data = 8'b10000001; // *      *
-         11'h017: data = 8'b10111101; // * **** *
-         11'h018: data = 8'b10011001; // *  **  *
-         11'h019: data = 8'b10000001; // *      *
-         11'h01a: data = 8'b10000001; // *      *
-         11'h01b: data = 8'b01111110; //  ******
-         11'h01c: data = 8'b00000000; // 
-         11'h01d: data = 8'b00000000; // 
-         11'h01e: data = 8'b00000000; // 
-         11'h01f: data = 8'b00000000; // 
-         //code x02
-         11'h020: data = 8'b00000000; // 
-         11'h021: data = 8'b00000000; // 
-         11'h022: data = 8'b01111110; //  ******
-         11'h023: data = 8'b11111111; // ********
-         11'h024: data = 8'b11011011; // ** ** **
-         11'h025: data = 8'b11111111; // ********
-         11'h026: data = 8'b11111111; // ********
-         11'h027: data = 8'b11000011; // **    **
-         11'h028: data = 8'b11100111; // ***  ***
-         11'h029: data = 8'b11111111; // ********
-         11'h02a: data = 8'b11111111; // ********
-         11'h02b: data = 8'b01111110; //  ******
-         11'h02c: data = 8'b00000000; // 
-         11'h02d: data = 8'b00000000; // 
-         11'h02e: data = 8'b00000000; // 
-         11'h02f: data = 8'b00000000; // 
-         //code x03
-         11'h030: data = 8'b00000000; // 
-         11'h031: data = 8'b00000000; // 
-         11'h032: data = 8'b00000000; // 
-         11'h033: data = 8'b00000000; // 
-         11'h034: data = 8'b01101100; //  ** **
-         11'h035: data = 8'b11111110; // *******
-         11'h036: data = 8'b11111110; // *******
-         11'h037: data = 8'b11111110; // *******
-         11'h038: data = 8'b11111110; // *******
-         11'h039: data = 8'b01111100; //  *****
-         11'h03a: data = 8'b00111000; //   ***
-         11'h03b: data = 8'b00010000; //    *
-         11'h03c: data = 8'b00000000; // 
-         11'h03d: data = 8'b00000000; // 
-         11'h03e: data = 8'b00000000; // 
-         11'h03f: data = 8'b00000000; // 
-         //code x04
-         11'h040: data = 8'b00000000; // 
-         11'h041: data = 8'b00000000; // 
-         11'h042: data = 8'b00000000; // 
-         11'h043: data = 8'b00000000; // 
-         11'h044: data = 8'b00010000; //    *
-         11'h045: data = 8'b00111000; //   ***
-         11'h046: data = 8'b01111100; //  *****
-         11'h047: data = 8'b11111110; // *******
-         11'h048: data = 8'b01111100; //  *****
-         11'h049: data = 8'b00111000; //   ***
-         11'h04a: data = 8'b00010000; //    *
-         11'h04b: data = 8'b00000000; // 
-         11'h04c: data = 8'b00000000; // 
-         11'h04d: data = 8'b00000000; // 
-         11'h04e: data = 8'b00000000; // 
-         11'h04f: data = 8'b00000000; // 
-         //code x05
-         11'h050: data = 8'b00000000; // 
-         11'h051: data = 8'b00000000; // 
-         11'h052: data = 8'b00000000; // 
-         11'h053: data = 8'b00011000; //    **
-         11'h054: data = 8'b00111100; //   ****
-         11'h055: data = 8'b00111100; //   ****
-         11'h056: data = 8'b11100111; // ***  ***
-         11'h057: data = 8'b11100111; // ***  ***
-         11'h058: data = 8'b11100111; // ***  ***
-         11'h059: data = 8'b00011000; //    **
-         11'h05a: data = 8'b00011000; //    **
-         11'h05b: data = 8'b00111100; //   ****
-         11'h05c: data = 8'b00000000; // 
-         11'h05d: data = 8'b00000000; // 
-         11'h05e: data = 8'b00000000; // 
-         11'h05f: data = 8'b00000000; // 
-         //code x06
-         11'h060: data = 8'b00000000; // 
-         11'h061: data = 8'b00000000; // 
-         11'h062: data = 8'b00000000; // 
-         11'h063: data = 8'b00011000; //    **
-         11'h064: data = 8'b00111100; //   ****
-         11'h065: data = 8'b01111110; //  ******
-         11'h066: data = 8'b11111111; // ********
-         11'h067: data = 8'b11111111; // ********
-         11'h068: data = 8'b01111110; //  ******
-         11'h069: data = 8'b00011000; //    **
-         11'h06a: data = 8'b00011000; //    **
-         11'h06b: data = 8'b00111100; //   ****
-         11'h06c: data = 8'b00000000; // 
-         11'h06d: data = 8'b00000000; // 
-         11'h06e: data = 8'b00000000; // 
-         11'h06f: data = 8'b00000000; // 
-         //code x07
-         11'h070: data = 8'b00000000; // 
-         11'h071: data = 8'b00000000; // 
-         11'h072: data = 8'b00000000; // 
-         11'h073: data = 8'b00000000; // 
-         11'h074: data = 8'b00000000; // 
-         11'h075: data = 8'b00000000; // 
-         11'h076: data = 8'b00011000; //    **
-         11'h077: data = 8'b00111100; //   ****
-         11'h078: data = 8'b00111100; //   ****
-         11'h079: data = 8'b00011000; //    **
-         11'h07a: data = 8'b00000000; // 
-         11'h07b: data = 8'b00000000; // 
-         11'h07c: data = 8'b00000000; // 
-         11'h07d: data = 8'b00000000; // 
-         11'h07e: data = 8'b00000000; // 
-         11'h07f: data = 8'b00000000; // 
-         //code x08
-         11'h080: data = 8'b11111111; // ********
-         11'h081: data = 8'b11111111; // ********
-         11'h082: data = 8'b11111111; // ********
-         11'h083: data = 8'b11111111; // ********
-         11'h084: data = 8'b11111111; // ********
-         11'h085: data = 8'b11111111; // ********
-         11'h086: data = 8'b11100111; // ***  ***
-         11'h087: data = 8'b11000011; // **    **
-         11'h088: data = 8'b11000011; // **    **
-         11'h089: data = 8'b11100111; // ***  ***
-         11'h08a: data = 8'b11111111; // ********
-         11'h08b: data = 8'b11111111; // ********
-         11'h08c: data = 8'b11111111; // ********
-         11'h08d: data = 8'b11111111; // ********
-         11'h08e: data = 8'b11111111; // ********
-         11'h08f: data = 8'b11111111; // ********
-         //code x09
-         11'h090: data = 8'b00000000; // 
-         11'h091: data = 8'b00000000; // 
-         11'h092: data = 8'b00000000; // 
-         11'h093: data = 8'b00000000; // 
-         11'h094: data = 8'b00000000; // 
-         11'h095: data = 8'b00111100; //   ****
-         11'h096: data = 8'b01100110; //  **  **
-         11'h097: data = 8'b01000010; //  *    *
-         11'h098: data = 8'b01000010; //  *    *
-         11'h099: data = 8'b01100110; //  **  **
-         11'h09a: data = 8'b00111100; //   ****
-         11'h09b: data = 8'b00000000; // 
-         11'h09c: data = 8'b00000000; // 
-         11'h09d: data = 8'b00000000; // 
-         11'h09e: data = 8'b00000000; // 
-         11'h09f: data = 8'b00000000; // 
-         //code x0a
-         11'h0a0: data = 8'b11111111; // ********
-         11'h0a1: data = 8'b11111111; // ********
-         11'h0a2: data = 8'b11111111; // ********
-         11'h0a3: data = 8'b11111111; // ********
-         11'h0a4: data = 8'b11111111; // ********
-         11'h0a5: data = 8'b11000011; // **    **
-         11'h0a6: data = 8'b10011001; // *  **  *
-         11'h0a7: data = 8'b10111101; // * **** *
-         11'h0a8: data = 8'b10111101; // * **** *
-         11'h0a9: data = 8'b10011001; // *  **  *
-         11'h0aa: data = 8'b11000011; // **    **
-         11'h0ab: data = 8'b11111111; // ********
-         11'h0ac: data = 8'b11111111; // ********
-         11'h0ad: data = 8'b11111111; // ********
-         11'h0ae: data = 8'b11111111; // ********
-         11'h0af: data = 8'b11111111; // ********
-         //code x0b
-         11'h0b0: data = 8'b00000000; // 
-         11'h0b1: data = 8'b00000000; // 
-         11'h0b2: data = 8'b00011110; //    ****
-         11'h0b3: data = 8'b00001110; //     ***
-         11'h0b4: data = 8'b00011010; //    ** *
-         11'h0b5: data = 8'b00110010; //   **  *
-         11'h0b6: data = 8'b01111000; //  ****
-         11'h0b7: data = 8'b11001100; // **  **
-         11'h0b8: data = 8'b11001100; // **  **
-         11'h0b9: data = 8'b11001100; // **  **
-         11'h0ba: data = 8'b11001100; // **  **
-         11'h0bb: data = 8'b01111000; //  ****
-         11'h0bc: data = 8'b00000000; // 
-         11'h0bd: data = 8'b00000000; // 
-         11'h0be: data = 8'b00000000; // 
-         11'h0bf: data = 8'b00000000; // 
-         //code x0c
-         11'h0c0: data = 8'b00000000; // 
-         11'h0c1: data = 8'b00000000; // 
-         11'h0c2: data = 8'b00111100; //   ****
-         11'h0c3: data = 8'b01100110; //  **  **
-         11'h0c4: data = 8'b01100110; //  **  **
-         11'h0c5: data = 8'b01100110; //  **  **
-         11'h0c6: data = 8'b01100110; //  **  **
-         11'h0c7: data = 8'b00111100; //   ****
-         11'h0c8: data = 8'b00011000; //    **
-         11'h0c9: data = 8'b01111110; //  ******
-         11'h0ca: data = 8'b00011000; //    **
-         11'h0cb: data = 8'b00011000; //    **
-         11'h0cc: data = 8'b00000000; // 
-         11'h0cd: data = 8'b00000000; // 
-         11'h0ce: data = 8'b00000000; // 
-         11'h0cf: data = 8'b00000000; // 
-         //code x0d
-         11'h0d0: data = 8'b00000000; // 
-         11'h0d1: data = 8'b00000000; // 
-         11'h0d2: data = 8'b00111111; //   ******
-         11'h0d3: data = 8'b00110011; //   **  **
-         11'h0d4: data = 8'b00111111; //   ******
-         11'h0d5: data = 8'b00110000; //   **
-         11'h0d6: data = 8'b00110000; //   **
-         11'h0d7: data = 8'b00110000; //   **
-         11'h0d8: data = 8'b00110000; //   **
-         11'h0d9: data = 8'b01110000; //  ***
-         11'h0da: data = 8'b11110000; // ****
-         11'h0db: data = 8'b11100000; // ***
-         11'h0dc: data = 8'b00000000; // 
-         11'h0dd: data = 8'b00000000; // 
-         11'h0de: data = 8'b00000000; // 
-         11'h0df: data = 8'b00000000; // 
-         //code x0e
-         11'h0e0: data = 8'b00000000; // 
-         11'h0e1: data = 8'b00000000; // 
-         11'h0e2: data = 8'b01111111; //  *******
-         11'h0e3: data = 8'b01100011; //  **   **
-         11'h0e4: data = 8'b01111111; //  *******
-         11'h0e5: data = 8'b01100011; //  **   **
-         11'h0e6: data = 8'b01100011; //  **   **
-         11'h0e7: data = 8'b01100011; //  **   **
-         11'h0e8: data = 8'b01100011; //  **   **
-         11'h0e9: data = 8'b01100111; //  **  ***
-         11'h0ea: data = 8'b11100111; // ***  ***
-         11'h0eb: data = 8'b11100110; // ***  **
-         11'h0ec: data = 8'b11000000; // **
-         11'h0ed: data = 8'b00000000; // 
-         11'h0ee: data = 8'b00000000; // 
-         11'h0ef: data = 8'b00000000; // 
-         //code x0f
-         11'h0f0: data = 8'b00000000; // 
-         11'h0f1: data = 8'b00000000; // 
-         11'h0f2: data = 8'b00000000; // 
-         11'h0f3: data = 8'b00011000; //    **
-         11'h0f4: data = 8'b00011000; //    **
-         11'h0f5: data = 8'b11011011; // ** ** **
-         11'h0f6: data = 8'b00111100; //   ****
-         11'h0f7: data = 8'b11100111; // ***  ***
-         11'h0f8: data = 8'b00111100; //   ****
-         11'h0f9: data = 8'b11011011; // ** ** **
-         11'h0fa: data = 8'b00011000; //    **
-         11'h0fb: data = 8'b00011000; //    **
-         11'h0fc: data = 8'b00000000; // 
-         11'h0fd: data = 8'b00000000; // 
-         11'h0fe: data = 8'b00000000; // 
-         11'h0ff: data = 8'b00000000; // 
-         //code x10
-         11'h100: data = 8'b00000000; // 
-         11'h101: data = 8'b10000000; // *
-         11'h102: data = 8'b11000000; // **
-         11'h103: data = 8'b11100000; // ***
-         11'h104: data = 8'b11110000; // ****
-         11'h105: data = 8'b11111000; // *****
-         11'h106: data = 8'b11111110; // *******
-         11'h107: data = 8'b11111000; // *****
-         11'h108: data = 8'b11110000; // ****
-         11'h109: data = 8'b11100000; // ***
-         11'h10a: data = 8'b11000000; // **
-         11'h10b: data = 8'b10000000; // *
-         11'h10c: data = 8'b00000000; // 
-         11'h10d: data = 8'b00000000; // 
-         11'h10e: data = 8'b00000000; // 
-         11'h10f: data = 8'b00000000; // 
-         //code x11
-         11'h110: data = 8'b00000000; // 
-         11'h111: data = 8'b00000010; //       *
-         11'h112: data = 8'b00000110; //      **
-         11'h113: data = 8'b00001110; //     ***
-         11'h114: data = 8'b00011110; //    ****
-         11'h115: data = 8'b00111110; //   *****
-         11'h116: data = 8'b11111110; // *******
-         11'h117: data = 8'b00111110; //   *****
-         11'h118: data = 8'b00011110; //    ****
-         11'h119: data = 8'b00001110; //     ***
-         11'h11a: data = 8'b00000110; //      **
-         11'h11b: data = 8'b00000010; //       *
-         11'h11c: data = 8'b00000000; // 
-         11'h11d: data = 8'b00000000; // 
-         11'h11e: data = 8'b00000000; // 
-         11'h11f: data = 8'b00000000; // 
-         //code x12
-         11'h120: data = 8'b00000000; // 
-         11'h121: data = 8'b00000000; // 
-         11'h122: data = 8'b00011000; //    **
-         11'h123: data = 8'b00111100; //   ****
-         11'h124: data = 8'b01111110; //  ******
-         11'h125: data = 8'b00011000; //    **
-         11'h126: data = 8'b00011000; //    **
-         11'h127: data = 8'b00011000; //    **
-         11'h128: data = 8'b01111110; //  ******
-         11'h129: data = 8'b00111100; //   ****
-         11'h12a: data = 8'b00011000; //    **
-         11'h12b: data = 8'b00000000; // 
-         11'h12c: data = 8'b00000000; // 
-         11'h12d: data = 8'b00000000; // 
-         11'h12e: data = 8'b00000000; // 
-         11'h12f: data = 8'b00000000; // 
-         //code x13
-         11'h130: data = 8'b00000000; // 
-         11'h131: data = 8'b00000000; // 
-         11'h132: data = 8'b01100110; //  **  **
-         11'h133: data = 8'b01100110; //  **  **
-         11'h134: data = 8'b01100110; //  **  **
-         11'h135: data = 8'b01100110; //  **  **
-         11'h136: data = 8'b01100110; //  **  **
-         11'h137: data = 8'b01100110; //  **  **
-         11'h138: data = 8'b01100110; //  **  **
-         11'h139: data = 8'b00000000; // 
-         11'h13a: data = 8'b01100110; //  **  **
-         11'h13b: data = 8'b01100110; //  **  **
-         11'h13c: data = 8'b00000000; // 
-         11'h13d: data = 8'b00000000; // 
-         11'h13e: data = 8'b00000000; // 
-         11'h13f: data = 8'b00000000; // 
-         //code x14
-         11'h140: data = 8'b00000000; // 
-         11'h141: data = 8'b00000000; // 
-         11'h142: data = 8'b01111111; //  *******
-         11'h143: data = 8'b11011011; // ** ** **
-         11'h144: data = 8'b11011011; // ** ** **
-         11'h145: data = 8'b11011011; // ** ** **
-         11'h146: data = 8'b01111011; //  **** **
-         11'h147: data = 8'b00011011; //    ** **
-         11'h148: data = 8'b00011011; //    ** **
-         11'h149: data = 8'b00011011; //    ** **
-         11'h14a: data = 8'b00011011; //    ** **
-         11'h14b: data = 8'b00011011; //    ** **
-         11'h14c: data = 8'b00000000; // 
-         11'h14d: data = 8'b00000000; // 
-         11'h14e: data = 8'b00000000; // 
-         11'h14f: data = 8'b00000000; // 
-         //code x15
-         11'h150: data = 8'b00000000; // 
-         11'h151: data = 8'b01111100; //  *****
-         11'h152: data = 8'b11000110; // **   **
-         11'h153: data = 8'b01100000; //  **
-         11'h154: data = 8'b00111000; //   ***
-         11'h155: data = 8'b01101100; //  ** **
-         11'h156: data = 8'b11000110; // **   **
-         11'h157: data = 8'b11000110; // **   **
-         11'h158: data = 8'b01101100; //  ** **
-         11'h159: data = 8'b00111000; //   ***
-         11'h15a: data = 8'b00001100; //     **
-         11'h15b: data = 8'b11000110; // **   **
-         11'h15c: data = 8'b01111100; //  *****
-         11'h15d: data = 8'b00000000; // 
-         11'h15e: data = 8'b00000000; // 
-         11'h15f: data = 8'b00000000; // 
-         //code x16
-         11'h160: data = 8'b00000000; // 
-         11'h161: data = 8'b00000000; // 
-         11'h162: data = 8'b00000000; // 
-         11'h163: data = 8'b00000000; // 
-         11'h164: data = 8'b00000000; // 
-         11'h165: data = 8'b00000000; // 
-         11'h166: data = 8'b00000000; // 
-         11'h167: data = 8'b00000000; // 
-         11'h168: data = 8'b11111110; // *******
-         11'h169: data = 8'b11111110; // *******
-         11'h16a: data = 8'b11111110; // *******
-         11'h16b: data = 8'b11111110; // *******
-         11'h16c: data = 8'b00000000; // 
-         11'h16d: data = 8'b00000000; // 
-         11'h16e: data = 8'b00000000; // 
-         11'h16f: data = 8'b00000000; // 
-         //code x17
-         11'h170: data = 8'b00000000; // 
-         11'h171: data = 8'b00000000; // 
-         11'h172: data = 8'b00011000; //    **
-         11'h173: data = 8'b00111100; //   ****
-         11'h174: data = 8'b01111110; //  ******
-         11'h175: data = 8'b00011000; //    **
-         11'h176: data = 8'b00011000; //    **
-         11'h177: data = 8'b00011000; //    **
-         11'h178: data = 8'b01111110; //  ******
-         11'h179: data = 8'b00111100; //   ****
-         11'h17a: data = 8'b00011000; //    **
-         11'h17b: data = 8'b01111110; //  ******
-         11'h17c: data = 8'b00110000; // 
-         11'h17d: data = 8'b00000000; // 
-         11'h17e: data = 8'b00000000; // 
-         11'h17f: data = 8'b00000000; // 
-         //code x18
-         11'h180: data = 8'b00000000; // 
-         11'h181: data = 8'b00000000; // 
-         11'h182: data = 8'b00011000; //    **
-         11'h183: data = 8'b00111100; //   ****
-         11'h184: data = 8'b01111110; //  ******
-         11'h185: data = 8'b00011000; //    **
-         11'h186: data = 8'b00011000; //    **
-         11'h187: data = 8'b00011000; //    **
-         11'h188: data = 8'b00011000; //    **
-         11'h189: data = 8'b00011000; //    **
-         11'h18a: data = 8'b00011000; //    **
-         11'h18b: data = 8'b00011000; //    **
-         11'h18c: data = 8'b00000000; // 
-         11'h18d: data = 8'b00000000; // 
-         11'h18e: data = 8'b00000000; // 
-         11'h18f: data = 8'b00000000; // 
-         //code x19
-         11'h190: data = 8'b00000000; // 
-         11'h191: data = 8'b00000000; // 
-         11'h192: data = 8'b00011000; //    **
-         11'h193: data = 8'b00011000; //    **
-         11'h194: data = 8'b00011000; //    **
-         11'h195: data = 8'b00011000; //    **
-         11'h196: data = 8'b00011000; //    **
-         11'h197: data = 8'b00011000; //    **
-         11'h198: data = 8'b00011000; //    **
-         11'h199: data = 8'b01111110; //  ******
-         11'h19a: data = 8'b00111100; //   ****
-         11'h19b: data = 8'b00011000; //    **
-         11'h19c: data = 8'b00000000; // 
-         11'h19d: data = 8'b00000000; // 
-         11'h19e: data = 8'b00000000; // 
-         11'h19f: data = 8'b00000000; // 
-         //code x1a
-         11'h1a0: data = 8'b00000000; // 
-         11'h1a1: data = 8'b00000000; // 
-         11'h1a2: data = 8'b00000000; // 
-         11'h1a3: data = 8'b00000000; // 
-         11'h1a4: data = 8'b00000000; // 
-         11'h1a5: data = 8'b00011000; //    **
-         11'h1a6: data = 8'b00001100; //     **
-         11'h1a7: data = 8'b11111110; // *******
-         11'h1a8: data = 8'b00001100; //     **
-         11'h1a9: data = 8'b00011000; //    **
-         11'h1aa: data = 8'b00000000; // 
-         11'h1ab: data = 8'b00000000; // 
-         11'h1ac: data = 8'b00000000; // 
-         11'h1ad: data = 8'b00000000; // 
-         11'h1ae: data = 8'b00000000; // 
-         11'h1af: data = 8'b00000000; // 
-         //code x1b
-         11'h1b0: data = 8'b00000000; // 
-         11'h1b1: data = 8'b00000000; // 
-         11'h1b2: data = 8'b00000000; // 
-         11'h1b3: data = 8'b00000000; // 
-         11'h1b4: data = 8'b00000000; // 
-         11'h1b5: data = 8'b00110000; //   **
-         11'h1b6: data = 8'b01100000; //  **
-         11'h1b7: data = 8'b11111110; // *******
-         11'h1b8: data = 8'b01100000; //  **
-         11'h1b9: data = 8'b00110000; //   **
-         11'h1ba: data = 8'b00000000; // 
-         11'h1bb: data = 8'b00000000; // 
-         11'h1bc: data = 8'b00000000; // 
-         11'h1bd: data = 8'b00000000; // 
-         11'h1be: data = 8'b00000000; // 
-         11'h1bf: data = 8'b00000000; // 
-         //code x1c
-         11'h1c0: data = 8'b00000000; // 
-         11'h1c1: data = 8'b00000000; // 
-         11'h1c2: data = 8'b00000000; // 
-         11'h1c3: data = 8'b00000000; // 
-         11'h1c4: data = 8'b00000000; // 
-         11'h1c5: data = 8'b00000000; // 
-         11'h1c6: data = 8'b11000000; // **
-         11'h1c7: data = 8'b11000000; // **
-         11'h1c8: data = 8'b11000000; // **
-         11'h1c9: data = 8'b11111110; // *******
-         11'h1ca: data = 8'b00000000; // 
-         11'h1cb: data = 8'b00000000; // 
-         11'h1cc: data = 8'b00000000; // 
-         11'h1cd: data = 8'b00000000; // 
-         11'h1ce: data = 8'b00000000; // 
-         11'h1cf: data = 8'b00000000; // 
-         //code x1d
-         11'h1d0: data = 8'b00000000; // 
-         11'h1d1: data = 8'b00000000; // 
-         11'h1d2: data = 8'b00000000; // 
-         11'h1d3: data = 8'b00000000; // 
-         11'h1d4: data = 8'b00000000; // 
-         11'h1d5: data = 8'b00100100; //   *  *
-         11'h1d6: data = 8'b01100110; //  **  **
-         11'h1d7: data = 8'b11111111; // ********
-         11'h1d8: data = 8'b01100110; //  **  **
-         11'h1d9: data = 8'b00100100; //   *  *
-         11'h1da: data = 8'b00000000; // 
-         11'h1db: data = 8'b00000000; // 
-         11'h1dc: data = 8'b00000000; // 
-         11'h1dd: data = 8'b00000000; // 
-         11'h1de: data = 8'b00000000; // 
-         11'h1df: data = 8'b00000000; // 
-         //code x1e
-         11'h1e0: data = 8'b00000000; // 
-         11'h1e1: data = 8'b00000000; // 
-         11'h1e2: data = 8'b00000000; // 
-         11'h1e3: data = 8'b00000000; // 
-         11'h1e4: data = 8'b00010000; //    *
-         11'h1e5: data = 8'b00111000; //   ***
-         11'h1e6: data = 8'b00111000; //   ***
-         11'h1e7: data = 8'b01111100; //  *****
-         11'h1e8: data = 8'b01111100; //  *****
-         11'h1e9: data = 8'b11111110; // *******
-         11'h1ea: data = 8'b11111110; // *******
-         11'h1eb: data = 8'b00000000; // 
-         11'h1ec: data = 8'b00000000; // 
-         11'h1ed: data = 8'b00000000; // 
-         11'h1ee: data = 8'b00000000; // 
-         11'h1ef: data = 8'b00000000; // 
-         //code x1f
-         11'h1f0: data = 8'b00000000; // 
-         11'h1f1: data = 8'b00000000; // 
-         11'h1f2: data = 8'b00000000; // 
-         11'h1f3: data = 8'b00000000; // 
-         11'h1f4: data = 8'b11111110; // *******
-         11'h1f5: data = 8'b11111110; // *******
-         11'h1f6: data = 8'b01111100; //  *****
-         11'h1f7: data = 8'b01111100; //  *****
-         11'h1f8: data = 8'b00111000; //   ***
-         11'h1f9: data = 8'b00111000; //   ***
-         11'h1fa: data = 8'b00010000; //    *
-         11'h1fb: data = 8'b00000000; // 
-         11'h1fc: data = 8'b00000000; // 
-         11'h1fd: data = 8'b00000000; // 
-         11'h1fe: data = 8'b00000000; // 
-         11'h1ff: data = 8'b00000000; // 
-         //code x20
-         11'h200: data = 8'b00000000; // 
-         11'h201: data = 8'b00000000; // 
-         11'h202: data = 8'b00000000; // 
-         11'h203: data = 8'b00000000; // 
-         11'h204: data = 8'b00000000; // 
-         11'h205: data = 8'b00000000; // 
-         11'h206: data = 8'b00000000; // 
-         11'h207: data = 8'b00000000; // 
-         11'h208: data = 8'b00000000; // 
-         11'h209: data = 8'b00000000; // 
-         11'h20a: data = 8'b00000000; // 
-         11'h20b: data = 8'b00000000; // 
-         11'h20c: data = 8'b00000000; // 
-         11'h20d: data = 8'b00000000; // 
-         11'h20e: data = 8'b00000000; // 
-         11'h20f: data = 8'b00000000; // 
-         //code x21
-         11'h210: data = 8'b00000000; // 
-         11'h211: data = 8'b00000000; // 
-         11'h212: data = 8'b00011000; //    **
-         11'h213: data = 8'b00111100; //   ****
-         11'h214: data = 8'b00111100; //   ****
-         11'h215: data = 8'b00111100; //   ****
-         11'h216: data = 8'b00011000; //    **
-         11'h217: data = 8'b00011000; //    **
-         11'h218: data = 8'b00011000; //    **
-         11'h219: data = 8'b00000000; // 
-         11'h21a: data = 8'b00011000; //    **
-         11'h21b: data = 8'b00011000; //    **
-         11'h21c: data = 8'b00000000; // 
-         11'h21d: data = 8'b00000000; // 
-         11'h21e: data = 8'b00000000; // 
-         11'h21f: data = 8'b00000000; // 
-         //code x22
-         11'h220: data = 8'b00000000; // 
-         11'h221: data = 8'b01100110; //  **  **
-         11'h222: data = 8'b01100110; //  **  **
-         11'h223: data = 8'b01100110; //  **  **
-         11'h224: data = 8'b00100100; //   *  *
-         11'h225: data = 8'b00000000; // 
-         11'h226: data = 8'b00000000; // 
-         11'h227: data = 8'b00000000; // 
-         11'h228: data = 8'b00000000; // 
-         11'h229: data = 8'b00000000; // 
-         11'h22a: data = 8'b00000000; // 
-         11'h22b: data = 8'b00000000; // 
-         11'h22c: data = 8'b00000000; // 
-         11'h22d: data = 8'b00000000; // 
-         11'h22e: data = 8'b00000000; // 
-         11'h22f: data = 8'b00000000; // 
-         //code x23
-         11'h230: data = 8'b00000000; // 
-         11'h231: data = 8'b00000000; // 
-         11'h232: data = 8'b00000000; // 
-         11'h233: data = 8'b01101100; //  ** **
-         11'h234: data = 8'b01101100; //  ** **
-         11'h235: data = 8'b11111110; // *******
-         11'h236: data = 8'b01101100; //  ** **
-         11'h237: data = 8'b01101100; //  ** **
-         11'h238: data = 8'b01101100; //  ** **
-         11'h239: data = 8'b11111110; // *******
-         11'h23a: data = 8'b01101100; //  ** **
-         11'h23b: data = 8'b01101100; //  ** **
-         11'h23c: data = 8'b00000000; // 
-         11'h23d: data = 8'b00000000; // 
-         11'h23e: data = 8'b00000000; // 
-         11'h23f: data = 8'b00000000; // 
-         //code x24
-         11'h240: data = 8'b00011000; //     **
-         11'h241: data = 8'b00011000; //     **
-         11'h242: data = 8'b01111100; //   *****
-         11'h243: data = 8'b11000110; //  **   **
-         11'h244: data = 8'b11000010; //  **    *
-         11'h245: data = 8'b11000000; //  **
-         11'h246: data = 8'b01111100; //   *****
-         11'h247: data = 8'b00000110; //       **
-         11'h248: data = 8'b00000110; //       **
-         11'h249: data = 8'b10000110; //  *    **
-         11'h24a: data = 8'b11000110; //  **   **
-         11'h24b: data = 8'b01111100; //   *****
-         11'h24c: data = 8'b00011000; //     **
-         11'h24d: data = 8'b00011000; //     **
-         11'h24e: data = 8'b00000000; // 
-         11'h24f: data = 8'b00000000; // 
-         //code x25
-         11'h250: data = 8'b00000000; // 
-         11'h251: data = 8'b00000000; // 
-         11'h252: data = 8'b00000000; // 
-         11'h253: data = 8'b00000000; // 
-         11'h254: data = 8'b11000010; // **    *
-         11'h255: data = 8'b11000110; // **   **
-         11'h256: data = 8'b00001100; //     **
-         11'h257: data = 8'b00011000; //    **
-         11'h258: data = 8'b00110000; //   **
-         11'h259: data = 8'b01100000; //  **
-         11'h25a: data = 8'b11000110; // **   **
-         11'h25b: data = 8'b10000110; // *    **
-         11'h25c: data = 8'b00000000; // 
-         11'h25d: data = 8'b00000000; // 
-         11'h25e: data = 8'b00000000; // 
-         11'h25f: data = 8'b00000000; // 
-         //code x26
-         11'h260: data = 8'b00000000; // 
-         11'h261: data = 8'b00000000; // 
-         11'h262: data = 8'b00111000; //   ***
-         11'h263: data = 8'b01101100; //  ** **
-         11'h264: data = 8'b01101100; //  ** **
-         11'h265: data = 8'b00111000; //   ***
-         11'h266: data = 8'b01110110; //  *** **
-         11'h267: data = 8'b11011100; // ** ***
-         11'h268: data = 8'b11001100; // **  **
-         11'h269: data = 8'b11001100; // **  **
-         11'h26a: data = 8'b11001100; // **  **
-         11'h26b: data = 8'b01110110; //  *** **
-         11'h26c: data = 8'b00000000; // 
-         11'h26d: data = 8'b00000000; // 
-         11'h26e: data = 8'b00000000; // 
-         11'h26f: data = 8'b00000000; // 
-         //code x27
-         11'h270: data = 8'b00000000; // 
-         11'h271: data = 8'b00110000; //   **
-         11'h272: data = 8'b00110000; //   **
-         11'h273: data = 8'b00110000; //   **
-         11'h274: data = 8'b01100000; //  **
-         11'h275: data = 8'b00000000; // 
-         11'h276: data = 8'b00000000; // 
-         11'h277: data = 8'b00000000; // 
-         11'h278: data = 8'b00000000; // 
-         11'h279: data = 8'b00000000; // 
-         11'h27a: data = 8'b00000000; // 
-         11'h27b: data = 8'b00000000; // 
-         11'h27c: data = 8'b00000000; // 
-         11'h27d: data = 8'b00000000; // 
-         11'h27e: data = 8'b00000000; // 
-         11'h27f: data = 8'b00000000; // 
-         //code x28
-         11'h280: data = 8'b00000000; // 
-         11'h281: data = 8'b00000000; // 
-         11'h282: data = 8'b00001100; //     **
-         11'h283: data = 8'b00011000; //    **
-         11'h284: data = 8'b00110000; //   **
-         11'h285: data = 8'b00110000; //   **
-         11'h286: data = 8'b00110000; //   **
-         11'h287: data = 8'b00110000; //   **
-         11'h288: data = 8'b00110000; //   **
-         11'h289: data = 8'b00110000; //   **
-         11'h28a: data = 8'b00011000; //    **
-         11'h28b: data = 8'b00001100; //     **
-         11'h28c: data = 8'b00000000; // 
-         11'h28d: data = 8'b00000000; // 
-         11'h28e: data = 8'b00000000; // 
-         11'h28f: data = 8'b00000000; // 
-         //code x29
-         11'h290: data = 8'b00000000; // 
-         11'h291: data = 8'b00000000; // 
-         11'h292: data = 8'b00110000; //   **
-         11'h293: data = 8'b00011000; //    **
-         11'h294: data = 8'b00001100; //     **
-         11'h295: data = 8'b00001100; //     **
-         11'h296: data = 8'b00001100; //     **
-         11'h297: data = 8'b00001100; //     **
-         11'h298: data = 8'b00001100; //     **
-         11'h299: data = 8'b00001100; //     **
-         11'h29a: data = 8'b00011000; //    **
-         11'h29b: data = 8'b00110000; //   **
-         11'h29c: data = 8'b00000000; // 
-         11'h29d: data = 8'b00000000; // 
-         11'h29e: data = 8'b00000000; // 
-         11'h29f: data = 8'b00000000; // 
-         //code x2a
-         11'h2a0: data = 8'b00000000; // 
-         11'h2a1: data = 8'b00000000; // 
-         11'h2a2: data = 8'b00000000; // 
-         11'h2a3: data = 8'b00000000; // 
-         11'h2a4: data = 8'b00000000; // 
-         11'h2a5: data = 8'b01100110; //  **  **
-         11'h2a6: data = 8'b00111100; //   ****
-         11'h2a7: data = 8'b11111111; // ********
-         11'h2a8: data = 8'b00111100; //   ****
-         11'h2a9: data = 8'b01100110; //  **  **
-         11'h2aa: data = 8'b00000000; // 
-         11'h2ab: data = 8'b00000000; // 
-         11'h2ac: data = 8'b00000000; // 
-         11'h2ad: data = 8'b00000000; // 
-         11'h2ae: data = 8'b00000000; // 
-         11'h2af: data = 8'b00000000; // 
-         //code x2b
-         11'h2b0: data = 8'b00000000; // 
-         11'h2b1: data = 8'b00000000; // 
-         11'h2b2: data = 8'b00000000; // 
-         11'h2b3: data = 8'b00000000; // 
-         11'h2b4: data = 8'b00000000; // 
-         11'h2b5: data = 8'b00011000; //    **
-         11'h2b6: data = 8'b00011000; //    **
-         11'h2b7: data = 8'b01111110; //  ******
-         11'h2b8: data = 8'b00011000; //    **
-         11'h2b9: data = 8'b00011000; //    **
-         11'h2ba: data = 8'b00000000; // 
-         11'h2bb: data = 8'b00000000; // 
-         11'h2bc: data = 8'b00000000; // 
-         11'h2bd: data = 8'b00000000; // 
-         11'h2be: data = 8'b00000000; // 
-         11'h2bf: data = 8'b00000000; // 
-         //code x2c
-         11'h2c0: data = 8'b00000000; // 
-         11'h2c1: data = 8'b00000000; // 
-         11'h2c2: data = 8'b00000000; // 
-         11'h2c3: data = 8'b00000000; // 
-         11'h2c4: data = 8'b00000000; // 
-         11'h2c5: data = 8'b00000000; // 
-         11'h2c6: data = 8'b00000000; // 
-         11'h2c7: data = 8'b00000000; // 
-         11'h2c8: data = 8'b00000000; // 
-         11'h2c9: data = 8'b00011000; //    **
-         11'h2ca: data = 8'b00011000; //    **
-         11'h2cb: data = 8'b00011000; //    **
-         11'h2cc: data = 8'b00110000; //   **
-         11'h2cd: data = 8'b00000000; // 
-         11'h2ce: data = 8'b00000000; // 
-         11'h2cf: data = 8'b00000000; // 
-         //code x2d
-         11'h2d0: data = 8'b00000000; // 
-         11'h2d1: data = 8'b00000000; // 
-         11'h2d2: data = 8'b00000000; // 
-         11'h2d3: data = 8'b00000000; // 
-         11'h2d4: data = 8'b00000000; // 
-         11'h2d5: data = 8'b00000000; // 
-         11'h2d6: data = 8'b00000000; // 
-         11'h2d7: data = 8'b01111110; //  ******
-         11'h2d8: data = 8'b00000000; // 
-         11'h2d9: data = 8'b00000000; // 
-         11'h2da: data = 8'b00000000; // 
-         11'h2db: data = 8'b00000000; // 
-         11'h2dc: data = 8'b00000000; // 
-         11'h2dd: data = 8'b00000000; // 
-         11'h2de: data = 8'b00000000; // 
-         11'h2df: data = 8'b00000000; // 
-         //code x2e
-         11'h2e0: data = 8'b00000000; // 
-         11'h2e1: data = 8'b00000000; // 
-         11'h2e2: data = 8'b00000000; // 
-         11'h2e3: data = 8'b00000000; // 
-         11'h2e4: data = 8'b00000000; // 
-         11'h2e5: data = 8'b00000000; // 
-         11'h2e6: data = 8'b00000000; // 
-         11'h2e7: data = 8'b00000000; // 
-         11'h2e8: data = 8'b00000000; // 
-         11'h2e9: data = 8'b00000000; // 
-         11'h2ea: data = 8'b00011000; //    **
-         11'h2eb: data = 8'b00011000; //    **
-         11'h2ec: data = 8'b00000000; // 
-         11'h2ed: data = 8'b00000000; // 
-         11'h2ee: data = 8'b00000000; // 
-         11'h2ef: data = 8'b00000000; // 
-         //code x2f
-         11'h2f0: data = 8'b00000000; // 
-         11'h2f1: data = 8'b00000000; // 
-         11'h2f2: data = 8'b00000000; // 
-         11'h2f3: data = 8'b00000000; // 
-         11'h2f4: data = 8'b00000010; //       *
-         11'h2f5: data = 8'b00000110; //      **
-         11'h2f6: data = 8'b00001100; //     **
-         11'h2f7: data = 8'b00011000; //    **
-         11'h2f8: data = 8'b00110000; //   **
-         11'h2f9: data = 8'b01100000; //  **
-         11'h2fa: data = 8'b11000000; // **
-         11'h2fb: data = 8'b10000000; // *
-         11'h2fc: data = 8'b00000000; // 
-         11'h2fd: data = 8'b00000000; // 
-         11'h2fe: data = 8'b00000000; // 
-         11'h2ff: data = 8'b00000000; // 
-         //code x30
-         11'h300: data = 8'b00000000; // 
-         11'h301: data = 8'b00000000; // 
-         11'h302: data = 8'b01111100; //  *****
-         11'h303: data = 8'b11000110; // **   **
-         11'h304: data = 8'b11000110; // **   **
-         11'h305: data = 8'b11001110; // **  ***
-         11'h306: data = 8'b11011110; // ** ****
-         11'h307: data = 8'b11110110; // **** **
-         11'h308: data = 8'b11100110; // ***  **
-         11'h309: data = 8'b11000110; // **   **
-         11'h30a: data = 8'b11000110; // **   **
-         11'h30b: data = 8'b01111100; //  *****
-         11'h30c: data = 8'b00000000; // 
-         11'h30d: data = 8'b00000000; // 
-         11'h30e: data = 8'b00000000; // 
-         11'h30f: data = 8'b00000000; // 
-         //code x31
-         11'h310: data = 8'b00000000; // 
-         11'h311: data = 8'b00000000; // 
-         11'h312: data = 8'b00011000; // 
-         11'h313: data = 8'b00111000; // 
-         11'h314: data = 8'b01111000; //    **
-         11'h315: data = 8'b00011000; //   ***
-         11'h316: data = 8'b00011000; //  ****
-         11'h317: data = 8'b00011000; //    **
-         11'h318: data = 8'b00011000; //    **
-         11'h319: data = 8'b00011000; //    **
-         11'h31a: data = 8'b00011000; //    **
-         11'h31b: data = 8'b01111110; //    **
-         11'h31c: data = 8'b00000000; //    **
-         11'h31d: data = 8'b00000000; //  ******
-         11'h31e: data = 8'b00000000; // 
-         11'h31f: data = 8'b00000000; // 
-         //code x32
-         11'h320: data = 8'b00000000; // 
-         11'h321: data = 8'b00000000; // 
-         11'h322: data = 8'b01111100; //  *****
-         11'h323: data = 8'b11000110; // **   **
-         11'h324: data = 8'b00000110; //      **
-         11'h325: data = 8'b00001100; //     **
-         11'h326: data = 8'b00011000; //    **
-         11'h327: data = 8'b00110000; //   **
-         11'h328: data = 8'b01100000; //  **
-         11'h329: data = 8'b11000000; // **
-         11'h32a: data = 8'b11000110; // **   **
-         11'h32b: data = 8'b11111110; // *******
-         11'h32c: data = 8'b00000000; // 
-         11'h32d: data = 8'b00000000; // 
-         11'h32e: data = 8'b00000000; // 
-         11'h32f: data = 8'b00000000; // 
-         //code x33
-         11'h330: data = 8'b00000000; // 
-         11'h331: data = 8'b00000000; // 
-         11'h332: data = 8'b01111100; //  *****
-         11'h333: data = 8'b11000110; // **   **
-         11'h334: data = 8'b00000110; //      **
-         11'h335: data = 8'b00000110; //      **
-         11'h336: data = 8'b00111100; //   ****
-         11'h337: data = 8'b00000110; //      **
-         11'h338: data = 8'b00000110; //      **
-         11'h339: data = 8'b00000110; //      **
-         11'h33a: data = 8'b11000110; // **   **
-         11'h33b: data = 8'b01111100; //  *****
-         11'h33c: data = 8'b00000000; // 
-         11'h33d: data = 8'b00000000; // 
-         11'h33e: data = 8'b00000000; // 
-         11'h33f: data = 8'b00000000; // 
-         //code x34
-         11'h340: data = 8'b00000000; // 
-         11'h341: data = 8'b00000000; // 
-         11'h342: data = 8'b00001100; //     **
-         11'h343: data = 8'b00011100; //    ***
-         11'h344: data = 8'b00111100; //   ****
-         11'h345: data = 8'b01101100; //  ** **
-         11'h346: data = 8'b11001100; // **  **
-         11'h347: data = 8'b11111110; // *******
-         11'h348: data = 8'b00001100; //     **
-         11'h349: data = 8'b00001100; //     **
-         11'h34a: data = 8'b00001100; //     **
-         11'h34b: data = 8'b00011110; //    ****
-         11'h34c: data = 8'b00000000; // 
-         11'h34d: data = 8'b00000000; // 
-         11'h34e: data = 8'b00000000; // 
-         11'h34f: data = 8'b00000000; // 
-         //code x35
-         11'h350: data = 8'b00000000; // 
-         11'h351: data = 8'b00000000; // 
-         11'h352: data = 8'b11111110; // *******
-         11'h353: data = 8'b11000000; // **
-         11'h354: data = 8'b11000000; // **
-         11'h355: data = 8'b11000000; // **
-         11'h356: data = 8'b11111100; // ******
-         11'h357: data = 8'b00000110; //      **
-         11'h358: data = 8'b00000110; //      **
-         11'h359: data = 8'b00000110; //      **
-         11'h35a: data = 8'b11000110; // **   **
-         11'h35b: data = 8'b01111100; //  *****
-         11'h35c: data = 8'b00000000; // 
-         11'h35d: data = 8'b00000000; // 
-         11'h35e: data = 8'b00000000; // 
-         11'h35f: data = 8'b00000000; // 
-         //code x36
-         11'h360: data = 8'b00000000; // 
-         11'h361: data = 8'b00000000; // 
-         11'h362: data = 8'b00111000; //   ***
-         11'h363: data = 8'b01100000; //  **
-         11'h364: data = 8'b11000000; // **
-         11'h365: data = 8'b11000000; // **
-         11'h366: data = 8'b11111100; // ******
-         11'h367: data = 8'b11000110; // **   **
-         11'h368: data = 8'b11000110; // **   **
-         11'h369: data = 8'b11000110; // **   **
-         11'h36a: data = 8'b11000110; // **   **
-         11'h36b: data = 8'b01111100; //  *****
-         11'h36c: data = 8'b00000000; // 
-         11'h36d: data = 8'b00000000; // 
-         11'h36e: data = 8'b00000000; // 
-         11'h36f: data = 8'b00000000; // 
-         //code x37
-         11'h370: data = 8'b00000000; // 
-         11'h371: data = 8'b00000000; // 
-         11'h372: data = 8'b11111110; // *******
-         11'h373: data = 8'b11000110; // **   **
-         11'h374: data = 8'b00000110; //      **
-         11'h375: data = 8'b00000110; //      **
-         11'h376: data = 8'b00001100; //     **
-         11'h377: data = 8'b00011000; //    **
-         11'h378: data = 8'b00110000; //   **
-         11'h379: data = 8'b00110000; //   **
-         11'h37a: data = 8'b00110000; //   **
-         11'h37b: data = 8'b00110000; //   **
-         11'h37c: data = 8'b00000000; // 
-         11'h37d: data = 8'b00000000; // 
-         11'h37e: data = 8'b00000000; // 
-         11'h37f: data = 8'b00000000; // 
-         //code x38
-         11'h380: data = 8'b00000000; // 
-         11'h381: data = 8'b00000000; // 
-         11'h382: data = 8'b01111100; //  *****
-         11'h383: data = 8'b11000110; // **   **
-         11'h384: data = 8'b11000110; // **   **
-         11'h385: data = 8'b11000110; // **   **
-         11'h386: data = 8'b01111100; //  *****
-         11'h387: data = 8'b11000110; // **   **
-         11'h388: data = 8'b11000110; // **   **
-         11'h389: data = 8'b11000110; // **   **
-         11'h38a: data = 8'b11000110; // **   **
-         11'h38b: data = 8'b01111100; //  *****
-         11'h38c: data = 8'b00000000; // 
-         11'h38d: data = 8'b00000000; // 
-         11'h38e: data = 8'b00000000; // 
-         11'h38f: data = 8'b00000000; // 
-         //code x39
-         11'h390: data = 8'b00000000; // 
-         11'h391: data = 8'b00000000; // 
-         11'h392: data = 8'b01111100; //  *****
-         11'h393: data = 8'b11000110; // **   **
-         11'h394: data = 8'b11000110; // **   **
-         11'h395: data = 8'b11000110; // **   **
-         11'h396: data = 8'b01111110; //  ******
-         11'h397: data = 8'b00000110; //      **
-         11'h398: data = 8'b00000110; //      **
-         11'h399: data = 8'b00000110; //      **
-         11'h39a: data = 8'b00001100; //     **
-         11'h39b: data = 8'b01111000; //  ****
-         11'h39c: data = 8'b00000000; // 
-         11'h39d: data = 8'b00000000; // 
-         11'h39e: data = 8'b00000000; // 
-         11'h39f: data = 8'b00000000; // 
-         //code x3a 
-         11'h3a0: data = 8'b00000000; // 
-         11'h3a1: data = 8'b00000000; // 
-         11'h3a2: data = 8'b00000000; // 
-         11'h3a3: data = 8'b00000000; // 
-         11'h3a4: data = 8'b00011000; //    **
-         11'h3a5: data = 8'b00011000; //    **
-         11'h3a6: data = 8'b00000000; // 
-         11'h3a7: data = 8'b00000000; // 
-         11'h3a8: data = 8'b00000000; // 
-         11'h3a9: data = 8'b00011000; //    **
-         11'h3aa: data = 8'b00011000; //    **
-         11'h3ab: data = 8'b00000000; // 
-         11'h3ac: data = 8'b00000000; // 
-         11'h3ad: data = 8'b00000000; // 
-         11'h3ae: data = 8'b00000000; // 
-         11'h3af: data = 8'b00000000; // 
-         //code x3b 
-         11'h3b0: data = 8'b00000000; // 
-         11'h3b1: data = 8'b00000000; // 
-         11'h3b2: data = 8'b00000000; // 
-         11'h3b3: data = 8'b00000000; // 
-         11'h3b4: data = 8'b00011000; //    **
-         11'h3b5: data = 8'b00011000; //    **
-         11'h3b6: data = 8'b00000000; // 
-         11'h3b7: data = 8'b00000000; // 
-         11'h3b8: data = 8'b00000000; // 
-         11'h3b9: data = 8'b00011000; //    **
-         11'h3ba: data = 8'b00011000; //    **
-         11'h3bb: data = 8'b00110000; //   **
-         11'h3bc: data = 8'b00000000; // 
-         11'h3bd: data = 8'b00000000; // 
-         11'h3be: data = 8'b00000000; // 
-         11'h3bf: data = 8'b00000000; // 
-         //code x3c 
-         11'h3c0: data = 8'b00000000; // 
-         11'h3c1: data = 8'b00000000; // 
-         11'h3c2: data = 8'b00000000; // 
-         11'h3c3: data = 8'b00000110; //      **
-         11'h3c4: data = 8'b00001100; //     **
-         11'h3c5: data = 8'b00011000; //    **
-         11'h3c6: data = 8'b00110000; //   **
-         11'h3c7: data = 8'b01100000; //  **
-         11'h3c8: data = 8'b00110000; //   **
-         11'h3c9: data = 8'b00011000; //    **
-         11'h3ca: data = 8'b00001100; //     **
-         11'h3cb: data = 8'b00000110; //      **
-         11'h3cc: data = 8'b00000000; // 
-         11'h3cd: data = 8'b00000000; // 
-         11'h3ce: data = 8'b00000000; // 
-         11'h3cf: data = 8'b00000000; // 
-         //code x3d 
-         11'h3d0: data = 8'b00000000; // 
-         11'h3d1: data = 8'b00000000; // 
-         11'h3d2: data = 8'b00000000; // 
-         11'h3d3: data = 8'b00000000; // 
-         11'h3d4: data = 8'b00000000; // 
-         11'h3d5: data = 8'b01111110; //  ******
-         11'h3d6: data = 8'b00000000; // 
-         11'h3d7: data = 8'b00000000; // 
-         11'h3d8: data = 8'b01111110; //  ******
-         11'h3d9: data = 8'b00000000; // 
-         11'h3da: data = 8'b00000000; // 
-         11'h3db: data = 8'b00000000; // 
-         11'h3dc: data = 8'b00000000; // 
-         11'h3dd: data = 8'b00000000; // 
-         11'h3de: data = 8'b00000000; // 
-         11'h3df: data = 8'b00000000; // 
-         //code x3e 
-         11'h3e0: data = 8'b00000000; // 
-         11'h3e1: data = 8'b00000000; // 
-         11'h3e2: data = 8'b00000000; // 
-         11'h3e3: data = 8'b01100000; //  **
-         11'h3e4: data = 8'b00110000; //   **
-         11'h3e5: data = 8'b00011000; //    **
-         11'h3e6: data = 8'b00001100; //     **
-         11'h3e7: data = 8'b00000110; //      **
-         11'h3e8: data = 8'b00001100; //     **
-         11'h3e9: data = 8'b00011000; //    **
-         11'h3ea: data = 8'b00110000; //   **
-         11'h3eb: data = 8'b01100000; //  **
-         11'h3ec: data = 8'b00000000; // 
-         11'h3ed: data = 8'b00000000; // 
-         11'h3ee: data = 8'b00000000; // 
-         11'h3ef: data = 8'b00000000; // 
-         //code x3f 
-         11'h3f0: data = 8'b00000000; // 
-         11'h3f1: data = 8'b00000000; // 
-         11'h3f2: data = 8'b01111100; //  *****
-         11'h3f3: data = 8'b11000110; // **   **
-         11'h3f4: data = 8'b11000110; // **   **
-         11'h3f5: data = 8'b00001100; //     **
-         11'h3f6: data = 8'b00011000; //    **
-         11'h3f7: data = 8'b00011000; //    **
-         11'h3f8: data = 8'b00011000; //    **
-         11'h3f9: data = 8'b00000000; // 
-         11'h3fa: data = 8'b00011000; //    **
-         11'h3fb: data = 8'b00011000; //    **
-         11'h3fc: data = 8'b00000000; // 
-         11'h3fd: data = 8'b00000000; // 
-         11'h3fe: data = 8'b00000000; // 
-         11'h3ff: data = 8'b00000000; // 
-        //code x40 
-         11'h400: data = 8'b00000000; // 
-         11'h401: data = 8'b00000000; // 
-         11'h402: data = 8'b01111100; //  *****
-         11'h403: data = 8'b11000110; // **   **
-         11'h404: data = 8'b11000110; // **   **
-         11'h405: data = 8'b11000110; // **   **
-         11'h406: data = 8'b11011110; // ** ****
-         11'h407: data = 8'b11011110; // ** ****
-         11'h408: data = 8'b11011110; // ** ****
-         11'h409: data = 8'b11011100; // ** ***
-         11'h40a: data = 8'b11000000; // **
-         11'h40b: data = 8'b01111100; //  *****
-         11'h40c: data = 8'b00000000; // 
-         11'h40d: data = 8'b00000000; // 
-         11'h40e: data = 8'b00000000; // 
-         11'h40f: data = 8'b00000000; // 
-         //code x41 
-         11'h410: data = 8'b00000000; // 
-         11'h411: data = 8'b00000000; // 
-         11'h412: data = 8'b00010000; //    *
-         11'h413: data = 8'b00111000; //   ***
-         11'h414: data = 8'b01101100; //  ** **
-         11'h415: data = 8'b11000110; // **   **
-         11'h416: data = 8'b11000110; // **   **
-         11'h417: data = 8'b11111110; // *******
-         11'h418: data = 8'b11000110; // **   **
-         11'h419: data = 8'b11000110; // **   **
-         11'h41a: data = 8'b11000110; // **   **
-         11'h41b: data = 8'b11000110; // **   **
-         11'h41c: data = 8'b00000000; // 
-         11'h41d: data = 8'b00000000; // 
-         11'h41e: data = 8'b00000000; // 
-         11'h41f: data = 8'b00000000; // 
-         //code x42 
-         11'h420: data = 8'b00000000; // 
-         11'h421: data = 8'b00000000; // 
-         11'h422: data = 8'b11111100; // ******
-         11'h423: data = 8'b01100110; //  **  **
-         11'h424: data = 8'b01100110; //  **  **
-         11'h425: data = 8'b01100110; //  **  **
-         11'h426: data = 8'b01111100; //  *****
-         11'h427: data = 8'b01100110; //  **  **
-         11'h428: data = 8'b01100110; //  **  **
-         11'h429: data = 8'b01100110; //  **  **
-         11'h42a: data = 8'b01100110; //  **  **
-         11'h42b: data = 8'b11111100; // ******
-         11'h42c: data = 8'b00000000; // 
-         11'h42d: data = 8'b00000000; // 
-         11'h42e: data = 8'b00000000; // 
-         11'h42f: data = 8'b00000000; // 
-         //code x43 
-         11'h430: data = 8'b00000000; // 
-         11'h431: data = 8'b00000000; // 
-         11'h432: data = 8'b00111100; //   ****
-         11'h433: data = 8'b01100110; //  **  **
-         11'h434: data = 8'b11000010; // **    *
-         11'h435: data = 8'b11000000; // **
-         11'h436: data = 8'b11000000; // **
-         11'h437: data = 8'b11000000; // **
-         11'h438: data = 8'b11000000; // **
-         11'h439: data = 8'b11000010; // **    *
-         11'h43a: data = 8'b01100110; //  **  **
-         11'h43b: data = 8'b00111100; //   ****
-         11'h43c: data = 8'b00000000; // 
-         11'h43d: data = 8'b00000000; // 
-         11'h43e: data = 8'b00000000; // 
-         11'h43f: data = 8'b00000000; // 
-         //code x44 
-         11'h440: data = 8'b00000000; // 
-         11'h441: data = 8'b00000000; // 
-         11'h442: data = 8'b11111000; // *****
-         11'h443: data = 8'b01101100; //  ** **
-         11'h444: data = 8'b01100110; //  **  **
-         11'h445: data = 8'b01100110; //  **  **
-         11'h446: data = 8'b01100110; //  **  **
-         11'h447: data = 8'b01100110; //  **  **
-         11'h448: data = 8'b01100110; //  **  **
-         11'h449: data = 8'b01100110; //  **  **
-         11'h44a: data = 8'b01101100; //  ** **
-         11'h44b: data = 8'b11111000; // *****
-         11'h44c: data = 8'b00000000; // 
-         11'h44d: data = 8'b00000000; // 
-         11'h44e: data = 8'b00000000; // 
-         11'h44f: data = 8'b00000000; // 
-         //code x45 
-         11'h450: data = 8'b00000000; // 
-         11'h451: data = 8'b00000000; // 
-         11'h452: data = 8'b11111110; // *******
-         11'h453: data = 8'b01100110; //  **  **
-         11'h454: data = 8'b01100010; //  **   *
-         11'h455: data = 8'b01101000; //  ** *
-         11'h456: data = 8'b01111000; //  ****
-         11'h457: data = 8'b01101000; //  ** *
-         11'h458: data = 8'b01100000; //  **
-         11'h459: data = 8'b01100010; //  **   *
-         11'h45a: data = 8'b01100110; //  **  **
-         11'h45b: data = 8'b11111110; // *******
-         11'h45c: data = 8'b00000000; // 
-         11'h45d: data = 8'b00000000; // 
-         11'h45e: data = 8'b00000000; // 
-         11'h45f: data = 8'b00000000; // 
-         //code x46 
-         11'h460: data = 8'b00000000; // 
-         11'h461: data = 8'b00000000; // 
-         11'h462: data = 8'b11111110; // *******
-         11'h463: data = 8'b01100110; //  **  **
-         11'h464: data = 8'b01100010; //  **   *
-         11'h465: data = 8'b01101000; //  ** *
-         11'h466: data = 8'b01111000; //  ****
-         11'h467: data = 8'b01101000; //  ** *
-         11'h468: data = 8'b01100000; //  **
-         11'h469: data = 8'b01100000; //  **
-         11'h46a: data = 8'b01100000; //  **
-         11'h46b: data = 8'b11110000; // ****
-         11'h46c: data = 8'b00000000; // 
-         11'h46d: data = 8'b00000000; // 
-         11'h46e: data = 8'b00000000; // 
-         11'h46f: data = 8'b00000000; // 
-         //code x47 
-         11'h470: data = 8'b00000000; // 
-         11'h471: data = 8'b00000000; // 
-         11'h472: data = 8'b00111100; //   ****
-         11'h473: data = 8'b01100110; //  **  **
-         11'h474: data = 8'b11000010; // **    *
-         11'h475: data = 8'b11000000; // **
-         11'h476: data = 8'b11000000; // **
-         11'h477: data = 8'b11011110; // ** ****
-         11'h478: data = 8'b11000110; // **   **
-         11'h479: data = 8'b11000110; // **   **
-         11'h47a: data = 8'b01100110; //  **  **
-         11'h47b: data = 8'b00111010; //   *** *
-         11'h47c: data = 8'b00000000; // 
-         11'h47d: data = 8'b00000000; // 
-         11'h47e: data = 8'b00000000; // 
-         11'h47f: data = 8'b00000000; // 
-         //code x48 
-         11'h480: data = 8'b00000000; // 
-         11'h481: data = 8'b00000000; // 
-         11'h482: data = 8'b11000110; // **   **
-         11'h483: data = 8'b11000110; // **   **
-         11'h484: data = 8'b11000110; // **   **
-         11'h485: data = 8'b11000110; // **   **
-         11'h486: data = 8'b11111110; // *******
-         11'h487: data = 8'b11000110; // **   **
-         11'h488: data = 8'b11000110; // **   **
-         11'h489: data = 8'b11000110; // **   **
-         11'h48a: data = 8'b11000110; // **   **
-         11'h48b: data = 8'b11000110; // **   **
-         11'h48c: data = 8'b00000000; // 
-         11'h48d: data = 8'b00000000; // 
-         11'h48e: data = 8'b00000000; // 
-         11'h48f: data = 8'b00000000; // 
-         //code x49 
-         11'h490: data = 8'b00000000; // 
-         11'h491: data = 8'b00000000; // 
-         11'h492: data = 8'b00111100; //   ****
-         11'h493: data = 8'b00011000; //    **
-         11'h494: data = 8'b00011000; //    **
-         11'h495: data = 8'b00011000; //    **
-         11'h496: data = 8'b00011000; //    **
-         11'h497: data = 8'b00011000; //    **
-         11'h498: data = 8'b00011000; //    **
-         11'h499: data = 8'b00011000; //    **
-         11'h49a: data = 8'b00011000; //    **
-         11'h49b: data = 8'b00111100; //   ****
-         11'h49c: data = 8'b00000000; // 
-         11'h49d: data = 8'b00000000; // 
-         11'h49e: data = 8'b00000000; // 
-         11'h49f: data = 8'b00000000; // 
-         //code x4a   
-         11'h4a0: data = 8'b00000000; // 
-         11'h4a1: data = 8'b00000000; // 
-         11'h4a2: data = 8'b00011110; //    ****
-         11'h4a3: data = 8'b00001100; //     **
-         11'h4a4: data = 8'b00001100; //     **
-         11'h4a5: data = 8'b00001100; //     **
-         11'h4a6: data = 8'b00001100; //     **
-         11'h4a7: data = 8'b00001100; //     **
-         11'h4a8: data = 8'b11001100; // **  **
-         11'h4a9: data = 8'b11001100; // **  **
-         11'h4aa: data = 8'b11001100; // **  **
-         11'h4ab: data = 8'b01111000; //  ****
-         11'h4ac: data = 8'b00000000; // 
-         11'h4ad: data = 8'b00000000; // 
-         11'h4ae: data = 8'b00000000; // 
-         11'h4af: data = 8'b00000000; // 
-         //code x4b   
-         11'h4b0: data = 8'b00000000; // 
-         11'h4b1: data = 8'b00000000; // 
-         11'h4b2: data = 8'b11100110; // ***  **
-         11'h4b3: data = 8'b01100110; //  **  **
-         11'h4b4: data = 8'b01100110; //  **  **
-         11'h4b5: data = 8'b01101100; //  ** **
-         11'h4b6: data = 8'b01111000; //  ****
-         11'h4b7: data = 8'b01111000; //  ****
-         11'h4b8: data = 8'b01101100; //  ** **
-         11'h4b9: data = 8'b01100110; //  **  **
-         11'h4ba: data = 8'b01100110; //  **  **
-         11'h4bb: data = 8'b11100110; // ***  **
-         11'h4bc: data = 8'b00000000; // 
-         11'h4bd: data = 8'b00000000; // 
-         11'h4be: data = 8'b00000000; // 
-         11'h4bf: data = 8'b00000000; // 
-         //code x4c   
-         11'h4c0: data = 8'b00000000; // 
-         11'h4c1: data = 8'b00000000; // 
-         11'h4c2: data = 8'b11110000; // ****
-         11'h4c3: data = 8'b01100000; //  **
-         11'h4c4: data = 8'b01100000; //  **
-         11'h4c5: data = 8'b01100000; //  **
-         11'h4c6: data = 8'b01100000; //  **
-         11'h4c7: data = 8'b01100000; //  **
-         11'h4c8: data = 8'b01100000; //  **
-         11'h4c9: data = 8'b01100010; //  **   *
-         11'h4ca: data = 8'b01100110; //  **  **
-         11'h4cb: data = 8'b11111110; // *******
-         11'h4cc: data = 8'b00000000; // 
-         11'h4cd: data = 8'b00000000; // 
-         11'h4ce: data = 8'b00000000; // 
-         11'h4cf: data = 8'b00000000; // 
-         //code x4d   
-         11'h4d0: data = 8'b00000000; // 
-         11'h4d1: data = 8'b00000000; // 
-         11'h4d2: data = 8'b11000011; // **    **
-         11'h4d3: data = 8'b11100111; // ***  ***
-         11'h4d4: data = 8'b11111111; // ********
-         11'h4d5: data = 8'b11111111; // ********
-         11'h4d6: data = 8'b11011011; // ** ** **
-         11'h4d7: data = 8'b11000011; // **    **
-         11'h4d8: data = 8'b11000011; // **    **
-         11'h4d9: data = 8'b11000011; // **    **
-         11'h4da: data = 8'b11000011; // **    **
-         11'h4db: data = 8'b11000011; // **    **
-         11'h4dc: data = 8'b00000000; // 
-         11'h4dd: data = 8'b00000000; // 
-         11'h4de: data = 8'b00000000; // 
-         11'h4df: data = 8'b00000000; // 
-         //code x4e   
-         11'h4e0: data = 8'b00000000; // 
-         11'h4e1: data = 8'b00000000; // 
-         11'h4e2: data = 8'b11000110; // **   **
-         11'h4e3: data = 8'b11100110; // ***  **
-         11'h4e4: data = 8'b11110110; // **** **
-         11'h4e5: data = 8'b11111110; // *******
-         11'h4e6: data = 8'b11011110; // ** ****
-         11'h4e7: data = 8'b11001110; // **  ***
-         11'h4e8: data = 8'b11000110; // **   **
-         11'h4e9: data = 8'b11000110; // **   **
-         11'h4ea: data = 8'b11000110; // **   **
-         11'h4eb: data = 8'b11000110; // **   **
-         11'h4ec: data = 8'b00000000; // 
-         11'h4ed: data = 8'b00000000; // 
-         11'h4ee: data = 8'b00000000; // 
-         11'h4ef: data = 8'b00000000; // 
-         //code x4f   
-         11'h4f0: data = 8'b00000000; // 
-         11'h4f1: data = 8'b00000000; // 
-         11'h4f2: data = 8'b01111100; //  *****
-         11'h4f3: data = 8'b11000110; // **   **
-         11'h4f4: data = 8'b11000110; // **   **
-         11'h4f5: data = 8'b11000110; // **   **
-         11'h4f6: data = 8'b11000110; // **   **
-         11'h4f7: data = 8'b11000110; // **   **
-         11'h4f8: data = 8'b11000110; // **   **
-         11'h4f9: data = 8'b11000110; // **   **
-         11'h4fa: data = 8'b11000110; // **   **
-         11'h4fb: data = 8'b01111100; //  *****
-         11'h4fc: data = 8'b00000000; // 
-         11'h4fd: data = 8'b00000000; // 
-         11'h4fe: data = 8'b00000000; // 
-         11'h4ff: data = 8'b00000000; // 
-         //code x50   
-         11'h500: data = 8'b00000000; // 
-         11'h501: data = 8'b00000000; // 
-         11'h502: data = 8'b11111100; // ******
-         11'h503: data = 8'b01100110; //  **  **
-         11'h504: data = 8'b01100110; //  **  **
-         11'h505: data = 8'b01100110; //  **  **
-         11'h506: data = 8'b01111100; //  *****
-         11'h507: data = 8'b01100000; //  **
-         11'h508: data = 8'b01100000; //  **
-         11'h509: data = 8'b01100000; //  **
-         11'h50a: data = 8'b01100000; //  **
-         11'h50b: data = 8'b11110000; // ****
-         11'h50c: data = 8'b00000000; // 
-         11'h50d: data = 8'b00000000; // 
-         11'h50e: data = 8'b00000000; // 
-         11'h50f: data = 8'b00000000; // 
-         //code x510f
-         11'h510: data = 8'b00000000; // 
-         11'h511: data = 8'b00000000; // 
-         11'h512: data = 8'b01111100; //  *****
-         11'h513: data = 8'b11000110; // **   **
-         11'h514: data = 8'b11000110; // **   **
-         11'h515: data = 8'b11000110; // **   **
-         11'h516: data = 8'b11000110; // **   **
-         11'h517: data = 8'b11000110; // **   **
-         11'h518: data = 8'b11000110; // **   **
-         11'h519: data = 8'b11010110; // ** * **
-         11'h51a: data = 8'b11011110; // ** ****
-         11'h51b: data = 8'b01111100; //  *****
-         11'h51c: data = 8'b00001100; //     **
-         11'h51d: data = 8'b00001110; //     ***
-         11'h51e: data = 8'b00000000; // 
-         11'h51f: data = 8'b00000000; // 
-         //code x52   
-         11'h520: data = 8'b00000000; // 
-         11'h521: data = 8'b00000000; // 
-         11'h522: data = 8'b11111100; // ******
-         11'h523: data = 8'b01100110; //  **  **
-         11'h524: data = 8'b01100110; //  **  **
-         11'h525: data = 8'b01100110; //  **  **
-         11'h526: data = 8'b01111100; //  *****
-         11'h527: data = 8'b01101100; //  ** **
-         11'h528: data = 8'b01100110; //  **  **
-         11'h529: data = 8'b01100110; //  **  **
-         11'h52a: data = 8'b01100110; //  **  **
-         11'h52b: data = 8'b11100110; // ***  **
-         11'h52c: data = 8'b00000000; // 
-         11'h52d: data = 8'b00000000; // 
-         11'h52e: data = 8'b00000000; // 
-         11'h52f: data = 8'b00000000; // 
-         //code x53   
-         11'h530: data = 8'b00000000; // 
-         11'h531: data = 8'b00000000; // 
-         11'h532: data = 8'b01111100; //  *****
-         11'h533: data = 8'b11000110; // **   **
-         11'h534: data = 8'b11000110; // **   **
-         11'h535: data = 8'b01100000; //  **
-         11'h536: data = 8'b00111000; //   ***
-         11'h537: data = 8'b00001100; //     **
-         11'h538: data = 8'b00000110; //      **
-         11'h539: data = 8'b11000110; // **   **
-         11'h53a: data = 8'b11000110; // **   **
-         11'h53b: data = 8'b01111100; //  *****
-         11'h53c: data = 8'b00000000; // 
-         11'h53d: data = 8'b00000000; // 
-         11'h53e: data = 8'b00000000; // 
-         11'h53f: data = 8'b00000000; // 
-         //code x54   
-         11'h540: data = 8'b00000000; // 
-         11'h541: data = 8'b00000000; // 
-         11'h542: data = 8'b11111111; // ********
-         11'h543: data = 8'b11011011; // ** ** **
-         11'h544: data = 8'b10011001; // *  **  *
-         11'h545: data = 8'b00011000; //    **
-         11'h546: data = 8'b00011000; //    **
-         11'h547: data = 8'b00011000; //    **
-         11'h548: data = 8'b00011000; //    **
-         11'h549: data = 8'b00011000; //    **
-         11'h54a: data = 8'b00011000; //    **
-         11'h54b: data = 8'b00111100; //   ****
-         11'h54c: data = 8'b00000000; // 
-         11'h54d: data = 8'b00000000; // 
-         11'h54e: data = 8'b00000000; // 
-         11'h54f: data = 8'b00000000; // 
-         //code x55   
-         11'h550: data = 8'b00000000; // 
-         11'h551: data = 8'b00000000; // 
-         11'h552: data = 8'b11000110; // **   **
-         11'h553: data = 8'b11000110; // **   **
-         11'h554: data = 8'b11000110; // **   **
-         11'h555: data = 8'b11000110; // **   **
-         11'h556: data = 8'b11000110; // **   **
-         11'h557: data = 8'b11000110; // **   **
-         11'h558: data = 8'b11000110; // **   **
-         11'h559: data = 8'b11000110; // **   **
-         11'h55a: data = 8'b11000110; // **   **
-         11'h55b: data = 8'b01111100; //  *****
-         11'h55c: data = 8'b00000000; // 
-         11'h55d: data = 8'b00000000; // 
-         11'h55e: data = 8'b00000000; // 
-         11'h55f: data = 8'b00000000; // 
-         //code x56   
-         11'h560: data = 8'b00000000; // 
-         11'h561: data = 8'b00000000; // 
-         11'h562: data = 8'b11000011; // **    **
-         11'h563: data = 8'b11000011; // **    **
-         11'h564: data = 8'b11000011; // **    **
-         11'h565: data = 8'b11000011; // **    **
-         11'h566: data = 8'b11000011; // **    **
-         11'h567: data = 8'b11000011; // **    **
-         11'h568: data = 8'b11000011; // **    **
-         11'h569: data = 8'b01100110; //  **  **
-         11'h56a: data = 8'b00111100; //   ****
-         11'h56b: data = 8'b00011000; //    **
-         11'h56c: data = 8'b00000000; // 
-         11'h56d: data = 8'b00000000; // 
-         11'h56e: data = 8'b00000000; // 
-         11'h56f: data = 8'b00000000; // 
-         //code x57   
-         11'h570: data = 8'b00000000; // 
-         11'h571: data = 8'b00000000; // 
-         11'h572: data = 8'b11000011; // **    **
-         11'h573: data = 8'b11000011; // **    **
-         11'h574: data = 8'b11000011; // **    **
-         11'h575: data = 8'b11000011; // **    **
-         11'h576: data = 8'b11000011; // **    **
-         11'h577: data = 8'b11011011; // ** ** **
-         11'h578: data = 8'b11011011; // ** ** **
-         11'h579: data = 8'b11111111; // ********
-         11'h57a: data = 8'b01100110; //  **  **
-         11'h57b: data = 8'b01100110; //  **  **
-         11'h57c: data = 8'b00000000; // 
-         11'h57d: data = 8'b00000000; // 
-         11'h57e: data = 8'b00000000; // 
-         11'h57f: data = 8'b00000000; // 
-         //code x58   
-         11'h580: data = 8'b00000000; // 
-         11'h581: data = 8'b00000000; // 
-         11'h582: data = 8'b11000011; // **    **
-         11'h583: data = 8'b11000011; // **    **
-         11'h584: data = 8'b01100110; //  **  **
-         11'h585: data = 8'b00111100; //   ****
-         11'h586: data = 8'b00011000; //    **
-         11'h587: data = 8'b00011000; //    **
-         11'h588: data = 8'b00111100; //   ****
-         11'h589: data = 8'b01100110; //  **  **
-         11'h58a: data = 8'b11000011; // **    **
-         11'h58b: data = 8'b11000011; // **    **
-         11'h58c: data = 8'b00000000; // 
-         11'h58d: data = 8'b00000000; // 
-         11'h58e: data = 8'b00000000; // 
-         11'h58f: data = 8'b00000000; // 
-         //code x59   
-         11'h590: data = 8'b00000000; // 
-         11'h591: data = 8'b00000000; // 
-         11'h592: data = 8'b11000011; // **    **
-         11'h593: data = 8'b11000011; // **    **
-         11'h594: data = 8'b11000011; // **    **
-         11'h595: data = 8'b01100110; //  **  **
-         11'h596: data = 8'b00111100; //   ****
-         11'h597: data = 8'b00011000; //    **
-         11'h598: data = 8'b00011000; //    **
-         11'h599: data = 8'b00011000; //    **
-         11'h59a: data = 8'b00011000; //    **
-         11'h59b: data = 8'b00111100; //   ****
-         11'h59c: data = 8'b00000000; // 
-         11'h59d: data = 8'b00000000; // 
-         11'h59e: data = 8'b00000000; // 
-         11'h59f: data = 8'b00000000; // 
-         //code x5a   
-         11'h5a0: data = 8'b00000000; // 
-         11'h5a1: data = 8'b00000000; // 
-         11'h5a2: data = 8'b11111111; // ********
-         11'h5a3: data = 8'b11000011; // **    **
-         11'h5a4: data = 8'b10000110; // *    **
-         11'h5a5: data = 8'b00001100; //     **
-         11'h5a6: data = 8'b00011000; //    **
-         11'h5a7: data = 8'b00110000; //   **
-         11'h5a8: data = 8'b01100000; //  **
-         11'h5a9: data = 8'b11000001; // **     *
-         11'h5aa: data = 8'b11000011; // **    **
-         11'h5ab: data = 8'b11111111; // ********
-         11'h5ac: data = 8'b00000000; // 
-         11'h5ad: data = 8'b00000000; // 
-         11'h5ae: data = 8'b00000000; // 
-         11'h5af: data = 8'b00000000; // 
-         //code x5b   
-         11'h5b0: data = 8'b00000000; // 
-         11'h5b1: data = 8'b00000000; // 
-         11'h5b2: data = 8'b00111100; //   ****
-         11'h5b3: data = 8'b00110000; //   **
-         11'h5b4: data = 8'b00110000; //   **
-         11'h5b5: data = 8'b00110000; //   **
-         11'h5b6: data = 8'b00110000; //   **
-         11'h5b7: data = 8'b00110000; //   **
-         11'h5b8: data = 8'b00110000; //   **
-         11'h5b9: data = 8'b00110000; //   **
-         11'h5ba: data = 8'b00110000; //   **
-         11'h5bb: data = 8'b00111100; //   ****
-         11'h5bc: data = 8'b00000000; // 
-         11'h5bd: data = 8'b00000000; // 
-         11'h5be: data = 8'b00000000; // 
-         11'h5bf: data = 8'b00000000; // 
-         //code x5c   
-         11'h5c0: data = 8'b00000000; // 
-         11'h5c1: data = 8'b00000000; // 
-         11'h5c2: data = 8'b00000000; // 
-         11'h5c3: data = 8'b10000000; // *
-         11'h5c4: data = 8'b11000000; // **
-         11'h5c5: data = 8'b11100000; // ***
-         11'h5c6: data = 8'b01110000; //  ***
-         11'h5c7: data = 8'b00111000; //   ***
-         11'h5c8: data = 8'b00011100; //    ***
-         11'h5c9: data = 8'b00001110; //     ***
-         11'h5ca: data = 8'b00000110; //      **
-         11'h5cb: data = 8'b00000010; //       *
-         11'h5cc: data = 8'b00000000; // 
-         11'h5cd: data = 8'b00000000; // 
-         11'h5ce: data = 8'b00000000; // 
-         11'h5cf: data = 8'b00000000; // 
-         //code x5d   
-         11'h5d0: data = 8'b00000000; // 
-         11'h5d1: data = 8'b00000000; // 
-         11'h5d2: data = 8'b00111100; //   ****
-         11'h5d3: data = 8'b00001100; //     **
-         11'h5d4: data = 8'b00001100; //     **
-         11'h5d5: data = 8'b00001100; //     **
-         11'h5d6: data = 8'b00001100; //     **
-         11'h5d7: data = 8'b00001100; //     **
-         11'h5d8: data = 8'b00001100; //     **
-         11'h5d9: data = 8'b00001100; //     **
-         11'h5da: data = 8'b00001100; //     **
-         11'h5db: data = 8'b00111100; //   ****
-         11'h5dc: data = 8'b00000000; // 
-         11'h5dd: data = 8'b00000000; // 
-         11'h5de: data = 8'b00000000; // 
-         11'h5df: data = 8'b00000000; // 
-         //code x5e   
-         11'h5e0: data = 8'b00010000; //    *
-         11'h5e1: data = 8'b00111000; //   ***
-         11'h5e2: data = 8'b01101100; //  ** **
-         11'h5e3: data = 8'b11000110; // **   **
-         11'h5e4: data = 8'b00000000; // 
-         11'h5e5: data = 8'b00000000; // 
-         11'h5e6: data = 8'b00000000; // 
-         11'h5e7: data = 8'b00000000; // 
-         11'h5e8: data = 8'b00000000; // 
-         11'h5e9: data = 8'b00000000; // 
-         11'h5ea: data = 8'b00000000; // 
-         11'h5eb: data = 8'b00000000; // 
-         11'h5ec: data = 8'b00000000; // 
-         11'h5ed: data = 8'b00000000; // 
-         11'h5ee: data = 8'b00000000; // 
-         11'h5ef: data = 8'b00000000; // 
-         //code x5f   
-         11'h5f0: data = 8'b00000000; // 
-         11'h5f1: data = 8'b00000000; // 
-         11'h5f2: data = 8'b00000000; // 
-         11'h5f3: data = 8'b00000000; // 
-         11'h5f4: data = 8'b00000000; // 
-         11'h5f5: data = 8'b00000000; // 
-         11'h5f6: data = 8'b00000000; // 
-         11'h5f7: data = 8'b00000000; // 
-         11'h5f8: data = 8'b00000000; // 
-         11'h5f9: data = 8'b00000000; // 
-         11'h5fa: data = 8'b00000000; // 
-         11'h5fb: data = 8'b00000000; // 
-         11'h5fc: data = 8'b00000000; // 
-         11'h5fd: data = 8'b11111111; // ********
-         11'h5fe: data = 8'b00000000; // 
-         11'h5ff: data = 8'b00000000; // 
-         //code x60   
-         11'h600: data = 8'b00110000; //   **
-         11'h601: data = 8'b00110000; //   **
-         11'h602: data = 8'b00011000; //    **
-         11'h603: data = 8'b00000000; // 
-         11'h604: data = 8'b00000000; // 
-         11'h605: data = 8'b00000000; // 
-         11'h606: data = 8'b00000000; // 
-         11'h607: data = 8'b00000000; // 
-         11'h608: data = 8'b00000000; // 
-         11'h609: data = 8'b00000000; // 
-         11'h60a: data = 8'b00000000; // 
-         11'h60b: data = 8'b00000000; // 
-         11'h60c: data = 8'b00000000; // 
-         11'h60d: data = 8'b00000000; // 
-         11'h60e: data = 8'b00000000; // 
-         11'h60f: data = 8'b00000000; // 
-         //code x61   
-         11'h610: data = 8'b00000000; // 
-         11'h611: data = 8'b00000000; // 
-         11'h612: data = 8'b00000000; // 
-         11'h613: data = 8'b00000000; // 
-         11'h614: data = 8'b00000000; // 
-         11'h615: data = 8'b01111000; //  ****
-         11'h616: data = 8'b00001100; //     **
-         11'h617: data = 8'b01111100; //  *****
-         11'h618: data = 8'b11001100; // **  **
-         11'h619: data = 8'b11001100; // **  **
-         11'h61a: data = 8'b11001100; // **  **
-         11'h61b: data = 8'b01110110; //  *** **
-         11'h61c: data = 8'b00000000; // 
-         11'h61d: data = 8'b00000000; // 
-         11'h61e: data = 8'b00000000; // 
-         11'h61f: data = 8'b00000000; // 
-         //code x62   
-         11'h620: data = 8'b00000000; // 
-         11'h621: data = 8'b00000000; // 
-         11'h622: data = 8'b11100000; //  ***
-         11'h623: data = 8'b01100000; //   **
-         11'h624: data = 8'b01100000; //   **
-         11'h625: data = 8'b01111000; //   ****
-         11'h626: data = 8'b01101100; //   ** **
-         11'h627: data = 8'b01100110; //   **  **
-         11'h628: data = 8'b01100110; //   **  **
-         11'h629: data = 8'b01100110; //   **  **
-         11'h62a: data = 8'b01100110; //   **  **
-         11'h62b: data = 8'b01111100; //   *****
-         11'h62c: data = 8'b00000000; // 
-         11'h62d: data = 8'b00000000; // 
-         11'h62e: data = 8'b00000000; // 
-         11'h62f: data = 8'b00000000; // 
-         //code x63   
-         11'h630: data = 8'b00000000; // 
-         11'h631: data = 8'b00000000; // 
-         11'h632: data = 8'b00000000; // 
-         11'h633: data = 8'b00000000; // 
-         11'h634: data = 8'b00000000; // 
-         11'h635: data = 8'b01111100; //  *****
-         11'h636: data = 8'b11000110; // **   **
-         11'h637: data = 8'b11000000; // **
-         11'h638: data = 8'b11000000; // **
-         11'h639: data = 8'b11000000; // **
-         11'h63a: data = 8'b11000110; // **   **
-         11'h63b: data = 8'b01111100; //  *****
-         11'h63c: data = 8'b00000000; // 
-         11'h63d: data = 8'b00000000; // 
-         11'h63e: data = 8'b00000000; // 
-         11'h63f: data = 8'b00000000; // 
-         //code x64   
-         11'h640: data = 8'b00000000; // 
-         11'h641: data = 8'b00000000; // 
-         11'h642: data = 8'b00011100; //    ***
-         11'h643: data = 8'b00001100; //     **
-         11'h644: data = 8'b00001100; //     **
-         11'h645: data = 8'b00111100; //   ****
-         11'h646: data = 8'b01101100; //  ** **
-         11'h647: data = 8'b11001100; // **  **
-         11'h648: data = 8'b11001100; // **  **
-         11'h649: data = 8'b11001100; // **  **
-         11'h64a: data = 8'b11001100; // **  **
-         11'h64b: data = 8'b01110110; //  *** **
-         11'h64c: data = 8'b00000000; // 
-         11'h64d: data = 8'b00000000; // 
-         11'h64e: data = 8'b00000000; // 
-         11'h64f: data = 8'b00000000; // 
-         //code x65   
-         11'h650: data = 8'b00000000; // 
-         11'h651: data = 8'b00000000; // 
-         11'h652: data = 8'b00000000; // 
-         11'h653: data = 8'b00000000; // 
-         11'h654: data = 8'b00000000; // 
-         11'h655: data = 8'b01111100; //  *****
-         11'h656: data = 8'b11000110; // **   **
-         11'h657: data = 8'b11111110; // *******
-         11'h658: data = 8'b11000000; // **
-         11'h659: data = 8'b11000000; // **
-         11'h65a: data = 8'b11000110; // **   **
-         11'h65b: data = 8'b01111100; //  *****
-         11'h65c: data = 8'b00000000; // 
-         11'h65d: data = 8'b00000000; // 
-         11'h65e: data = 8'b00000000; // 
-         11'h65f: data = 8'b00000000; // 
-         //code x66   
-         11'h660: data = 8'b00000000; // 
-         11'h661: data = 8'b00000000; // 
-         11'h662: data = 8'b00111000; //   ***
-         11'h663: data = 8'b01101100; //  ** **
-         11'h664: data = 8'b01100100; //  **  *
-         11'h665: data = 8'b01100000; //  **
-         11'h666: data = 8'b11110000; // ****
-         11'h667: data = 8'b01100000; //  **
-         11'h668: data = 8'b01100000; //  **
-         11'h669: data = 8'b01100000; //  **
-         11'h66a: data = 8'b01100000; //  **
-         11'h66b: data = 8'b11110000; // ****
-         11'h66c: data = 8'b00000000; // 
-         11'h66d: data = 8'b00000000; // 
-         11'h66e: data = 8'b00000000; // 
-         11'h66f: data = 8'b00000000; // 
-         //code x67   
-         11'h670: data = 8'b00000000; // 
-         11'h671: data = 8'b00000000; // 
-         11'h672: data = 8'b00000000; // 
-         11'h673: data = 8'b00000000; // 
-         11'h674: data = 8'b00000000; // 
-         11'h675: data = 8'b01110110; //  *** **
-         11'h676: data = 8'b11001100; // **  **
-         11'h677: data = 8'b11001100; // **  **
-         11'h678: data = 8'b11001100; // **  **
-         11'h679: data = 8'b11001100; // **  **
-         11'h67a: data = 8'b11001100; // **  **
-         11'h67b: data = 8'b01111100; //  *****
-         11'h67c: data = 8'b00001100; //     **
-         11'h67d: data = 8'b11001100; // **  **
-         11'h67e: data = 8'b01111000; //  ****
-         11'h67f: data = 8'b00000000; // 
-         //code x68   
-         11'h680: data = 8'b00000000; // 
-         11'h681: data = 8'b00000000; // 
-         11'h682: data = 8'b11100000; // ***
-         11'h683: data = 8'b01100000; //  **
-         11'h684: data = 8'b01100000; //  **
-         11'h685: data = 8'b01101100; //  ** **
-         11'h686: data = 8'b01110110; //  *** **
-         11'h687: data = 8'b01100110; //  **  **
-         11'h688: data = 8'b01100110; //  **  **
-         11'h689: data = 8'b01100110; //  **  **
-         11'h68a: data = 8'b01100110; //  **  **
-         11'h68b: data = 8'b11100110; // ***  **
-         11'h68c: data = 8'b00000000; // 
-         11'h68d: data = 8'b00000000; // 
-         11'h68e: data = 8'b00000000; // 
-         11'h68f: data = 8'b00000000; // 
-         //code x69   
-         11'h690: data = 8'b00000000; // 
-         11'h691: data = 8'b00000000; // 
-         11'h692: data = 8'b00011000; //    **
-         11'h693: data = 8'b00011000; //    **
-         11'h694: data = 8'b00000000; // 
-         11'h695: data = 8'b00111000; //   ***
-         11'h696: data = 8'b00011000; //    **
-         11'h697: data = 8'b00011000; //    **
-         11'h698: data = 8'b00011000; //    **
-         11'h699: data = 8'b00011000; //    **
-         11'h69a: data = 8'b00011000; //    **
-         11'h69b: data = 8'b00111100; //   ****
-         11'h69c: data = 8'b00000000; // 
-         11'h69d: data = 8'b00000000; // 
-         11'h69e: data = 8'b00000000; // 
-         11'h69f: data = 8'b00000000; // 
-         //code x6a   
-         11'h6a0: data = 8'b00000000; // 
-         11'h6a1: data = 8'b00000000; // 
-         11'h6a2: data = 8'b00000110; //      **
-         11'h6a3: data = 8'b00000110; //      **
-         11'h6a4: data = 8'b00000000; // 
-         11'h6a5: data = 8'b00001110; //     ***
-         11'h6a6: data = 8'b00000110; //      **
-         11'h6a7: data = 8'b00000110; //      **
-         11'h6a8: data = 8'b00000110; //      **
-         11'h6a9: data = 8'b00000110; //      **
-         11'h6aa: data = 8'b00000110; //      **
-         11'h6ab: data = 8'b00000110; //      **
-         11'h6ac: data = 8'b01100110; //  **  **
-         11'h6ad: data = 8'b01100110; //  **  **
-         11'h6ae: data = 8'b00111100; //   ****
-         11'h6af: data = 8'b00000000; // 
-         //code x6b   
-         11'h6b0: data = 8'b00000000; // 
-         11'h6b1: data = 8'b00000000; // 
-         11'h6b2: data = 8'b11100000; // ***
-         11'h6b3: data = 8'b01100000; //  **
-         11'h6b4: data = 8'b01100000; //  **
-         11'h6b5: data = 8'b01100110; //  **  **
-         11'h6b6: data = 8'b01101100; //  ** **
-         11'h6b7: data = 8'b01111000; //  ****
-         11'h6b8: data = 8'b01111000; //  ****
-         11'h6b9: data = 8'b01101100; //  ** **
-         11'h6ba: data = 8'b01100110; //  **  **
-         11'h6bb: data = 8'b11100110; // ***  **
-         11'h6bc: data = 8'b00000000; // 
-         11'h6bd: data = 8'b00000000; // 
-         11'h6be: data = 8'b00000000; // 
-         11'h6bf: data = 8'b00000000; // 
-         //code x6c   
-         11'h6c0: data = 8'b00000000; // 
-         11'h6c1: data = 8'b00000000; // 
-         11'h6c2: data = 8'b00111000; //   ***
-         11'h6c3: data = 8'b00011000; //    **
-         11'h6c4: data = 8'b00011000; //    **
-         11'h6c5: data = 8'b00011000; //    **
-         11'h6c6: data = 8'b00011000; //    **
-         11'h6c7: data = 8'b00011000; //    **
-         11'h6c8: data = 8'b00011000; //    **
-         11'h6c9: data = 8'b00011000; //    **
-         11'h6ca: data = 8'b00011000; //    **
-         11'h6cb: data = 8'b00111100; //   ****
-         11'h6cc: data = 8'b00000000; // 
-         11'h6cd: data = 8'b00000000; // 
-         11'h6ce: data = 8'b00000000; // 
-         11'h6cf: data = 8'b00000000; // 
-         //code x6d   
-         11'h6d0: data = 8'b00000000; // 
-         11'h6d1: data = 8'b00000000; // 
-         11'h6d2: data = 8'b00000000; // 
-         11'h6d3: data = 8'b00000000; // 
-         11'h6d4: data = 8'b00000000; // 
-         11'h6d5: data = 8'b11100110; // ***  **
-         11'h6d6: data = 8'b11111111; // ********
-         11'h6d7: data = 8'b11011011; // ** ** **
-         11'h6d8: data = 8'b11011011; // ** ** **
-         11'h6d9: data = 8'b11011011; // ** ** **
-         11'h6da: data = 8'b11011011; // ** ** **
-         11'h6db: data = 8'b11011011; // ** ** **
-         11'h6dc: data = 8'b00000000; // 
-         11'h6dd: data = 8'b00000000; // 
-         11'h6de: data = 8'b00000000; // 
-         11'h6df: data = 8'b00000000; // 
-         //code x6e   
-         11'h6e0: data = 8'b00000000; // 
-         11'h6e1: data = 8'b00000000; // 
-         11'h6e2: data = 8'b00000000; // 
-         11'h6e3: data = 8'b00000000; // 
-         11'h6e4: data = 8'b00000000; // 
-         11'h6e5: data = 8'b11011100; // ** ***
-         11'h6e6: data = 8'b01100110; //  **  **
-         11'h6e7: data = 8'b01100110; //  **  **
-         11'h6e8: data = 8'b01100110; //  **  **
-         11'h6e9: data = 8'b01100110; //  **  **
-         11'h6ea: data = 8'b01100110; //  **  **
-         11'h6eb: data = 8'b01100110; //  **  **
-         11'h6ec: data = 8'b00000000; // 
-         11'h6ed: data = 8'b00000000; // 
-         11'h6ee: data = 8'b00000000; // 
-         11'h6ef: data = 8'b00000000; // 
-         //code x6f   
-         11'h6f0: data = 8'b00000000; // 
-         11'h6f1: data = 8'b00000000; // 
-         11'h6f2: data = 8'b00000000; // 
-         11'h6f3: data = 8'b00000000; // 
-         11'h6f4: data = 8'b00000000; // 
-         11'h6f5: data = 8'b01111100; //  *****
-         11'h6f6: data = 8'b11000110; // **   **
-         11'h6f7: data = 8'b11000110; // **   **
-         11'h6f8: data = 8'b11000110; // **   **
-         11'h6f9: data = 8'b11000110; // **   **
-         11'h6fa: data = 8'b11000110; // **   **
-         11'h6fb: data = 8'b01111100; //  *****
-         11'h6fc: data = 8'b00000000; // 
-         11'h6fd: data = 8'b00000000; // 
-         11'h6fe: data = 8'b00000000; // 
-         11'h6ff: data = 8'b00000000; // 
-         //code x70   
-         11'h700: data = 8'b00000000; // 
-         11'h701: data = 8'b00000000; // 
-         11'h702: data = 8'b00000000; // 
-         11'h703: data = 8'b00000000; // 
-         11'h704: data = 8'b00000000; // 
-         11'h705: data = 8'b11011100; // ** ***
-         11'h706: data = 8'b01100110; //  **  **
-         11'h707: data = 8'b01100110; //  **  **
-         11'h708: data = 8'b01100110; //  **  **
-         11'h709: data = 8'b01100110; //  **  **
-         11'h70a: data = 8'b01100110; //  **  **
-         11'h70b: data = 8'b01111100; //  *****
-         11'h70c: data = 8'b01100000; //  **
-         11'h70d: data = 8'b01100000; //  **
-         11'h70e: data = 8'b11110000; // ****
-         11'h70f: data = 8'b00000000; // 
-         //code x71   
-         11'h710: data = 8'b00000000; // 
-         11'h711: data = 8'b00000000; // 
-         11'h712: data = 8'b00000000; // 
-         11'h713: data = 8'b00000000; // 
-         11'h714: data = 8'b00000000; // 
-         11'h715: data = 8'b01110110; //  *** **
-         11'h716: data = 8'b11001100; // **  **
-         11'h717: data = 8'b11001100; // **  **
-         11'h718: data = 8'b11001100; // **  **
-         11'h719: data = 8'b11001100; // **  **
-         11'h71a: data = 8'b11001100; // **  **
-         11'h71b: data = 8'b01111100; //  *****
-         11'h71c: data = 8'b00001100; //     **
-         11'h71d: data = 8'b00001100; //     **
-         11'h71e: data = 8'b00011110; //    ****
-         11'h71f: data = 8'b00000000; // 
-         //code x72   
-         11'h720: data = 8'b00000000; // 
-         11'h721: data = 8'b00000000; // 
-         11'h722: data = 8'b00000000; // 
-         11'h723: data = 8'b00000000; // 
-         11'h724: data = 8'b00000000; // 
-         11'h725: data = 8'b11011100; // ** ***
-         11'h726: data = 8'b01110110; //  *** **
-         11'h727: data = 8'b01100110; //  **  **
-         11'h728: data = 8'b01100000; //  **
-         11'h729: data = 8'b01100000; //  **
-         11'h72a: data = 8'b01100000; //  **
-         11'h72b: data = 8'b11110000; // ****
-         11'h72c: data = 8'b00000000; // 
-         11'h72d: data = 8'b00000000; // 
-         11'h72e: data = 8'b00000000; // 
-         11'h72f: data = 8'b00000000; // 
-         //code x73   
-         11'h730: data = 8'b00000000; // 
-         11'h731: data = 8'b00000000; // 
-         11'h732: data = 8'b00000000; // 
-         11'h733: data = 8'b00000000; // 
-         11'h734: data = 8'b00000000; // 
-         11'h735: data = 8'b01111100; //  *****
-         11'h736: data = 8'b11000110; // **   **
-         11'h737: data = 8'b01100000; //  **
-         11'h738: data = 8'b00111000; //   ***
-         11'h739: data = 8'b00001100; //     **
-         11'h73a: data = 8'b11000110; // **   **
-         11'h73b: data = 8'b01111100; //  *****
-         11'h73c: data = 8'b00000000; // 
-         11'h73d: data = 8'b00000000; // 
-         11'h73e: data = 8'b00000000; // 
-         11'h73f: data = 8'b00000000; // 
-         //code x74   
-         11'h740: data = 8'b00000000; // 
-         11'h741: data = 8'b00000000; // 
-         11'h742: data = 8'b00010000; //    *
-         11'h743: data = 8'b00110000; //   **
-         11'h744: data = 8'b00110000; //   **
-         11'h745: data = 8'b11111100; // ******
-         11'h746: data = 8'b00110000; //   **
-         11'h747: data = 8'b00110000; //   **
-         11'h748: data = 8'b00110000; //   **
-         11'h749: data = 8'b00110000; //   **
-         11'h74a: data = 8'b00110110; //   ** **
-         11'h74b: data = 8'b00011100; //    ***
-         11'h74c: data = 8'b00000000; // 
-         11'h74d: data = 8'b00000000; // 
-         11'h74e: data = 8'b00000000; // 
-         11'h74f: data = 8'b00000000; // 
-         //code x75   
-         11'h750: data = 8'b00000000; // 
-         11'h751: data = 8'b00000000; // 
-         11'h752: data = 8'b00000000; // 
-         11'h753: data = 8'b00000000; // 
-         11'h754: data = 8'b00000000; // 
-         11'h755: data = 8'b11001100; // **  **
-         11'h756: data = 8'b11001100; // **  **
-         11'h757: data = 8'b11001100; // **  **
-         11'h758: data = 8'b11001100; // **  **
-         11'h759: data = 8'b11001100; // **  **
-         11'h75a: data = 8'b11001100; // **  **
-         11'h75b: data = 8'b01110110; //  *** **
-         11'h75c: data = 8'b00000000; // 
-         11'h75d: data = 8'b00000000; // 
-         11'h75e: data = 8'b00000000; // 
-         11'h75f: data = 8'b00000000; // 
-         //code x76   
-         11'h760: data = 8'b00000000; // 
-         11'h761: data = 8'b00000000; // 
-         11'h762: data = 8'b00000000; // 
-         11'h763: data = 8'b00000000; // 
-         11'h764: data = 8'b00000000; // 
-         11'h765: data = 8'b11000011; // **    **
-         11'h766: data = 8'b11000011; // **    **
-         11'h767: data = 8'b11000011; // **    **
-         11'h768: data = 8'b11000011; // **    **
-         11'h769: data = 8'b01100110; //  **  **
-         11'h76a: data = 8'b00111100; //   ****
-         11'h76b: data = 8'b00011000; //    **
-         11'h76c: data = 8'b00000000; // 
-         11'h76d: data = 8'b00000000; // 
-         11'h76e: data = 8'b00000000; // 
-         11'h76f: data = 8'b00000000; // 
-         //code x77   
-         11'h770: data = 8'b00000000; // 
-         11'h771: data = 8'b00000000; // 
-         11'h772: data = 8'b00000000; // 
-         11'h773: data = 8'b00000000; // 
-         11'h774: data = 8'b00000000; // 
-         11'h775: data = 8'b11000011; // **    **
-         11'h776: data = 8'b11000011; // **    **
-         11'h777: data = 8'b11000011; // **    **
-         11'h778: data = 8'b11011011; // ** ** **
-         11'h779: data = 8'b11011011; // ** ** **
-         11'h77a: data = 8'b11111111; // ********
-         11'h77b: data = 8'b01100110; //  **  **
-         11'h77c: data = 8'b00000000; // 
-         11'h77d: data = 8'b00000000; // 
-         11'h77e: data = 8'b00000000; // 
-         11'h77f: data = 8'b00000000; // 
-         //code x78   
-         11'h780: data = 8'b00000000; // 
-         11'h781: data = 8'b00000000; // 
-         11'h782: data = 8'b00000000; // 
-         11'h783: data = 8'b00000000; // 
-         11'h784: data = 8'b00000000; // 
-         11'h785: data = 8'b11000011; // **    **
-         11'h786: data = 8'b01100110; //  **  **
-         11'h787: data = 8'b00111100; //   ****
-         11'h788: data = 8'b00011000; //    **
-         11'h789: data = 8'b00111100; //   ****
-         11'h78a: data = 8'b01100110; //  **  **
-         11'h78b: data = 8'b11000011; // **    **
-         11'h78c: data = 8'b00000000; // 
-         11'h78d: data = 8'b00000000; // 
-         11'h78e: data = 8'b00000000; // 
-         11'h78f: data = 8'b00000000; // 
-         //code x79   
-         11'h790: data = 8'b00000000; // 
-         11'h791: data = 8'b00000000; // 
-         11'h792: data = 8'b00000000; // 
-         11'h793: data = 8'b00000000; // 
-         11'h794: data = 8'b00000000; // 
-         11'h795: data = 8'b11000110; // **   **
-         11'h796: data = 8'b11000110; // **   **
-         11'h797: data = 8'b11000110; // **   **
-         11'h798: data = 8'b11000110; // **   **
-         11'h799: data = 8'b11000110; // **   **
-         11'h79a: data = 8'b11000110; // **   **
-         11'h79b: data = 8'b01111110; //  ******
-         11'h79c: data = 8'b00000110; //      **
-         11'h79d: data = 8'b00001100; //     **
-         11'h79e: data = 8'b11111000; // *****
-         11'h79f: data = 8'b00000000; // 
-         //code x7a   
-         11'h7a0: data = 8'b00000000; // 
-         11'h7a1: data = 8'b00000000; // 
-         11'h7a2: data = 8'b00000000; // 
-         11'h7a3: data = 8'b00000000; // 
-         11'h7a4: data = 8'b00000000; // 
-         11'h7a5: data = 8'b11111110; // *******
-         11'h7a6: data = 8'b11001100; // **  **
-         11'h7a7: data = 8'b00011000; //    **
-         11'h7a8: data = 8'b00110000; //   **
-         11'h7a9: data = 8'b01100000; //  **
-         11'h7aa: data = 8'b11000110; // **   **
-         11'h7ab: data = 8'b11111110; // *******
-         11'h7ac: data = 8'b00000000; // 
-         11'h7ad: data = 8'b00000000; // 
-         11'h7ae: data = 8'b00000000; // 
-         11'h7af: data = 8'b00000000; // 
-         //code x7b   
-         11'h7b0: data = 8'b00000000; // 
-         11'h7b1: data = 8'b00000000; // 
-         11'h7b2: data = 8'b00001110; //     ***
-         11'h7b3: data = 8'b00011000; //    **
-         11'h7b4: data = 8'b00011000; //    **
-         11'h7b5: data = 8'b00011000; //    **
-         11'h7b6: data = 8'b01110000; //  ***
-         11'h7b7: data = 8'b00011000; //    **
-         11'h7b8: data = 8'b00011000; //    **
-         11'h7b9: data = 8'b00011000; //    **
-         11'h7ba: data = 8'b00011000; //    **
-         11'h7bb: data = 8'b00001110; //     ***
-         11'h7bc: data = 8'b00000000; // 
-         11'h7bd: data = 8'b00000000; // 
-         11'h7be: data = 8'b00000000; // 
-         11'h7bf: data = 8'b00000000; // 
-         //code x7c   
-         11'h7c0: data = 8'b00000000; // 
-         11'h7c1: data = 8'b00000000; // 
-         11'h7c2: data = 8'b00011000; //    **
-         11'h7c3: data = 8'b00011000; //    **
-         11'h7c4: data = 8'b00011000; //    **
-         11'h7c5: data = 8'b00011000; //    **
-         11'h7c6: data = 8'b00000000; // 
-         11'h7c7: data = 8'b00011000; //    **
-         11'h7c8: data = 8'b00011000; //    **
-         11'h7c9: data = 8'b00011000; //    **
-         11'h7ca: data = 8'b00011000; //    **
-         11'h7cb: data = 8'b00011000; //    **
-         11'h7cc: data = 8'b00000000; // 
-         11'h7cd: data = 8'b00000000; // 
-         11'h7ce: data = 8'b00000000; // 
-         11'h7cf: data = 8'b00000000; // 
-         //code x7d   
-         11'h7d0: data = 8'b00000000; // 
-         11'h7d1: data = 8'b00000000; // 
-         11'h7d2: data = 8'b01110000; //  ***
-         11'h7d3: data = 8'b00011000; //    **
-         11'h7d4: data = 8'b00011000; //    **
-         11'h7d5: data = 8'b00011000; //    **
-         11'h7d6: data = 8'b00001110; //     ***
-         11'h7d7: data = 8'b00011000; //    **
-         11'h7d8: data = 8'b00011000; //    **
-         11'h7d9: data = 8'b00011000; //    **
-         11'h7da: data = 8'b00011000; //    **
-         11'h7db: data = 8'b01110000; //  ***
-         11'h7dc: data = 8'b00000000; // 
-         11'h7dd: data = 8'b00000000; // 
-         11'h7de: data = 8'b00000000; // 
-         11'h7df: data = 8'b00000000; // 
-         //code x7e   
-         11'h7e0: data = 8'b00000000; // 
-         11'h7e1: data = 8'b00000000; // 
-         11'h7e2: data = 8'b01110110; //  *** **
-         11'h7e3: data = 8'b11011100; // ** ***
-         11'h7e4: data = 8'b00000000; // 
-         11'h7e5: data = 8'b00000000; // 
-         11'h7e6: data = 8'b00000000; // 
-         11'h7e7: data = 8'b00000000; // 
-         11'h7e8: data = 8'b00000000; // 
-         11'h7e9: data = 8'b00000000; // 
-         11'h7ea: data = 8'b00000000; // 
-         11'h7eb: data = 8'b00000000; // 
-         11'h7ec: data = 8'b00000000; // 
-         11'h7ed: data = 8'b00000000; // 
-         11'h7ee: data = 8'b00000000; // 
-         11'h7ef: data = 8'b00000000; // 
-         //code x7f   
-         11'h7f0: data = 8'b00000000; // 
-         11'h7f1: data = 8'b00000000; // 
-         11'h7f2: data = 8'b00000000; // 
-         11'h7f3: data = 8'b00000000; // 
-         11'h7f4: data = 8'b00010000; //    *
-         11'h7f5: data = 8'b00111000; //   ***
-         11'h7f6: data = 8'b01101100; //  ** **
-         11'h7f7: data = 8'b11000110; // **   **
-         11'h7f8: data = 8'b11000110; // **   **
-         11'h7f9: data = 8'b11000110; // **   **
-         11'h7fa: data = 8'b11111110; // *******
-         11'h7fb: data = 8'b00000000; // 
-         11'h7fc: data = 8'b00000000; // 
-         11'h7fd: data = 8'b00000000; // 
-         11'h7fe: data = 8'b00000000; // 
-         11'h7ff: data = 8'b00000000; // 	 
-   endcase  
-   	       
-endmodule
\ No newline at end of file
diff --git a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/pong_graph.v b/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/pong_graph.v
deleted file mode 100644
index 55f27a8..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/pong_graph.v
+++ /dev/null
@@ -1,249 +0,0 @@
-`timescale 1ns / 1ps
-
-module pong_graph(

-		input wire clk, reset,

-		input wire [1:0] btn1,

-		input wire [1:0] btn2,

-		input wire [9:0] pix_x, pix_y,

-		input wire graph_still,

-		output reg miss, hit_left, hit_right,

-		output wire graph_on,

-		output reg [2:0] graph_rgb,

-		output reg [7:0] left_score, right_score

-	);

-

-	// define constant value here

-	localparam MAX_X = 640;

-	localparam MAX_Y = 480;

-	localparam BALL_SIZE = 8;

-	localparam BAR_SIZE = 108;

-	localparam BAR_V = 4;

-	localparam BAR_LEFT_X = 40;

-	localparam BAR_RIGHT_X = 600;

-	localparam BAR_WIDTH = 6;

-	localparam V_X = 3;

-	localparam V_X_N = -3;

-	localparam V_Y = 3;

-	localparam V_Y_N = -3;

-

-	// all about ball

-	reg [9:0] ball_x, ball_y;

-	wire [9:0] ball_x_next, ball_y_next;

-	wire [9:0] ball_right, ball_left, ball_top, ball_bottom;

-	reg [9:0] x_delta, x_delta_next;

-	reg [9:0] y_delta, y_delta_next;

-	

-	wire [2:0] ball_row, ball_col;

-	reg [7:0] ball_data;

-	

-	// all about the output rgb

-	wire bar_on, ball_on;

-	wire [2:0] bar_rgb, ball_rgb;

-	

-	// colors

-	assign bar_rgb = 3'b101;	// purple

-	assign ball_rgb = 3'b100;	// red

-	

-	// bar right & left

-	reg [9:0] bar_right, bar_right_next;

-	reg [9:0] bar_left, bar_left_next;

-	wire [9:0] bar_right_top, bar_right_bottom;

-	wire [9:0] bar_left_top, bar_left_bottom;

-	

-	// to judge wether added

-	reg added;

-

-	// refr_tick: 1-clock tick asserted at start of v-sync

-	//	   i.e., when the screen is refreshed (60 Hz)

-	assign refr_tick = (pix_y == 481) && (pix_x == 0);

-	

-	// keep refreshing all the assistant values

-	assign ball_right = ball_x + 4;

-	assign ball_left = ball_x - 3;

-	assign ball_top = ball_y - 3;

-	assign ball_bottom = ball_y + 4;

-	assign ball_x_next = (graph_still) ? MAX_X / 2 :

-						 (refr_tick) ? ball_x + x_delta : ball_x;

-	assign ball_y_next = (graph_still) ? MAX_Y / 2 :

-						 (refr_tick) ? ball_y + y_delta : ball_y;

-

-	assign ball_row = pix_y[2:0] - ball_top[2:0];

-	assign ball_col = pix_x[2:0] - ball_left[2:0];

-	assign ball_bit = ball_data[ball_col];

-

-	assign ball_on = (ball_left <= pix_x) && (pix_x <= ball_right)

-					 && (ball_top <= pix_y) && (pix_y <= ball_bottom)

-					 && ball_bit;

-

-	assign bar_right_top = bar_right - BAR_SIZE / 2;

-	assign bar_right_bottom = bar_right + BAR_SIZE / 2;

-	assign bar_left_top = bar_left - BAR_SIZE / 2;

-	assign bar_left_bottom = bar_left + BAR_SIZE / 2;

-	

-	assign bar_on = ((BAR_LEFT_X <= pix_x) && (pix_x <= BAR_LEFT_X + BAR_WIDTH)

-					 && (bar_right_top <= pix_y) && (pix_y <= bar_right_bottom))

-					 || ((BAR_RIGHT_X >= pix_x) && (pix_x >= BAR_RIGHT_X - BAR_WIDTH)

-					 && (bar_left_top <= pix_y) && (pix_y <= bar_left_bottom));

-

-	// provide the ball's data

-	always @*

-		case (ball_row)

-			3'h0: ball_data = 8'b00111100;	 //   ****

-			3'h1: ball_data = 8'b01111110;	 //  ******

-			3'h2: ball_data = 8'b11111111;	 // ********

-			3'h3: ball_data = 8'b11111111;	 // ********

-			3'h4: ball_data = 8'b11111111;	 // ********

-			3'h5: ball_data = 8'b11111111;	 // ********

-			3'h6: ball_data = 8'b01111110;	 //  ******

-			3'h7: ball_data = 8'b00111100;	 //   ****

-		endcase

-	

-	// move ball and deal reset

-	always @(posedge clk, posedge reset)

-	begin

-		if (reset)

-			begin

-				bar_right <= 0;

-				bar_left <= 0;

-				ball_x <= 0;

-				ball_y <= 0;

-				x_delta <= V_X;

-				y_delta <= V_Y;

-			end

-		else

-			begin

-				bar_right <= bar_right_next;

-				bar_left <= bar_left_next;

-				ball_x <= ball_x_next;

-				ball_y <= ball_y_next;

-				x_delta <= x_delta_next;

-				y_delta <= y_delta_next;

-			end

-	end

-

-	// calc the position of bar

-	always @*

-	begin

-		bar_right_next = bar_right;

-		if (graph_still)

-			bar_right_next = MAX_Y / 2;

-		else if (refr_tick)

-			if (btn1[1] & (bar_right_bottom < (MAX_Y - 1 - BAR_V)))

-				bar_right_next = bar_right + BAR_V;

-			else if (btn1[0] & (bar_right_top > BAR_V)) 

-				bar_right_next = bar_right - BAR_V;

-

-		bar_left_next = bar_left;

-		if (graph_still)

-			bar_left_next = MAX_Y / 2;

-		else if (refr_tick)

-			if (btn2[1] & (bar_left_bottom < (MAX_Y - 1 - BAR_V)))

-				bar_left_next = bar_left + BAR_V;

-			else if (btn2[0] & (bar_left_top > BAR_V)) 

-				bar_left_next = bar_left - BAR_V;

-	end

-

-	// deal with the ball's movement

-	always @(posedge refr_tick, posedge reset)

-	  if (reset) begin

-		hit_left = 1'b0;

-		hit_right = 1'b0;

-		miss = 1'b0;

-		x_delta_next = V_X;

-		y_delta_next = V_Y;

-		right_score = 8'b0;

-		left_score = 8'b0;

-		added = 0;

-	  end else begin

-		hit_left = 1'b0;

-		hit_right = 1'b0;

-		miss = 1'b0;

-		x_delta_next = x_delta;

-		y_delta_next = y_delta;

-		if (graph_still)

-			begin

-				x_delta_next = V_X;

-				y_delta_next = V_Y;

-				hit_right = 1'b0;

-				hit_left = 1'b0;

-				miss = 1'b0;

-				right_score = 8'b0;

-				left_score = 8'b0;

-				added = 0;

-			end

-		else if (ball_top <= 5)

-			begin

-				y_delta_next = V_Y;

-				hit_right = 1'b0;

-				hit_left = 1'b0;

-				added = 0;

-			end

-		else if (ball_bottom >= MAX_Y - 5)

-			begin

-				y_delta_next = V_Y_N;

-				hit_right = 1'b0;

-				hit_left = 1'b0;

-				added = 0;

-			end

-		else if (BAR_LEFT_X <= ball_left && BAR_LEFT_X + BAR_WIDTH >= ball_left - 1

-				&& ball_top - bar_right + BAR_SIZE / 2 > 0 && bar_right - ball_top + BAR_SIZE / 2 > 0)

-			begin

-				hit_left = 1'b1;

-				hit_right = 1'b0;

-				x_delta_next = V_X;

-				if(added == 0)

-				begin

-					if(left_score[3:0] == 4'b1001)

-					begin

-						left_score[3:0] = 4'b0000;

-						left_score[7:4] = left_score[7:4] + 1;

-					end

-					else

-						left_score[3:0] = left_score[3:0] + 1;

-				end

-				added = 1;

-			end

-		else if (BAR_RIGHT_X >= ball_right && BAR_RIGHT_X - BAR_WIDTH <= ball_right + 1

-				&& ball_top - bar_left + BAR_SIZE / 2 > 0 && bar_left - ball_top + BAR_SIZE / 2 > 0)

-			begin

-				hit_right = 1'b1;

-				hit_left = 1'b0;

-				x_delta_next = V_X_N;

-				if(added == 0)

-				begin

-					if(right_score[3:0] == 4'h9)

-					begin

-						right_score[3:0] = 4'h0;

-						right_score[7:4] = right_score[7:4] + 1;

-					end

-					else

-						right_score[3:0] = right_score[3:0] + 1;

-				end

-				added = 1;

-			end

-		else if (ball_right >= MAX_X - 10 || ball_right <= 10)

-			begin

-				added = 0;

-				miss = 1'b1;

-				hit_right = 1'b0;

-				hit_left = 1'b0;

-				right_score = 8'b0;

-				left_score = 8'b0;

-			end

-	  end

-

-	// assign rgb to the correct color

-	always @* 

-	begin

-		if (bar_on)

-			graph_rgb = bar_rgb;

-		else if (ball_on)

-			graph_rgb = ball_rgb;

-		else

-			graph_rgb = 3'b000;

-	end

-

-	// decide wether need to display

-	assign graph_on =  bar_on | ball_on;

-

-endmodule

diff --git a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/text_graph.v b/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/text_graph.v
deleted file mode 100644
index e400fec..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/text_graph.v
+++ /dev/null
@@ -1,51 +0,0 @@
-module text_graph(

-		input wire clk,

-		input wire [3:0] left_high, left_low,

-		input wire [3:0] right_high, right_low,

-		input wire [9:0] pix_x, pix_y,

-		output wire text_on,

-		output reg [2:0] text_rgb

-    );

-	wire [10:0] rom_add;

-	wire [3:0] row_add;

-	wire [2:0] bit_add;

-	wire [7:0] temp_data;

-	reg [7:0] char_add;

-	wire bit_color;

-	

-	font_rom rom(.clk(clk),.addr(rom_add),.data(temp_data));

-	

-	assign text_on = (pix_y[9:5]==0) && (pix_x[9:4] >= 9 ) && (pix_x[9:4] < 24);

-	assign row_add = pix_y[4:1];

-	assign bit_add = pix_x[3:1];

-	always @*

-		case(pix_x[9:4])

-			6'b001001: char_add = 7'h53;

-			6'b001010: char_add = 7'h63;

-			6'b001011: char_add = 7'h6f;

-			6'b001100: char_add = 7'h72;

-			6'b001101: char_add = 7'h65;

-			6'b001110: char_add = 7'h3a;

-			6'b001111: char_add = 7'h00;

-			6'b010000: char_add = {3'b011,left_high};

-			6'b010001: char_add = {3'b011,left_low};

-			6'b010010: char_add = 7'h00;

-			6'b010011: char_add = 7'h2d;

-			6'b010100: char_add = 7'h2d;

-			6'b010101: char_add = 7'h00;

-			6'b010110: char_add = {3'b011,right_high};

-			6'b010111: char_add = {3'b011,right_low};

-			6'b011000: char_add = 7'h00;

-		endcase

-

-	always @*

-	begin

-		text_rgb = 3'b110;

-		if(text_on && bit_color)

-			text_rgb = 3'b000;

-	end

-	

-	assign rom_add = {char_add, row_add};

-	assign bit_color = temp_data[~bit_add];

-	

-endmodule

diff --git a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/top.v b/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/top.v
deleted file mode 100644
index 9d37d64..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/top.v
+++ /dev/null
@@ -1,119 +0,0 @@
-`timescale 1ns / 1ps
-
-module top(

-		input wire clk, reset,

-		input wire [1:0] btn1,

-		input wire [1:0] btn2,

-		output wire hsync, vsync,

-		output wire [2:0] rgb

-	);

-

-

-	// define state

-	localparam  [1:0]

-	new	 = 2'b00,	// new game

-	play	= 2'b01,	// playing

-	over	= 2'b10;	// game over

-

-	reg [1:0] state, state_next;

-	wire [9:0] pixel_x, pixel_y;

-	wire video_on, pixel_tick, graph_on, miss;

-	wire [2:0] graph_rgb;

-	reg [2:0] rgb_now, rgb_next;

-	reg graph_still, timer_start;			// graph_still: graph still

-	wire [1:0] btn1_out, btn2_out;

-	wire hit_left, hit_right;

-	wire [7:0] left_s, right_s;

-	wire text_on;

-	wire [2:0] text_rgb;

-	

-	initial begin

-		state = 2'b00;		// state: new

-		rgb_now = 0;

-		graph_still = 1'b1;

-	end

-

-	debounce p0(clk, btn1[0], btn1_out[0]);		// debounce for btns

-	debounce p1(clk, btn1[1], btn1_out[1]);

-	debounce p2(clk, btn2[0], btn2_out[0]);

-	debounce p3(clk, btn2[1], btn2_out[1]);

-

-	text_graph text

-		(.clk(clk), .left_high(left_s[7:4]), .left_low(left_s[3:0]),

-		.right_high(right_s[7:4]), .right_low(right_s[3:0]), .pix_x(pixel_x),

-		.pix_y(pixel_y), .text_on(text_on), .text_rgb(text_rgb));

-	

-	vga_sync vsync_unit

-		(.clk(clk), .reset(reset), .hsync(hsync), .vsync(vsync),

-		.video_on(video_on), .p_tick(pixel_tick),

-		.pixel_x(pixel_x), .pixel_y(pixel_y));

-

-	pong_graph graph_unit

-	  (.clk(clk), .reset(reset), .btn1(btn1_out), .btn2(btn2_out),

-	   .pix_x(pixel_x), .pix_y(pixel_y),

-	   .graph_still(graph_still), .miss(miss),.hit_left(hit_left),.hit_right(hit_right),

-	   .graph_on(graph_on), .graph_rgb(graph_rgb), .left_score(left_s),.right_score(right_s));

-

-

-	always @(posedge clk)

-	begin

-		if (reset)

-			begin

-				state <= new;

-				rgb_now <= 0;

-			end

-		else

-			begin

-				state <= state_next;

-				if (pixel_tick)

-					rgb_now <= rgb_next;

-			end

-	end

-

-	always @*

-	begin

-		graph_still = 1'b1;

-		state_next = state;

-		case (state)

-			new:

-				begin

-					// any button pressed the game start

-					if ((btn1_out != 2'b00) || (btn2_out != 2'b00))

-					begin

-						state_next = play;

-					end

-				end

-			play:

-				begin

-					graph_still = 1'b0;

-					// if any ball is missed, your game is over.

-					if (miss)

-					begin

-						state_next = over;

-					end

-				end

-			over:

-				begin

-					// may add more features here

-					state_next = new;

-				end

-		endcase

-	end

-

-	always @*

-	begin

-		if (~video_on)

-			rgb_next = "000"; // blank the edge/retrace

-		else

-			// the priority is defined here

-			if(graph_on)

-			   rgb_next = graph_rgb;

-			else if (text_on)  // display graph

-				rgb_next = text_rgb;

-			else 

-				rgb_next = 3'b110; // yellow background

-	end

-

-	assign rgb = rgb_now;	// assign rgb register to output

-

-endmodule

diff --git a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/vga_sync.v b/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/vga_sync.v
deleted file mode 100644
index 9b5cc54..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/rtl/vga_sync.v
+++ /dev/null
@@ -1,84 +0,0 @@
-module vga_sync

-   (

-    input wire clk, reset,

-    output wire hsync, vsync, video_on, p_tick,

-    output wire [9:0] pixel_x, pixel_y

-   );

-

-   localparam HD = 640; // horizontal display area

-   localparam HF = 48 ; // h. front (left) border

-   localparam HB = 16 ; // h. back (right) border

-   localparam HR = 96 ; // h. retrace

-   localparam VD = 480; // vertical display area

-   localparam VF = 10;  // v. front (top) border

-   localparam VB = 33;  // v. back (bottom) border

-   localparam VR = 2;   // v. retrace

-

-   reg point;

-   wire point_next;

-   reg [9:0] h_count, h_count_next;

-   reg [9:0] v_count, v_count_next;

-   reg v_sync_reg, h_sync_reg;

-   wire v_sync_next, h_sync_next;

-   wire h_end, v_end, pixel_tick;

-

-   

-   always @(posedge clk, posedge reset)

-      if (reset)

-         begin

-            point <= 1'b0;

-            v_count <= 0;

-            h_count <= 0;

-            v_sync_reg <= 1'b0;

-            h_sync_reg <= 1'b0;

-         end

-      else

-         begin

-            point <= point_next;

-            v_count <= v_count_next;

-            h_count <= h_count_next;

-            v_sync_reg <= v_sync_next;

-            h_sync_reg <= h_sync_next;

-         end

-

-   assign point_next = ~point;

-   assign pixel_tick = point;

-

-   assign h_end = (h_count==(HD+HF+HB+HR-1));

-   assign v_end = (v_count==(VD+VF+VB+VR-1));

-

-   always @*

-      if (pixel_tick)  // 25 MHz pulse

-         if (h_end)

-			begin

-

-            h_count_next = 0;

-				if(v_end)

-					v_count_next = 0;

-				else

-					v_count_next = v_count + 1;

-			end

-         else begin

-            h_count_next = h_count + 1;

-	    v_count_next = v_count;

-	 end

-      else

-		begin

-         h_count_next = h_count;

-			v_count_next = v_count;

-		end

-

-   assign h_sync_next = (h_count >=(HD+HB) &&

-                         h_count <=(HD+HB+HR-1));

-   assign v_sync_next = (v_count >=(VD+VB) &&

-                         v_count <=(VD+VB+VR-1));

-

-   assign video_on = (h_count<HD) && (v_count<VD);

-

-   assign hsync = h_sync_reg;

-   assign vsync = v_sync_reg;

-   assign pixel_x = h_count;

-   assign pixel_y = v_count;

-   assign p_tick = pixel_tick;

-

-endmodule

diff --git a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/sim/bench.v b/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/sim/bench.v
deleted file mode 100644
index b2da110..0000000
--- a/SVIncCompil/Testcases/YosysBigSim/verilog-pong/slpp_unit/work/sim/bench.v
+++ /dev/null
@@ -1,108 +0,0 @@
-
-// To create a GIF animation from the generated images:
-// convert frame_*.ppm pong.gif
-
-
-
-module testbench;
-
-reg clk, reset;
-reg [1:0] btn1;
-reg [1:0] btn2;
-wire hsync, vsync;
-wire [2:0] rgb;
-
-top UUT (
-	clk,
-	reset,
-	btn1,
-	btn2,
-	hsync,
-	vsync,
-	rgb
-);
-
-initial begin
-	clk <= 0;
-	#100;
-	forever begin
-		clk <= ~clk;
-		#50;
-	end
-end
-
-initial begin
-	btn1 <= 2'b00;
-	btn2 <= 2'b00;
-	reset <= 1;
-	repeat(5) @(posedge clk);
-	btn2 <= 2'b01;
-	repeat(5) @(posedge clk);
-	reset <= 0;
-end
-
-integer x, y, z, idx, fd;
-reg [128*8-1:0] filename;
-reg [2:0] framebuffer [0:700*500-1];
-reg last_hsync, last_vsync;
-reg [63:0] hash;
-
-always @(posedge clk) begin
-	last_hsync <= hsync;
-	last_vsync <= vsync;
-	if (reset) begin
-		x = 96;
-		y = 12;
-		z = 0;
-		for (idx = 0; idx < 700*500; idx=idx+1)
-			framebuffer[idx] = 0;
-	end else
-	if (hsync) begin
-		if (!last_hsync) begin
-			x = 0;
-			y = y + 1;
-			if (z == 0 && y == 13)
-				$write("Frame %3d .", z);
-			if (z != 0 && y == 1)
-				$write("Frame %3d ", z);
-			if (y % 10 == 9) begin
-				$write(".");
-				$fflush;
-			end
-		end
-	end else
-	if (vsync) begin
-		if (!last_vsync)
-		begin
-			hash = 0;
-			for (idx=0; idx < 700*500; idx = idx+1)
-				hash = framebuffer[idx] + (hash << 6) + (hash << 16) - hash;
-			$write(" %016x", hash);
-
-
-			$write("\n");
-
-			x = 0;
-			y = 0;
-			z = z + 1;
-			for (idx = 0; idx < 700*500; idx=idx+1)
-				framebuffer[idx] = 0;
-
-			if (z == 3)
-				$finish;
-		end
-	end else begin
-		x <= x + 1;
-		if (x % 2 == 0 && 5 <= x && x < 1405 && 5 <= y && y < 505) begin
-			idx = (x-5)/2 + 700*(y-5);
-			framebuffer[idx] = rgb;
-		end
-	end
-end
-
-initial begin
-	// $dumpfile("bench.vcd");
-	// $dumpvars(0, testbench);
-end
-
-endmodule