new file:   verilog/rtl/alu_xor_4.v
	new file:   verilog/rtl/macro_10.v
	new file:   verilog/rtl/macro_15.v
	new file:   verilog/rtl/macro_7.v
	new file:   verilog/rtl/macro_decap_12.v
	new file:   verilog/rtl/macro_decap_3.v
	new file:   verilog/rtl/macro_golden.v
	new file:   verilog/rtl/macro_nodecap.v
	new file:   verilog/rtl/macro_nofill.v
	def/macro_10.def
	def/macro_15.def
	def/macro_7.def
	def/macro_decap_12.def
	def/macro_decap_3.def
	def/macro_golden.def
	def/macro_nodecap.def
	def/macro_nofill.def
	gds/
	lef/macro_10.lef
	lef/macro_15.lef
	lef/macro_7.lef
lef/macro_decap_12.lef
	lef/macro_decap_3.lef
	lef/macro_golden.lef
	lef/macro_nodecap.lef
	lef/macro_nofill.lef
	lib/
	mag/macro_10.mag
	mag/macro_15.mag
	mag/macro_7.mag
	mag/macro_decap_12.mag
	mag/macro_decap_3.mag
	mag/macro_golden.mag
	mag/macro_nodecap.mag
	mag/macro_nofill.mag
	maglef/macro_10.mag
	maglef/macro_15.mag
	maglef/macro_7.mag
	maglef/macro_decap_12.mag
	maglef/macro_decap_3.mag
	maglef/macro_golden.mag
	maglef/macro_nodecap.mag
	maglef/macro_nofill.mag
	openlane/user_proj_example/config_15.json
	openlane/user_proj_example/config_7.json
	openlane/user_proj_example/config_decap_12.json
openlane/user_proj_example/config_decap_3
	openlane/user_proj_example/config_golden.json
	openlane/user_proj_example/config_nodecap.json
	openlane/user_proj_example/config_nofill.json
	openlane/user_project_wrapper/macro_1.cfg
	sdc/
	sdf/
	signoff/user_proj_example/metrics.csv
	signoff/user_project_wrapper/metrics.csv
	spef/
	spi/lvs/macro_10.spice
	spi/lvs/macro_15.spice
	spi/lvs/macro_7.spice
	spi/lvs/macro_decap_12.spice
	spi/lvs/macro_decap_3.spice
	spi/lvs/macro_golden.spice
	spi/lvs/macro_nodecap.spice
	spi/lvs/macro_nofill.spice
	verilog/dv/macro_10/
	verilog/dv/macro_15/
	verilog/dv/macro_7/
verilog/dv/macro_decap12/
	verilog/dv/macro_decap3/
verilog/dv/macro_golden/
verilog/dv/macro_no_decap/
	verilog/dv/macro_no_fill/
	verilog/gl/macro_10.nl.v
	verilog/gl/macro_10.v
	verilog/gl/macro_15.nl.v
	verilog/gl/macro_15.v
	verilog/gl/macro_7.nl.v
	verilog/gl/macro_7.v
	verilog/gl/macro_decap_12.nl.v
	verilog/gl/macro_decap_12.v
	verilog/gl/macro_decap_3.nl.v
	verilog/gl/macro_decap_3.v
	verilog/gl/macro_golden.nl.v
	verilog/gl/macro_golden.v
	verilog/gl/macro_nodecap.nl.v
	verilog/gl/macro_nodecap.v
	verilog/gl/macro_nofill.nl.v
	verilog/gl/macro_nofill.v
	verilog/gl/user_project_wrapper.nl.v
diff --git a/verilog/rtl/1 b/verilog/rtl/1
new file mode 100644
index 0000000..13ceea9
--- /dev/null
+++ b/verilog/rtl/1
@@ -0,0 +1,128 @@
+`default_nettype none
+
+`ifdef FORMAL
+    `define MPRJ_IO_PADS 38    
+`endif
+
+`define USE_LA  1
+`define USE_IO  1
+
+module macro_10  (
+ `ifdef USE_POWER_PINS
+     inout vdda1,    // User area 1 3.3V supply
+     inout vdda2,    // User area 2 3.3V supply
+     inout vssa1,    // User area 1 analog ground
+     inout vssa2,    // User area 2 analog ground
+     inout vccd1,    // User area 1 1.8V supply
+     inout vccd2,    // User area 2 1.8v supply
+     inout vssd1,    // User area 1 digital ground
+     inout vssd2,    // User area 2 digital ground
+ `endif		
+
+	// Wishbone Slave ports (WB MI A)
+		 input wb_clk_i,
+		 input wb_rst_i,
+		 input wbs_stb_i,
+		 input wbs_cyc_i,
+		 input wbs_we_i,
+		 input [3:0] wbs_sel_i,
+		 input [31:0] wbs_dat_i,
+		 input [31:0] wbs_adr_i,
+		 output wbs_ack_o,
+		 output [31:0] wbs_dat_o,
+		
+		// // Logic Analyzer Signals
+	`ifdef USE_LA
+		 input  wire [127:0] la_data_in,
+		 output wire [127:0] la_data_out,
+		 input  wire [127:0] la_oenb,
+	 `endif	
+		// // IOs
+	`ifdef USE_IO
+		 input  wire [`MPRJ_IO_PADS-1:0] io_in,
+		 output wire [`MPRJ_IO_PADS-1:0] io_out,
+		 output wire [`MPRJ_IO_PADS-1:0] io_oeb,
+	 `endif	
+		// // Analog (direct connection to GPIO pad---use with
+		// caution)
+		// // Note that analog I/O is not available on the
+		// 7 lowest-numbered
+		// // GPIO pads, and so the analog_io indexing is offset from
+		// the
+		// // GPIO indexing by 7 (also upper 2 GPIOs do not have
+		// analog_io).
+//		 inout [`MPRJ_IO_PADS-10:0] analog_io,
+		
+		// // Independent clock (on independent integer divider)
+//		 input  wire user_clock2,
+		
+//		// // User maskable interrupt signals
+//		output wire [2:0] user_irq,
+
+		input wire io_active
+		 );
+		//
+		// /*--------------------------------------*/
+		// /* User project is instantiated  here   */
+		// /*--------------------------------------*/
+		//
+	reg [3:0] A0, B0, A1, B1;			//Inputs
+	reg [1:0] ALU_Sel1, ALU_Sel2;			//Select Signals
+	wire [3:0] ALU_Out1,ALU_Out2; 			// ALU 4-bit Output
+	wire CarryOut1,CarryOut2; 			// Carry Out Flag
+	wire [3:0] x;					//Compares ALU outputs
+	wire y;						//Compares Carry Outputs
+	wire clk;
+	wire [31:0] la1_data_out;
+	assign la1_data_out = la_data_out[63:32];
+	wire [31:0]                 buf_la1_data_out;		//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_out;			//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_oeb;			//Tri-stated
+
+ `ifdef FORMAL
+	 `ifdef USE_LA 
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'b0;	// formal verification
+ 	 `endif
+	 `ifdef USE_IO
+	 assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}}; 	//If active, the outputs are enabled at io_oeb
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};	//If active, the outputs are passed to io_out
+         `endif
+	 `include "properties.v"			//Checks for the tri-state buffer
+ 
+ `else
+	 `ifdef USE_LA
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'bz;
+         `endif
+	 `ifdef USE_IO
+         assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}};
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};
+ 	 `endif
+	 //$display("outputs and active is",io_out,active);
+ `endif
+
+  assign buf_io_oeb = {`MPRJ_IO_PADS{1'b0}}; //enabled
+
+ //ALU_XOR instantiated
+ 
+ alu_xor_4 u_alu_xor_4(
+`ifdef USE_POWER_PINS
+ .vccd1(vccd1),
+ .vssd1(vssd1),
+`endif
+	.clk(wb_clk_i),
+	.A0(io_in[21:18]),
+	.B0(io_in[25:22]),
+	.A1(io_in[29:26]),
+	.B1(io_in[33:30]),
+	.ALU_Sel1(io_in[35:34]),
+	.ALU_Sel2(io_in[37:36]),
+	.ALU_Out1(buf_io_out[17:14]),
+	.ALU_Out2(buf_io_out[13:10]),
+	.CarryOut1(buf_io_out[5]),
+	.CarryOut2(buf_io_out[4]),
+	.x(buf_io_out[9:6]),
+	.y(buf_io_out[0])
+);
+ endmodule	// user_project_wrapper
+
+ `default_nettype wire
diff --git a/verilog/rtl/alu_xor_4.v b/verilog/rtl/alu_xor_4.v
new file mode 100644
index 0000000..aacb883
--- /dev/null
+++ b/verilog/rtl/alu_xor_4.v
@@ -0,0 +1,94 @@
+// Code your design here

+module alu_xor_4(

+`ifdef USE_POWER_PINS

+        inout vccd1,    // User area 1 1.8V supply

+        inout vssd1,    // User area 1 digital ground

+`endif

+input clk,

+  input [3:0] A0,B0,A1,B1,  // ALU 8-bit Inputs

+input [1:0] ALU_Sel1,ALU_Sel2,// ALU Selection

+  output [3:0] ALU_Out1,ALU_Out2, // ALU 8-bit Output

+output CarryOut1,CarryOut2, // Carry Out Flag

+  output [3:0] x,

+output y,

+input [1:0] active

+);

+

+alu_4 alu_4_1(

+.A (A0),

+.B (B0),

+.ALU_Sel (ALU_Sel1),

+.ALU_Out (ALU_Out1),

+.CarryOut (CarryOut1)

+);

+

+alu_4 alu_4_2(

+.A (A1),

+.B (B1),

+.ALU_Sel (ALU_Sel2),

+.ALU_Out (ALU_Out2),

+.CarryOut (CarryOut2)

+);

+

+

+  assign x[3:0] = ALU_Out1[3:0] ^ ALU_Out2[3:0];

+assign y = CarryOut1 ^ CarryOut2;

+  always @(*)

+begin

+  

+  $display("A0", A0[3:0]);

+  $display("B0", B0[3:0]);

+  $display("A1", A1[3:0]);

+  $display("B1", B1[3:0]);

+  $display("ALU_Sel1", ALU_Sel1[1:0]);

+  $display("ALU_Sel2", ALU_Sel2[1:0]);

+  #1000;  

+  $display("ALU_Out1", ALU_Out1[3:0]);

+  $display("ALU_Out2", ALU_Out2[3:0]);

+  $display("CarryOut1", CarryOut1);

+  $display("CarryOut2", CarryOut2);

+  $display("x", x[3:0]);

+  $display("y", y);

+  

+#1000;  

+if (x!=0)

+$display ("Faulty ALU");

+else

+$display ("ALU is right");

+if (y!=0)

+$display ("Faulty Carry");

+else

+$display ("Carry is right");

+end

+

+

+endmodule

+

+module alu_4(

+  input [3:0] A,B,  // ALU 8-bit Inputs

+input [1:0] ALU_Sel,// ALU Selection

+  output [3:0] ALU_Out, // ALU 8-bit Output

+output CarryOut // Carry Out Flag

+);

+  reg [4:0] ALU_Result;

+

+  assign ALU_Out = ALU_Result[3:0]; // ALU out

+  assign CarryOut = ALU_Result[4];

+

+always @(*)

+begin

+case(ALU_Sel)

+2'b00: // Addition

+ALU_Result = A + B ;

+2'b01: // Subtraction

+ALU_Result = A - B ;

+2'b10: // and

+ALU_Result = A & B;

+2'b11: // or

+ALU_Result = A | B;

+

+default: ALU_Result = A + B ;

+endcase

+end

+

+endmodule

diff --git a/verilog/rtl/macro_10.v b/verilog/rtl/macro_10.v
new file mode 100644
index 0000000..13ceea9
--- /dev/null
+++ b/verilog/rtl/macro_10.v
@@ -0,0 +1,128 @@
+`default_nettype none
+
+`ifdef FORMAL
+    `define MPRJ_IO_PADS 38    
+`endif
+
+`define USE_LA  1
+`define USE_IO  1
+
+module macro_10  (
+ `ifdef USE_POWER_PINS
+     inout vdda1,    // User area 1 3.3V supply
+     inout vdda2,    // User area 2 3.3V supply
+     inout vssa1,    // User area 1 analog ground
+     inout vssa2,    // User area 2 analog ground
+     inout vccd1,    // User area 1 1.8V supply
+     inout vccd2,    // User area 2 1.8v supply
+     inout vssd1,    // User area 1 digital ground
+     inout vssd2,    // User area 2 digital ground
+ `endif		
+
+	// Wishbone Slave ports (WB MI A)
+		 input wb_clk_i,
+		 input wb_rst_i,
+		 input wbs_stb_i,
+		 input wbs_cyc_i,
+		 input wbs_we_i,
+		 input [3:0] wbs_sel_i,
+		 input [31:0] wbs_dat_i,
+		 input [31:0] wbs_adr_i,
+		 output wbs_ack_o,
+		 output [31:0] wbs_dat_o,
+		
+		// // Logic Analyzer Signals
+	`ifdef USE_LA
+		 input  wire [127:0] la_data_in,
+		 output wire [127:0] la_data_out,
+		 input  wire [127:0] la_oenb,
+	 `endif	
+		// // IOs
+	`ifdef USE_IO
+		 input  wire [`MPRJ_IO_PADS-1:0] io_in,
+		 output wire [`MPRJ_IO_PADS-1:0] io_out,
+		 output wire [`MPRJ_IO_PADS-1:0] io_oeb,
+	 `endif	
+		// // Analog (direct connection to GPIO pad---use with
+		// caution)
+		// // Note that analog I/O is not available on the
+		// 7 lowest-numbered
+		// // GPIO pads, and so the analog_io indexing is offset from
+		// the
+		// // GPIO indexing by 7 (also upper 2 GPIOs do not have
+		// analog_io).
+//		 inout [`MPRJ_IO_PADS-10:0] analog_io,
+		
+		// // Independent clock (on independent integer divider)
+//		 input  wire user_clock2,
+		
+//		// // User maskable interrupt signals
+//		output wire [2:0] user_irq,
+
+		input wire io_active
+		 );
+		//
+		// /*--------------------------------------*/
+		// /* User project is instantiated  here   */
+		// /*--------------------------------------*/
+		//
+	reg [3:0] A0, B0, A1, B1;			//Inputs
+	reg [1:0] ALU_Sel1, ALU_Sel2;			//Select Signals
+	wire [3:0] ALU_Out1,ALU_Out2; 			// ALU 4-bit Output
+	wire CarryOut1,CarryOut2; 			// Carry Out Flag
+	wire [3:0] x;					//Compares ALU outputs
+	wire y;						//Compares Carry Outputs
+	wire clk;
+	wire [31:0] la1_data_out;
+	assign la1_data_out = la_data_out[63:32];
+	wire [31:0]                 buf_la1_data_out;		//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_out;			//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_oeb;			//Tri-stated
+
+ `ifdef FORMAL
+	 `ifdef USE_LA 
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'b0;	// formal verification
+ 	 `endif
+	 `ifdef USE_IO
+	 assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}}; 	//If active, the outputs are enabled at io_oeb
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};	//If active, the outputs are passed to io_out
+         `endif
+	 `include "properties.v"			//Checks for the tri-state buffer
+ 
+ `else
+	 `ifdef USE_LA
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'bz;
+         `endif
+	 `ifdef USE_IO
+         assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}};
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};
+ 	 `endif
+	 //$display("outputs and active is",io_out,active);
+ `endif
+
+  assign buf_io_oeb = {`MPRJ_IO_PADS{1'b0}}; //enabled
+
+ //ALU_XOR instantiated
+ 
+ alu_xor_4 u_alu_xor_4(
+`ifdef USE_POWER_PINS
+ .vccd1(vccd1),
+ .vssd1(vssd1),
+`endif
+	.clk(wb_clk_i),
+	.A0(io_in[21:18]),
+	.B0(io_in[25:22]),
+	.A1(io_in[29:26]),
+	.B1(io_in[33:30]),
+	.ALU_Sel1(io_in[35:34]),
+	.ALU_Sel2(io_in[37:36]),
+	.ALU_Out1(buf_io_out[17:14]),
+	.ALU_Out2(buf_io_out[13:10]),
+	.CarryOut1(buf_io_out[5]),
+	.CarryOut2(buf_io_out[4]),
+	.x(buf_io_out[9:6]),
+	.y(buf_io_out[0])
+);
+ endmodule	// user_project_wrapper
+
+ `default_nettype wire
diff --git a/verilog/rtl/macro_15.v b/verilog/rtl/macro_15.v
new file mode 100644
index 0000000..9f1b092
--- /dev/null
+++ b/verilog/rtl/macro_15.v
@@ -0,0 +1,128 @@
+`default_nettype none
+
+`ifdef FORMAL
+    `define MPRJ_IO_PADS 38    
+`endif
+
+`define USE_LA  1
+`define USE_IO  1
+
+module macro_15  (
+ `ifdef USE_POWER_PINS
+     inout vdda1,    // User area 1 3.3V supply
+     inout vdda2,    // User area 2 3.3V supply
+     inout vssa1,    // User area 1 analog ground
+     inout vssa2,    // User area 2 analog ground
+     inout vccd1,    // User area 1 1.8V supply
+     inout vccd2,    // User area 2 1.8v supply
+     inout vssd1,    // User area 1 digital ground
+     inout vssd2,    // User area 2 digital ground
+ `endif		
+
+	// Wishbone Slave ports (WB MI A)
+		 input wb_clk_i,
+		 input wb_rst_i,
+		 input wbs_stb_i,
+		 input wbs_cyc_i,
+		 input wbs_we_i,
+		 input [3:0] wbs_sel_i,
+		 input [31:0] wbs_dat_i,
+		 input [31:0] wbs_adr_i,
+		 output wbs_ack_o,
+		 output [31:0] wbs_dat_o,
+		
+		// // Logic Analyzer Signals
+	`ifdef USE_LA
+		 input  wire [127:0] la_data_in,
+		 output wire [127:0] la_data_out,
+		 input  wire [127:0] la_oenb,
+	 `endif	
+		// // IOs
+	`ifdef USE_IO
+		 input  wire [`MPRJ_IO_PADS-1:0] io_in,
+		 output wire [`MPRJ_IO_PADS-1:0] io_out,
+		 output wire [`MPRJ_IO_PADS-1:0] io_oeb,
+	 `endif	
+		// // Analog (direct connection to GPIO pad---use with
+		// caution)
+		// // Note that analog I/O is not available on the
+		// 7 lowest-numbered
+		// // GPIO pads, and so the analog_io indexing is offset from
+		// the
+		// // GPIO indexing by 7 (also upper 2 GPIOs do not have
+		// analog_io).
+//		 inout [`MPRJ_IO_PADS-10:0] analog_io,
+		
+		// // Independent clock (on independent integer divider)
+//		 input  wire user_clock2,
+		
+//		// // User maskable interrupt signals
+//		output wire [2:0] user_irq,
+
+		input wire io_active
+		 );
+		//
+		// /*--------------------------------------*/
+		// /* User project is instantiated  here   */
+		// /*--------------------------------------*/
+		//
+	reg [3:0] A0, B0, A1, B1;			//Inputs
+	reg [1:0] ALU_Sel1, ALU_Sel2;			//Select Signals
+	wire [3:0] ALU_Out1,ALU_Out2; 			// ALU 4-bit Output
+	wire CarryOut1,CarryOut2; 			// Carry Out Flag
+	wire [3:0] x;					//Compares ALU outputs
+	wire y;						//Compares Carry Outputs
+	wire clk;
+	wire [31:0] la1_data_out;
+	assign la1_data_out = la_data_out[63:32];
+	wire [31:0]                 buf_la1_data_out;		//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_out;			//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_oeb;			//Tri-stated
+
+ `ifdef FORMAL
+	 `ifdef USE_LA 
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'b0;	// formal verification
+ 	 `endif
+	 `ifdef USE_IO
+	 assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}}; 	//If active, the outputs are enabled at io_oeb
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};	//If active, the outputs are passed to io_out
+         `endif
+	 `include "properties.v"			//Checks for the tri-state buffer
+ 
+ `else
+	 `ifdef USE_LA
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'bz;
+         `endif
+	 `ifdef USE_IO
+         assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}};
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};
+ 	 `endif
+	 //$display("outputs and active is",io_out,active);
+ `endif
+
+  assign buf_io_oeb = {`MPRJ_IO_PADS{1'b0}}; //enabled
+
+ //ALU_XOR instantiated
+ 
+ alu_xor_4 u_alu_xor_4(
+`ifdef USE_POWER_PINS
+ .vccd1(vccd1),
+ .vssd1(vssd1),
+`endif
+	.clk(wb_clk_i),
+	.A0(io_in[21:18]),
+	.B0(io_in[25:22]),
+	.A1(io_in[29:26]),
+	.B1(io_in[33:30]),
+	.ALU_Sel1(io_in[35:34]),
+	.ALU_Sel2(io_in[37:36]),
+	.ALU_Out1(buf_io_out[17:14]),
+	.ALU_Out2(buf_io_out[13:10]),
+	.CarryOut1(buf_io_out[5]),
+	.CarryOut2(buf_io_out[4]),
+	.x(buf_io_out[9:6]),
+	.y(buf_io_out[0])
+);
+ endmodule	// user_project_wrapper
+
+ `default_nettype wire
diff --git a/verilog/rtl/macro_7.v b/verilog/rtl/macro_7.v
new file mode 100644
index 0000000..5a82508
--- /dev/null
+++ b/verilog/rtl/macro_7.v
@@ -0,0 +1,128 @@
+`default_nettype none
+
+`ifdef FORMAL
+    `define MPRJ_IO_PADS 38    
+`endif
+
+`define USE_LA  1
+`define USE_IO  1
+
+module macro_7  (
+ `ifdef USE_POWER_PINS
+     inout vdda1,    // User area 1 3.3V supply
+     inout vdda2,    // User area 2 3.3V supply
+     inout vssa1,    // User area 1 analog ground
+     inout vssa2,    // User area 2 analog ground
+     inout vccd1,    // User area 1 1.8V supply
+     inout vccd2,    // User area 2 1.8v supply
+     inout vssd1,    // User area 1 digital ground
+     inout vssd2,    // User area 2 digital ground
+ `endif		
+
+	// Wishbone Slave ports (WB MI A)
+		 input wb_clk_i,
+		 input wb_rst_i,
+		 input wbs_stb_i,
+		 input wbs_cyc_i,
+		 input wbs_we_i,
+		 input [3:0] wbs_sel_i,
+		 input [31:0] wbs_dat_i,
+		 input [31:0] wbs_adr_i,
+		 output wbs_ack_o,
+		 output [31:0] wbs_dat_o,
+		
+		// // Logic Analyzer Signals
+	`ifdef USE_LA
+		 input  wire [127:0] la_data_in,
+		 output wire [127:0] la_data_out,
+		 input  wire [127:0] la_oenb,
+	 `endif	
+		// // IOs
+	`ifdef USE_IO
+		 input  wire [`MPRJ_IO_PADS-1:0] io_in,
+		 output wire [`MPRJ_IO_PADS-1:0] io_out,
+		 output wire [`MPRJ_IO_PADS-1:0] io_oeb,
+	 `endif	
+		// // Analog (direct connection to GPIO pad---use with
+		// caution)
+		// // Note that analog I/O is not available on the
+		// 7 lowest-numbered
+		// // GPIO pads, and so the analog_io indexing is offset from
+		// the
+		// // GPIO indexing by 7 (also upper 2 GPIOs do not have
+		// analog_io).
+//		 inout [`MPRJ_IO_PADS-10:0] analog_io,
+		
+		// // Independent clock (on independent integer divider)
+//		 input  wire user_clock2,
+		
+//		// // User maskable interrupt signals
+//		output wire [2:0] user_irq,
+
+		input wire io_active
+		 );
+		//
+		// /*--------------------------------------*/
+		// /* User project is instantiated  here   */
+		// /*--------------------------------------*/
+		//
+	reg [3:0] A0, B0, A1, B1;			//Inputs
+	reg [1:0] ALU_Sel1, ALU_Sel2;			//Select Signals
+	wire [3:0] ALU_Out1,ALU_Out2; 			// ALU 4-bit Output
+	wire CarryOut1,CarryOut2; 			// Carry Out Flag
+	wire [3:0] x;					//Compares ALU outputs
+	wire y;						//Compares Carry Outputs
+	wire clk;
+	wire [31:0] la1_data_out;
+	assign la1_data_out = la_data_out[63:32];
+	wire [31:0]                 buf_la1_data_out;		//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_out;			//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_oeb;			//Tri-stated
+
+ `ifdef FORMAL
+	 `ifdef USE_LA 
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'b0;	// formal verification
+ 	 `endif
+	 `ifdef USE_IO
+	 assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}}; 	//If active, the outputs are enabled at io_oeb
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};	//If active, the outputs are passed to io_out
+         `endif
+	 `include "properties.v"			//Checks for the tri-state buffer
+ 
+ `else
+	 `ifdef USE_LA
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'bz;
+         `endif
+	 `ifdef USE_IO
+         assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}};
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};
+ 	 `endif
+	 //$display("outputs and active is",io_out,active);
+ `endif
+
+  assign buf_io_oeb = {`MPRJ_IO_PADS{1'b0}}; //enabled
+
+ //ALU_XOR instantiated
+ 
+ alu_xor_4 u_alu_xor_4(
+`ifdef USE_POWER_PINS
+ .vccd1(vccd1),
+ .vssd1(vssd1),
+`endif
+	.clk(wb_clk_i),
+	.A0(io_in[21:18]),
+	.B0(io_in[25:22]),
+	.A1(io_in[29:26]),
+	.B1(io_in[33:30]),
+	.ALU_Sel1(io_in[35:34]),
+	.ALU_Sel2(io_in[37:36]),
+	.ALU_Out1(buf_io_out[17:14]),
+	.ALU_Out2(buf_io_out[13:10]),
+	.CarryOut1(buf_io_out[5]),
+	.CarryOut2(buf_io_out[4]),
+	.x(buf_io_out[9:6]),
+	.y(buf_io_out[0])
+);
+ endmodule	// user_project_wrapper
+
+ `default_nettype wire
diff --git a/verilog/rtl/macro_decap_12.v b/verilog/rtl/macro_decap_12.v
new file mode 100644
index 0000000..2d53bef
--- /dev/null
+++ b/verilog/rtl/macro_decap_12.v
@@ -0,0 +1,128 @@
+`default_nettype none
+
+`ifdef FORMAL
+    `define MPRJ_IO_PADS 38    
+`endif
+
+`define USE_LA  1
+`define USE_IO  1
+
+module macro_decap_12  (
+ `ifdef USE_POWER_PINS
+     inout vdda1,    // User area 1 3.3V supply
+     inout vdda2,    // User area 2 3.3V supply
+     inout vssa1,    // User area 1 analog ground
+     inout vssa2,    // User area 2 analog ground
+     inout vccd1,    // User area 1 1.8V supply
+     inout vccd2,    // User area 2 1.8v supply
+     inout vssd1,    // User area 1 digital ground
+     inout vssd2,    // User area 2 digital ground
+ `endif		
+
+	// Wishbone Slave ports (WB MI A)
+		 input wb_clk_i,
+		 input wb_rst_i,
+		 input wbs_stb_i,
+		 input wbs_cyc_i,
+		 input wbs_we_i,
+		 input [3:0] wbs_sel_i,
+		 input [31:0] wbs_dat_i,
+		 input [31:0] wbs_adr_i,
+		 output wbs_ack_o,
+		 output [31:0] wbs_dat_o,
+		
+		// // Logic Analyzer Signals
+	`ifdef USE_LA
+		 input  wire [127:0] la_data_in,
+		 output wire [127:0] la_data_out,
+		 input  wire [127:0] la_oenb,
+	 `endif	
+		// // IOs
+	`ifdef USE_IO
+		 input  wire [`MPRJ_IO_PADS-1:0] io_in,
+		 output wire [`MPRJ_IO_PADS-1:0] io_out,
+		 output wire [`MPRJ_IO_PADS-1:0] io_oeb,
+	 `endif	
+		// // Analog (direct connection to GPIO pad---use with
+		// caution)
+		// // Note that analog I/O is not available on the
+		// 7 lowest-numbered
+		// // GPIO pads, and so the analog_io indexing is offset from
+		// the
+		// // GPIO indexing by 7 (also upper 2 GPIOs do not have
+		// analog_io).
+//		 inout [`MPRJ_IO_PADS-10:0] analog_io,
+		
+		// // Independent clock (on independent integer divider)
+//		 input  wire user_clock2,
+		
+//		// // User maskable interrupt signals
+//		output wire [2:0] user_irq,
+
+		input wire io_active
+		 );
+		//
+		// /*--------------------------------------*/
+		// /* User project is instantiated  here   */
+		// /*--------------------------------------*/
+		//
+	reg [3:0] A0, B0, A1, B1;			//Inputs
+	reg [1:0] ALU_Sel1, ALU_Sel2;			//Select Signals
+	wire [3:0] ALU_Out1,ALU_Out2; 			// ALU 4-bit Output
+	wire CarryOut1,CarryOut2; 			// Carry Out Flag
+	wire [3:0] x;					//Compares ALU outputs
+	wire y;						//Compares Carry Outputs
+	wire clk;
+	wire [31:0] la1_data_out;
+	assign la1_data_out = la_data_out[63:32];
+	wire [31:0]                 buf_la1_data_out;		//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_out;			//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_oeb;			//Tri-stated
+
+ `ifdef FORMAL
+	 `ifdef USE_LA 
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'b0;	// formal verification
+ 	 `endif
+	 `ifdef USE_IO
+	 assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}}; 	//If active, the outputs are enabled at io_oeb
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};	//If active, the outputs are passed to io_out
+         `endif
+	 `include "properties.v"			//Checks for the tri-state buffer
+ 
+ `else
+	 `ifdef USE_LA
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'bz;
+         `endif
+	 `ifdef USE_IO
+         assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}};
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};
+ 	 `endif
+	 //$display("outputs and active is",io_out,active);
+ `endif
+
+  assign buf_io_oeb = {`MPRJ_IO_PADS{1'b0}}; //enabled
+
+ //ALU_XOR instantiated
+ 
+ alu_xor_4 u_alu_xor_4(
+`ifdef USE_POWER_PINS
+ .vccd1(vccd1),
+ .vssd1(vssd1),
+`endif
+	.clk(wb_clk_i),
+	.A0(io_in[21:18]),
+	.B0(io_in[25:22]),
+	.A1(io_in[29:26]),
+	.B1(io_in[33:30]),
+	.ALU_Sel1(io_in[35:34]),
+	.ALU_Sel2(io_in[37:36]),
+	.ALU_Out1(buf_io_out[17:14]),
+	.ALU_Out2(buf_io_out[13:10]),
+	.CarryOut1(buf_io_out[5]),
+	.CarryOut2(buf_io_out[4]),
+	.x(buf_io_out[9:6]),
+	.y(buf_io_out[0])
+);
+ endmodule	// user_project_wrapper
+
+ `default_nettype wire
diff --git a/verilog/rtl/macro_decap_3.v b/verilog/rtl/macro_decap_3.v
new file mode 100644
index 0000000..3545c4e
--- /dev/null
+++ b/verilog/rtl/macro_decap_3.v
@@ -0,0 +1,128 @@
+`default_nettype none
+
+`ifdef FORMAL
+    `define MPRJ_IO_PADS 38    
+`endif
+
+`define USE_LA  1
+`define USE_IO  1
+
+module macro_decap_3  (
+ `ifdef USE_POWER_PINS
+     inout vdda1,    // User area 1 3.3V supply
+     inout vdda2,    // User area 2 3.3V supply
+     inout vssa1,    // User area 1 analog ground
+     inout vssa2,    // User area 2 analog ground
+     inout vccd1,    // User area 1 1.8V supply
+     inout vccd2,    // User area 2 1.8v supply
+     inout vssd1,    // User area 1 digital ground
+     inout vssd2,    // User area 2 digital ground
+ `endif		
+
+	// Wishbone Slave ports (WB MI A)
+		 input wb_clk_i,
+		 input wb_rst_i,
+		 input wbs_stb_i,
+		 input wbs_cyc_i,
+		 input wbs_we_i,
+		 input [3:0] wbs_sel_i,
+		 input [31:0] wbs_dat_i,
+		 input [31:0] wbs_adr_i,
+		 output wbs_ack_o,
+		 output [31:0] wbs_dat_o,
+		
+		// // Logic Analyzer Signals
+	`ifdef USE_LA
+		 input  wire [127:0] la_data_in,
+		 output wire [127:0] la_data_out,
+		 input  wire [127:0] la_oenb,
+	 `endif	
+		// // IOs
+	`ifdef USE_IO
+		 input  wire [`MPRJ_IO_PADS-1:0] io_in,
+		 output wire [`MPRJ_IO_PADS-1:0] io_out,
+		 output wire [`MPRJ_IO_PADS-1:0] io_oeb,
+	 `endif	
+		// // Analog (direct connection to GPIO pad---use with
+		// caution)
+		// // Note that analog I/O is not available on the
+		// 7 lowest-numbered
+		// // GPIO pads, and so the analog_io indexing is offset from
+		// the
+		// // GPIO indexing by 7 (also upper 2 GPIOs do not have
+		// analog_io).
+//		 inout [`MPRJ_IO_PADS-10:0] analog_io,
+		
+		// // Independent clock (on independent integer divider)
+//		 input  wire user_clock2,
+		
+//		// // User maskable interrupt signals
+//		output wire [2:0] user_irq,
+
+		input wire io_active
+		 );
+		//
+		// /*--------------------------------------*/
+		// /* User project is instantiated  here   */
+		// /*--------------------------------------*/
+		//
+	reg [3:0] A0, B0, A1, B1;			//Inputs
+	reg [1:0] ALU_Sel1, ALU_Sel2;			//Select Signals
+	wire [3:0] ALU_Out1,ALU_Out2; 			// ALU 4-bit Output
+	wire CarryOut1,CarryOut2; 			// Carry Out Flag
+	wire [3:0] x;					//Compares ALU outputs
+	wire y;						//Compares Carry Outputs
+	wire clk;
+	wire [31:0] la1_data_out;
+	assign la1_data_out = la_data_out[63:32];
+	wire [31:0]                 buf_la1_data_out;		//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_out;			//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_oeb;			//Tri-stated
+
+ `ifdef FORMAL
+	 `ifdef USE_LA 
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'b0;	// formal verification
+ 	 `endif
+	 `ifdef USE_IO
+	 assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}}; 	//If active, the outputs are enabled at io_oeb
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};	//If active, the outputs are passed to io_out
+         `endif
+	 `include "properties.v"			//Checks for the tri-state buffer
+ 
+ `else
+	 `ifdef USE_LA
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'bz;
+         `endif
+	 `ifdef USE_IO
+         assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}};
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};
+ 	 `endif
+	 //$display("outputs and active is",io_out,active);
+ `endif
+
+  assign buf_io_oeb = {`MPRJ_IO_PADS{1'b0}}; //enabled
+
+ //ALU_XOR instantiated
+ 
+ alu_xor_4 u_alu_xor_4(
+`ifdef USE_POWER_PINS
+ .vccd1(vccd1),
+ .vssd1(vssd1),
+`endif
+	.clk(wb_clk_i),
+	.A0(io_in[21:18]),
+	.B0(io_in[25:22]),
+	.A1(io_in[29:26]),
+	.B1(io_in[33:30]),
+	.ALU_Sel1(io_in[35:34]),
+	.ALU_Sel2(io_in[37:36]),
+	.ALU_Out1(buf_io_out[17:14]),
+	.ALU_Out2(buf_io_out[13:10]),
+	.CarryOut1(buf_io_out[5]),
+	.CarryOut2(buf_io_out[4]),
+	.x(buf_io_out[9:6]),
+	.y(buf_io_out[0])
+);
+ endmodule	// user_project_wrapper
+
+ `default_nettype wire
diff --git a/verilog/rtl/macro_golden.v b/verilog/rtl/macro_golden.v
new file mode 100644
index 0000000..1f39689
--- /dev/null
+++ b/verilog/rtl/macro_golden.v
@@ -0,0 +1,128 @@
+`default_nettype none
+
+`ifdef FORMAL
+    `define MPRJ_IO_PADS 38    
+`endif
+
+`define USE_LA  1
+`define USE_IO  1
+
+module macro_golden  (
+ `ifdef USE_POWER_PINS
+     inout vdda1,    // User area 1 3.3V supply
+     inout vdda2,    // User area 2 3.3V supply
+     inout vssa1,    // User area 1 analog ground
+     inout vssa2,    // User area 2 analog ground
+     inout vccd1,    // User area 1 1.8V supply
+     inout vccd2,    // User area 2 1.8v supply
+     inout vssd1,    // User area 1 digital ground
+     inout vssd2,    // User area 2 digital ground
+ `endif		
+
+	// Wishbone Slave ports (WB MI A)
+		 input wb_clk_i,
+		 input wb_rst_i,
+		 input wbs_stb_i,
+		 input wbs_cyc_i,
+		 input wbs_we_i,
+		 input [3:0] wbs_sel_i,
+		 input [31:0] wbs_dat_i,
+		 input [31:0] wbs_adr_i,
+		 output wbs_ack_o,
+		 output [31:0] wbs_dat_o,
+		
+		// // Logic Analyzer Signals
+	`ifdef USE_LA
+		 input  wire [127:0] la_data_in,
+		 output wire [127:0] la_data_out,
+		 input  wire [127:0] la_oenb,
+	 `endif	
+		// // IOs
+	`ifdef USE_IO
+		 input  wire [`MPRJ_IO_PADS-1:0] io_in,
+		 output wire [`MPRJ_IO_PADS-1:0] io_out,
+		 output wire [`MPRJ_IO_PADS-1:0] io_oeb,
+	 `endif	
+		// // Analog (direct connection to GPIO pad---use with
+		// caution)
+		// // Note that analog I/O is not available on the
+		// 7 lowest-numbered
+		// // GPIO pads, and so the analog_io indexing is offset from
+		// the
+		// // GPIO indexing by 7 (also upper 2 GPIOs do not have
+		// analog_io).
+//		 inout [`MPRJ_IO_PADS-10:0] analog_io,
+		
+		// // Independent clock (on independent integer divider)
+//		 input  wire user_clock2,
+		
+//		// // User maskable interrupt signals
+//		output wire [2:0] user_irq,
+
+		input wire io_active
+		 );
+		//
+		// /*--------------------------------------*/
+		// /* User project is instantiated  here   */
+		// /*--------------------------------------*/
+		//
+	reg [3:0] A0, B0, A1, B1;			//Inputs
+	reg [1:0] ALU_Sel1, ALU_Sel2;			//Select Signals
+	wire [3:0] ALU_Out1,ALU_Out2; 			// ALU 4-bit Output
+	wire CarryOut1,CarryOut2; 			// Carry Out Flag
+	wire [3:0] x;					//Compares ALU outputs
+	wire y;						//Compares Carry Outputs
+	wire clk;
+	wire [31:0] la1_data_out;
+	assign la1_data_out = la_data_out[63:32];
+	wire [31:0]                 buf_la1_data_out;		//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_out;			//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_oeb;			//Tri-stated
+
+ `ifdef FORMAL
+	 `ifdef USE_LA 
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'b0;	// formal verification
+ 	 `endif
+	 `ifdef USE_IO
+	 assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}}; 	//If active, the outputs are enabled at io_oeb
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};	//If active, the outputs are passed to io_out
+         `endif
+	 `include "properties.v"			//Checks for the tri-state buffer
+ 
+ `else
+	 `ifdef USE_LA
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'bz;
+         `endif
+	 `ifdef USE_IO
+         assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}};
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};
+ 	 `endif
+	 //$display("outputs and active is",io_out,active);
+ `endif
+
+  assign buf_io_oeb = {`MPRJ_IO_PADS{1'b0}}; //enabled
+
+ //ALU_XOR instantiated
+ 
+ alu_xor_4 u_alu_xor_4(
+`ifdef USE_POWER_PINS
+ .vccd1(vccd1),
+ .vssd1(vssd1),
+`endif
+	.clk(wb_clk_i),
+	.A0(io_in[21:18]),
+	.B0(io_in[25:22]),
+	.A1(io_in[29:26]),
+	.B1(io_in[33:30]),
+	.ALU_Sel1(io_in[35:34]),
+	.ALU_Sel2(io_in[37:36]),
+	.ALU_Out1(buf_io_out[17:14]),
+	.ALU_Out2(buf_io_out[13:10]),
+	.CarryOut1(buf_io_out[5]),
+	.CarryOut2(buf_io_out[4]),
+	.x(buf_io_out[9:6]),
+	.y(buf_io_out[0])
+);
+ endmodule	// user_project_wrapper
+
+ `default_nettype wire
diff --git a/verilog/rtl/macro_nodecap.v b/verilog/rtl/macro_nodecap.v
new file mode 100644
index 0000000..08d6559
--- /dev/null
+++ b/verilog/rtl/macro_nodecap.v
@@ -0,0 +1,128 @@
+`default_nettype none
+
+`ifdef FORMAL
+    `define MPRJ_IO_PADS 38    
+`endif
+
+`define USE_LA  1
+`define USE_IO  1
+
+module macro_nodecap  (
+ `ifdef USE_POWER_PINS
+     inout vdda1,    // User area 1 3.3V supply
+     inout vdda2,    // User area 2 3.3V supply
+     inout vssa1,    // User area 1 analog ground
+     inout vssa2,    // User area 2 analog ground
+     inout vccd1,    // User area 1 1.8V supply
+     inout vccd2,    // User area 2 1.8v supply
+     inout vssd1,    // User area 1 digital ground
+     inout vssd2,    // User area 2 digital ground
+ `endif		
+
+	// Wishbone Slave ports (WB MI A)
+		 input wb_clk_i,
+		 input wb_rst_i,
+		 input wbs_stb_i,
+		 input wbs_cyc_i,
+		 input wbs_we_i,
+		 input [3:0] wbs_sel_i,
+		 input [31:0] wbs_dat_i,
+		 input [31:0] wbs_adr_i,
+		 output wbs_ack_o,
+		 output [31:0] wbs_dat_o,
+		
+		// // Logic Analyzer Signals
+	`ifdef USE_LA
+		 input  wire [127:0] la_data_in,
+		 output wire [127:0] la_data_out,
+		 input  wire [127:0] la_oenb,
+	 `endif	
+		// // IOs
+	`ifdef USE_IO
+		 input  wire [`MPRJ_IO_PADS-1:0] io_in,
+		 output wire [`MPRJ_IO_PADS-1:0] io_out,
+		 output wire [`MPRJ_IO_PADS-1:0] io_oeb,
+	 `endif	
+		// // Analog (direct connection to GPIO pad---use with
+		// caution)
+		// // Note that analog I/O is not available on the
+		// 7 lowest-numbered
+		// // GPIO pads, and so the analog_io indexing is offset from
+		// the
+		// // GPIO indexing by 7 (also upper 2 GPIOs do not have
+		// analog_io).
+//		 inout [`MPRJ_IO_PADS-10:0] analog_io,
+		
+		// // Independent clock (on independent integer divider)
+//		 input  wire user_clock2,
+		
+//		// // User maskable interrupt signals
+//		output wire [2:0] user_irq,
+
+		input wire io_active
+		 );
+		//
+		// /*--------------------------------------*/
+		// /* User project is instantiated  here   */
+		// /*--------------------------------------*/
+		//
+	reg [3:0] A0, B0, A1, B1;			//Inputs
+	reg [1:0] ALU_Sel1, ALU_Sel2;			//Select Signals
+	wire [3:0] ALU_Out1,ALU_Out2; 			// ALU 4-bit Output
+	wire CarryOut1,CarryOut2; 			// Carry Out Flag
+	wire [3:0] x;					//Compares ALU outputs
+	wire y;						//Compares Carry Outputs
+	wire clk;
+	wire [31:0] la1_data_out;
+	assign la1_data_out = la_data_out[63:32];
+	wire [31:0]                 buf_la1_data_out;		//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_out;			//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_oeb;			//Tri-stated
+
+ `ifdef FORMAL
+	 `ifdef USE_LA 
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'b0;	// formal verification
+ 	 `endif
+	 `ifdef USE_IO
+	 assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}}; 	//If active, the outputs are enabled at io_oeb
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};	//If active, the outputs are passed to io_out
+         `endif
+	 `include "properties.v"			//Checks for the tri-state buffer
+ 
+ `else
+	 `ifdef USE_LA
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'bz;
+         `endif
+	 `ifdef USE_IO
+         assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}};
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};
+ 	 `endif
+	 //$display("outputs and active is",io_out,active);
+ `endif
+
+  assign buf_io_oeb = {`MPRJ_IO_PADS{1'b0}}; //enabled
+
+ //ALU_XOR instantiated
+ 
+ alu_xor_4 u_alu_xor_4(
+`ifdef USE_POWER_PINS
+ .vccd1(vccd1),
+ .vssd1(vssd1),
+`endif
+	.clk(wb_clk_i),
+	.A0(io_in[21:18]),
+	.B0(io_in[25:22]),
+	.A1(io_in[29:26]),
+	.B1(io_in[33:30]),
+	.ALU_Sel1(io_in[35:34]),
+	.ALU_Sel2(io_in[37:36]),
+	.ALU_Out1(buf_io_out[17:14]),
+	.ALU_Out2(buf_io_out[13:10]),
+	.CarryOut1(buf_io_out[5]),
+	.CarryOut2(buf_io_out[4]),
+	.x(buf_io_out[9:6]),
+	.y(buf_io_out[0])
+);
+ endmodule	// user_project_wrapper
+
+ `default_nettype wire
diff --git a/verilog/rtl/macro_nofill.v b/verilog/rtl/macro_nofill.v
new file mode 100644
index 0000000..5e994df
--- /dev/null
+++ b/verilog/rtl/macro_nofill.v
@@ -0,0 +1,128 @@
+`default_nettype none
+
+`ifdef FORMAL
+    `define MPRJ_IO_PADS 38    
+`endif
+
+`define USE_LA  1
+`define USE_IO  1
+
+module macro_nofill  (
+ `ifdef USE_POWER_PINS
+     inout vdda1,    // User area 1 3.3V supply
+     inout vdda2,    // User area 2 3.3V supply
+     inout vssa1,    // User area 1 analog ground
+     inout vssa2,    // User area 2 analog ground
+     inout vccd1,    // User area 1 1.8V supply
+     inout vccd2,    // User area 2 1.8v supply
+     inout vssd1,    // User area 1 digital ground
+     inout vssd2,    // User area 2 digital ground
+ `endif		
+
+	// Wishbone Slave ports (WB MI A)
+		 input wb_clk_i,
+		 input wb_rst_i,
+		 input wbs_stb_i,
+		 input wbs_cyc_i,
+		 input wbs_we_i,
+		 input [3:0] wbs_sel_i,
+		 input [31:0] wbs_dat_i,
+		 input [31:0] wbs_adr_i,
+		 output wbs_ack_o,
+		 output [31:0] wbs_dat_o,
+		
+		// // Logic Analyzer Signals
+	`ifdef USE_LA
+		 input  wire [127:0] la_data_in,
+		 output wire [127:0] la_data_out,
+		 input  wire [127:0] la_oenb,
+	 `endif	
+		// // IOs
+	`ifdef USE_IO
+		 input  wire [`MPRJ_IO_PADS-1:0] io_in,
+		 output wire [`MPRJ_IO_PADS-1:0] io_out,
+		 output wire [`MPRJ_IO_PADS-1:0] io_oeb,
+	 `endif	
+		// // Analog (direct connection to GPIO pad---use with
+		// caution)
+		// // Note that analog I/O is not available on the
+		// 7 lowest-numbered
+		// // GPIO pads, and so the analog_io indexing is offset from
+		// the
+		// // GPIO indexing by 7 (also upper 2 GPIOs do not have
+		// analog_io).
+//		 inout [`MPRJ_IO_PADS-10:0] analog_io,
+		
+		// // Independent clock (on independent integer divider)
+//		 input  wire user_clock2,
+		
+//		// // User maskable interrupt signals
+//		output wire [2:0] user_irq,
+
+		input wire io_active
+		 );
+		//
+		// /*--------------------------------------*/
+		// /* User project is instantiated  here   */
+		// /*--------------------------------------*/
+		//
+	reg [3:0] A0, B0, A1, B1;			//Inputs
+	reg [1:0] ALU_Sel1, ALU_Sel2;			//Select Signals
+	wire [3:0] ALU_Out1,ALU_Out2; 			// ALU 4-bit Output
+	wire CarryOut1,CarryOut2; 			// Carry Out Flag
+	wire [3:0] x;					//Compares ALU outputs
+	wire y;						//Compares Carry Outputs
+	wire clk;
+	wire [31:0] la1_data_out;
+	assign la1_data_out = la_data_out[63:32];
+	wire [31:0]                 buf_la1_data_out;		//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_out;			//Tri-stated
+	wire [`MPRJ_IO_PADS-1:0]    buf_io_oeb;			//Tri-stated
+
+ `ifdef FORMAL
+	 `ifdef USE_LA 
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'b0;	// formal verification
+ 	 `endif
+	 `ifdef USE_IO
+	 assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}}; 	//If active, the outputs are enabled at io_oeb
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};	//If active, the outputs are passed to io_out
+         `endif
+	 `include "properties.v"			//Checks for the tri-state buffer
+ 
+ `else
+	 `ifdef USE_LA
+	 assign la1_data_out = io_active ? buf_la1_data_out  : 32'bz;
+         `endif
+	 `ifdef USE_IO
+         assign io_oeb       = io_active ? buf_io_oeb       : {`MPRJ_IO_PADS{1'b0}};
+	 assign io_out       = io_active ? buf_io_out       : {`MPRJ_IO_PADS{1'b0}};
+ 	 `endif
+	 //$display("outputs and active is",io_out,active);
+ `endif
+
+  assign buf_io_oeb = {`MPRJ_IO_PADS{1'b0}}; //enabled
+
+ //ALU_XOR instantiated
+ 
+ alu_xor_4 u_alu_xor_4(
+`ifdef USE_POWER_PINS
+ .vccd1(vccd1),
+ .vssd1(vssd1),
+`endif
+	.clk(wb_clk_i),
+	.A0(io_in[21:18]),
+	.B0(io_in[25:22]),
+	.A1(io_in[29:26]),
+	.B1(io_in[33:30]),
+	.ALU_Sel1(io_in[35:34]),
+	.ALU_Sel2(io_in[37:36]),
+	.ALU_Out1(buf_io_out[17:14]),
+	.ALU_Out2(buf_io_out[13:10]),
+	.CarryOut1(buf_io_out[5]),
+	.CarryOut2(buf_io_out[4]),
+	.x(buf_io_out[9:6]),
+	.y(buf_io_out[0])
+);
+ endmodule	// user_project_wrapper
+
+ `default_nettype wire