OpenFPGA/openfpga_flow/benchmarks/vtr_benchmark/mcml.v

25023 lines
662 KiB
Verilog
Executable File

// Skeleton
// Reads constants and instantiates all modules used by the hardware components
//parameter BIT_WIDTH=32;
//parameter LAYER_WIDTH=3;
`define TRIG_WIDTH 5'b01010 //10;
`define PIPELINE_DEPTH_UPPER_LIMIT 10'b0100000000 //256;
`define ABSORB_ADDR_WIDTH 6'b010000 //16;
`define ABSORB_WORD_WIDTH 7'b01000000 //64;
`define WSCALE 22'b0111010100101111111111 //1919999;
//From Roulette
//`define BIT_WIDTH 7'b0100000
//`define LAYER_WIDTH 6'b000011
`define LEFTSHIFT 6'b000011 // 2^3=8=1/0.125 where 0.125 = CHANCE of roulette
`define INTCHANCE 32'b00100000000000000000000000000000 //Based on 32 bit rand num generator
`define MIN_WEIGHT 9'b011001000
// From Boundary
`define BIT_WIDTH 7'b0100000
`define LAYER_WIDTH 6'b000011
`define INTMAX 32'b01111111111111111111111111111111
`define INTMIN 32'b10000000000000000000000000000000
`define DIVIDER_LATENCY 6'b011110
`define FINAL_LATENCY 6'b011100
`define MULT_LATENCY 1'b1
`define ASPECT_RATIO 6'b000111
`define TOTAL_LATENCY 7'b0111100
//From Move
//`define BIT_WIDTH 6'b100000
//`define LAYER_WIDTH 6'b000011
`define LOGSCALEFACTOR 6'b000101
`define MAXLOG 32'b10110001011100100001011111110111 //Based on 32 bit unsigned rand num generator
`define CONST_MOVE_AMOUNT 15'b110000110101000 //Used for testing purposes only
`define MUTMAX_BITS 6'b001111
//From Hop
//`define BIT_WIDTH 6'b100000
//`define LAYER_WIDTH 6'b000011
//`define INTMAX 32'b01111111111111111111111111111111
//`define INTMIN 32'b10000000000000000000000000000000
//From LogCalc
//`define BIT_WIDTH 7'b0100000
`define MANTISSA_PRECISION 6'b001010
`define LOG2_BIT_WIDTH 6'b000110
`define LOG2 28'b0101100010111001000010111111
//From DropSpinWrapper
`define NR 10'b0100000000
`define NZ 10'b0100000000
`define NR_EXP 5'b01000 //meaning `NR=2^`NR_exp or 2^8=256
`define RGRID_SCLAE_EXP 6'b010101 //2^21 = RGRID_SCALE
`define ZGRID_SCLAE_EXP 6'b010101 //2^21 = ZGRID_SCALE
//`define BIT_WIDTH 7'b0100000
`define BIT_WIDTH_2 8'b01000000
`define WORD_WIDTH 8'b01000000
`define ADDR_WIDTH 6'b010000 //256x256=2^8*2^8=2^16
//From scatterer:
`define DIV 6'b010100//20;
`define SQRT 5'b01010 //10;
`define LAT 7'b0100101 //DIV + SQRT + 7;
`define INTMAX_2 {32'h3FFFFFFF,32'h00000001}
//`define INTMAX 32'b01111111111111111111111111111111//2147483647;
//`define INTMIN 32'b10000000000000000000000000000001//-2147483647;
`define INTMAXMinus3 32'b01111111111111111111111111111100//2147483644;
`define negINTMAXPlus3 32'b10000000000000000000000000000100//-2147483644;
//From Reflector:
`define INTMAX_2_ref {32'h3FFFFFFF,32'hFFFFFFFF}
module mcml (
reset,
clk,
constants,
read_constants,
result,
inc_result,
calc_in_progress
);
// Total number of constants
//parameter LAST_CONSTANT = 104;
//parameter NUM_FRESNELS = 128;
//parameter NUM_TRIG_ELS = 1024;
//parameter ABSORB_ADDR_WIDTH=16;
//parameter ABSORB_WORD_WIDTH=64;
//parameter BIT_WIDTH = 32;
input reset;
input clk;
input [31:0] constants;
input read_constants;
input inc_result;
output calc_in_progress;
output [31:0] result;
reg calc_in_progress;
reg [31:0] result;
//integer i;
wire [31:0] mem_fres_up, mem_fres_down, mem_sint, mem_cost;
// photon calculator
wire reset;
// Scatterer Reflector memory look-up
wire [12:0] tindex;
wire [9:0] fresIndex;
// DeadOrAlive Module (nothing)
// Final results
wire [16-1:0] absorb_rdaddress, absorb_wraddress;
wire absorb_wren;
wire [64-1:0] absorb_data;
wire [64-1:0] absorb_q;
// Flag when final results ready
wire done;
reg enable;
reg reset_calculator;
// Combinational drivers
//reg [31:0] c_const[104 - 1:0];
reg [31:0] c_const__103;
reg [31:0] c_const__102;
reg [31:0] c_const__101;
reg [31:0] c_const__100;
reg [31:0] c_const__99;
reg [31:0] c_const__98;
reg [31:0] c_const__97;
reg [31:0] c_const__96;
reg [31:0] c_const__95;
reg [31:0] c_const__94;
reg [31:0] c_const__93;
reg [31:0] c_const__92;
reg [31:0] c_const__91;
reg [31:0] c_const__90;
reg [31:0] c_const__89;
reg [31:0] c_const__88;
reg [31:0] c_const__87;
reg [31:0] c_const__86;
reg [31:0] c_const__85;
reg [31:0] c_const__84;
reg [31:0] c_const__83;
reg [31:0] c_const__82;
reg [31:0] c_const__81;
reg [31:0] c_const__80;
reg [31:0] c_const__79;
reg [31:0] c_const__78;
reg [31:0] c_const__77;
reg [31:0] c_const__76;
reg [31:0] c_const__75;
reg [31:0] c_const__74;
reg [31:0] c_const__73;
reg [31:0] c_const__72;
reg [31:0] c_const__71;
reg [31:0] c_const__70;
reg [31:0] c_const__69;
reg [31:0] c_const__68;
reg [31:0] c_const__67;
reg [31:0] c_const__66;
reg [31:0] c_const__65;
reg [31:0] c_const__64;
reg [31:0] c_const__63;
reg [31:0] c_const__62;
reg [31:0] c_const__61;
reg [31:0] c_const__60;
reg [31:0] c_const__59;
reg [31:0] c_const__58;
reg [31:0] c_const__57;
reg [31:0] c_const__56;
reg [31:0] c_const__55;
reg [31:0] c_const__54;
reg [31:0] c_const__53;
reg [31:0] c_const__52;
reg [31:0] c_const__51;
reg [31:0] c_const__50;
reg [31:0] c_const__49;
reg [31:0] c_const__48;
reg [31:0] c_const__47;
reg [31:0] c_const__46;
reg [31:0] c_const__45;
reg [31:0] c_const__44;
reg [31:0] c_const__43;
reg [31:0] c_const__42;
reg [31:0] c_const__41;
reg [31:0] c_const__40;
reg [31:0] c_const__39;
reg [31:0] c_const__38;
reg [31:0] c_const__37;
reg [31:0] c_const__36;
reg [31:0] c_const__35;
reg [31:0] c_const__34;
reg [31:0] c_const__33;
reg [31:0] c_const__32;
reg [31:0] c_const__31;
reg [31:0] c_const__30;
reg [31:0] c_const__29;
reg [31:0] c_const__28;
reg [31:0] c_const__27;
reg [31:0] c_const__26;
reg [31:0] c_const__25;
reg [31:0] c_const__24;
reg [31:0] c_const__23;
reg [31:0] c_const__22;
reg [31:0] c_const__21;
reg [31:0] c_const__20;
reg [31:0] c_const__19;
reg [31:0] c_const__18;
reg [31:0] c_const__17;
reg [31:0] c_const__16;
reg [31:0] c_const__15;
reg [31:0] c_const__14;
reg [31:0] c_const__13;
reg [31:0] c_const__12;
reg [31:0] c_const__11;
reg [31:0] c_const__10;
reg [31:0] c_const__9;
reg [31:0] c_const__8;
reg [31:0] c_const__7;
reg [31:0] c_const__6;
reg [31:0] c_const__5;
reg [31:0] c_const__4;
reg [31:0] c_const__3;
reg [31:0] c_const__2;
reg [31:0] c_const__1;
reg [31:0] c_const__0;
reg [12:0] c_counter;
reg c_toggle;
reg [16-1:0] c_absorb_read_counter, c_absorb_write_counter;
reg [16-1:0] absorb_rdaddress_mux, absorb_wraddress_mux;
reg [64-1:0] absorb_data_mux;
reg absorb_wren_mux;
reg [3:0] c_state;
reg [31:0] c_result;
reg c_calc_in_progress;
reg wren_fres_up, wren_fres_down, wren_sinp, wren_cosp, wren_sint, wren_cost;
reg [2:0] mem_layer;
// Registered drivers
//reg [31:0] r_const[104 - 1:0];
reg [31:0] r_const__103;
reg [31:0] r_const__102;
reg [31:0] r_const__101;
reg [31:0] r_const__100;
reg [31:0] r_const__99;
reg [31:0] r_const__98;
reg [31:0] r_const__97;
reg [31:0] r_const__96;
reg [31:0] r_const__95;
reg [31:0] r_const__94;
reg [31:0] r_const__93;
reg [31:0] r_const__92;
reg [31:0] r_const__91;
reg [31:0] r_const__90;
reg [31:0] r_const__89;
reg [31:0] r_const__88;
reg [31:0] r_const__87;
reg [31:0] r_const__86;
reg [31:0] r_const__85;
reg [31:0] r_const__84;
reg [31:0] r_const__83;
reg [31:0] r_const__82;
reg [31:0] r_const__81;
reg [31:0] r_const__80;
reg [31:0] r_const__79;
reg [31:0] r_const__78;
reg [31:0] r_const__77;
reg [31:0] r_const__76;
reg [31:0] r_const__75;
reg [31:0] r_const__74;
reg [31:0] r_const__73;
reg [31:0] r_const__72;
reg [31:0] r_const__71;
reg [31:0] r_const__70;
reg [31:0] r_const__69;
reg [31:0] r_const__68;
reg [31:0] r_const__67;
reg [31:0] r_const__66;
reg [31:0] r_const__65;
reg [31:0] r_const__64;
reg [31:0] r_const__63;
reg [31:0] r_const__62;
reg [31:0] r_const__61;
reg [31:0] r_const__60;
reg [31:0] r_const__59;
reg [31:0] r_const__58;
reg [31:0] r_const__57;
reg [31:0] r_const__56;
reg [31:0] r_const__55;
reg [31:0] r_const__54;
reg [31:0] r_const__53;
reg [31:0] r_const__52;
reg [31:0] r_const__51;
reg [31:0] r_const__50;
reg [31:0] r_const__49;
reg [31:0] r_const__48;
reg [31:0] r_const__47;
reg [31:0] r_const__46;
reg [31:0] r_const__45;
reg [31:0] r_const__44;
reg [31:0] r_const__43;
reg [31:0] r_const__42;
reg [31:0] r_const__41;
reg [31:0] r_const__40;
reg [31:0] r_const__39;
reg [31:0] r_const__38;
reg [31:0] r_const__37;
reg [31:0] r_const__36;
reg [31:0] r_const__35;
reg [31:0] r_const__34;
reg [31:0] r_const__33;
reg [31:0] r_const__32;
reg [31:0] r_const__31;
reg [31:0] r_const__30;
reg [31:0] r_const__29;
reg [31:0] r_const__28;
reg [31:0] r_const__27;
reg [31:0] r_const__26;
reg [31:0] r_const__25;
reg [31:0] r_const__24;
reg [31:0] r_const__23;
reg [31:0] r_const__22;
reg [31:0] r_const__21;
reg [31:0] r_const__20;
reg [31:0] r_const__19;
reg [31:0] r_const__18;
reg [31:0] r_const__17;
reg [31:0] r_const__16;
reg [31:0] r_const__15;
reg [31:0] r_const__14;
reg [31:0] r_const__13;
reg [31:0] r_const__12;
reg [31:0] r_const__11;
reg [31:0] r_const__10;
reg [31:0] r_const__9;
reg [31:0] r_const__8;
reg [31:0] r_const__7;
reg [31:0] r_const__6;
reg [31:0] r_const__5;
reg [31:0] r_const__4;
reg [31:0] r_const__3;
reg [31:0] r_const__2;
reg [31:0] r_const__1;
reg [31:0] r_const__0;
reg [12:0] r_counter;
reg [16-1:0] r_absorb_read_counter;
reg [16-1:0] r_absorb_write_counter;
reg [3:0] r_state;
reg r_toggle;
// Skeleton program states
parameter [3:0] ERROR_ST = 4'b0000,
READ1_ST = 4'b0001,
READ2_ST = 4'b0010,
READ3_ST = 4'b0011,
READ4_ST = 4'b0100,
READ5_ST = 4'b0101,
RESET_MEM_ST = 4'b0110,
CALC_ST = 4'b1000,
DONE1_ST = 4'b1001,
DONE2_ST = 4'b1010,
DONE3_ST = 4'b1011,
DONE4_ST = 4'b1100,
DONE5_ST = 4'b1101,
DONE6_ST = 4'b1110;
// Instantiate lookup memories
dual_port_mem_zz u_fres_up(clk, constants, {3'b0, fresIndex}, {3'b0, mem_layer, r_counter[6:0]}, wren_fres_up, mem_fres_up);
dual_port_mem_yy u_fres_down(clk, constants, {3'b0, fresIndex}, {3'b0, mem_layer, r_counter[6:0]}, wren_fres_down, mem_fres_down);
dual_port_mem_xx u_sint(clk, constants, tindex, {mem_layer, r_counter[9:0]}, wren_sint, mem_sint);
dual_port_mem_ww u_cost(clk, constants, tindex, {mem_layer, r_counter[9:0]}, wren_cost, mem_cost);
// Reduce size of absorption matrix
dual absorptionMatrix( .clk (clk), .data(absorb_data_mux[35:0]),
.rdaddress(absorb_rdaddress_mux), .wraddress(absorb_wraddress_mux),
.wren(absorb_wren_mux), .q(absorb_q[35:0]));
dual2 absorptionMatrix2( .clk (clk), .data(absorb_data_mux[53:36]),
.rdaddress(absorb_rdaddress_mux), .wraddress(absorb_wraddress_mux),
.wren(absorb_wren_mux), .q(absorb_q[53:36]));
dual3 absorptionMatrix3( .clk (clk), .data(absorb_data_mux[61:54]),
.rdaddress(absorb_rdaddress_mux), .wraddress(absorb_wraddress_mux),
.wren(absorb_wren_mux), .q(absorb_q[61:54]));
//
//peter m test since absorb_q not defined for 63:62
assign absorb_q[63:62] = 2'b00;
PhotonCalculator u_calc (
.clock(clk), .reset(reset_calculator), .enable(enable),
// CONSTANTS
.total_photons(r_const__0),
.randseed1(r_const__19), .randseed2(r_const__20), .randseed3(r_const__21), .randseed4(r_const__22), .randseed5(r_const__23),
//Because it is in the module:
.initialWeight(32'b00000000000111010100101111111111),
// Mover
.OneOver_MutMaxrad_0(r_const__32), .OneOver_MutMaxrad_1(r_const__33), .OneOver_MutMaxrad_2(r_const__34), .OneOver_MutMaxrad_3(r_const__35), .OneOver_MutMaxrad_4(r_const__36), .OneOver_MutMaxrad_5(r_const__37),
.OneOver_MutMaxdep_0(r_const__38), .OneOver_MutMaxdep_1(r_const__39), .OneOver_MutMaxdep_2(r_const__40), .OneOver_MutMaxdep_3(r_const__41), .OneOver_MutMaxdep_4(r_const__42), .OneOver_MutMaxdep_5(r_const__43),
.OneOver_Mut_0(r_const__26), .OneOver_Mut_1(r_const__27), .OneOver_Mut_2(r_const__28), .OneOver_Mut_3(r_const__29), .OneOver_Mut_4(r_const__30), .OneOver_Mut_5(r_const__31),
// BoundaryChecker
.z1_0(r_const__50), .z1_1(r_const__51), .z1_2(r_const__52), .z1_3(r_const__53), .z1_4(r_const__54), .z1_5(r_const__55),
.z0_0(r_const__44), .z0_1(r_const__45), .z0_2(r_const__46), .z0_3(r_const__47), .z0_4(r_const__48), .z0_5(r_const__49),
.mut_0(32'b00000000000000000000000000000000), .mut_1(r_const__2), .mut_2(r_const__3), .mut_3(r_const__4), .mut_4(r_const__5), .mut_5(r_const__6),
.maxDepth_over_maxRadius(r_const__1),
// Hop (no constants)
// Scatterer Reflector Wrapper
.down_niOverNt_1(r_const__69), .down_niOverNt_2(r_const__70), .down_niOverNt_3(r_const__71), .down_niOverNt_4(r_const__72), .down_niOverNt_5(r_const__73),
.up_niOverNt_1(r_const__75), .up_niOverNt_2(r_const__76), .up_niOverNt_3(r_const__77), .up_niOverNt_4(r_const__78), .up_niOverNt_5(r_const__79),
.down_niOverNt_2_1({r_const__81,r_const__87}), .down_niOverNt_2_2({r_const__82,r_const__88}), .down_niOverNt_2_3({r_const__83,r_const__89}), .down_niOverNt_2_4({r_const__84,r_const__90}), .down_niOverNt_2_5({r_const__85,r_const__91}),
.up_niOverNt_2_1({r_const__93,r_const__99}), .up_niOverNt_2_2({r_const__94,r_const__100}), .up_niOverNt_2_3({r_const__95,r_const__101}), .up_niOverNt_2_4({r_const__96,r_const__102}), .up_niOverNt_2_5({r_const__97,r_const__103}),
.downCritAngle_0(r_const__7), .downCritAngle_1(r_const__8), .downCritAngle_2(r_const__9), .downCritAngle_3(r_const__10), .downCritAngle_4(r_const__11),
.upCritAngle_0(r_const__13), .upCritAngle_1(r_const__14), .upCritAngle_2(r_const__15), .upCritAngle_3(r_const__16), .upCritAngle_4(r_const__17),
.muaFraction1(r_const__57), .muaFraction2(r_const__58), .muaFraction3(r_const__59), .muaFraction4(r_const__60), .muaFraction5(r_const__61),
// Interface to memory look-up
// From Memories
.up_rFresnel(mem_fres_up), .down_rFresnel(mem_fres_down), .sint(mem_sint), .cost(mem_cost),
// To Memories
.tindex(tindex), .fresIndex(fresIndex),
// DeadOrAlive (no Constants)
// Absorber
.absorb_data(absorb_data), .absorb_rdaddress(absorb_rdaddress), .absorb_wraddress(absorb_wraddress),
.absorb_wren(absorb_wren), .absorb_q(absorb_q),
// Done signal
.done(done)
);
// Mux to read the absorbtion array
always @(r_state or done or r_absorb_read_counter or r_absorb_write_counter or absorb_wraddress or absorb_data or absorb_rdaddress or absorb_data or absorb_wren )
begin
if(r_state == RESET_MEM_ST)
begin
absorb_wren_mux = 1'b1;
absorb_data_mux = 64'b0;
absorb_rdaddress_mux = r_absorb_read_counter;
absorb_wraddress_mux = r_absorb_write_counter;
end
else if(done == 1'b1)
begin
absorb_rdaddress_mux = r_absorb_read_counter;
absorb_wraddress_mux = absorb_wraddress;
absorb_data_mux = absorb_data;
absorb_wren_mux = 1'b0;
end
else
begin
absorb_rdaddress_mux = absorb_rdaddress;
absorb_wraddress_mux = absorb_wraddress;
absorb_data_mux = absorb_data;
absorb_wren_mux = absorb_wren;
end
end
// Skeleton SW/HW interface
// 1. Read constants
// 2. Wait for completion
// 3. Write data back
always @(r_state or r_absorb_read_counter or r_absorb_write_counter or result or r_toggle or r_counter or read_constants or constants or done
or inc_result or mem_cost or mem_sint or absorb_q
or r_const__103
or r_const__102
or r_const__101
or r_const__100
or r_const__99
or r_const__98
or r_const__97
or r_const__96
or r_const__95
or r_const__94
or r_const__93
or r_const__92
or r_const__91
or r_const__90
or r_const__89
or r_const__88
or r_const__87
or r_const__86
or r_const__85
or r_const__84
or r_const__83
or r_const__82
or r_const__81
or r_const__80
or r_const__79
or r_const__78
or r_const__77
or r_const__76
or r_const__75
or r_const__74
or r_const__73
or r_const__72
or r_const__71
or r_const__70
or r_const__69
or r_const__68
or r_const__67
or r_const__66
or r_const__65
or r_const__64
or r_const__63
or r_const__62
or r_const__61
or r_const__60
or r_const__59
or r_const__58
or r_const__57
or r_const__56
or r_const__55
or r_const__54
or r_const__53
or r_const__52
or r_const__51
or r_const__50
or r_const__49
or r_const__48
or r_const__47
or r_const__46
or r_const__45
or r_const__44
or r_const__43
or r_const__42
or r_const__41
or r_const__40
or r_const__39
or r_const__38
or r_const__37
or r_const__36
or r_const__35
or r_const__34
or r_const__33
or r_const__32
or r_const__31
or r_const__30
or r_const__29
or r_const__28
or r_const__27
or r_const__26
or r_const__25
or r_const__24
or r_const__23
or r_const__22
or r_const__21
or r_const__20
or r_const__19
or r_const__18
or r_const__17
or r_const__16
or r_const__15
or r_const__14
or r_const__13
or r_const__12
or r_const__11
or r_const__10
or r_const__9
or r_const__8
or r_const__7
or r_const__6
or r_const__5
or r_const__4
or r_const__3
or r_const__2
or r_const__1
or r_const__0) begin
// Initialize data
//for(i = 0; i < 104; i = i + 1) begin
// c_const[i] = r_const[i];
//end
begin
//c_const__103 = r_const__103;
c_const__102 = r_const__102;
c_const__101 = r_const__101;
c_const__100 = r_const__100;
c_const__99 = r_const__99;
c_const__98 = r_const__98;
c_const__97 = r_const__97;
c_const__96 = r_const__96;
c_const__95 = r_const__95;
c_const__94 = r_const__94;
c_const__93 = r_const__93;
c_const__92 = r_const__92;
c_const__91 = r_const__91;
c_const__90 = r_const__90;
c_const__89 = r_const__89;
c_const__88 = r_const__88;
c_const__87 = r_const__87;
c_const__86 = r_const__86;
c_const__85 = r_const__85;
c_const__84 = r_const__84;
c_const__83 = r_const__83;
c_const__82 = r_const__82;
c_const__81 = r_const__81;
c_const__80 = r_const__80;
c_const__79 = r_const__79;
c_const__78 = r_const__78;
c_const__77 = r_const__77;
c_const__76 = r_const__76;
c_const__75 = r_const__75;
c_const__74 = r_const__74;
c_const__73 = r_const__73;
c_const__72 = r_const__72;
c_const__71 = r_const__71;
c_const__70 = r_const__70;
c_const__69 = r_const__69;
c_const__68 = r_const__68;
c_const__67 = r_const__67;
c_const__66 = r_const__66;
c_const__65 = r_const__65;
c_const__64 = r_const__64;
c_const__63 = r_const__63;
c_const__62 = r_const__62;
c_const__61 = r_const__61;
c_const__60 = r_const__60;
c_const__59 = r_const__59;
c_const__58 = r_const__58;
c_const__57 = r_const__57;
c_const__56 = r_const__56;
c_const__55 = r_const__55;
c_const__54 = r_const__54;
c_const__53 = r_const__53;
c_const__52 = r_const__52;
c_const__51 = r_const__51;
c_const__50 = r_const__50;
c_const__49 = r_const__49;
c_const__48 = r_const__48;
c_const__47 = r_const__47;
c_const__46 = r_const__46;
c_const__45 = r_const__45;
c_const__44 = r_const__44;
c_const__43 = r_const__43;
c_const__42 = r_const__42;
c_const__41 = r_const__41;
c_const__40 = r_const__40;
c_const__39 = r_const__39;
c_const__38 = r_const__38;
c_const__37 = r_const__37;
c_const__36 = r_const__36;
c_const__35 = r_const__35;
c_const__34 = r_const__34;
c_const__33 = r_const__33;
c_const__32 = r_const__32;
c_const__31 = r_const__31;
c_const__30 = r_const__30;
c_const__29 = r_const__29;
c_const__28 = r_const__28;
c_const__27 = r_const__27;
c_const__26 = r_const__26;
c_const__25 = r_const__25;
c_const__24 = r_const__24;
c_const__23 = r_const__23;
c_const__22 = r_const__22;
c_const__21 = r_const__21;
c_const__20 = r_const__20;
c_const__19 = r_const__19;
c_const__18 = r_const__18;
c_const__17 = r_const__17;
c_const__16 = r_const__16;
c_const__15 = r_const__15;
c_const__14 = r_const__14;
c_const__13 = r_const__13;
c_const__12 = r_const__12;
c_const__11 = r_const__11;
c_const__10 = r_const__10;
c_const__9 = r_const__9;
c_const__8 = r_const__8;
c_const__7 = r_const__7;
c_const__6 = r_const__6;
c_const__5 = r_const__5;
c_const__4 = r_const__4;
c_const__3 = r_const__3;
c_const__2 = r_const__2;
c_const__1 = r_const__1;
c_const__0 = r_const__0;
end
/*
//honourary c_const__103 = r_const__103
c_counter = r_counter;
c_absorb_read_counter = r_absorb_read_counter;
c_result = result;
c_calc_in_progress = 1'b0;
c_state = r_state;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
c_toggle = r_toggle;
mem_layer = r_counter[12:10];
*/
// Determine next state and which data changes
case(r_state)
//ERROR_ST:
READ1_ST:
begin
if(read_constants)
begin
// peter m redoing this to a shift register r_const 104 will shift to r_const 103 etc etc
// if its in the read_constants state
// c_const[r_counter] = constants;
c_counter = r_counter + 13'b00000000000001;
c_const__103 = constants;
//pm preventing latches
c_absorb_read_counter = r_absorb_read_counter;
c_result = result;
c_calc_in_progress = 1'b0;
c_state = r_state;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
c_toggle = r_toggle;
mem_layer = r_counter[12:10];
end
else
begin
c_const__103 = r_const__103;
if(r_counter >= 104)
begin
c_counter = 13'b0000000000000;
c_state = READ2_ST;
//preventing latches
c_absorb_read_counter = r_absorb_read_counter;
c_result = result;
c_calc_in_progress = 1'b0;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
c_toggle = r_toggle;
mem_layer = r_counter[12:10];
end
else
begin
c_counter = r_counter;
c_state = r_state;
//preventing latches
c_absorb_read_counter = r_absorb_read_counter;
c_result = result;
c_calc_in_progress = 1'b0;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
c_toggle = r_toggle;
mem_layer = r_counter[12:10];
end
end
end
READ2_ST:
begin
mem_layer = r_counter[9:7];
if(read_constants)
begin
wren_fres_up = 1'b1;
c_counter = r_counter + 13'b00000000000001;
//prevent latches
c_const__103 = r_const__103;
c_absorb_read_counter = r_absorb_read_counter;
c_result = result;
c_calc_in_progress = 1'b0;
c_state = r_state;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
c_toggle = r_toggle;
end
else
begin
if(r_counter >= 5*128)
begin
c_counter = 13'b0000000000000;
c_state = READ3_ST;
c_const__103 = r_const__103;
c_absorb_read_counter = r_absorb_read_counter;
c_result = result;
c_calc_in_progress = 1'b0;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
c_toggle = r_toggle;
end
else
begin
c_counter = r_counter;
c_const__103 = r_const__103;
c_absorb_read_counter = r_absorb_read_counter;
c_result = result;
c_calc_in_progress = 1'b0;
c_state = r_state;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
c_toggle = r_toggle;
end
end
end
READ3_ST:
begin
mem_layer = r_counter[9:7];
c_const__103 = r_const__103;
c_absorb_read_counter = r_absorb_read_counter;
c_result = result;
c_calc_in_progress = 1'b0;
wren_fres_up = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
c_toggle = r_toggle;
// mem_layer = r_counter[12:10];
if(read_constants)
begin
wren_fres_down = 1'b1;
c_counter = r_counter + 13'b00000000000001;
c_state = r_state;
end
else
begin
if(r_counter >= 5*128)
begin
c_counter = 13'b0000000000000;
c_state = READ4_ST;
wren_fres_down = 1'b0;
end
else
begin
c_counter = r_counter;
c_state = r_state;
wren_fres_down = 1'b0;
end
end
end
READ4_ST:
begin
c_const__103 = r_const__103;
//c_counter = r_counter;
c_absorb_read_counter = r_absorb_read_counter;
c_result = result;
c_calc_in_progress = 1'b0;
//c_state = r_state;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
//wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
c_toggle = r_toggle;
mem_layer = r_counter[12:10];
if(read_constants)
begin
wren_cost = 1'b1;
c_counter = r_counter + 13'b00000000000001;
c_state = r_state;
end
else
begin
if(r_counter >= 13'b1010000000000) //5*1024 = 5120
begin
c_counter = 13'b0000000000000000000000000;
c_state = READ5_ST;
wren_cost = 1'b0;
end
else
begin
c_counter = r_counter;
c_state = r_state;
wren_cost = 1'b0;
end
end
end
READ5_ST:
begin
c_const__103 = r_const__103;
//c_counter = r_counter;
//c_absorb_read_counter = r_absorb_read_counter;
c_result = result;
c_calc_in_progress = 1'b0;
//c_state = r_state;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
//wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
c_toggle = r_toggle;
mem_layer = r_counter[12:10];
if(read_constants)
begin
wren_sint = 1'b1;
c_counter = r_counter + 13'b00000000000000000000000001;
c_state = r_state;
c_absorb_read_counter = r_absorb_read_counter;
end
else
begin
if(r_counter >= 13'b1010000000000) //5*1024 = 5120
begin
c_counter = 13'b0000000000000000000000000;
c_absorb_read_counter = 16'b0000000000000000000000000; //use to be 13 bit. Error in odin
c_state = RESET_MEM_ST;
wren_sint = 1'b0;
end
else
begin
c_counter = r_counter;
c_absorb_read_counter = r_absorb_read_counter;
c_state = r_state;
wren_sint = 1'b0;
end
end
end
RESET_MEM_ST:
begin
c_const__103 = r_const__103;
// c_counter = r_counter;
c_absorb_read_counter = r_absorb_read_counter;
c_result = result;
//c_calc_in_progress = 1'b0;
//c_state = r_state;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
//c_absorb_write_counter = r_absorb_write_counter;
//c_toggle = r_toggle;
mem_layer = r_counter[12:10];
c_counter = r_counter;
c_toggle = 1'b0;
c_calc_in_progress = 1'b1;
c_absorb_write_counter = r_absorb_write_counter + 16'b0000000000000001;
if(r_absorb_write_counter == 16'b1111111111111111)
begin
c_state = CALC_ST;
end
else
begin
c_state = r_state;
end
end
CALC_ST:
begin
c_const__103 = r_const__103;
//c_counter = r_counter;
c_absorb_read_counter = r_absorb_read_counter;
c_result = result;
//c_calc_in_progress = 1'b0;
//c_state = r_state;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
//c_toggle = r_toggle;
mem_layer = r_counter[12:10];
if(done == 1'b0)
begin
c_calc_in_progress = 1'b1;
c_toggle = 1'b0;
c_counter = r_counter;
c_state = r_state;
end
else
begin
c_toggle = 1'b0;
c_calc_in_progress = 1'b0;
c_state = DONE6_ST;
c_counter = 13'b0000000000000;
end
end
// DEBUG STATES BEGIN
DONE1_ST:
begin
c_const__103 = r_const__103;
//c_counter = r_counter;
c_absorb_read_counter = r_absorb_read_counter;
//c_result = result;
c_calc_in_progress = 1'b0;
//c_state = r_state;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
c_toggle = r_toggle;
mem_layer = r_counter[12:10];
c_result = r_const__103;
//original -c_result = {32'b0,r_const[r_counter]};
if(inc_result)
begin
if(r_counter >= 13'b0000010001100) //104
begin
c_counter = 13'b0000000000000;
c_state = DONE2_ST;
end
else
begin
c_counter = r_counter + 13'b0000000000001;
c_state = DONE1_ST;
end
end
else
begin
if(r_counter >= 13'b0000010001100) //104
begin
c_counter = 13'b0;
c_state = DONE2_ST;
end
else
begin
c_state = DONE1_ST;
c_counter = r_counter;
end
end
end
DONE2_ST:
begin
c_const__103 = r_const__103;
//c_counter = r_counter;
c_absorb_read_counter = r_absorb_read_counter;
//c_result = result;
c_calc_in_progress = 1'b0;
//c_state = r_state;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
c_toggle = r_toggle;
//mem_layer = r_counter[12:10];
mem_layer = r_counter[9:7];
//c_result = {32'b00000000000000000000000000000000,mem_fres_up};
c_result = 32'b0;
if(inc_result)
begin
c_counter = r_counter + 13'b0000000000001;
c_state = DONE1_ST;
end
else
begin
if(r_counter >= 13'b0000010001100) //104
begin
c_counter = 13'b0000000000000;
c_state = DONE2_ST;
end
else
begin
c_counter = r_counter;
c_state = r_state;
end
end
end
DONE3_ST:
begin
c_const__103 = r_const__103;
//c_counter = r_counter;
c_absorb_read_counter = r_absorb_read_counter;
//c_result = result;
c_calc_in_progress = 1'b0;
//c_state = r_state;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
c_toggle = r_toggle;
//mem_layer = r_counter[12:10];
mem_layer = r_counter[9:7];
//c_result = {32'b00000000000000000000000000000000,mem_fres_down};
c_result = 32'b0;
if(inc_result)
begin
// stub, write constants back to see if read in properly
c_counter = r_counter + 13'b0000000000001;
c_state = DONE3_ST;
end
else
begin
if(r_counter >= 13'b0001010000000) //5*128 = 640
begin
c_counter = 13'b0000000000000;
c_state = DONE4_ST;
end
else
begin
c_counter = r_counter;
c_state = DONE3_ST;
end
end
end
DONE4_ST:
begin
c_const__103 = r_const__103;
//c_counter = r_counter;
c_absorb_read_counter = r_absorb_read_counter;
//c_result = result;
c_calc_in_progress = 1'b0;
//c_state = r_state;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
c_toggle = r_toggle;
mem_layer = r_counter[12:10];
c_result = mem_cost;
if(inc_result)
begin
// stub, write constants back to see if read in properly
c_counter = r_counter + 13'b0000000000001;
c_state = DONE4_ST;
end
else
begin
if(r_counter >= 13'b1010000000000) //5*1024 = 5120
begin
c_counter = 13'b0000000000000;
c_state = DONE5_ST;
end
else
begin
c_state = DONE4_ST;
c_counter = r_counter;
end
end
end
DONE5_ST:
begin
c_const__103 = r_const__103;
//c_counter = r_counter;
c_absorb_read_counter = r_absorb_read_counter;
//c_result = result;
c_calc_in_progress = 1'b0;
//c_state = r_state;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
c_toggle = r_toggle;
mem_layer = r_counter[12:10];
c_result = mem_sint;
if(r_counter >= 13'b1010000000000) //5*1024 = 5120
begin
c_counter = 13'b0000000000000;
c_state = DONE6_ST;
end
else
begin
c_state = DONE5_ST;
if(inc_result)
begin
// stub, write constants back to see if read in properly
c_counter = r_counter + 13'b00000000000001;
end
else
begin
c_counter = r_counter;
end
end
end
// DEBUG STATES END*/
DONE6_ST:
begin
c_const__103 = r_const__103;
c_counter = r_counter;
//c_absorb_read_counter = r_absorb_read_counter;
//c_result = result;
c_calc_in_progress = 1'b0;
//c_state = r_state;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
//c_toggle = r_toggle;
mem_layer = r_counter[12:10];
c_state = DONE6_ST;
if(r_toggle == 1'b0)
begin
c_result = absorb_q[63:32];
// c_state = r_state;
end
else
begin
c_result = absorb_q[31:0];
// c_state = r_state;
end
if(inc_result)
begin
if(r_toggle == 1'b0)
begin
c_toggle = 1'b1;
c_absorb_read_counter = r_absorb_read_counter ;
end
else
begin
c_toggle = 1'b0;
c_absorb_read_counter = r_absorb_read_counter + 16'b01;
end
end
else
begin
c_absorb_read_counter = r_absorb_read_counter;
c_toggle= r_toggle;
end
// c_state = DONE6_ST;
end
default:
begin
c_state = ERROR_ST;
c_const__103 = r_const__103;
c_counter = r_counter;
c_absorb_read_counter = r_absorb_read_counter;
c_result = result;
c_calc_in_progress = 1'b0;
// c_state = r_state;
wren_fres_up = 1'b0;
wren_fres_down = 1'b0;
wren_sint = 1'b0;
wren_cost = 1'b0;
c_absorb_write_counter = r_absorb_write_counter;
c_toggle = r_toggle;
mem_layer = r_counter[12:10];
end
endcase
end // FSM always
// Latch Data
always @(posedge clk)
begin
if(reset)
begin
r_counter <= 13'b0000000000000000000000000;
r_const__103 <= 32'b00000000000000000000000000000000;
r_const__102 <= 32'b00000000000000000000000000000000;
r_const__101 <= 32'b00000000000000000000000000000000;
r_const__100 <= 32'b00000000000000000000000000000000;
r_const__99 <= 32'b00000000000000000000000000000000;
r_const__98 <= 32'b00000000000000000000000000000000;
r_const__97 <= 32'b00000000000000000000000000000000;
r_const__96 <= 32'b00000000000000000000000000000000;
r_const__95 <= 32'b00000000000000000000000000000000;
r_const__94 <= 32'b00000000000000000000000000000000;
r_const__93 <= 32'b00000000000000000000000000000000;
r_const__92 <= 32'b00000000000000000000000000000000;
r_const__91 <= 32'b00000000000000000000000000000000;
r_const__90 <= 32'b00000000000000000000000000000000;
r_const__89 <= 32'b00000000000000000000000000000000;
r_const__88 <= 32'b00000000000000000000000000000000;
r_const__87 <= 32'b00000000000000000000000000000000;
r_const__86 <= 32'b00000000000000000000000000000000;
r_const__85 <= 32'b00000000000000000000000000000000;
r_const__84 <= 32'b00000000000000000000000000000000;
r_const__83 <= 32'b00000000000000000000000000000000;
r_const__82 <= 32'b00000000000000000000000000000000;
r_const__81 <= 32'b00000000000000000000000000000000;
r_const__80 <= 32'b00000000000000000000000000000000;
r_const__79 <= 32'b00000000000000000000000000000000;
r_const__78 <= 32'b00000000000000000000000000000000;
r_const__77 <= 32'b00000000000000000000000000000000;
r_const__76 <= 32'b00000000000000000000000000000000;
r_const__75 <= 32'b00000000000000000000000000000000;
r_const__74 <= 32'b00000000000000000000000000000000;
r_const__73 <= 32'b00000000000000000000000000000000;
r_const__72 <= 32'b00000000000000000000000000000000;
r_const__71 <= 32'b00000000000000000000000000000000;
r_const__70 <= 32'b00000000000000000000000000000000;
r_const__69 <= 32'b00000000000000000000000000000000;
r_const__68 <= 32'b00000000000000000000000000000000;
r_const__67 <= 32'b00000000000000000000000000000000;
r_const__66 <= 32'b00000000000000000000000000000000;
r_const__65 <= 32'b00000000000000000000000000000000;
r_const__64 <= 32'b00000000000000000000000000000000;
r_const__63 <= 32'b00000000000000000000000000000000;
r_const__62 <= 32'b00000000000000000000000000000000;
r_const__61 <= 32'b00000000000000000000000000000000;
r_const__60 <= 32'b00000000000000000000000000000000;
r_const__59 <= 32'b00000000000000000000000000000000;
r_const__58 <= 32'b00000000000000000000000000000000;
r_const__57 <= 32'b00000000000000000000000000000000;
r_const__56 <= 32'b00000000000000000000000000000000;
r_const__55 <= 32'b00000000000000000000000000000000;
r_const__54 <= 32'b00000000000000000000000000000000;
r_const__53 <= 32'b00000000000000000000000000000000;
r_const__52 <= 32'b00000000000000000000000000000000;
r_const__51 <= 32'b00000000000000000000000000000000;
r_const__50 <= 32'b00000000000000000000000000000000;
r_const__49 <= 32'b00000000000000000000000000000000;
r_const__48 <= 32'b00000000000000000000000000000000;
r_const__47 <= 32'b00000000000000000000000000000000;
r_const__46 <= 32'b00000000000000000000000000000000;
r_const__45 <= 32'b00000000000000000000000000000000;
r_const__44 <= 32'b00000000000000000000000000000000;
r_const__43 <= 32'b00000000000000000000000000000000;
r_const__42 <= 32'b00000000000000000000000000000000;
r_const__41 <= 32'b00000000000000000000000000000000;
r_const__40 <= 32'b00000000000000000000000000000000;
r_const__39 <= 32'b00000000000000000000000000000000;
r_const__38 <= 32'b00000000000000000000000000000000;
r_const__37 <= 32'b00000000000000000000000000000000;
r_const__36 <= 32'b00000000000000000000000000000000;
r_const__35 <= 32'b00000000000000000000000000000000;
r_const__34 <= 32'b00000000000000000000000000000000;
r_const__33 <= 32'b00000000000000000000000000000000;
r_const__32 <= 32'b00000000000000000000000000000000;
r_const__31 <= 32'b00000000000000000000000000000000;
r_const__30 <= 32'b00000000000000000000000000000000;
r_const__29 <= 32'b00000000000000000000000000000000;
r_const__28 <= 32'b00000000000000000000000000000000;
r_const__27 <= 32'b00000000000000000000000000000000;
r_const__26 <= 32'b00000000000000000000000000000000;
r_const__25 <= 32'b00000000000000000000000000000000;
r_const__24 <= 32'b00000000000000000000000000000000;
r_const__23 <= 32'b00000000000000000000000000000000;
r_const__22 <= 32'b00000000000000000000000000000000;
r_const__21 <= 32'b00000000000000000000000000000000;
r_const__20 <= 32'b00000000000000000000000000000000;
r_const__19 <= 32'b00000000000000000000000000000000;
r_const__18 <= 32'b00000000000000000000000000000000;
r_const__17 <= 32'b00000000000000000000000000000000;
r_const__16 <= 32'b00000000000000000000000000000000;
r_const__15 <= 32'b00000000000000000000000000000000;
r_const__14 <= 32'b00000000000000000000000000000000;
r_const__13 <= 32'b00000000000000000000000000000000;
r_const__12 <= 32'b00000000000000000000000000000000;
r_const__11 <= 32'b00000000000000000000000000000000;
r_const__10 <= 32'b00000000000000000000000000000000;
r_const__9 <= 32'b00000000000000000000000000000000;
r_const__8 <= 32'b00000000000000000000000000000000;
r_const__7 <= 32'b00000000000000000000000000000000;
r_const__6 <= 32'b00000000000000000000000000000000;
r_const__5 <= 32'b00000000000000000000000000000000;
r_const__4 <= 32'b00000000000000000000000000000000;
r_const__3 <= 32'b00000000000000000000000000000000;
r_const__2 <= 32'b00000000000000000000000000000000;
r_const__1 <= 32'b00000000000000000000000000000000;
r_const__0 <= 32'b00000000000000000000000000000000;
r_state <= READ1_ST;
result <= 32'b00000000000000000000000000000000;
calc_in_progress <= 1'b0;
r_absorb_read_counter <= 16'b0000000000000000;
enable <= 1'b0;
r_absorb_write_counter <= 16'b0000000000000000;
reset_calculator <= 1'b1;
r_toggle <= 1'b0;
end
else
begin
r_counter <= c_counter;
if (c_state == READ1_ST)
//for(i = 0; i < 104; i = i + 1) begin
// r_const[i] <= c_const[i];
//end
begin
//shift register implementation for read-in constant state
//first one is from counter
r_const__103 <= c_const__103;
// all others shift
r_const__102 <= r_const__103;
r_const__101 <= r_const__102;
r_const__100 <= r_const__101;
r_const__99 <= r_const__100;
r_const__98 <= r_const__99;
r_const__97 <= r_const__98;
r_const__96 <= r_const__97;
r_const__95 <= r_const__96;
r_const__94 <= r_const__95;
r_const__93 <= r_const__94;
r_const__92 <= r_const__93;
r_const__91 <= r_const__92;
r_const__90 <= r_const__91;
r_const__89 <= r_const__90;
r_const__88 <= r_const__89;
r_const__87 <= r_const__88;
r_const__86 <= r_const__87;
r_const__85 <= r_const__86;
r_const__84 <= r_const__85;
r_const__83 <= r_const__84;
r_const__82 <= r_const__83;
r_const__81 <= r_const__82;
r_const__80 <= r_const__81;
r_const__79 <= r_const__80;
r_const__78 <= r_const__79;
r_const__77 <= r_const__78;
r_const__76 <= r_const__77;
r_const__75 <= r_const__76;
r_const__74 <= r_const__75;
r_const__73 <= r_const__74;
r_const__72 <= r_const__73;
r_const__71 <= r_const__72;
r_const__70 <= r_const__71;
r_const__69 <= r_const__70;
r_const__68 <= r_const__69;
r_const__67 <= r_const__68;
r_const__66 <= r_const__67;
r_const__65 <= r_const__66;
r_const__64 <= r_const__65;
r_const__63 <= r_const__64;
r_const__62 <= r_const__63;
r_const__61 <= r_const__62;
r_const__60 <= r_const__61;
r_const__59 <= r_const__60;
r_const__58 <= r_const__59;
r_const__57 <= r_const__58;
r_const__56 <= r_const__57;
r_const__55 <= r_const__56;
r_const__54 <= r_const__55;
r_const__53 <= r_const__54;
r_const__52 <= r_const__53;
r_const__51 <= r_const__52;
r_const__50 <= r_const__51;
r_const__49 <= r_const__50;
r_const__48 <= r_const__49;
r_const__47 <= r_const__48;
r_const__46 <= r_const__47;
r_const__45 <= r_const__46;
r_const__44 <= r_const__45;
r_const__43 <= r_const__44;
r_const__42 <= r_const__43;
r_const__41 <= r_const__42;
r_const__40 <= r_const__41;
r_const__39 <= r_const__40;
r_const__38 <= r_const__39;
r_const__37 <= r_const__38;
r_const__36 <= r_const__37;
r_const__35 <= r_const__36;
r_const__34 <= r_const__35;
r_const__33 <= r_const__34;
r_const__32 <= r_const__33;
r_const__31 <= r_const__32;
r_const__30 <= r_const__31;
r_const__29 <= r_const__30;
r_const__28 <= r_const__29;
r_const__27 <= r_const__28;
r_const__26 <= r_const__27;
r_const__25 <= r_const__26;
r_const__24 <= r_const__25;
r_const__23 <= r_const__24;
r_const__22 <= r_const__23;
r_const__21 <= r_const__22;
r_const__20 <= r_const__21;
r_const__19 <= r_const__20;
r_const__18 <= r_const__19;
r_const__17 <= r_const__18;
r_const__16 <= r_const__17;
r_const__15 <= r_const__16;
r_const__14 <= r_const__15;
r_const__13 <= r_const__14;
r_const__12 <= r_const__13;
r_const__11 <= r_const__12;
r_const__10 <= r_const__11;
r_const__9 <= r_const__10;
r_const__8 <= r_const__9;
r_const__7 <= r_const__8;
r_const__6 <= r_const__7;
r_const__5 <= r_const__6;
r_const__4 <= r_const__5;
r_const__3 <= r_const__4;
r_const__2 <= r_const__3;
r_const__1 <= r_const__2;
r_const__0 <= r_const__1;
end
else
begin
//original code
r_const__103 <= c_const__103;
r_const__102 <= c_const__102;
r_const__101 <= c_const__101;
r_const__100 <= c_const__100;
r_const__99 <= c_const__99;
r_const__98 <= c_const__98;
r_const__97 <= c_const__97;
r_const__96 <= c_const__96;
r_const__95 <= c_const__95;
r_const__94 <= c_const__94;
r_const__93 <= c_const__93;
r_const__92 <= c_const__92;
r_const__91 <= c_const__91;
r_const__90 <= c_const__90;
r_const__89 <= c_const__89;
r_const__88 <= c_const__88;
r_const__87 <= c_const__87;
r_const__86 <= c_const__86;
r_const__85 <= c_const__85;
r_const__84 <= c_const__84;
r_const__83 <= c_const__83;
r_const__82 <= c_const__82;
r_const__81 <= c_const__81;
r_const__80 <= c_const__80;
r_const__79 <= c_const__79;
r_const__78 <= c_const__78;
r_const__77 <= c_const__77;
r_const__76 <= c_const__76;
r_const__75 <= c_const__75;
r_const__74 <= c_const__74;
r_const__73 <= c_const__73;
r_const__72 <= c_const__72;
r_const__71 <= c_const__71;
r_const__70 <= c_const__70;
r_const__69 <= c_const__69;
r_const__68 <= c_const__68;
r_const__67 <= c_const__67;
r_const__66 <= c_const__66;
r_const__65 <= c_const__65;
r_const__64 <= c_const__64;
r_const__63 <= c_const__63;
r_const__62 <= c_const__62;
r_const__61 <= c_const__61;
r_const__60 <= c_const__60;
r_const__59 <= c_const__59;
r_const__58 <= c_const__58;
r_const__57 <= c_const__57;
r_const__56 <= c_const__56;
r_const__55 <= c_const__55;
r_const__54 <= c_const__54;
r_const__53 <= c_const__53;
r_const__52 <= c_const__52;
r_const__51 <= c_const__51;
r_const__50 <= c_const__50;
r_const__49 <= c_const__49;
r_const__48 <= c_const__48;
r_const__47 <= c_const__47;
r_const__46 <= c_const__46;
r_const__45 <= c_const__45;
r_const__44 <= c_const__44;
r_const__43 <= c_const__43;
r_const__42 <= c_const__42;
r_const__41 <= c_const__41;
r_const__40 <= c_const__40;
r_const__39 <= c_const__39;
r_const__38 <= c_const__38;
r_const__37 <= c_const__37;
r_const__36 <= c_const__36;
r_const__35 <= c_const__35;
r_const__34 <= c_const__34;
r_const__33 <= c_const__33;
r_const__32 <= c_const__32;
r_const__31 <= c_const__31;
r_const__30 <= c_const__30;
r_const__29 <= c_const__29;
r_const__28 <= c_const__28;
r_const__27 <= c_const__27;
r_const__26 <= c_const__26;
r_const__25 <= c_const__25;
r_const__24 <= c_const__24;
r_const__23 <= c_const__23;
r_const__22 <= c_const__22;
r_const__21 <= c_const__21;
r_const__20 <= c_const__20;
r_const__19 <= c_const__19;
r_const__18 <= c_const__18;
r_const__17 <= c_const__17;
r_const__16 <= c_const__16;
r_const__15 <= c_const__15;
r_const__14 <= c_const__14;
r_const__13 <= c_const__13;
r_const__12 <= c_const__12;
r_const__11 <= c_const__11;
r_const__10 <= c_const__10;
r_const__9 <= c_const__9;
r_const__8 <= c_const__8;
r_const__7 <= c_const__7;
r_const__6 <= c_const__6;
r_const__5 <= c_const__5;
r_const__4 <= c_const__4;
r_const__3 <= c_const__3;
r_const__2 <= c_const__2;
r_const__1 <= c_const__1;
r_const__0 <= c_const__0;
end
r_state <= c_state;
result <= c_result;
calc_in_progress <= c_calc_in_progress;
r_absorb_read_counter <= c_absorb_read_counter;
r_absorb_write_counter <= c_absorb_write_counter;
r_toggle <= c_toggle;
//if(c_state == CALC_ST)
//begin
enable <= 1'b1;
//end
//else
//begin
// enable = 1'b0;
//end
if(c_state == RESET_MEM_ST)
begin
reset_calculator <= 1'b1;
end
else
begin
reset_calculator <= 1'b0;
end
end
end
endmodule
module dual_port_mem_zz (clk, data, rdaddress, wraddress , wren, q);
// 32bit wide
// 13bit address
input clk;
input[31:0] data;
input [12:0] rdaddress;
input [12:0] wraddress;
input wren;
output [31:0] q;
wire const_zero;
wire [31:0] const_zero_data;
wire [31:0] dont_care_out;
assign const_zero = 1'b0;
assign const_zero_data = 32'b00000000000000000000000000000000;
//Comment out for don't care outputs
//assign dont_care_out = 32'b00000000000000000000000000000000;
dual_port_ram_8192x32 dpram1(
.clk (clk),
.we1(wren),
.we2(const_zero),
.data1(data),
.data2(const_zero_data),
.out1(dont_care_out),
.out2 (q),
.addr1(wraddress),
.addr2(rdaddress));
endmodule
module dual_port_mem_yy (clk, data, rdaddress, wraddress , wren, q);
// 32bit wide
// 13bit address
input clk;
input[31:0] data;
input [12:0] rdaddress;
input [12:0] wraddress;
input wren;
output [31:0] q;
wire const_zero;
wire [31:0] const_zero_data;
wire [31:0] dont_care_out;
assign const_zero = 1'b0;
assign const_zero_data = 32'b00000000000000000000000000000000;
//Comment out for don't care outputs
//assign dont_care_out = 32'b00000000000000000000000000000000;
dual_port_ram_8192x32 dpram1(
.clk (clk),
.we1(wren),
.we2(const_zero),
.data1(data),
.data2(const_zero_data),
.out1(dont_care_out),
.out2 (q),
.addr1(wraddress),
.addr2(rdaddress));
endmodule
module dual_port_mem_xx (clk, data, rdaddress, wraddress , wren, q);
// 32bit wide
// 13bit address
input clk;
input[31:0] data;
input [12:0] rdaddress;
input [12:0] wraddress;
input wren;
output [31:0] q;
wire const_zero;
wire [31:0] const_zero_data;
wire [31:0] dont_care_out;
assign const_zero = 1'b0;
assign const_zero_data = 32'b00000000000000000000000000000000;
//Comment out for don't care outputs
//assign dont_care_out = 32'b00000000000000000000000000000000;
dual_port_ram_8192x32 dpram1(
.clk (clk),
.we1(wren),
.we2(const_zero),
.data1(data),
.data2(const_zero_data),
.out1(dont_care_out),
.out2 (q),
.addr1(wraddress),
.addr2(rdaddress));
endmodule
module dual_port_mem_ww (clk, data, rdaddress, wraddress , wren, q);
// 32bit wide
// 13bit address
input clk;
input[31:0] data;
input [12:0] rdaddress;
input [12:0] wraddress;
input wren;
output [31:0] q;
wire const_zero;
wire [31:0] const_zero_data;
wire [31:0] dont_care_out;
assign const_zero = 1'b0;
assign const_zero_data = 32'b00000000000000000000000000000000;
//Comment out for don't care outputs
//assign dont_care_out = 32'b00000000000000000000000000000000;
dual_port_ram_8192x32 dpram1(
.clk (clk),
.we1(wren),
.we2(const_zero),
.data1(data),
.data2(const_zero_data),
.out1(dont_care_out),
.out2 (q),
.addr1(wraddress),
.addr2(rdaddress));
endmodule
module dual (clk, data, rdaddress, wraddress , wren, q);
// 36bit wide
// 16bit address
input clk;
input[35:0] data;
input [15:0] rdaddress;
input [15:0] wraddress;
input wren;
output [35:0] q;
wire const_zero;
wire [35:0] const_zero_data;
wire [35:0] dont_care_out;
assign const_zero = 1'b0;
assign const_zero_data = 36'b000000000000000000000000000000000000;
//Comment out for don't care outputs
//assign dont_care_out = 36'b000000000000000000000000000000000000;
dual_port_ram_65536x36 dpram1(
.clk (clk),
.we1(wren),
.we2(const_zero),
.data1(data),
.data2(const_zero_data),
.out1(dont_care_out),
.out2 (q),
.addr1(wraddress),
.addr2(rdaddress));
endmodule
module dual2 (clk, data, rdaddress, wraddress , wren, q);
// 18bit wide
// 16bit address
input clk;
input[17:0] data;
input [15:0] rdaddress;
input [15:0] wraddress;
input wren;
output [17:0] q;
wire const_zero;
wire [17:0] const_zero_data;
wire [17:0] dont_care_out;
assign const_zero = 1'b0;
assign const_zero_data = 18'b000000000000000000;
//Comment out for don't care outputs
//assign dont_care_out = 18'b000000000000000000;
dual_port_ram_65536x18 dpram1(
.clk (clk),
.we1(wren),
.we2(const_zero),
.data1(data),
.data2(const_zero_data),
.out1(dont_care_out),
.out2 (q),
.addr1(wraddress),
.addr2(rdaddress));
endmodule
module dual3 (clk, data, rdaddress, wraddress , wren, q);
// 8bit wide
// 16bit address
input clk;
input[7:0] data;
input [15:0] rdaddress;
input [15:0] wraddress;
input wren;
output [7:0] q;
wire const_zero;
wire [7:0] const_zero_data;
wire [7:0] dont_care_out;
assign const_zero = 1'b0;
assign const_zero_data = 8'b00000000;
//Comment out for don't care outputs
//assign dont_care_out = 8'b00000000;
dual_port_ram_65536x8 dpram1(
.clk (clk),
.we1(wren),
.we2(const_zero),
.data1(data),
.data2(const_zero_data),
.out1(dont_care_out),
.out2 (q),
.addr1(wraddress),
.addr2(rdaddress));
endmodule
// Photon Calculator
// Note: Use the same random number for fresnel (reflect) as for scatterer because they are mutually exclusive blocks
// Also scatterer needs two
module PhotonCalculator (
clock, reset, enable,
// CONSTANTS
total_photons,
randseed1, randseed2, randseed3, randseed4, randseed5,
initialWeight,
// Mover
OneOver_MutMaxrad_0, OneOver_MutMaxrad_1, OneOver_MutMaxrad_2, OneOver_MutMaxrad_3, OneOver_MutMaxrad_4, OneOver_MutMaxrad_5,
OneOver_MutMaxdep_0, OneOver_MutMaxdep_1, OneOver_MutMaxdep_2, OneOver_MutMaxdep_3, OneOver_MutMaxdep_4, OneOver_MutMaxdep_5,
OneOver_Mut_0, OneOver_Mut_1, OneOver_Mut_2, OneOver_Mut_3, OneOver_Mut_4, OneOver_Mut_5,
// BoundaryChecker
z1_0, z1_1, z1_2, z1_3, z1_4, z1_5,
z0_0, z0_1, z0_2, z0_3, z0_4, z0_5,
mut_0, mut_1, mut_2, mut_3, mut_4, mut_5,
maxDepth_over_maxRadius,
// Hop (no constants)
// Scatterer Reflector Wrapper
down_niOverNt_1, down_niOverNt_2, down_niOverNt_3, down_niOverNt_4, down_niOverNt_5,
up_niOverNt_1, up_niOverNt_2, up_niOverNt_3, up_niOverNt_4, up_niOverNt_5,
down_niOverNt_2_1, down_niOverNt_2_2, down_niOverNt_2_3, down_niOverNt_2_4, down_niOverNt_2_5,
up_niOverNt_2_1, up_niOverNt_2_2, up_niOverNt_2_3, up_niOverNt_2_4, up_niOverNt_2_5,
downCritAngle_0, downCritAngle_1, downCritAngle_2, downCritAngle_3, downCritAngle_4,
upCritAngle_0, upCritAngle_1, upCritAngle_2, upCritAngle_3, upCritAngle_4,
muaFraction1, muaFraction2, muaFraction3, muaFraction4, muaFraction5,
// Interface to memory look-up
// From Memories
up_rFresnel, down_rFresnel, sint, cost,
// To Memories
tindex, fresIndex,
// Roulette (no Constants)
// Absorber
absorb_data, absorb_rdaddress, absorb_wraddress,
absorb_wren, absorb_q,
// Done signal
done
);
//parameter BIT_WIDTH=32;
//parameter LAYER_WIDTH=3;
//parameter TRIG_WIDTH=10;
//parameter PIPELINE_DEPTH_UPPER_LIMIT = 256;
//parameter ABSORB_ADDR_WIDTH=16;
//parameter ABSORB_WORD_WIDTH=64;
//parameter WSCALE=1919999;
input clock, reset, enable;
// CONSTANTS
input [`BIT_WIDTH-1:0] total_photons;
input [`BIT_WIDTH-1:0] randseed1;
input [`BIT_WIDTH-1:0] randseed2;
input [`BIT_WIDTH-1:0] randseed3;
input [`BIT_WIDTH-1:0] randseed4;
input [`BIT_WIDTH-1:0] randseed5;
input [`BIT_WIDTH-1:0] initialWeight;
// Mover
input [`BIT_WIDTH-1:0] OneOver_MutMaxrad_0, OneOver_MutMaxrad_1, OneOver_MutMaxrad_2, OneOver_MutMaxrad_3, OneOver_MutMaxrad_4, OneOver_MutMaxrad_5;
input [`BIT_WIDTH-1:0] OneOver_MutMaxdep_0, OneOver_MutMaxdep_1, OneOver_MutMaxdep_2, OneOver_MutMaxdep_3, OneOver_MutMaxdep_4, OneOver_MutMaxdep_5;
input [`BIT_WIDTH-1:0] OneOver_Mut_0, OneOver_Mut_1, OneOver_Mut_2, OneOver_Mut_3, OneOver_Mut_4, OneOver_Mut_5;
// BoundaryChecker
input [`BIT_WIDTH-1:0] z1_0, z1_1, z1_2, z1_3, z1_4, z1_5;
input [`BIT_WIDTH-1:0] z0_0, z0_1, z0_2, z0_3, z0_4, z0_5;
input [`BIT_WIDTH-1:0] mut_0, mut_1, mut_2, mut_3, mut_4, mut_5;
input [`BIT_WIDTH-1:0] maxDepth_over_maxRadius;
// Hop (no constants)
// Scatterer Reflector Absorber Wrapper
input [`BIT_WIDTH-1:0] down_niOverNt_1, down_niOverNt_2, down_niOverNt_3, down_niOverNt_4, down_niOverNt_5;
input [`BIT_WIDTH-1:0] up_niOverNt_1, up_niOverNt_2, up_niOverNt_3, up_niOverNt_4, up_niOverNt_5;
input [2*`BIT_WIDTH-1:0] down_niOverNt_2_1, down_niOverNt_2_2, down_niOverNt_2_3, down_niOverNt_2_4, down_niOverNt_2_5;
input [2*`BIT_WIDTH-1:0] up_niOverNt_2_1, up_niOverNt_2_2, up_niOverNt_2_3, up_niOverNt_2_4, up_niOverNt_2_5;
input [`BIT_WIDTH-1:0] downCritAngle_0, downCritAngle_1, downCritAngle_2, downCritAngle_3, downCritAngle_4;
input [`BIT_WIDTH-1:0] upCritAngle_0, upCritAngle_1, upCritAngle_2, upCritAngle_3, upCritAngle_4;
input [`BIT_WIDTH-1:0] muaFraction1, muaFraction2, muaFraction3, muaFraction4, muaFraction5;
// Memory look-up interface
input [`BIT_WIDTH-1:0] up_rFresnel;
input [`BIT_WIDTH-1:0] down_rFresnel;
input [`BIT_WIDTH-1:0] sint;
input [`BIT_WIDTH-1:0] cost;
//To Memories
output [12:0] tindex;
output [9:0] fresIndex;
// Roulette Module (nothing)
// Final results
output [`ABSORB_ADDR_WIDTH-1:0] absorb_rdaddress, absorb_wraddress;
output absorb_wren;
output [`ABSORB_WORD_WIDTH-1:0] absorb_data;
input [`ABSORB_WORD_WIDTH-1:0] absorb_q;
// Flag when final results ready
output done;
// Local variables
// Wired nets
/*mover inputs*/
reg [`BIT_WIDTH-1:0] x_moverMux;
reg [`BIT_WIDTH-1:0] y_moverMux;
reg [`BIT_WIDTH-1:0] z_moverMux;
reg [`BIT_WIDTH-1:0] ux_moverMux;
reg [`BIT_WIDTH-1:0] uy_moverMux;
reg [`BIT_WIDTH-1:0] uz_moverMux;
reg [`BIT_WIDTH-1:0] sz_moverMux;
reg [`BIT_WIDTH-1:0] sr_moverMux;
reg [`BIT_WIDTH-1:0] sleftz_moverMux;
reg [`BIT_WIDTH-1:0] sleftr_moverMux;
reg [`LAYER_WIDTH-1:0] layer_moverMux;
reg [`BIT_WIDTH-1:0] weight_moverMux;
reg dead_moverMux;
/*mover outputs*/
wire [`BIT_WIDTH-1:0] x_mover;
wire [`BIT_WIDTH-1:0] y_mover;
wire [`BIT_WIDTH-1:0] z_mover;
wire [`BIT_WIDTH-1:0] ux_mover;
wire [`BIT_WIDTH-1:0] uy_mover;
wire [`BIT_WIDTH-1:0] uz_mover;
wire [`BIT_WIDTH-1:0] sz_mover;
wire [`BIT_WIDTH-1:0] sr_mover;
wire [`BIT_WIDTH-1:0] sleftz_mover;
wire [`BIT_WIDTH-1:0] sleftr_mover;
wire [`LAYER_WIDTH-1:0] layer_mover;
wire [`BIT_WIDTH-1:0] weight_mover;
wire dead_mover;
/*boundary checker outputs*/
wire [`BIT_WIDTH-1:0] x_boundaryChecker;
wire [`BIT_WIDTH-1:0] y_boundaryChecker;
wire [`BIT_WIDTH-1:0] z_boundaryChecker;
wire [`BIT_WIDTH-1:0] ux_boundaryChecker;
wire [`BIT_WIDTH-1:0] uy_boundaryChecker;
wire [`BIT_WIDTH-1:0] uz_boundaryChecker;
wire [`BIT_WIDTH-1:0] sz_boundaryChecker;
wire [`BIT_WIDTH-1:0] sr_boundaryChecker;
wire [`BIT_WIDTH-1:0] sleftz_boundaryChecker;
wire [`BIT_WIDTH-1:0] sleftr_boundaryChecker;
wire [`LAYER_WIDTH-1:0] layer_boundaryChecker;
wire [`BIT_WIDTH-1:0] weight_boundaryChecker;
wire dead_boundaryChecker;
wire hit_boundaryChecker;
/*hop outputs*/
wire [`BIT_WIDTH-1:0] x_hop;
wire [`BIT_WIDTH-1:0] y_hop;
wire [`BIT_WIDTH-1:0] z_hop;
wire [`BIT_WIDTH-1:0] ux_hop;
wire [`BIT_WIDTH-1:0] uy_hop;
wire [`BIT_WIDTH-1:0] uz_hop;
wire [`BIT_WIDTH-1:0] sz_hop;
wire [`BIT_WIDTH-1:0] sr_hop;
wire [`BIT_WIDTH-1:0] sleftz_hop;
wire [`BIT_WIDTH-1:0] sleftr_hop;
wire [`LAYER_WIDTH-1:0] layer_hop;
wire [`BIT_WIDTH-1:0] weight_hop;
wire dead_hop;
wire hit_hop;
/*Drop spin outputs*/
wire [`BIT_WIDTH-1:0] x_dropSpin;
wire [`BIT_WIDTH-1:0] y_dropSpin;
wire [`BIT_WIDTH-1:0] z_dropSpin;
wire [`BIT_WIDTH-1:0] ux_dropSpin;
wire [`BIT_WIDTH-1:0] uy_dropSpin;
wire [`BIT_WIDTH-1:0] uz_dropSpin;
wire [`BIT_WIDTH-1:0] sz_dropSpin;
wire [`BIT_WIDTH-1:0] sr_dropSpin;
wire [`BIT_WIDTH-1:0] sleftz_dropSpin;
wire [`BIT_WIDTH-1:0] sleftr_dropSpin;
wire [`LAYER_WIDTH-1:0] layer_dropSpin;
wire [`BIT_WIDTH-1:0] weight_dropSpin;
wire dead_dropSpin;
//Had to add this one to avoid implicit net:
wire hit_dropSpin;
/*Dead or Alive outputs*/
wire [`BIT_WIDTH-1:0] x_Roulette;
wire [`BIT_WIDTH-1:0] y_Roulette;
wire [`BIT_WIDTH-1:0] z_Roulette;
wire [`BIT_WIDTH-1:0] ux_Roulette;
wire [`BIT_WIDTH-1:0] uy_Roulette;
wire [`BIT_WIDTH-1:0] uz_Roulette;
wire [`BIT_WIDTH-1:0] sz_Roulette;
wire [`BIT_WIDTH-1:0] sr_Roulette;
wire [`BIT_WIDTH-1:0] sleftz_Roulette;
wire [`BIT_WIDTH-1:0] sleftr_Roulette;
wire [`LAYER_WIDTH-1:0] layer_Roulette;
wire [`BIT_WIDTH-1:0] weight_Roulette;
wire dead_Roulette;
// internals
wire [`BIT_WIDTH-1:0] rand1, rand2, rand3, rand4, rand5;
wire [`BIT_WIDTH-1:0] logrand;
// Combinational Drivers
reg [`BIT_WIDTH-1:0] c_num_photons_left;
reg [`BIT_WIDTH-1:0] c_counter;
reg c_done;
// Registered Drivers
reg r_done;
reg loadseed;
reg delay_loadseed;
reg [`BIT_WIDTH-1:0] r_num_photons_left;
reg [`BIT_WIDTH-1:0] r_counter;
assign done = r_done;
//Cannot be logic in instantiatino:
wire not_reset;
assign not_reset = ~reset;
// Connect blocks
LogCalc log_u1(.clock(clock), .reset(reset), .enable(1'b1), .in_x(rand1), .log_x(logrand));
rng rand_u1(.clk(clock), .en(1'b1), .resetn(not_reset), .loadseed_i(loadseed), .seed_i(randseed1), .number_o(rand1));
rng rand_u2(.clk(clock), .en(1'b1), .resetn(not_reset), .loadseed_i(loadseed), .seed_i(randseed2), .number_o(rand2));
rng rand_u3(.clk(clock), .en(1'b1), .resetn(not_reset), .loadseed_i(loadseed), .seed_i(randseed3), .number_o(rand3));
rng rand_u4(.clk(clock), .en(1'b1), .resetn(not_reset), .loadseed_i(loadseed), .seed_i(randseed4), .number_o(rand4));
rng rand_u5(.clk(clock), .en(1'b1), .resetn(not_reset), .loadseed_i(loadseed), .seed_i(randseed5), .number_o(rand5));
Move mover( .clock(clock), .reset(reset), .enable(enable),
.x_moverMux(x_moverMux), .y_moverMux(y_moverMux), .z_moverMux(z_moverMux),
.ux_moverMux(ux_moverMux), .uy_moverMux(uy_moverMux), .uz_moverMux(uz_moverMux),
.sz_moverMux(sz_moverMux), .sr_moverMux(sr_moverMux),
.sleftz_moverMux(sleftz_moverMux), .sleftr_moverMux(sleftr_moverMux),
.layer_moverMux(layer_moverMux), .weight_moverMux(weight_moverMux), .dead_moverMux(dead_moverMux),
.log_rand_num(logrand),
//OUTPUTS
.x_mover(x_mover), .y_mover(y_mover), .z_mover(z_mover),
.ux_mover(ux_mover), .uy_mover(uy_mover), .uz_mover(uz_mover),
.sz_mover(sz_mover), .sr_mover(sr_mover),
.sleftz_mover(sleftz_mover), .sleftr_mover(sleftr_mover),
.layer_mover(layer_mover), .weight_mover(weight_mover), .dead_mover(dead_mover),
// CONSTANTS
.OneOver_MutMaxrad_0(OneOver_MutMaxrad_0), .OneOver_MutMaxrad_1(OneOver_MutMaxrad_1), .OneOver_MutMaxrad_2(OneOver_MutMaxrad_2), .OneOver_MutMaxrad_3(OneOver_MutMaxrad_3), .OneOver_MutMaxrad_4(OneOver_MutMaxrad_4), .OneOver_MutMaxrad_5(OneOver_MutMaxrad_5),
.OneOver_MutMaxdep_0(OneOver_MutMaxdep_0), .OneOver_MutMaxdep_1(OneOver_MutMaxdep_1), .OneOver_MutMaxdep_2(OneOver_MutMaxdep_2), .OneOver_MutMaxdep_3(OneOver_MutMaxdep_3), .OneOver_MutMaxdep_4(OneOver_MutMaxdep_4), .OneOver_MutMaxdep_5(OneOver_MutMaxdep_5),
.OneOver_Mut_0(OneOver_Mut_0), .OneOver_Mut_1(OneOver_Mut_1), .OneOver_Mut_2(OneOver_Mut_2), .OneOver_Mut_3(OneOver_Mut_3), .OneOver_Mut_4(OneOver_Mut_4), .OneOver_Mut_5(OneOver_Mut_5)
);
Boundary boundaryChecker ( //INPUTS
.clock(clock), .reset(reset), .enable(enable),
.x_mover(x_mover), .y_mover(y_mover), .z_mover(z_mover),
.ux_mover(ux_mover), .uy_mover(uy_mover), .uz_mover(uz_mover),
.sz_mover(sz_mover), .sr_mover(sr_mover),
.sleftz_mover(sleftz_mover), .sleftr_mover(sleftr_mover),
.layer_mover(layer_mover), .weight_mover(weight_mover), .dead_mover(dead_mover),
//OUTPUTS
.x_boundaryChecker(x_boundaryChecker), .y_boundaryChecker(y_boundaryChecker), .z_boundaryChecker(z_boundaryChecker),
.ux_boundaryChecker(ux_boundaryChecker), .uy_boundaryChecker(uy_boundaryChecker), .uz_boundaryChecker(uz_boundaryChecker),
.sz_boundaryChecker(sz_boundaryChecker), .sr_boundaryChecker(sr_boundaryChecker),
.sleftz_boundaryChecker(sleftz_boundaryChecker), .sleftr_boundaryChecker(sleftr_boundaryChecker),
.layer_boundaryChecker(layer_boundaryChecker), .weight_boundaryChecker(weight_boundaryChecker), .dead_boundaryChecker(dead_boundaryChecker), .hit_boundaryChecker(hit_boundaryChecker),
//CONSTANTS
.z1_0(z1_0), .z1_1(z1_1), .z1_2(z1_2), .z1_3(z1_3), .z1_4(z1_4), .z1_5(z1_5),
.z0_0(z0_0), .z0_1(z0_1), .z0_2(z0_2), .z0_3(z0_3), .z0_4(z0_4), .z0_5(z0_5),
.mut_0(mut_0), .mut_1(mut_1), .mut_2(mut_2), .mut_3(mut_3), .mut_4(mut_4), .mut_5(mut_5),
.maxDepth_over_maxRadius(maxDepth_over_maxRadius)
);
Hop hopper ( //INPUTS
.clock(clock), .reset(reset), .enable(enable),
.x_boundaryChecker(x_boundaryChecker), .y_boundaryChecker(y_boundaryChecker), .z_boundaryChecker(z_boundaryChecker),
.ux_boundaryChecker(ux_boundaryChecker), .uy_boundaryChecker(uy_boundaryChecker), .uz_boundaryChecker(uz_boundaryChecker),
.sz_boundaryChecker(sz_boundaryChecker), .sr_boundaryChecker(sr_boundaryChecker),
.sleftz_boundaryChecker(sleftz_boundaryChecker), .sleftr_boundaryChecker(sleftr_boundaryChecker),
.layer_boundaryChecker(layer_boundaryChecker), .weight_boundaryChecker(weight_boundaryChecker), .dead_boundaryChecker(dead_boundaryChecker),
.hit_boundaryChecker(hit_boundaryChecker),
//OUTPUTS
.x_hop(x_hop), .y_hop(y_hop), .z_hop(z_hop),
.ux_hop(ux_hop), .uy_hop(uy_hop), .uz_hop(uz_hop),
.sz_hop(sz_hop), .sr_hop(sr_hop),
.sleftz_hop(sleftz_hop), .sleftr_hop(sleftr_hop),
.layer_hop(layer_hop), .weight_hop(weight_hop), .dead_hop(dead_hop), .hit_hop(hit_hop)
);
Roulette Roulette ( //INPUTS
.clock(clock), .reset(reset), .enable(enable),
.x_RouletteMux(x_dropSpin), .y_RouletteMux(y_dropSpin), .z_RouletteMux(z_dropSpin),
.ux_RouletteMux(ux_dropSpin), .uy_RouletteMux(uy_dropSpin), .uz_RouletteMux(uz_dropSpin),
.sz_RouletteMux(sz_dropSpin), .sr_RouletteMux(sr_dropSpin),
.sleftz_RouletteMux(sleftz_dropSpin), .sleftr_RouletteMux(sleftr_dropSpin),
.layer_RouletteMux(layer_dropSpin), .weight_absorber(weight_dropSpin), .dead_RouletteMux(dead_dropSpin),
.randnumber(rand4),
//OUTPUTS
.x_Roulette(x_Roulette), .y_Roulette(y_Roulette), .z_Roulette(z_Roulette),
.ux_Roulette(ux_Roulette), .uy_Roulette(uy_Roulette), .uz_Roulette(uz_Roulette),
.sz_Roulette(sz_Roulette), .sr_Roulette(sr_Roulette),
.sleftz_Roulette(sleftz_Roulette), .sleftr_Roulette(sleftr_Roulette),
.layer_Roulette(layer_Roulette), .weight_Roulette(weight_Roulette), .dead_Roulette(dead_Roulette)
);
DropSpinWrapper dropSpin (
.clock(clock), .reset(reset), .enable(enable),
//From Hopper Module
.i_x(x_hop),
.i_y(y_hop),
.i_z(z_hop),
.i_ux(ux_hop),
.i_uy(uy_hop),
.i_uz(uz_hop),
.i_sz(sz_hop),
.i_sr(sr_hop),
.i_sleftz(sleftz_hop),
.i_sleftr(sleftr_hop),
.i_weight(weight_hop),
.i_layer(layer_hop),
.i_dead(dead_hop),
.i_hit(hit_hop),
//From System Register File (5 layers)- Absorber
.muaFraction1(muaFraction1), .muaFraction2(muaFraction2), .muaFraction3(muaFraction3), .muaFraction4(muaFraction4), .muaFraction5(muaFraction5),
//From System Register File - ScattererReflector
.down_niOverNt_1(down_niOverNt_1),
.down_niOverNt_2(down_niOverNt_2),
.down_niOverNt_3(down_niOverNt_3),
.down_niOverNt_4(down_niOverNt_4),
.down_niOverNt_5(down_niOverNt_5),
.up_niOverNt_1(up_niOverNt_1),
.up_niOverNt_2(up_niOverNt_2),
.up_niOverNt_3(up_niOverNt_3),
.up_niOverNt_4(up_niOverNt_4),
.up_niOverNt_5(up_niOverNt_5),
.down_niOverNt_2_1(down_niOverNt_2_1),
.down_niOverNt_2_2(down_niOverNt_2_2),
.down_niOverNt_2_3(down_niOverNt_2_3),
.down_niOverNt_2_4(down_niOverNt_2_4),
.down_niOverNt_2_5(down_niOverNt_2_5),
.up_niOverNt_2_1(up_niOverNt_2_1),
.up_niOverNt_2_2(up_niOverNt_2_2),
.up_niOverNt_2_3(up_niOverNt_2_3),
.up_niOverNt_2_4(up_niOverNt_2_4),
.up_niOverNt_2_5(up_niOverNt_2_5),
.downCritAngle_0(downCritAngle_0),
.downCritAngle_1(downCritAngle_1),
.downCritAngle_2(downCritAngle_2),
.downCritAngle_3(downCritAngle_3),
.downCritAngle_4(downCritAngle_4),
.upCritAngle_0(upCritAngle_0),
.upCritAngle_1(upCritAngle_1),
.upCritAngle_2(upCritAngle_2),
.upCritAngle_3(upCritAngle_3),
.upCritAngle_4(upCritAngle_4),
// port to memory
.data(absorb_data), .rdaddress(absorb_rdaddress), .wraddress(absorb_wraddress),
.wren(absorb_wren), .q(absorb_q),
//Generated by random number generators controlled by skeleton
.up_rFresnel(up_rFresnel),
.down_rFresnel(down_rFresnel),
.sint(sint),
.cost(cost),
.rand2(rand2),
.rand3(rand3),
.rand5(rand5),
//To Memories
.tindex(tindex),
.fresIndex(fresIndex),
//To Roulette Module
.o_x(x_dropSpin),
.o_y(y_dropSpin),
.o_z(z_dropSpin),
.o_ux(ux_dropSpin),
.o_uy(uy_dropSpin),
.o_uz(uz_dropSpin),
.o_sz(sz_dropSpin),
.o_sr(sr_dropSpin),
.o_sleftz(sleftz_dropSpin),
.o_sleftr(sleftr_dropSpin),
.o_weight(weight_dropSpin),
.o_layer(layer_dropSpin),
.o_dead(dead_dropSpin),
.o_hit(hit_dropSpin)
);
// Determine how many photons left
always @(r_num_photons_left or dead_Roulette or r_done or r_counter)
begin
//c_num_photons_left = r_num_photons_left;
//c_counter = 0;
if(dead_Roulette == 1'b1 && r_done == 1'b0)
begin
if(r_num_photons_left > 0)
begin
c_num_photons_left = r_num_photons_left - 1;
c_counter = 0;
end
else
begin
c_counter = r_counter + 1;
c_num_photons_left = r_num_photons_left;
end
end
else
begin
c_num_photons_left = r_num_photons_left;
c_counter = 0;
end
end
// Only state info is done
always @(r_done or r_counter)
begin
//c_done = r_done;
if(r_counter > `PIPELINE_DEPTH_UPPER_LIMIT)
begin
c_done = 1'b1;
end else begin
c_done = r_done;
end
end
// Create mux to mover
always @(dead_Roulette or initialWeight or r_num_photons_left or x_Roulette or y_Roulette or z_Roulette or
ux_Roulette or uy_Roulette or uz_Roulette or sz_Roulette or sr_Roulette or sleftz_Roulette or
sleftr_Roulette or layer_Roulette or weight_Roulette or dead_Roulette)
begin
if(dead_Roulette)
begin
x_moverMux = 0;
y_moverMux = 0;
z_moverMux = 0;
ux_moverMux = 0;
uy_moverMux = 0;
uz_moverMux = 32'h7fffffff;
sz_moverMux = 0;
sr_moverMux = 0;
sleftz_moverMux = 0;
sleftr_moverMux = 0;
layer_moverMux = 3'b01;
weight_moverMux = initialWeight;
if(r_num_photons_left > 0)
begin
dead_moverMux = 1'b0;
end
else
begin
dead_moverMux = 1'b1;
end
end
else
begin
x_moverMux = x_Roulette;
y_moverMux = y_Roulette;
z_moverMux = z_Roulette;
ux_moverMux = ux_Roulette;
uy_moverMux = uy_Roulette;
uz_moverMux = uz_Roulette;
sz_moverMux = sz_Roulette;
sr_moverMux = sr_Roulette;
sleftz_moverMux = sleftz_Roulette;
sleftr_moverMux = sleftr_Roulette;
layer_moverMux = layer_Roulette;
weight_moverMux = weight_Roulette;
dead_moverMux = dead_Roulette;
end
end
// register state
always @(posedge clock)
begin
if(reset)
begin
r_num_photons_left <= total_photons;
r_counter <= 1'b0;
r_done <= 1'b0;
delay_loadseed <= 1'b1;
loadseed <= 1'b1;
end
else
begin
if(enable)
begin
r_num_photons_left <= c_num_photons_left;
r_counter <= c_counter;
r_done <= c_done;
delay_loadseed <= 1'b0;
loadseed <= delay_loadseed;
end
end
end
endmodule
module Move( //INPUTS
clock, reset, enable,
x_moverMux, y_moverMux, z_moverMux,
ux_moverMux, uy_moverMux, uz_moverMux,
sz_moverMux, sr_moverMux,
sleftz_moverMux, sleftr_moverMux,
layer_moverMux, weight_moverMux, dead_moverMux,
log_rand_num,
//OUTPUTS
x_mover, y_mover, z_mover,
ux_mover, uy_mover, uz_mover,
sz_mover, sr_mover,
sleftz_mover, sleftr_mover,
layer_mover, weight_mover, dead_mover,
// CONSTANTS
OneOver_MutMaxrad_0, OneOver_MutMaxrad_1, OneOver_MutMaxrad_2, OneOver_MutMaxrad_3, OneOver_MutMaxrad_4, OneOver_MutMaxrad_5,
OneOver_MutMaxdep_0, OneOver_MutMaxdep_1, OneOver_MutMaxdep_2, OneOver_MutMaxdep_3, OneOver_MutMaxdep_4, OneOver_MutMaxdep_5,
OneOver_Mut_0, OneOver_Mut_1, OneOver_Mut_2, OneOver_Mut_3, OneOver_Mut_4, OneOver_Mut_5
);
input clock;
input reset;
input enable;
input [`BIT_WIDTH-1:0] x_moverMux;
input [`BIT_WIDTH-1:0] y_moverMux;
input [`BIT_WIDTH-1:0] z_moverMux;
input [`BIT_WIDTH-1:0] ux_moverMux;
input [`BIT_WIDTH-1:0] uy_moverMux;
input [`BIT_WIDTH-1:0] uz_moverMux;
input [`BIT_WIDTH-1:0] sz_moverMux;
input [`BIT_WIDTH-1:0] sr_moverMux;
input [`BIT_WIDTH-1:0] sleftz_moverMux;
input [`BIT_WIDTH-1:0] sleftr_moverMux;
input [`LAYER_WIDTH-1:0] layer_moverMux;
input [`BIT_WIDTH-1:0] weight_moverMux;
input dead_moverMux;
output [`BIT_WIDTH-1:0] x_mover;
output [`BIT_WIDTH-1:0] y_mover;
output [`BIT_WIDTH-1:0] z_mover;
output [`BIT_WIDTH-1:0] ux_mover;
output [`BIT_WIDTH-1:0] uy_mover;
output [`BIT_WIDTH-1:0] uz_mover;
output [`BIT_WIDTH-1:0] sz_mover;
output [`BIT_WIDTH-1:0] sr_mover;
output [`BIT_WIDTH-1:0] sleftz_mover;
output [`BIT_WIDTH-1:0] sleftr_mover;
output [`LAYER_WIDTH-1:0]layer_mover;
output [`BIT_WIDTH-1:0] weight_mover;
output dead_mover;
input [`BIT_WIDTH-1:0] OneOver_MutMaxrad_0;
input [`BIT_WIDTH-1:0] OneOver_MutMaxrad_1;
input [`BIT_WIDTH-1:0] OneOver_MutMaxrad_2;
input [`BIT_WIDTH-1:0] OneOver_MutMaxrad_3;
input [`BIT_WIDTH-1:0] OneOver_MutMaxrad_4;
input [`BIT_WIDTH-1:0] OneOver_MutMaxrad_5;
input [`BIT_WIDTH-1:0] OneOver_MutMaxdep_0;
input [`BIT_WIDTH-1:0] OneOver_MutMaxdep_1;
input [`BIT_WIDTH-1:0] OneOver_MutMaxdep_2;
input [`BIT_WIDTH-1:0] OneOver_MutMaxdep_3;
input [`BIT_WIDTH-1:0] OneOver_MutMaxdep_4;
input [`BIT_WIDTH-1:0] OneOver_MutMaxdep_5;
input [`BIT_WIDTH-1:0] OneOver_Mut_0;
input [`BIT_WIDTH-1:0] OneOver_Mut_1;
input [`BIT_WIDTH-1:0] OneOver_Mut_2;
input [`BIT_WIDTH-1:0] OneOver_Mut_3;
input [`BIT_WIDTH-1:0] OneOver_Mut_4;
input [`BIT_WIDTH-1:0] OneOver_Mut_5;
input [`BIT_WIDTH-1:0] log_rand_num;
//------------Local Variables------------------------
reg [`BIT_WIDTH-1:0] c_sr;
reg [`BIT_WIDTH-1:0] c_sz;
reg [2*`BIT_WIDTH-1:0] c_sr_big;
reg [2*`BIT_WIDTH-1:0] c_sz_big;
reg [`BIT_WIDTH-1:0] c_sleftr;
reg [`BIT_WIDTH-1:0] c_sleftz;
//No signed regs, unsigned unecessary
//reg unsigned [`BIT_WIDTH-1:0] c_r_op0;
//reg unsigned [`BIT_WIDTH-1:0] c_r_op1;
//reg unsigned [`BIT_WIDTH-1:0] c_z_op0;
//reg unsigned [`BIT_WIDTH-1:0] c_z_op1;
reg [`BIT_WIDTH-1:0] c_r_op0;
reg [`BIT_WIDTH-1:0] c_r_op1;
reg [`BIT_WIDTH-1:0] c_z_op0;
reg [`BIT_WIDTH-1:0] c_z_op1;
// grab multiplexed constant
reg [`BIT_WIDTH-1:0] OneOver_MutMaxrad;
reg [`BIT_WIDTH-1:0] OneOver_MutMaxdep;
reg [`BIT_WIDTH-1:0] OneOver_Mut;
//------------REGISTERED Values------------------------
reg [`BIT_WIDTH-1:0] x_mover;
reg [`BIT_WIDTH-1:0] y_mover;
reg [`BIT_WIDTH-1:0] z_mover;
reg [`BIT_WIDTH-1:0] ux_mover;
reg [`BIT_WIDTH-1:0] uy_mover;
reg [`BIT_WIDTH-1:0] uz_mover;
reg [`BIT_WIDTH-1:0] sz_mover;
reg [`BIT_WIDTH-1:0] sr_mover;
reg [`BIT_WIDTH-1:0] sleftz_mover;
reg [`BIT_WIDTH-1:0] sleftr_mover;
reg [`LAYER_WIDTH-1:0]layer_mover;
reg [`BIT_WIDTH-1:0] weight_mover;
reg dead_mover;
//Need this to deal with 'unused' inputs for ODIN II
wire bigOr;
assign bigOr = sr_moverMux[0] | sr_moverMux[1] | sr_moverMux[2] | sr_moverMux[3] | sr_moverMux[4] | sr_moverMux[5] |
sr_moverMux[6] | sr_moverMux[7] | sr_moverMux[8] | sr_moverMux[9] | sr_moverMux[10] | sr_moverMux[11] |
sr_moverMux[12] | sr_moverMux[13] | sr_moverMux[14] | sr_moverMux[15] | sr_moverMux[16] | sr_moverMux[17] |
sr_moverMux[18] | sr_moverMux[19] | sr_moverMux[20] | sr_moverMux[21] | sr_moverMux[22] | sr_moverMux[23] |
sr_moverMux[24] | sr_moverMux[25] | sr_moverMux[26] | sr_moverMux[27] | sr_moverMux[28] | sr_moverMux[29] |
sr_moverMux[30] | sr_moverMux[31] |
sz_moverMux[0] | sz_moverMux[1] | sz_moverMux[2] | sz_moverMux[3] | sz_moverMux[4] | sz_moverMux[5] |
sz_moverMux[6] | sz_moverMux[7] | sz_moverMux[8] | sz_moverMux[9] | sz_moverMux[10] | sz_moverMux[11] |
sz_moverMux[12] | sz_moverMux[13] | sz_moverMux[14] | sz_moverMux[15] | sz_moverMux[16] | sz_moverMux[17] |
sz_moverMux[18] | sz_moverMux[19] | sz_moverMux[20] | sz_moverMux[21] | sz_moverMux[22] | sz_moverMux[23] |
sz_moverMux[24] | sz_moverMux[25] | sz_moverMux[26] | sz_moverMux[27] | sz_moverMux[28] | sz_moverMux[29] |
sz_moverMux[30] | sz_moverMux[31] |
1'b1;
wire reset_new;
assign reset_new = reset & bigOr;
// multiplex constants
always @(layer_moverMux or OneOver_MutMaxrad_0 or OneOver_MutMaxdep_0 or OneOver_Mut_0 or
OneOver_MutMaxrad_1 or OneOver_MutMaxdep_1 or OneOver_Mut_1 or
OneOver_MutMaxrad_2 or OneOver_MutMaxdep_2 or OneOver_Mut_2 or
OneOver_MutMaxrad_3 or OneOver_MutMaxdep_3 or OneOver_Mut_3 or
OneOver_MutMaxrad_4 or OneOver_MutMaxdep_4 or OneOver_Mut_4 or
OneOver_MutMaxrad_5 or OneOver_MutMaxdep_5 or OneOver_Mut_5)
begin
case(layer_moverMux)
3'b000:
begin
OneOver_MutMaxrad = OneOver_MutMaxrad_0;
OneOver_MutMaxdep = OneOver_MutMaxdep_0;
OneOver_Mut = OneOver_Mut_0;
end
3'b001:
begin
OneOver_MutMaxrad = OneOver_MutMaxrad_1;
OneOver_MutMaxdep = OneOver_MutMaxdep_1;
OneOver_Mut = OneOver_Mut_1;
end
3'b010:
begin
OneOver_MutMaxrad = OneOver_MutMaxrad_2;
OneOver_MutMaxdep = OneOver_MutMaxdep_2;
OneOver_Mut = OneOver_Mut_2;
end
3'b011:
begin
OneOver_MutMaxrad = OneOver_MutMaxrad_3;
OneOver_MutMaxdep = OneOver_MutMaxdep_3;
OneOver_Mut = OneOver_Mut_3;
end
3'b100:
begin
OneOver_MutMaxrad = OneOver_MutMaxrad_4;
OneOver_MutMaxdep = OneOver_MutMaxdep_4;
OneOver_Mut = OneOver_Mut_4;
end
3'b101:
begin
OneOver_MutMaxrad = OneOver_MutMaxrad_5;
OneOver_MutMaxdep = OneOver_MutMaxdep_5;
OneOver_Mut = OneOver_Mut_5;
end
default:
begin
OneOver_MutMaxrad = 0;
OneOver_MutMaxdep = 0;
OneOver_Mut = 0;
end
endcase
end
// Determine move value
always @(sleftz_moverMux or log_rand_num or OneOver_MutMaxrad or OneOver_MutMaxdep or sleftr_moverMux or
OneOver_Mut)
begin
// Resource sharing for multipliers
if(sleftz_moverMux == 32'b0)
begin
c_r_op0 = `MAXLOG - log_rand_num;
c_r_op1 = OneOver_MutMaxrad;
c_z_op0 = `MAXLOG - log_rand_num;
c_z_op1 = OneOver_MutMaxdep;
end
else
begin
c_r_op0 = sleftr_moverMux;
c_r_op1 = OneOver_Mut;
c_z_op0 = sleftz_moverMux;
c_z_op1 = OneOver_Mut;
end
end
// Determine move value
always @(sleftz_moverMux or c_r_op0 or c_r_op1 or c_z_op0 or c_z_op1 or sleftr_moverMux)
begin
c_sr_big = c_r_op0 * c_r_op1;
c_sz_big = c_z_op0 * c_z_op1;
if(sleftz_moverMux == 32'b0)
begin
c_sr = c_sr_big[2*`BIT_WIDTH - `LOGSCALEFACTOR - 1:`BIT_WIDTH - `LOGSCALEFACTOR];
c_sz = c_sz_big[2*`BIT_WIDTH - `LOGSCALEFACTOR - 1:`BIT_WIDTH - `LOGSCALEFACTOR];
c_sleftr = sleftr_moverMux;
c_sleftz = 0;
//c_sr = `CONST_MOVE_AMOUNT;
//c_sz = `CONST_MOVE_AMOUNT;
end
else
begin
c_sr = c_sr_big[2*`BIT_WIDTH - `MUTMAX_BITS - 1 - 1:`BIT_WIDTH - `MUTMAX_BITS - 1];
c_sz = c_sz_big[2*`BIT_WIDTH - `MUTMAX_BITS - 1 - 1:`BIT_WIDTH - `MUTMAX_BITS - 1];
c_sleftz = 0;
c_sleftr = 0;
end
end
// latch values
always @ (posedge clock)
begin
if (reset_new)
begin
// Photon variables
x_mover <= 0;
y_mover <= 0;
z_mover <= 0;
ux_mover <= 0;
uy_mover <= 0;
uz_mover <= 0;
sz_mover <= 0;
sr_mover <= 0;
sleftz_mover <= 0;
sleftr_mover <= 0;
layer_mover <= 0;
weight_mover <= 0;
dead_mover <= 1'b1;
end
else
begin
if(enable)
begin
// Photon variables
x_mover <= x_moverMux;
y_mover <= y_moverMux;
z_mover <= z_moverMux;
ux_mover <= ux_moverMux;
uy_mover <= uy_moverMux;
uz_mover <= uz_moverMux;
layer_mover <= layer_moverMux;
weight_mover <= weight_moverMux;
dead_mover <= dead_moverMux;
sz_mover <= c_sz;
sr_mover <= c_sr;
sleftz_mover <= c_sleftz;
sleftr_mover <= c_sleftr;
end
end
end
endmodule
module Boundary ( //INPUTS
clock, reset, enable,
x_mover, y_mover, z_mover,
ux_mover, uy_mover, uz_mover,
sz_mover, sr_mover,
sleftz_mover, sleftr_mover,
layer_mover, weight_mover, dead_mover,
//OUTPUTS
x_boundaryChecker, y_boundaryChecker, z_boundaryChecker,
ux_boundaryChecker, uy_boundaryChecker, uz_boundaryChecker,
sz_boundaryChecker, sr_boundaryChecker,
sleftz_boundaryChecker, sleftr_boundaryChecker,
layer_boundaryChecker, weight_boundaryChecker, dead_boundaryChecker, hit_boundaryChecker,
//CONSTANTS
z1_0, z1_1, z1_2, z1_3, z1_4, z1_5,
z0_0, z0_1, z0_2, z0_3, z0_4, z0_5,
mut_0, mut_1, mut_2, mut_3, mut_4, mut_5,
maxDepth_over_maxRadius
);
//parameter BIT_WIDTH=32;
//parameter LAYER_WIDTH=3;
//parameter INTMAX=2147483647;
//parameter INTMIN=-2147483648;
//parameter DIVIDER_LATENCY=30;
//parameter FINAL_LATENCY=28;
//parameter MULT_LATENCY=1;
//parameter ASPECT_RATIO = 7;
//parameter TOTAL_LATENCY = `DIVIDER_LATENCY + `FINAL_LATENCY + `MULT_LATENCY + `MULT_LATENCY;
input clock;
input reset;
input enable;
input [`BIT_WIDTH-1:0] x_mover;
input [`BIT_WIDTH-1:0] y_mover;
input [`BIT_WIDTH-1:0] z_mover;
input [`BIT_WIDTH-1:0] ux_mover;
input [`BIT_WIDTH-1:0] uy_mover;
input [`BIT_WIDTH-1:0] uz_mover;
input [`BIT_WIDTH-1:0] sz_mover;
input [`BIT_WIDTH-1:0] sr_mover;
input [`BIT_WIDTH-1:0] sleftz_mover;
input [`BIT_WIDTH-1:0] sleftr_mover;
input [`LAYER_WIDTH-1:0] layer_mover;
input [`BIT_WIDTH-1:0] weight_mover;
input dead_mover;
output [`BIT_WIDTH-1:0] x_boundaryChecker;
output [`BIT_WIDTH-1:0] y_boundaryChecker;
output [`BIT_WIDTH-1:0] z_boundaryChecker;
output [`BIT_WIDTH-1:0] ux_boundaryChecker;
output [`BIT_WIDTH-1:0] uy_boundaryChecker;
output [`BIT_WIDTH-1:0] uz_boundaryChecker;
output [`BIT_WIDTH-1:0] sz_boundaryChecker;
output [`BIT_WIDTH-1:0] sr_boundaryChecker;
output [`BIT_WIDTH-1:0] sleftz_boundaryChecker;
output [`BIT_WIDTH-1:0] sleftr_boundaryChecker;
output [`LAYER_WIDTH-1:0]layer_boundaryChecker;
output [`BIT_WIDTH-1:0] weight_boundaryChecker;
output dead_boundaryChecker;
output hit_boundaryChecker;
// Constants
input [`BIT_WIDTH-1:0] z1_0;
input [`BIT_WIDTH-1:0] z1_1;
input [`BIT_WIDTH-1:0] z1_2;
input [`BIT_WIDTH-1:0] z1_3;
input [`BIT_WIDTH-1:0] z1_4;
input [`BIT_WIDTH-1:0] z1_5;
input [`BIT_WIDTH-1:0] z0_0;
input [`BIT_WIDTH-1:0] z0_1;
input [`BIT_WIDTH-1:0] z0_2;
input [`BIT_WIDTH-1:0] z0_3;
input [`BIT_WIDTH-1:0] z0_4;
input [`BIT_WIDTH-1:0] z0_5;
input [`BIT_WIDTH-1:0] mut_0;
input [`BIT_WIDTH-1:0] mut_1;
input [`BIT_WIDTH-1:0] mut_2;
input [`BIT_WIDTH-1:0] mut_3;
input [`BIT_WIDTH-1:0] mut_4;
input [`BIT_WIDTH-1:0] mut_5;
input [`BIT_WIDTH-1:0] maxDepth_over_maxRadius;
//WIRES FOR CONNECTING REGISTERS
//reg [BIT_WIDTH-1:0] c_x [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] c_y [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] c_z [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] c_ux [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] c_uy [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] c_uz [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] c_sz [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] c_sr [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] c_sleftz [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] c_sleftr [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] c_weight [TOTAL_LATENCY - 1:0];
//reg [LAYER_WIDTH-1:0] c_layer [TOTAL_LATENCY - 1:0];
//reg c_dead [TOTAL_LATENCY - 1:0];
//reg c_hit [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] c_diff[TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] c_dl_b[TOTAL_LATENCY - 1:0];
//reg [2*BIT_WIDTH-1:0] c_numer[TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] c_z1[TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] c_z0[TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] c_mut[TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] r_x [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] r_y [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] r_z [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] r_ux [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] r_uy [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] r_uz [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] r_sz [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] r_sr [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] r_sleftz [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] r_sleftr [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] r_weight [TOTAL_LATENCY - 1:0];
//reg [LAYER_WIDTH-1:0] r_layer [TOTAL_LATENCY - 1:0];
//reg r_dead [TOTAL_LATENCY - 1:0];
//reg r_hit [TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] r_diff[TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] r_dl_b[TOTAL_LATENCY - 1:0];
//reg [2*BIT_WIDTH-1:0] r_numer[TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] r_z1[TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] r_z0[TOTAL_LATENCY - 1:0];
//reg [BIT_WIDTH-1:0] r_mut[TOTAL_LATENCY - 1:0];
//EXPANDED FOR ODIN
//reg [BIT_WIDTH-1:0] c_x [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] c_x__0;
reg [`BIT_WIDTH-1:0] c_x__1;
reg [`BIT_WIDTH-1:0] c_x__2;
reg [`BIT_WIDTH-1:0] c_x__3;
reg [`BIT_WIDTH-1:0] c_x__4;
reg [`BIT_WIDTH-1:0] c_x__5;
reg [`BIT_WIDTH-1:0] c_x__6;
reg [`BIT_WIDTH-1:0] c_x__7;
reg [`BIT_WIDTH-1:0] c_x__8;
reg [`BIT_WIDTH-1:0] c_x__9;
reg [`BIT_WIDTH-1:0] c_x__10;
reg [`BIT_WIDTH-1:0] c_x__11;
reg [`BIT_WIDTH-1:0] c_x__12;
reg [`BIT_WIDTH-1:0] c_x__13;
reg [`BIT_WIDTH-1:0] c_x__14;
reg [`BIT_WIDTH-1:0] c_x__15;
reg [`BIT_WIDTH-1:0] c_x__16;
reg [`BIT_WIDTH-1:0] c_x__17;
reg [`BIT_WIDTH-1:0] c_x__18;
reg [`BIT_WIDTH-1:0] c_x__19;
reg [`BIT_WIDTH-1:0] c_x__20;
reg [`BIT_WIDTH-1:0] c_x__21;
reg [`BIT_WIDTH-1:0] c_x__22;
reg [`BIT_WIDTH-1:0] c_x__23;
reg [`BIT_WIDTH-1:0] c_x__24;
reg [`BIT_WIDTH-1:0] c_x__25;
reg [`BIT_WIDTH-1:0] c_x__26;
reg [`BIT_WIDTH-1:0] c_x__27;
reg [`BIT_WIDTH-1:0] c_x__28;
reg [`BIT_WIDTH-1:0] c_x__29;
reg [`BIT_WIDTH-1:0] c_x__30;
reg [`BIT_WIDTH-1:0] c_x__31;
reg [`BIT_WIDTH-1:0] c_x__32;
reg [`BIT_WIDTH-1:0] c_x__33;
reg [`BIT_WIDTH-1:0] c_x__34;
reg [`BIT_WIDTH-1:0] c_x__35;
reg [`BIT_WIDTH-1:0] c_x__36;
reg [`BIT_WIDTH-1:0] c_x__37;
reg [`BIT_WIDTH-1:0] c_x__38;
reg [`BIT_WIDTH-1:0] c_x__39;
reg [`BIT_WIDTH-1:0] c_x__40;
reg [`BIT_WIDTH-1:0] c_x__41;
reg [`BIT_WIDTH-1:0] c_x__42;
reg [`BIT_WIDTH-1:0] c_x__43;
reg [`BIT_WIDTH-1:0] c_x__44;
reg [`BIT_WIDTH-1:0] c_x__45;
reg [`BIT_WIDTH-1:0] c_x__46;
reg [`BIT_WIDTH-1:0] c_x__47;
reg [`BIT_WIDTH-1:0] c_x__48;
reg [`BIT_WIDTH-1:0] c_x__49;
reg [`BIT_WIDTH-1:0] c_x__50;
reg [`BIT_WIDTH-1:0] c_x__51;
reg [`BIT_WIDTH-1:0] c_x__52;
reg [`BIT_WIDTH-1:0] c_x__53;
reg [`BIT_WIDTH-1:0] c_x__54;
reg [`BIT_WIDTH-1:0] c_x__55;
reg [`BIT_WIDTH-1:0] c_x__56;
reg [`BIT_WIDTH-1:0] c_x__57;
reg [`BIT_WIDTH-1:0] c_x__58;
reg [`BIT_WIDTH-1:0] c_x__59;
//reg [BIT_WIDTH-1:0] c_y [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] c_y__0;
reg [`BIT_WIDTH-1:0] c_y__1;
reg [`BIT_WIDTH-1:0] c_y__2;
reg [`BIT_WIDTH-1:0] c_y__3;
reg [`BIT_WIDTH-1:0] c_y__4;
reg [`BIT_WIDTH-1:0] c_y__5;
reg [`BIT_WIDTH-1:0] c_y__6;
reg [`BIT_WIDTH-1:0] c_y__7;
reg [`BIT_WIDTH-1:0] c_y__8;
reg [`BIT_WIDTH-1:0] c_y__9;
reg [`BIT_WIDTH-1:0] c_y__10;
reg [`BIT_WIDTH-1:0] c_y__11;
reg [`BIT_WIDTH-1:0] c_y__12;
reg [`BIT_WIDTH-1:0] c_y__13;
reg [`BIT_WIDTH-1:0] c_y__14;
reg [`BIT_WIDTH-1:0] c_y__15;
reg [`BIT_WIDTH-1:0] c_y__16;
reg [`BIT_WIDTH-1:0] c_y__17;
reg [`BIT_WIDTH-1:0] c_y__18;
reg [`BIT_WIDTH-1:0] c_y__19;
reg [`BIT_WIDTH-1:0] c_y__20;
reg [`BIT_WIDTH-1:0] c_y__21;
reg [`BIT_WIDTH-1:0] c_y__22;
reg [`BIT_WIDTH-1:0] c_y__23;
reg [`BIT_WIDTH-1:0] c_y__24;
reg [`BIT_WIDTH-1:0] c_y__25;
reg [`BIT_WIDTH-1:0] c_y__26;
reg [`BIT_WIDTH-1:0] c_y__27;
reg [`BIT_WIDTH-1:0] c_y__28;
reg [`BIT_WIDTH-1:0] c_y__29;
reg [`BIT_WIDTH-1:0] c_y__30;
reg [`BIT_WIDTH-1:0] c_y__31;
reg [`BIT_WIDTH-1:0] c_y__32;
reg [`BIT_WIDTH-1:0] c_y__33;
reg [`BIT_WIDTH-1:0] c_y__34;
reg [`BIT_WIDTH-1:0] c_y__35;
reg [`BIT_WIDTH-1:0] c_y__36;
reg [`BIT_WIDTH-1:0] c_y__37;
reg [`BIT_WIDTH-1:0] c_y__38;
reg [`BIT_WIDTH-1:0] c_y__39;
reg [`BIT_WIDTH-1:0] c_y__40;
reg [`BIT_WIDTH-1:0] c_y__41;
reg [`BIT_WIDTH-1:0] c_y__42;
reg [`BIT_WIDTH-1:0] c_y__43;
reg [`BIT_WIDTH-1:0] c_y__44;
reg [`BIT_WIDTH-1:0] c_y__45;
reg [`BIT_WIDTH-1:0] c_y__46;
reg [`BIT_WIDTH-1:0] c_y__47;
reg [`BIT_WIDTH-1:0] c_y__48;
reg [`BIT_WIDTH-1:0] c_y__49;
reg [`BIT_WIDTH-1:0] c_y__50;
reg [`BIT_WIDTH-1:0] c_y__51;
reg [`BIT_WIDTH-1:0] c_y__52;
reg [`BIT_WIDTH-1:0] c_y__53;
reg [`BIT_WIDTH-1:0] c_y__54;
reg [`BIT_WIDTH-1:0] c_y__55;
reg [`BIT_WIDTH-1:0] c_y__56;
reg [`BIT_WIDTH-1:0] c_y__57;
reg [`BIT_WIDTH-1:0] c_y__58;
reg [`BIT_WIDTH-1:0] c_y__59;
//reg [BIT_WIDTH-1:0] c_z [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] c_z__0;
reg [`BIT_WIDTH-1:0] c_z__1;
reg [`BIT_WIDTH-1:0] c_z__2;
reg [`BIT_WIDTH-1:0] c_z__3;
reg [`BIT_WIDTH-1:0] c_z__4;
reg [`BIT_WIDTH-1:0] c_z__5;
reg [`BIT_WIDTH-1:0] c_z__6;
reg [`BIT_WIDTH-1:0] c_z__7;
reg [`BIT_WIDTH-1:0] c_z__8;
reg [`BIT_WIDTH-1:0] c_z__9;
reg [`BIT_WIDTH-1:0] c_z__10;
reg [`BIT_WIDTH-1:0] c_z__11;
reg [`BIT_WIDTH-1:0] c_z__12;
reg [`BIT_WIDTH-1:0] c_z__13;
reg [`BIT_WIDTH-1:0] c_z__14;
reg [`BIT_WIDTH-1:0] c_z__15;
reg [`BIT_WIDTH-1:0] c_z__16;
reg [`BIT_WIDTH-1:0] c_z__17;
reg [`BIT_WIDTH-1:0] c_z__18;
reg [`BIT_WIDTH-1:0] c_z__19;
reg [`BIT_WIDTH-1:0] c_z__20;
reg [`BIT_WIDTH-1:0] c_z__21;
reg [`BIT_WIDTH-1:0] c_z__22;
reg [`BIT_WIDTH-1:0] c_z__23;
reg [`BIT_WIDTH-1:0] c_z__24;
reg [`BIT_WIDTH-1:0] c_z__25;
reg [`BIT_WIDTH-1:0] c_z__26;
reg [`BIT_WIDTH-1:0] c_z__27;
reg [`BIT_WIDTH-1:0] c_z__28;
reg [`BIT_WIDTH-1:0] c_z__29;
reg [`BIT_WIDTH-1:0] c_z__30;
reg [`BIT_WIDTH-1:0] c_z__31;
reg [`BIT_WIDTH-1:0] c_z__32;
reg [`BIT_WIDTH-1:0] c_z__33;
reg [`BIT_WIDTH-1:0] c_z__34;
reg [`BIT_WIDTH-1:0] c_z__35;
reg [`BIT_WIDTH-1:0] c_z__36;
reg [`BIT_WIDTH-1:0] c_z__37;
reg [`BIT_WIDTH-1:0] c_z__38;
reg [`BIT_WIDTH-1:0] c_z__39;
reg [`BIT_WIDTH-1:0] c_z__40;
reg [`BIT_WIDTH-1:0] c_z__41;
reg [`BIT_WIDTH-1:0] c_z__42;
reg [`BIT_WIDTH-1:0] c_z__43;
reg [`BIT_WIDTH-1:0] c_z__44;
reg [`BIT_WIDTH-1:0] c_z__45;
reg [`BIT_WIDTH-1:0] c_z__46;
reg [`BIT_WIDTH-1:0] c_z__47;
reg [`BIT_WIDTH-1:0] c_z__48;
reg [`BIT_WIDTH-1:0] c_z__49;
reg [`BIT_WIDTH-1:0] c_z__50;
reg [`BIT_WIDTH-1:0] c_z__51;
reg [`BIT_WIDTH-1:0] c_z__52;
reg [`BIT_WIDTH-1:0] c_z__53;
reg [`BIT_WIDTH-1:0] c_z__54;
reg [`BIT_WIDTH-1:0] c_z__55;
reg [`BIT_WIDTH-1:0] c_z__56;
reg [`BIT_WIDTH-1:0] c_z__57;
reg [`BIT_WIDTH-1:0] c_z__58;
reg [`BIT_WIDTH-1:0] c_z__59;
//reg [`BIT_WIDTH-1:0] c_ux [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] c_ux__0;
reg [`BIT_WIDTH-1:0] c_ux__1;
reg [`BIT_WIDTH-1:0] c_ux__2;
reg [`BIT_WIDTH-1:0] c_ux__3;
reg [`BIT_WIDTH-1:0] c_ux__4;
reg [`BIT_WIDTH-1:0] c_ux__5;
reg [`BIT_WIDTH-1:0] c_ux__6;
reg [`BIT_WIDTH-1:0] c_ux__7;
reg [`BIT_WIDTH-1:0] c_ux__8;
reg [`BIT_WIDTH-1:0] c_ux__9;
reg [`BIT_WIDTH-1:0] c_ux__10;
reg [`BIT_WIDTH-1:0] c_ux__11;
reg [`BIT_WIDTH-1:0] c_ux__12;
reg [`BIT_WIDTH-1:0] c_ux__13;
reg [`BIT_WIDTH-1:0] c_ux__14;
reg [`BIT_WIDTH-1:0] c_ux__15;
reg [`BIT_WIDTH-1:0] c_ux__16;
reg [`BIT_WIDTH-1:0] c_ux__17;
reg [`BIT_WIDTH-1:0] c_ux__18;
reg [`BIT_WIDTH-1:0] c_ux__19;
reg [`BIT_WIDTH-1:0] c_ux__20;
reg [`BIT_WIDTH-1:0] c_ux__21;
reg [`BIT_WIDTH-1:0] c_ux__22;
reg [`BIT_WIDTH-1:0] c_ux__23;
reg [`BIT_WIDTH-1:0] c_ux__24;
reg [`BIT_WIDTH-1:0] c_ux__25;
reg [`BIT_WIDTH-1:0] c_ux__26;
reg [`BIT_WIDTH-1:0] c_ux__27;
reg [`BIT_WIDTH-1:0] c_ux__28;
reg [`BIT_WIDTH-1:0] c_ux__29;
reg [`BIT_WIDTH-1:0] c_ux__30;
reg [`BIT_WIDTH-1:0] c_ux__31;
reg [`BIT_WIDTH-1:0] c_ux__32;
reg [`BIT_WIDTH-1:0] c_ux__33;
reg [`BIT_WIDTH-1:0] c_ux__34;
reg [`BIT_WIDTH-1:0] c_ux__35;
reg [`BIT_WIDTH-1:0] c_ux__36;
reg [`BIT_WIDTH-1:0] c_ux__37;
reg [`BIT_WIDTH-1:0] c_ux__38;
reg [`BIT_WIDTH-1:0] c_ux__39;
reg [`BIT_WIDTH-1:0] c_ux__40;
reg [`BIT_WIDTH-1:0] c_ux__41;
reg [`BIT_WIDTH-1:0] c_ux__42;
reg [`BIT_WIDTH-1:0] c_ux__43;
reg [`BIT_WIDTH-1:0] c_ux__44;
reg [`BIT_WIDTH-1:0] c_ux__45;
reg [`BIT_WIDTH-1:0] c_ux__46;
reg [`BIT_WIDTH-1:0] c_ux__47;
reg [`BIT_WIDTH-1:0] c_ux__48;
reg [`BIT_WIDTH-1:0] c_ux__49;
reg [`BIT_WIDTH-1:0] c_ux__50;
reg [`BIT_WIDTH-1:0] c_ux__51;
reg [`BIT_WIDTH-1:0] c_ux__52;
reg [`BIT_WIDTH-1:0] c_ux__53;
reg [`BIT_WIDTH-1:0] c_ux__54;
reg [`BIT_WIDTH-1:0] c_ux__55;
reg [`BIT_WIDTH-1:0] c_ux__56;
reg [`BIT_WIDTH-1:0] c_ux__57;
reg [`BIT_WIDTH-1:0] c_ux__58;
reg [`BIT_WIDTH-1:0] c_ux__59;
//reg [`BIT_WIDTH-1:0] c_uy [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] c_uy__0;
reg [`BIT_WIDTH-1:0] c_uy__1;
reg [`BIT_WIDTH-1:0] c_uy__2;
reg [`BIT_WIDTH-1:0] c_uy__3;
reg [`BIT_WIDTH-1:0] c_uy__4;
reg [`BIT_WIDTH-1:0] c_uy__5;
reg [`BIT_WIDTH-1:0] c_uy__6;
reg [`BIT_WIDTH-1:0] c_uy__7;
reg [`BIT_WIDTH-1:0] c_uy__8;
reg [`BIT_WIDTH-1:0] c_uy__9;
reg [`BIT_WIDTH-1:0] c_uy__10;
reg [`BIT_WIDTH-1:0] c_uy__11;
reg [`BIT_WIDTH-1:0] c_uy__12;
reg [`BIT_WIDTH-1:0] c_uy__13;
reg [`BIT_WIDTH-1:0] c_uy__14;
reg [`BIT_WIDTH-1:0] c_uy__15;
reg [`BIT_WIDTH-1:0] c_uy__16;
reg [`BIT_WIDTH-1:0] c_uy__17;
reg [`BIT_WIDTH-1:0] c_uy__18;
reg [`BIT_WIDTH-1:0] c_uy__19;
reg [`BIT_WIDTH-1:0] c_uy__20;
reg [`BIT_WIDTH-1:0] c_uy__21;
reg [`BIT_WIDTH-1:0] c_uy__22;
reg [`BIT_WIDTH-1:0] c_uy__23;
reg [`BIT_WIDTH-1:0] c_uy__24;
reg [`BIT_WIDTH-1:0] c_uy__25;
reg [`BIT_WIDTH-1:0] c_uy__26;
reg [`BIT_WIDTH-1:0] c_uy__27;
reg [`BIT_WIDTH-1:0] c_uy__28;
reg [`BIT_WIDTH-1:0] c_uy__29;
reg [`BIT_WIDTH-1:0] c_uy__30;
reg [`BIT_WIDTH-1:0] c_uy__31;
reg [`BIT_WIDTH-1:0] c_uy__32;
reg [`BIT_WIDTH-1:0] c_uy__33;
reg [`BIT_WIDTH-1:0] c_uy__34;
reg [`BIT_WIDTH-1:0] c_uy__35;
reg [`BIT_WIDTH-1:0] c_uy__36;
reg [`BIT_WIDTH-1:0] c_uy__37;
reg [`BIT_WIDTH-1:0] c_uy__38;
reg [`BIT_WIDTH-1:0] c_uy__39;
reg [`BIT_WIDTH-1:0] c_uy__40;
reg [`BIT_WIDTH-1:0] c_uy__41;
reg [`BIT_WIDTH-1:0] c_uy__42;
reg [`BIT_WIDTH-1:0] c_uy__43;
reg [`BIT_WIDTH-1:0] c_uy__44;
reg [`BIT_WIDTH-1:0] c_uy__45;
reg [`BIT_WIDTH-1:0] c_uy__46;
reg [`BIT_WIDTH-1:0] c_uy__47;
reg [`BIT_WIDTH-1:0] c_uy__48;
reg [`BIT_WIDTH-1:0] c_uy__49;
reg [`BIT_WIDTH-1:0] c_uy__50;
reg [`BIT_WIDTH-1:0] c_uy__51;
reg [`BIT_WIDTH-1:0] c_uy__52;
reg [`BIT_WIDTH-1:0] c_uy__53;
reg [`BIT_WIDTH-1:0] c_uy__54;
reg [`BIT_WIDTH-1:0] c_uy__55;
reg [`BIT_WIDTH-1:0] c_uy__56;
reg [`BIT_WIDTH-1:0] c_uy__57;
reg [`BIT_WIDTH-1:0] c_uy__58;
reg [`BIT_WIDTH-1:0] c_uy__59;
//reg [`BIT_WIDTH-1:0] c_uz [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] c_uz__0;
reg [`BIT_WIDTH-1:0] c_uz__1;
reg [`BIT_WIDTH-1:0] c_uz__2;
reg [`BIT_WIDTH-1:0] c_uz__3;
reg [`BIT_WIDTH-1:0] c_uz__4;
reg [`BIT_WIDTH-1:0] c_uz__5;
reg [`BIT_WIDTH-1:0] c_uz__6;
reg [`BIT_WIDTH-1:0] c_uz__7;
reg [`BIT_WIDTH-1:0] c_uz__8;
reg [`BIT_WIDTH-1:0] c_uz__9;
reg [`BIT_WIDTH-1:0] c_uz__10;
reg [`BIT_WIDTH-1:0] c_uz__11;
reg [`BIT_WIDTH-1:0] c_uz__12;
reg [`BIT_WIDTH-1:0] c_uz__13;
reg [`BIT_WIDTH-1:0] c_uz__14;
reg [`BIT_WIDTH-1:0] c_uz__15;
reg [`BIT_WIDTH-1:0] c_uz__16;
reg [`BIT_WIDTH-1:0] c_uz__17;
reg [`BIT_WIDTH-1:0] c_uz__18;
reg [`BIT_WIDTH-1:0] c_uz__19;
reg [`BIT_WIDTH-1:0] c_uz__20;
reg [`BIT_WIDTH-1:0] c_uz__21;
reg [`BIT_WIDTH-1:0] c_uz__22;
reg [`BIT_WIDTH-1:0] c_uz__23;
reg [`BIT_WIDTH-1:0] c_uz__24;
reg [`BIT_WIDTH-1:0] c_uz__25;
reg [`BIT_WIDTH-1:0] c_uz__26;
reg [`BIT_WIDTH-1:0] c_uz__27;
reg [`BIT_WIDTH-1:0] c_uz__28;
reg [`BIT_WIDTH-1:0] c_uz__29;
reg [`BIT_WIDTH-1:0] c_uz__30;
reg [`BIT_WIDTH-1:0] c_uz__31;
reg [`BIT_WIDTH-1:0] c_uz__32;
reg [`BIT_WIDTH-1:0] c_uz__33;
reg [`BIT_WIDTH-1:0] c_uz__34;
reg [`BIT_WIDTH-1:0] c_uz__35;
reg [`BIT_WIDTH-1:0] c_uz__36;
reg [`BIT_WIDTH-1:0] c_uz__37;
reg [`BIT_WIDTH-1:0] c_uz__38;
reg [`BIT_WIDTH-1:0] c_uz__39;
reg [`BIT_WIDTH-1:0] c_uz__40;
reg [`BIT_WIDTH-1:0] c_uz__41;
reg [`BIT_WIDTH-1:0] c_uz__42;
reg [`BIT_WIDTH-1:0] c_uz__43;
reg [`BIT_WIDTH-1:0] c_uz__44;
reg [`BIT_WIDTH-1:0] c_uz__45;
reg [`BIT_WIDTH-1:0] c_uz__46;
reg [`BIT_WIDTH-1:0] c_uz__47;
reg [`BIT_WIDTH-1:0] c_uz__48;
reg [`BIT_WIDTH-1:0] c_uz__49;
reg [`BIT_WIDTH-1:0] c_uz__50;
reg [`BIT_WIDTH-1:0] c_uz__51;
reg [`BIT_WIDTH-1:0] c_uz__52;
reg [`BIT_WIDTH-1:0] c_uz__53;
reg [`BIT_WIDTH-1:0] c_uz__54;
reg [`BIT_WIDTH-1:0] c_uz__55;
reg [`BIT_WIDTH-1:0] c_uz__56;
reg [`BIT_WIDTH-1:0] c_uz__57;
reg [`BIT_WIDTH-1:0] c_uz__58;
reg [`BIT_WIDTH-1:0] c_uz__59;
//reg [`BIT_WIDTH-1:0] c_sz [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] c_sz__0;
reg [`BIT_WIDTH-1:0] c_sz__1;
reg [`BIT_WIDTH-1:0] c_sz__2;
reg [`BIT_WIDTH-1:0] c_sz__3;
reg [`BIT_WIDTH-1:0] c_sz__4;
reg [`BIT_WIDTH-1:0] c_sz__5;
reg [`BIT_WIDTH-1:0] c_sz__6;
reg [`BIT_WIDTH-1:0] c_sz__7;
reg [`BIT_WIDTH-1:0] c_sz__8;
reg [`BIT_WIDTH-1:0] c_sz__9;
reg [`BIT_WIDTH-1:0] c_sz__10;
reg [`BIT_WIDTH-1:0] c_sz__11;
reg [`BIT_WIDTH-1:0] c_sz__12;
reg [`BIT_WIDTH-1:0] c_sz__13;
reg [`BIT_WIDTH-1:0] c_sz__14;
reg [`BIT_WIDTH-1:0] c_sz__15;
reg [`BIT_WIDTH-1:0] c_sz__16;
reg [`BIT_WIDTH-1:0] c_sz__17;
reg [`BIT_WIDTH-1:0] c_sz__18;
reg [`BIT_WIDTH-1:0] c_sz__19;
reg [`BIT_WIDTH-1:0] c_sz__20;
reg [`BIT_WIDTH-1:0] c_sz__21;
reg [`BIT_WIDTH-1:0] c_sz__22;
reg [`BIT_WIDTH-1:0] c_sz__23;
reg [`BIT_WIDTH-1:0] c_sz__24;
reg [`BIT_WIDTH-1:0] c_sz__25;
reg [`BIT_WIDTH-1:0] c_sz__26;
reg [`BIT_WIDTH-1:0] c_sz__27;
reg [`BIT_WIDTH-1:0] c_sz__28;
reg [`BIT_WIDTH-1:0] c_sz__29;
reg [`BIT_WIDTH-1:0] c_sz__30;
reg [`BIT_WIDTH-1:0] c_sz__31;
reg [`BIT_WIDTH-1:0] c_sz__32;
reg [`BIT_WIDTH-1:0] c_sz__33;
reg [`BIT_WIDTH-1:0] c_sz__34;
reg [`BIT_WIDTH-1:0] c_sz__35;
reg [`BIT_WIDTH-1:0] c_sz__36;
reg [`BIT_WIDTH-1:0] c_sz__37;
reg [`BIT_WIDTH-1:0] c_sz__38;
reg [`BIT_WIDTH-1:0] c_sz__39;
reg [`BIT_WIDTH-1:0] c_sz__40;
reg [`BIT_WIDTH-1:0] c_sz__41;
reg [`BIT_WIDTH-1:0] c_sz__42;
reg [`BIT_WIDTH-1:0] c_sz__43;
reg [`BIT_WIDTH-1:0] c_sz__44;
reg [`BIT_WIDTH-1:0] c_sz__45;
reg [`BIT_WIDTH-1:0] c_sz__46;
reg [`BIT_WIDTH-1:0] c_sz__47;
reg [`BIT_WIDTH-1:0] c_sz__48;
reg [`BIT_WIDTH-1:0] c_sz__49;
reg [`BIT_WIDTH-1:0] c_sz__50;
reg [`BIT_WIDTH-1:0] c_sz__51;
reg [`BIT_WIDTH-1:0] c_sz__52;
reg [`BIT_WIDTH-1:0] c_sz__53;
reg [`BIT_WIDTH-1:0] c_sz__54;
reg [`BIT_WIDTH-1:0] c_sz__55;
reg [`BIT_WIDTH-1:0] c_sz__56;
reg [`BIT_WIDTH-1:0] c_sz__57;
reg [`BIT_WIDTH-1:0] c_sz__58;
reg [`BIT_WIDTH-1:0] c_sz__59;
//reg [`BIT_WIDTH-1:0] c_sr [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] c_sr__0;
reg [`BIT_WIDTH-1:0] c_sr__1;
reg [`BIT_WIDTH-1:0] c_sr__2;
reg [`BIT_WIDTH-1:0] c_sr__3;
reg [`BIT_WIDTH-1:0] c_sr__4;
reg [`BIT_WIDTH-1:0] c_sr__5;
reg [`BIT_WIDTH-1:0] c_sr__6;
reg [`BIT_WIDTH-1:0] c_sr__7;
reg [`BIT_WIDTH-1:0] c_sr__8;
reg [`BIT_WIDTH-1:0] c_sr__9;
reg [`BIT_WIDTH-1:0] c_sr__10;
reg [`BIT_WIDTH-1:0] c_sr__11;
reg [`BIT_WIDTH-1:0] c_sr__12;
reg [`BIT_WIDTH-1:0] c_sr__13;
reg [`BIT_WIDTH-1:0] c_sr__14;
reg [`BIT_WIDTH-1:0] c_sr__15;
reg [`BIT_WIDTH-1:0] c_sr__16;
reg [`BIT_WIDTH-1:0] c_sr__17;
reg [`BIT_WIDTH-1:0] c_sr__18;
reg [`BIT_WIDTH-1:0] c_sr__19;
reg [`BIT_WIDTH-1:0] c_sr__20;
reg [`BIT_WIDTH-1:0] c_sr__21;
reg [`BIT_WIDTH-1:0] c_sr__22;
reg [`BIT_WIDTH-1:0] c_sr__23;
reg [`BIT_WIDTH-1:0] c_sr__24;
reg [`BIT_WIDTH-1:0] c_sr__25;
reg [`BIT_WIDTH-1:0] c_sr__26;
reg [`BIT_WIDTH-1:0] c_sr__27;
reg [`BIT_WIDTH-1:0] c_sr__28;
reg [`BIT_WIDTH-1:0] c_sr__29;
reg [`BIT_WIDTH-1:0] c_sr__30;
reg [`BIT_WIDTH-1:0] c_sr__31;
reg [`BIT_WIDTH-1:0] c_sr__32;
reg [`BIT_WIDTH-1:0] c_sr__33;
reg [`BIT_WIDTH-1:0] c_sr__34;
reg [`BIT_WIDTH-1:0] c_sr__35;
reg [`BIT_WIDTH-1:0] c_sr__36;
reg [`BIT_WIDTH-1:0] c_sr__37;
reg [`BIT_WIDTH-1:0] c_sr__38;
reg [`BIT_WIDTH-1:0] c_sr__39;
reg [`BIT_WIDTH-1:0] c_sr__40;
reg [`BIT_WIDTH-1:0] c_sr__41;
reg [`BIT_WIDTH-1:0] c_sr__42;
reg [`BIT_WIDTH-1:0] c_sr__43;
reg [`BIT_WIDTH-1:0] c_sr__44;
reg [`BIT_WIDTH-1:0] c_sr__45;
reg [`BIT_WIDTH-1:0] c_sr__46;
reg [`BIT_WIDTH-1:0] c_sr__47;
reg [`BIT_WIDTH-1:0] c_sr__48;
reg [`BIT_WIDTH-1:0] c_sr__49;
reg [`BIT_WIDTH-1:0] c_sr__50;
reg [`BIT_WIDTH-1:0] c_sr__51;
reg [`BIT_WIDTH-1:0] c_sr__52;
reg [`BIT_WIDTH-1:0] c_sr__53;
reg [`BIT_WIDTH-1:0] c_sr__54;
reg [`BIT_WIDTH-1:0] c_sr__55;
reg [`BIT_WIDTH-1:0] c_sr__56;
reg [`BIT_WIDTH-1:0] c_sr__57;
reg [`BIT_WIDTH-1:0] c_sr__58;
reg [`BIT_WIDTH-1:0] c_sr__59;
//reg [`BIT_WIDTH-1:0] c_sleftz [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] c_sleftz__0;
reg [`BIT_WIDTH-1:0] c_sleftz__1;
reg [`BIT_WIDTH-1:0] c_sleftz__2;
reg [`BIT_WIDTH-1:0] c_sleftz__3;
reg [`BIT_WIDTH-1:0] c_sleftz__4;
reg [`BIT_WIDTH-1:0] c_sleftz__5;
reg [`BIT_WIDTH-1:0] c_sleftz__6;
reg [`BIT_WIDTH-1:0] c_sleftz__7;
reg [`BIT_WIDTH-1:0] c_sleftz__8;
reg [`BIT_WIDTH-1:0] c_sleftz__9;
reg [`BIT_WIDTH-1:0] c_sleftz__10;
reg [`BIT_WIDTH-1:0] c_sleftz__11;
reg [`BIT_WIDTH-1:0] c_sleftz__12;
reg [`BIT_WIDTH-1:0] c_sleftz__13;
reg [`BIT_WIDTH-1:0] c_sleftz__14;
reg [`BIT_WIDTH-1:0] c_sleftz__15;
reg [`BIT_WIDTH-1:0] c_sleftz__16;
reg [`BIT_WIDTH-1:0] c_sleftz__17;
reg [`BIT_WIDTH-1:0] c_sleftz__18;
reg [`BIT_WIDTH-1:0] c_sleftz__19;
reg [`BIT_WIDTH-1:0] c_sleftz__20;
reg [`BIT_WIDTH-1:0] c_sleftz__21;
reg [`BIT_WIDTH-1:0] c_sleftz__22;
reg [`BIT_WIDTH-1:0] c_sleftz__23;
reg [`BIT_WIDTH-1:0] c_sleftz__24;
reg [`BIT_WIDTH-1:0] c_sleftz__25;
reg [`BIT_WIDTH-1:0] c_sleftz__26;
reg [`BIT_WIDTH-1:0] c_sleftz__27;
reg [`BIT_WIDTH-1:0] c_sleftz__28;
reg [`BIT_WIDTH-1:0] c_sleftz__29;
reg [`BIT_WIDTH-1:0] c_sleftz__30;
reg [`BIT_WIDTH-1:0] c_sleftz__31;
reg [`BIT_WIDTH-1:0] c_sleftz__32;
reg [`BIT_WIDTH-1:0] c_sleftz__33;
reg [`BIT_WIDTH-1:0] c_sleftz__34;
reg [`BIT_WIDTH-1:0] c_sleftz__35;
reg [`BIT_WIDTH-1:0] c_sleftz__36;
reg [`BIT_WIDTH-1:0] c_sleftz__37;
reg [`BIT_WIDTH-1:0] c_sleftz__38;
reg [`BIT_WIDTH-1:0] c_sleftz__39;
reg [`BIT_WIDTH-1:0] c_sleftz__40;
reg [`BIT_WIDTH-1:0] c_sleftz__41;
reg [`BIT_WIDTH-1:0] c_sleftz__42;
reg [`BIT_WIDTH-1:0] c_sleftz__43;
reg [`BIT_WIDTH-1:0] c_sleftz__44;
reg [`BIT_WIDTH-1:0] c_sleftz__45;
reg [`BIT_WIDTH-1:0] c_sleftz__46;
reg [`BIT_WIDTH-1:0] c_sleftz__47;
reg [`BIT_WIDTH-1:0] c_sleftz__48;
reg [`BIT_WIDTH-1:0] c_sleftz__49;
reg [`BIT_WIDTH-1:0] c_sleftz__50;
reg [`BIT_WIDTH-1:0] c_sleftz__51;
reg [`BIT_WIDTH-1:0] c_sleftz__52;
reg [`BIT_WIDTH-1:0] c_sleftz__53;
reg [`BIT_WIDTH-1:0] c_sleftz__54;
reg [`BIT_WIDTH-1:0] c_sleftz__55;
reg [`BIT_WIDTH-1:0] c_sleftz__56;
reg [`BIT_WIDTH-1:0] c_sleftz__57;
reg [`BIT_WIDTH-1:0] c_sleftz__58;
reg [`BIT_WIDTH-1:0] c_sleftz__59;
//reg [`BIT_WIDTH-1:0] c_sleftr [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] c_sleftr__0;
reg [`BIT_WIDTH-1:0] c_sleftr__1;
reg [`BIT_WIDTH-1:0] c_sleftr__2;
reg [`BIT_WIDTH-1:0] c_sleftr__3;
reg [`BIT_WIDTH-1:0] c_sleftr__4;
reg [`BIT_WIDTH-1:0] c_sleftr__5;
reg [`BIT_WIDTH-1:0] c_sleftr__6;
reg [`BIT_WIDTH-1:0] c_sleftr__7;
reg [`BIT_WIDTH-1:0] c_sleftr__8;
reg [`BIT_WIDTH-1:0] c_sleftr__9;
reg [`BIT_WIDTH-1:0] c_sleftr__10;
reg [`BIT_WIDTH-1:0] c_sleftr__11;
reg [`BIT_WIDTH-1:0] c_sleftr__12;
reg [`BIT_WIDTH-1:0] c_sleftr__13;
reg [`BIT_WIDTH-1:0] c_sleftr__14;
reg [`BIT_WIDTH-1:0] c_sleftr__15;
reg [`BIT_WIDTH-1:0] c_sleftr__16;
reg [`BIT_WIDTH-1:0] c_sleftr__17;
reg [`BIT_WIDTH-1:0] c_sleftr__18;
reg [`BIT_WIDTH-1:0] c_sleftr__19;
reg [`BIT_WIDTH-1:0] c_sleftr__20;
reg [`BIT_WIDTH-1:0] c_sleftr__21;
reg [`BIT_WIDTH-1:0] c_sleftr__22;
reg [`BIT_WIDTH-1:0] c_sleftr__23;
reg [`BIT_WIDTH-1:0] c_sleftr__24;
reg [`BIT_WIDTH-1:0] c_sleftr__25;
reg [`BIT_WIDTH-1:0] c_sleftr__26;
reg [`BIT_WIDTH-1:0] c_sleftr__27;
reg [`BIT_WIDTH-1:0] c_sleftr__28;
reg [`BIT_WIDTH-1:0] c_sleftr__29;
reg [`BIT_WIDTH-1:0] c_sleftr__30;
reg [`BIT_WIDTH-1:0] c_sleftr__31;
reg [`BIT_WIDTH-1:0] c_sleftr__32;
reg [`BIT_WIDTH-1:0] c_sleftr__33;
reg [`BIT_WIDTH-1:0] c_sleftr__34;
reg [`BIT_WIDTH-1:0] c_sleftr__35;
reg [`BIT_WIDTH-1:0] c_sleftr__36;
reg [`BIT_WIDTH-1:0] c_sleftr__37;
reg [`BIT_WIDTH-1:0] c_sleftr__38;
reg [`BIT_WIDTH-1:0] c_sleftr__39;
reg [`BIT_WIDTH-1:0] c_sleftr__40;
reg [`BIT_WIDTH-1:0] c_sleftr__41;
reg [`BIT_WIDTH-1:0] c_sleftr__42;
reg [`BIT_WIDTH-1:0] c_sleftr__43;
reg [`BIT_WIDTH-1:0] c_sleftr__44;
reg [`BIT_WIDTH-1:0] c_sleftr__45;
reg [`BIT_WIDTH-1:0] c_sleftr__46;
reg [`BIT_WIDTH-1:0] c_sleftr__47;
reg [`BIT_WIDTH-1:0] c_sleftr__48;
reg [`BIT_WIDTH-1:0] c_sleftr__49;
reg [`BIT_WIDTH-1:0] c_sleftr__50;
reg [`BIT_WIDTH-1:0] c_sleftr__51;
reg [`BIT_WIDTH-1:0] c_sleftr__52;
reg [`BIT_WIDTH-1:0] c_sleftr__53;
reg [`BIT_WIDTH-1:0] c_sleftr__54;
reg [`BIT_WIDTH-1:0] c_sleftr__55;
reg [`BIT_WIDTH-1:0] c_sleftr__56;
reg [`BIT_WIDTH-1:0] c_sleftr__57;
reg [`BIT_WIDTH-1:0] c_sleftr__58;
reg [`BIT_WIDTH-1:0] c_sleftr__59;
//reg [`BIT_WIDTH-1:0] c_weight [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] c_weight__0;
reg [`BIT_WIDTH-1:0] c_weight__1;
reg [`BIT_WIDTH-1:0] c_weight__2;
reg [`BIT_WIDTH-1:0] c_weight__3;
reg [`BIT_WIDTH-1:0] c_weight__4;
reg [`BIT_WIDTH-1:0] c_weight__5;
reg [`BIT_WIDTH-1:0] c_weight__6;
reg [`BIT_WIDTH-1:0] c_weight__7;
reg [`BIT_WIDTH-1:0] c_weight__8;
reg [`BIT_WIDTH-1:0] c_weight__9;
reg [`BIT_WIDTH-1:0] c_weight__10;
reg [`BIT_WIDTH-1:0] c_weight__11;
reg [`BIT_WIDTH-1:0] c_weight__12;
reg [`BIT_WIDTH-1:0] c_weight__13;
reg [`BIT_WIDTH-1:0] c_weight__14;
reg [`BIT_WIDTH-1:0] c_weight__15;
reg [`BIT_WIDTH-1:0] c_weight__16;
reg [`BIT_WIDTH-1:0] c_weight__17;
reg [`BIT_WIDTH-1:0] c_weight__18;
reg [`BIT_WIDTH-1:0] c_weight__19;
reg [`BIT_WIDTH-1:0] c_weight__20;
reg [`BIT_WIDTH-1:0] c_weight__21;
reg [`BIT_WIDTH-1:0] c_weight__22;
reg [`BIT_WIDTH-1:0] c_weight__23;
reg [`BIT_WIDTH-1:0] c_weight__24;
reg [`BIT_WIDTH-1:0] c_weight__25;
reg [`BIT_WIDTH-1:0] c_weight__26;
reg [`BIT_WIDTH-1:0] c_weight__27;
reg [`BIT_WIDTH-1:0] c_weight__28;
reg [`BIT_WIDTH-1:0] c_weight__29;
reg [`BIT_WIDTH-1:0] c_weight__30;
reg [`BIT_WIDTH-1:0] c_weight__31;
reg [`BIT_WIDTH-1:0] c_weight__32;
reg [`BIT_WIDTH-1:0] c_weight__33;
reg [`BIT_WIDTH-1:0] c_weight__34;
reg [`BIT_WIDTH-1:0] c_weight__35;
reg [`BIT_WIDTH-1:0] c_weight__36;
reg [`BIT_WIDTH-1:0] c_weight__37;
reg [`BIT_WIDTH-1:0] c_weight__38;
reg [`BIT_WIDTH-1:0] c_weight__39;
reg [`BIT_WIDTH-1:0] c_weight__40;
reg [`BIT_WIDTH-1:0] c_weight__41;
reg [`BIT_WIDTH-1:0] c_weight__42;
reg [`BIT_WIDTH-1:0] c_weight__43;
reg [`BIT_WIDTH-1:0] c_weight__44;
reg [`BIT_WIDTH-1:0] c_weight__45;
reg [`BIT_WIDTH-1:0] c_weight__46;
reg [`BIT_WIDTH-1:0] c_weight__47;
reg [`BIT_WIDTH-1:0] c_weight__48;
reg [`BIT_WIDTH-1:0] c_weight__49;
reg [`BIT_WIDTH-1:0] c_weight__50;
reg [`BIT_WIDTH-1:0] c_weight__51;
reg [`BIT_WIDTH-1:0] c_weight__52;
reg [`BIT_WIDTH-1:0] c_weight__53;
reg [`BIT_WIDTH-1:0] c_weight__54;
reg [`BIT_WIDTH-1:0] c_weight__55;
reg [`BIT_WIDTH-1:0] c_weight__56;
reg [`BIT_WIDTH-1:0] c_weight__57;
reg [`BIT_WIDTH-1:0] c_weight__58;
reg [`BIT_WIDTH-1:0] c_weight__59;
//reg [`LAYER_WIDTH-1:0] c_layer [TOTAL_LATENCY - 1:0];
reg [`LAYER_WIDTH-1:0] c_layer__0;
reg [`LAYER_WIDTH-1:0] c_layer__1;
reg [`LAYER_WIDTH-1:0] c_layer__2;
reg [`LAYER_WIDTH-1:0] c_layer__3;
reg [`LAYER_WIDTH-1:0] c_layer__4;
reg [`LAYER_WIDTH-1:0] c_layer__5;
reg [`LAYER_WIDTH-1:0] c_layer__6;
reg [`LAYER_WIDTH-1:0] c_layer__7;
reg [`LAYER_WIDTH-1:0] c_layer__8;
reg [`LAYER_WIDTH-1:0] c_layer__9;
reg [`LAYER_WIDTH-1:0] c_layer__10;
reg [`LAYER_WIDTH-1:0] c_layer__11;
reg [`LAYER_WIDTH-1:0] c_layer__12;
reg [`LAYER_WIDTH-1:0] c_layer__13;
reg [`LAYER_WIDTH-1:0] c_layer__14;
reg [`LAYER_WIDTH-1:0] c_layer__15;
reg [`LAYER_WIDTH-1:0] c_layer__16;
reg [`LAYER_WIDTH-1:0] c_layer__17;
reg [`LAYER_WIDTH-1:0] c_layer__18;
reg [`LAYER_WIDTH-1:0] c_layer__19;
reg [`LAYER_WIDTH-1:0] c_layer__20;
reg [`LAYER_WIDTH-1:0] c_layer__21;
reg [`LAYER_WIDTH-1:0] c_layer__22;
reg [`LAYER_WIDTH-1:0] c_layer__23;
reg [`LAYER_WIDTH-1:0] c_layer__24;
reg [`LAYER_WIDTH-1:0] c_layer__25;
reg [`LAYER_WIDTH-1:0] c_layer__26;
reg [`LAYER_WIDTH-1:0] c_layer__27;
reg [`LAYER_WIDTH-1:0] c_layer__28;
reg [`LAYER_WIDTH-1:0] c_layer__29;
reg [`LAYER_WIDTH-1:0] c_layer__30;
reg [`LAYER_WIDTH-1:0] c_layer__31;
reg [`LAYER_WIDTH-1:0] c_layer__32;
reg [`LAYER_WIDTH-1:0] c_layer__33;
reg [`LAYER_WIDTH-1:0] c_layer__34;
reg [`LAYER_WIDTH-1:0] c_layer__35;
reg [`LAYER_WIDTH-1:0] c_layer__36;
reg [`LAYER_WIDTH-1:0] c_layer__37;
reg [`LAYER_WIDTH-1:0] c_layer__38;
reg [`LAYER_WIDTH-1:0] c_layer__39;
reg [`LAYER_WIDTH-1:0] c_layer__40;
reg [`LAYER_WIDTH-1:0] c_layer__41;
reg [`LAYER_WIDTH-1:0] c_layer__42;
reg [`LAYER_WIDTH-1:0] c_layer__43;
reg [`LAYER_WIDTH-1:0] c_layer__44;
reg [`LAYER_WIDTH-1:0] c_layer__45;
reg [`LAYER_WIDTH-1:0] c_layer__46;
reg [`LAYER_WIDTH-1:0] c_layer__47;
reg [`LAYER_WIDTH-1:0] c_layer__48;
reg [`LAYER_WIDTH-1:0] c_layer__49;
reg [`LAYER_WIDTH-1:0] c_layer__50;
reg [`LAYER_WIDTH-1:0] c_layer__51;
reg [`LAYER_WIDTH-1:0] c_layer__52;
reg [`LAYER_WIDTH-1:0] c_layer__53;
reg [`LAYER_WIDTH-1:0] c_layer__54;
reg [`LAYER_WIDTH-1:0] c_layer__55;
reg [`LAYER_WIDTH-1:0] c_layer__56;
reg [`LAYER_WIDTH-1:0] c_layer__57;
reg [`LAYER_WIDTH-1:0] c_layer__58;
reg [`LAYER_WIDTH-1:0] c_layer__59;
//reg c_dead [TOTAL_LATENCY - 1:0];
reg c_dead__0;
reg c_dead__1;
reg c_dead__2;
reg c_dead__3;
reg c_dead__4;
reg c_dead__5;
reg c_dead__6;
reg c_dead__7;
reg c_dead__8;
reg c_dead__9;
reg c_dead__10;
reg c_dead__11;
reg c_dead__12;
reg c_dead__13;
reg c_dead__14;
reg c_dead__15;
reg c_dead__16;
reg c_dead__17;
reg c_dead__18;
reg c_dead__19;
reg c_dead__20;
reg c_dead__21;
reg c_dead__22;
reg c_dead__23;
reg c_dead__24;
reg c_dead__25;
reg c_dead__26;
reg c_dead__27;
reg c_dead__28;
reg c_dead__29;
reg c_dead__30;
reg c_dead__31;
reg c_dead__32;
reg c_dead__33;
reg c_dead__34;
reg c_dead__35;
reg c_dead__36;
reg c_dead__37;
reg c_dead__38;
reg c_dead__39;
reg c_dead__40;
reg c_dead__41;
reg c_dead__42;
reg c_dead__43;
reg c_dead__44;
reg c_dead__45;
reg c_dead__46;
reg c_dead__47;
reg c_dead__48;
reg c_dead__49;
reg c_dead__50;
reg c_dead__51;
reg c_dead__52;
reg c_dead__53;
reg c_dead__54;
reg c_dead__55;
reg c_dead__56;
reg c_dead__57;
reg c_dead__58;
reg c_dead__59;
//reg c_hit [TOTAL_LATENCY - 1:0];
reg c_hit__0;
reg c_hit__1;
reg c_hit__2;
reg c_hit__3;
reg c_hit__4;
reg c_hit__5;
reg c_hit__6;
reg c_hit__7;
reg c_hit__8;
reg c_hit__9;
reg c_hit__10;
reg c_hit__11;
reg c_hit__12;
reg c_hit__13;
reg c_hit__14;
reg c_hit__15;
reg c_hit__16;
reg c_hit__17;
reg c_hit__18;
reg c_hit__19;
reg c_hit__20;
reg c_hit__21;
reg c_hit__22;
reg c_hit__23;
reg c_hit__24;
reg c_hit__25;
reg c_hit__26;
reg c_hit__27;
reg c_hit__28;
reg c_hit__29;
reg c_hit__30;
reg c_hit__31;
reg c_hit__32;
reg c_hit__33;
reg c_hit__34;
reg c_hit__35;
reg c_hit__36;
reg c_hit__37;
reg c_hit__38;
reg c_hit__39;
reg c_hit__40;
reg c_hit__41;
reg c_hit__42;
reg c_hit__43;
reg c_hit__44;
reg c_hit__45;
reg c_hit__46;
reg c_hit__47;
reg c_hit__48;
reg c_hit__49;
reg c_hit__50;
reg c_hit__51;
reg c_hit__52;
reg c_hit__53;
reg c_hit__54;
reg c_hit__55;
reg c_hit__56;
reg c_hit__57;
reg c_hit__58;
reg c_hit__59;
//reg [`BIT_WIDTH-1:0] c_diff[TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] c_diff__0;
reg [`BIT_WIDTH-1:0] c_diff__1;
reg [`BIT_WIDTH-1:0] c_diff__2;
reg [`BIT_WIDTH-1:0] c_diff__3;
reg [`BIT_WIDTH-1:0] c_diff__4;
reg [`BIT_WIDTH-1:0] c_diff__5;
reg [`BIT_WIDTH-1:0] c_diff__6;
reg [`BIT_WIDTH-1:0] c_diff__7;
reg [`BIT_WIDTH-1:0] c_diff__8;
reg [`BIT_WIDTH-1:0] c_diff__9;
reg [`BIT_WIDTH-1:0] c_diff__10;
reg [`BIT_WIDTH-1:0] c_diff__11;
reg [`BIT_WIDTH-1:0] c_diff__12;
reg [`BIT_WIDTH-1:0] c_diff__13;
reg [`BIT_WIDTH-1:0] c_diff__14;
reg [`BIT_WIDTH-1:0] c_diff__15;
reg [`BIT_WIDTH-1:0] c_diff__16;
reg [`BIT_WIDTH-1:0] c_diff__17;
reg [`BIT_WIDTH-1:0] c_diff__18;
reg [`BIT_WIDTH-1:0] c_diff__19;
reg [`BIT_WIDTH-1:0] c_diff__20;
reg [`BIT_WIDTH-1:0] c_diff__21;
reg [`BIT_WIDTH-1:0] c_diff__22;
reg [`BIT_WIDTH-1:0] c_diff__23;
reg [`BIT_WIDTH-1:0] c_diff__24;
reg [`BIT_WIDTH-1:0] c_diff__25;
reg [`BIT_WIDTH-1:0] c_diff__26;
reg [`BIT_WIDTH-1:0] c_diff__27;
reg [`BIT_WIDTH-1:0] c_diff__28;
reg [`BIT_WIDTH-1:0] c_diff__29;
reg [`BIT_WIDTH-1:0] c_diff__30;
reg [`BIT_WIDTH-1:0] c_diff__31;
reg [`BIT_WIDTH-1:0] c_diff__32;
reg [`BIT_WIDTH-1:0] c_diff__33;
reg [`BIT_WIDTH-1:0] c_diff__34;
reg [`BIT_WIDTH-1:0] c_diff__35;
reg [`BIT_WIDTH-1:0] c_diff__36;
reg [`BIT_WIDTH-1:0] c_diff__37;
reg [`BIT_WIDTH-1:0] c_diff__38;
reg [`BIT_WIDTH-1:0] c_diff__39;
reg [`BIT_WIDTH-1:0] c_diff__40;
reg [`BIT_WIDTH-1:0] c_diff__41;
reg [`BIT_WIDTH-1:0] c_diff__42;
reg [`BIT_WIDTH-1:0] c_diff__43;
reg [`BIT_WIDTH-1:0] c_diff__44;
reg [`BIT_WIDTH-1:0] c_diff__45;
reg [`BIT_WIDTH-1:0] c_diff__46;
reg [`BIT_WIDTH-1:0] c_diff__47;
reg [`BIT_WIDTH-1:0] c_diff__48;
reg [`BIT_WIDTH-1:0] c_diff__49;
reg [`BIT_WIDTH-1:0] c_diff__50;
reg [`BIT_WIDTH-1:0] c_diff__51;
reg [`BIT_WIDTH-1:0] c_diff__52;
reg [`BIT_WIDTH-1:0] c_diff__53;
reg [`BIT_WIDTH-1:0] c_diff__54;
reg [`BIT_WIDTH-1:0] c_diff__55;
reg [`BIT_WIDTH-1:0] c_diff__56;
reg [`BIT_WIDTH-1:0] c_diff__57;
reg [`BIT_WIDTH-1:0] c_diff__58;
reg [`BIT_WIDTH-1:0] c_diff__59;
//reg [`BIT_WIDTH-1:0] c_dl_b[TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] c_dl_b__0;
reg [`BIT_WIDTH-1:0] c_dl_b__1;
reg [`BIT_WIDTH-1:0] c_dl_b__2;
reg [`BIT_WIDTH-1:0] c_dl_b__3;
reg [`BIT_WIDTH-1:0] c_dl_b__4;
reg [`BIT_WIDTH-1:0] c_dl_b__5;
reg [`BIT_WIDTH-1:0] c_dl_b__6;
reg [`BIT_WIDTH-1:0] c_dl_b__7;
reg [`BIT_WIDTH-1:0] c_dl_b__8;
reg [`BIT_WIDTH-1:0] c_dl_b__9;
reg [`BIT_WIDTH-1:0] c_dl_b__10;
reg [`BIT_WIDTH-1:0] c_dl_b__11;
reg [`BIT_WIDTH-1:0] c_dl_b__12;
reg [`BIT_WIDTH-1:0] c_dl_b__13;
reg [`BIT_WIDTH-1:0] c_dl_b__14;
reg [`BIT_WIDTH-1:0] c_dl_b__15;
reg [`BIT_WIDTH-1:0] c_dl_b__16;
reg [`BIT_WIDTH-1:0] c_dl_b__17;
reg [`BIT_WIDTH-1:0] c_dl_b__18;
reg [`BIT_WIDTH-1:0] c_dl_b__19;
reg [`BIT_WIDTH-1:0] c_dl_b__20;
reg [`BIT_WIDTH-1:0] c_dl_b__21;
reg [`BIT_WIDTH-1:0] c_dl_b__22;
reg [`BIT_WIDTH-1:0] c_dl_b__23;
reg [`BIT_WIDTH-1:0] c_dl_b__24;
reg [`BIT_WIDTH-1:0] c_dl_b__25;
reg [`BIT_WIDTH-1:0] c_dl_b__26;
reg [`BIT_WIDTH-1:0] c_dl_b__27;
reg [`BIT_WIDTH-1:0] c_dl_b__28;
reg [`BIT_WIDTH-1:0] c_dl_b__29;
reg [`BIT_WIDTH-1:0] c_dl_b__30;
reg [`BIT_WIDTH-1:0] c_dl_b__31;
reg [`BIT_WIDTH-1:0] c_dl_b__32;
reg [`BIT_WIDTH-1:0] c_dl_b__33;
reg [`BIT_WIDTH-1:0] c_dl_b__34;
reg [`BIT_WIDTH-1:0] c_dl_b__35;
reg [`BIT_WIDTH-1:0] c_dl_b__36;
reg [`BIT_WIDTH-1:0] c_dl_b__37;
reg [`BIT_WIDTH-1:0] c_dl_b__38;
reg [`BIT_WIDTH-1:0] c_dl_b__39;
reg [`BIT_WIDTH-1:0] c_dl_b__40;
reg [`BIT_WIDTH-1:0] c_dl_b__41;
reg [`BIT_WIDTH-1:0] c_dl_b__42;
reg [`BIT_WIDTH-1:0] c_dl_b__43;
reg [`BIT_WIDTH-1:0] c_dl_b__44;
reg [`BIT_WIDTH-1:0] c_dl_b__45;
reg [`BIT_WIDTH-1:0] c_dl_b__46;
reg [`BIT_WIDTH-1:0] c_dl_b__47;
reg [`BIT_WIDTH-1:0] c_dl_b__48;
reg [`BIT_WIDTH-1:0] c_dl_b__49;
reg [`BIT_WIDTH-1:0] c_dl_b__50;
reg [`BIT_WIDTH-1:0] c_dl_b__51;
reg [`BIT_WIDTH-1:0] c_dl_b__52;
reg [`BIT_WIDTH-1:0] c_dl_b__53;
reg [`BIT_WIDTH-1:0] c_dl_b__54;
reg [`BIT_WIDTH-1:0] c_dl_b__55;
reg [`BIT_WIDTH-1:0] c_dl_b__56;
reg [`BIT_WIDTH-1:0] c_dl_b__57;
reg [`BIT_WIDTH-1:0] c_dl_b__58;
reg [`BIT_WIDTH-1:0] c_dl_b__59;
//reg [2*`BIT_WIDTH-1:0] c_numer[TOTAL_LATENCY - 1:0];
reg [2*`BIT_WIDTH-1:0] c_numer__0;
reg [2*`BIT_WIDTH-1:0] c_numer__1;
reg [2*`BIT_WIDTH-1:0] c_numer__2;
reg [2*`BIT_WIDTH-1:0] c_numer__3;
reg [2*`BIT_WIDTH-1:0] c_numer__4;
reg [2*`BIT_WIDTH-1:0] c_numer__5;
reg [2*`BIT_WIDTH-1:0] c_numer__6;
reg [2*`BIT_WIDTH-1:0] c_numer__7;
reg [2*`BIT_WIDTH-1:0] c_numer__8;
reg [2*`BIT_WIDTH-1:0] c_numer__9;
reg [2*`BIT_WIDTH-1:0] c_numer__10;
reg [2*`BIT_WIDTH-1:0] c_numer__11;
reg [2*`BIT_WIDTH-1:0] c_numer__12;
reg [2*`BIT_WIDTH-1:0] c_numer__13;
reg [2*`BIT_WIDTH-1:0] c_numer__14;
reg [2*`BIT_WIDTH-1:0] c_numer__15;
reg [2*`BIT_WIDTH-1:0] c_numer__16;
reg [2*`BIT_WIDTH-1:0] c_numer__17;
reg [2*`BIT_WIDTH-1:0] c_numer__18;
reg [2*`BIT_WIDTH-1:0] c_numer__19;
reg [2*`BIT_WIDTH-1:0] c_numer__20;
reg [2*`BIT_WIDTH-1:0] c_numer__21;
reg [2*`BIT_WIDTH-1:0] c_numer__22;
reg [2*`BIT_WIDTH-1:0] c_numer__23;
reg [2*`BIT_WIDTH-1:0] c_numer__24;
reg [2*`BIT_WIDTH-1:0] c_numer__25;
reg [2*`BIT_WIDTH-1:0] c_numer__26;
reg [2*`BIT_WIDTH-1:0] c_numer__27;
reg [2*`BIT_WIDTH-1:0] c_numer__28;
reg [2*`BIT_WIDTH-1:0] c_numer__29;
reg [2*`BIT_WIDTH-1:0] c_numer__30;
reg [2*`BIT_WIDTH-1:0] c_numer__31;
reg [2*`BIT_WIDTH-1:0] c_numer__32;
reg [2*`BIT_WIDTH-1:0] c_numer__33;
reg [2*`BIT_WIDTH-1:0] c_numer__34;
reg [2*`BIT_WIDTH-1:0] c_numer__35;
reg [2*`BIT_WIDTH-1:0] c_numer__36;
reg [2*`BIT_WIDTH-1:0] c_numer__37;
reg [2*`BIT_WIDTH-1:0] c_numer__38;
reg [2*`BIT_WIDTH-1:0] c_numer__39;
reg [2*`BIT_WIDTH-1:0] c_numer__40;
reg [2*`BIT_WIDTH-1:0] c_numer__41;
reg [2*`BIT_WIDTH-1:0] c_numer__42;
reg [2*`BIT_WIDTH-1:0] c_numer__43;
reg [2*`BIT_WIDTH-1:0] c_numer__44;
reg [2*`BIT_WIDTH-1:0] c_numer__45;
reg [2*`BIT_WIDTH-1:0] c_numer__46;
reg [2*`BIT_WIDTH-1:0] c_numer__47;
reg [2*`BIT_WIDTH-1:0] c_numer__48;
reg [2*`BIT_WIDTH-1:0] c_numer__49;
reg [2*`BIT_WIDTH-1:0] c_numer__50;
reg [2*`BIT_WIDTH-1:0] c_numer__51;
reg [2*`BIT_WIDTH-1:0] c_numer__52;
reg [2*`BIT_WIDTH-1:0] c_numer__53;
reg [2*`BIT_WIDTH-1:0] c_numer__54;
reg [2*`BIT_WIDTH-1:0] c_numer__55;
reg [2*`BIT_WIDTH-1:0] c_numer__56;
reg [2*`BIT_WIDTH-1:0] c_numer__57;
reg [2*`BIT_WIDTH-1:0] c_numer__58;
reg [2*`BIT_WIDTH-1:0] c_numer__59;
//reg [`BIT_WIDTH-1:0] c_z1[TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] c_z1__0;
reg [`BIT_WIDTH-1:0] c_z1__1;
reg [`BIT_WIDTH-1:0] c_z1__2;
reg [`BIT_WIDTH-1:0] c_z1__3;
reg [`BIT_WIDTH-1:0] c_z1__4;
reg [`BIT_WIDTH-1:0] c_z1__5;
reg [`BIT_WIDTH-1:0] c_z1__6;
reg [`BIT_WIDTH-1:0] c_z1__7;
reg [`BIT_WIDTH-1:0] c_z1__8;
reg [`BIT_WIDTH-1:0] c_z1__9;
reg [`BIT_WIDTH-1:0] c_z1__10;
reg [`BIT_WIDTH-1:0] c_z1__11;
reg [`BIT_WIDTH-1:0] c_z1__12;
reg [`BIT_WIDTH-1:0] c_z1__13;
reg [`BIT_WIDTH-1:0] c_z1__14;
reg [`BIT_WIDTH-1:0] c_z1__15;
reg [`BIT_WIDTH-1:0] c_z1__16;
reg [`BIT_WIDTH-1:0] c_z1__17;
reg [`BIT_WIDTH-1:0] c_z1__18;
reg [`BIT_WIDTH-1:0] c_z1__19;
reg [`BIT_WIDTH-1:0] c_z1__20;
reg [`BIT_WIDTH-1:0] c_z1__21;
reg [`BIT_WIDTH-1:0] c_z1__22;
reg [`BIT_WIDTH-1:0] c_z1__23;
reg [`BIT_WIDTH-1:0] c_z1__24;
reg [`BIT_WIDTH-1:0] c_z1__25;
reg [`BIT_WIDTH-1:0] c_z1__26;
reg [`BIT_WIDTH-1:0] c_z1__27;
reg [`BIT_WIDTH-1:0] c_z1__28;
reg [`BIT_WIDTH-1:0] c_z1__29;
reg [`BIT_WIDTH-1:0] c_z1__30;
reg [`BIT_WIDTH-1:0] c_z1__31;
reg [`BIT_WIDTH-1:0] c_z1__32;
reg [`BIT_WIDTH-1:0] c_z1__33;
reg [`BIT_WIDTH-1:0] c_z1__34;
reg [`BIT_WIDTH-1:0] c_z1__35;
reg [`BIT_WIDTH-1:0] c_z1__36;
reg [`BIT_WIDTH-1:0] c_z1__37;
reg [`BIT_WIDTH-1:0] c_z1__38;
reg [`BIT_WIDTH-1:0] c_z1__39;
reg [`BIT_WIDTH-1:0] c_z1__40;
reg [`BIT_WIDTH-1:0] c_z1__41;
reg [`BIT_WIDTH-1:0] c_z1__42;
reg [`BIT_WIDTH-1:0] c_z1__43;
reg [`BIT_WIDTH-1:0] c_z1__44;
reg [`BIT_WIDTH-1:0] c_z1__45;
reg [`BIT_WIDTH-1:0] c_z1__46;
reg [`BIT_WIDTH-1:0] c_z1__47;
reg [`BIT_WIDTH-1:0] c_z1__48;
reg [`BIT_WIDTH-1:0] c_z1__49;
reg [`BIT_WIDTH-1:0] c_z1__50;
reg [`BIT_WIDTH-1:0] c_z1__51;
reg [`BIT_WIDTH-1:0] c_z1__52;
reg [`BIT_WIDTH-1:0] c_z1__53;
reg [`BIT_WIDTH-1:0] c_z1__54;
reg [`BIT_WIDTH-1:0] c_z1__55;
reg [`BIT_WIDTH-1:0] c_z1__56;
reg [`BIT_WIDTH-1:0] c_z1__57;
reg [`BIT_WIDTH-1:0] c_z1__58;
reg [`BIT_WIDTH-1:0] c_z1__59;
//reg [`BIT_WIDTH-1:0] c_z0[TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] c_z0__0;
reg [`BIT_WIDTH-1:0] c_z0__1;
reg [`BIT_WIDTH-1:0] c_z0__2;
reg [`BIT_WIDTH-1:0] c_z0__3;
reg [`BIT_WIDTH-1:0] c_z0__4;
reg [`BIT_WIDTH-1:0] c_z0__5;
reg [`BIT_WIDTH-1:0] c_z0__6;
reg [`BIT_WIDTH-1:0] c_z0__7;
reg [`BIT_WIDTH-1:0] c_z0__8;
reg [`BIT_WIDTH-1:0] c_z0__9;
reg [`BIT_WIDTH-1:0] c_z0__10;
reg [`BIT_WIDTH-1:0] c_z0__11;
reg [`BIT_WIDTH-1:0] c_z0__12;
reg [`BIT_WIDTH-1:0] c_z0__13;
reg [`BIT_WIDTH-1:0] c_z0__14;
reg [`BIT_WIDTH-1:0] c_z0__15;
reg [`BIT_WIDTH-1:0] c_z0__16;
reg [`BIT_WIDTH-1:0] c_z0__17;
reg [`BIT_WIDTH-1:0] c_z0__18;
reg [`BIT_WIDTH-1:0] c_z0__19;
reg [`BIT_WIDTH-1:0] c_z0__20;
reg [`BIT_WIDTH-1:0] c_z0__21;
reg [`BIT_WIDTH-1:0] c_z0__22;
reg [`BIT_WIDTH-1:0] c_z0__23;
reg [`BIT_WIDTH-1:0] c_z0__24;
reg [`BIT_WIDTH-1:0] c_z0__25;
reg [`BIT_WIDTH-1:0] c_z0__26;
reg [`BIT_WIDTH-1:0] c_z0__27;
reg [`BIT_WIDTH-1:0] c_z0__28;
reg [`BIT_WIDTH-1:0] c_z0__29;
reg [`BIT_WIDTH-1:0] c_z0__30;
reg [`BIT_WIDTH-1:0] c_z0__31;
reg [`BIT_WIDTH-1:0] c_z0__32;
reg [`BIT_WIDTH-1:0] c_z0__33;
reg [`BIT_WIDTH-1:0] c_z0__34;
reg [`BIT_WIDTH-1:0] c_z0__35;
reg [`BIT_WIDTH-1:0] c_z0__36;
reg [`BIT_WIDTH-1:0] c_z0__37;
reg [`BIT_WIDTH-1:0] c_z0__38;
reg [`BIT_WIDTH-1:0] c_z0__39;
reg [`BIT_WIDTH-1:0] c_z0__40;
reg [`BIT_WIDTH-1:0] c_z0__41;
reg [`BIT_WIDTH-1:0] c_z0__42;
reg [`BIT_WIDTH-1:0] c_z0__43;
reg [`BIT_WIDTH-1:0] c_z0__44;
reg [`BIT_WIDTH-1:0] c_z0__45;
reg [`BIT_WIDTH-1:0] c_z0__46;
reg [`BIT_WIDTH-1:0] c_z0__47;
reg [`BIT_WIDTH-1:0] c_z0__48;
reg [`BIT_WIDTH-1:0] c_z0__49;
reg [`BIT_WIDTH-1:0] c_z0__50;
reg [`BIT_WIDTH-1:0] c_z0__51;
reg [`BIT_WIDTH-1:0] c_z0__52;
reg [`BIT_WIDTH-1:0] c_z0__53;
reg [`BIT_WIDTH-1:0] c_z0__54;
reg [`BIT_WIDTH-1:0] c_z0__55;
reg [`BIT_WIDTH-1:0] c_z0__56;
reg [`BIT_WIDTH-1:0] c_z0__57;
reg [`BIT_WIDTH-1:0] c_z0__58;
reg [`BIT_WIDTH-1:0] c_z0__59;
//reg [`BIT_WIDTH-1:0] c_mut[TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] c_mut__0;
reg [`BIT_WIDTH-1:0] c_mut__1;
reg [`BIT_WIDTH-1:0] c_mut__2;
reg [`BIT_WIDTH-1:0] c_mut__3;
reg [`BIT_WIDTH-1:0] c_mut__4;
reg [`BIT_WIDTH-1:0] c_mut__5;
reg [`BIT_WIDTH-1:0] c_mut__6;
reg [`BIT_WIDTH-1:0] c_mut__7;
reg [`BIT_WIDTH-1:0] c_mut__8;
reg [`BIT_WIDTH-1:0] c_mut__9;
reg [`BIT_WIDTH-1:0] c_mut__10;
reg [`BIT_WIDTH-1:0] c_mut__11;
reg [`BIT_WIDTH-1:0] c_mut__12;
reg [`BIT_WIDTH-1:0] c_mut__13;
reg [`BIT_WIDTH-1:0] c_mut__14;
reg [`BIT_WIDTH-1:0] c_mut__15;
reg [`BIT_WIDTH-1:0] c_mut__16;
reg [`BIT_WIDTH-1:0] c_mut__17;
reg [`BIT_WIDTH-1:0] c_mut__18;
reg [`BIT_WIDTH-1:0] c_mut__19;
reg [`BIT_WIDTH-1:0] c_mut__20;
reg [`BIT_WIDTH-1:0] c_mut__21;
reg [`BIT_WIDTH-1:0] c_mut__22;
reg [`BIT_WIDTH-1:0] c_mut__23;
reg [`BIT_WIDTH-1:0] c_mut__24;
reg [`BIT_WIDTH-1:0] c_mut__25;
reg [`BIT_WIDTH-1:0] c_mut__26;
reg [`BIT_WIDTH-1:0] c_mut__27;
reg [`BIT_WIDTH-1:0] c_mut__28;
reg [`BIT_WIDTH-1:0] c_mut__29;
reg [`BIT_WIDTH-1:0] c_mut__30;
reg [`BIT_WIDTH-1:0] c_mut__31;
reg [`BIT_WIDTH-1:0] c_mut__32;
reg [`BIT_WIDTH-1:0] c_mut__33;
reg [`BIT_WIDTH-1:0] c_mut__34;
reg [`BIT_WIDTH-1:0] c_mut__35;
reg [`BIT_WIDTH-1:0] c_mut__36;
reg [`BIT_WIDTH-1:0] c_mut__37;
reg [`BIT_WIDTH-1:0] c_mut__38;
reg [`BIT_WIDTH-1:0] c_mut__39;
reg [`BIT_WIDTH-1:0] c_mut__40;
reg [`BIT_WIDTH-1:0] c_mut__41;
reg [`BIT_WIDTH-1:0] c_mut__42;
reg [`BIT_WIDTH-1:0] c_mut__43;
reg [`BIT_WIDTH-1:0] c_mut__44;
reg [`BIT_WIDTH-1:0] c_mut__45;
reg [`BIT_WIDTH-1:0] c_mut__46;
reg [`BIT_WIDTH-1:0] c_mut__47;
reg [`BIT_WIDTH-1:0] c_mut__48;
reg [`BIT_WIDTH-1:0] c_mut__49;
reg [`BIT_WIDTH-1:0] c_mut__50;
reg [`BIT_WIDTH-1:0] c_mut__51;
reg [`BIT_WIDTH-1:0] c_mut__52;
reg [`BIT_WIDTH-1:0] c_mut__53;
reg [`BIT_WIDTH-1:0] c_mut__54;
reg [`BIT_WIDTH-1:0] c_mut__55;
reg [`BIT_WIDTH-1:0] c_mut__56;
reg [`BIT_WIDTH-1:0] c_mut__57;
reg [`BIT_WIDTH-1:0] c_mut__58;
reg [`BIT_WIDTH-1:0] c_mut__59;
//reg [`BIT_WIDTH-1:0] r_x [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] r_x__0;
reg [`BIT_WIDTH-1:0] r_x__1;
reg [`BIT_WIDTH-1:0] r_x__2;
reg [`BIT_WIDTH-1:0] r_x__3;
reg [`BIT_WIDTH-1:0] r_x__4;
reg [`BIT_WIDTH-1:0] r_x__5;
reg [`BIT_WIDTH-1:0] r_x__6;
reg [`BIT_WIDTH-1:0] r_x__7;
reg [`BIT_WIDTH-1:0] r_x__8;
reg [`BIT_WIDTH-1:0] r_x__9;
reg [`BIT_WIDTH-1:0] r_x__10;
reg [`BIT_WIDTH-1:0] r_x__11;
reg [`BIT_WIDTH-1:0] r_x__12;
reg [`BIT_WIDTH-1:0] r_x__13;
reg [`BIT_WIDTH-1:0] r_x__14;
reg [`BIT_WIDTH-1:0] r_x__15;
reg [`BIT_WIDTH-1:0] r_x__16;
reg [`BIT_WIDTH-1:0] r_x__17;
reg [`BIT_WIDTH-1:0] r_x__18;
reg [`BIT_WIDTH-1:0] r_x__19;
reg [`BIT_WIDTH-1:0] r_x__20;
reg [`BIT_WIDTH-1:0] r_x__21;
reg [`BIT_WIDTH-1:0] r_x__22;
reg [`BIT_WIDTH-1:0] r_x__23;
reg [`BIT_WIDTH-1:0] r_x__24;
reg [`BIT_WIDTH-1:0] r_x__25;
reg [`BIT_WIDTH-1:0] r_x__26;
reg [`BIT_WIDTH-1:0] r_x__27;
reg [`BIT_WIDTH-1:0] r_x__28;
reg [`BIT_WIDTH-1:0] r_x__29;
reg [`BIT_WIDTH-1:0] r_x__30;
reg [`BIT_WIDTH-1:0] r_x__31;
reg [`BIT_WIDTH-1:0] r_x__32;
reg [`BIT_WIDTH-1:0] r_x__33;
reg [`BIT_WIDTH-1:0] r_x__34;
reg [`BIT_WIDTH-1:0] r_x__35;
reg [`BIT_WIDTH-1:0] r_x__36;
reg [`BIT_WIDTH-1:0] r_x__37;
reg [`BIT_WIDTH-1:0] r_x__38;
reg [`BIT_WIDTH-1:0] r_x__39;
reg [`BIT_WIDTH-1:0] r_x__40;
reg [`BIT_WIDTH-1:0] r_x__41;
reg [`BIT_WIDTH-1:0] r_x__42;
reg [`BIT_WIDTH-1:0] r_x__43;
reg [`BIT_WIDTH-1:0] r_x__44;
reg [`BIT_WIDTH-1:0] r_x__45;
reg [`BIT_WIDTH-1:0] r_x__46;
reg [`BIT_WIDTH-1:0] r_x__47;
reg [`BIT_WIDTH-1:0] r_x__48;
reg [`BIT_WIDTH-1:0] r_x__49;
reg [`BIT_WIDTH-1:0] r_x__50;
reg [`BIT_WIDTH-1:0] r_x__51;
reg [`BIT_WIDTH-1:0] r_x__52;
reg [`BIT_WIDTH-1:0] r_x__53;
reg [`BIT_WIDTH-1:0] r_x__54;
reg [`BIT_WIDTH-1:0] r_x__55;
reg [`BIT_WIDTH-1:0] r_x__56;
reg [`BIT_WIDTH-1:0] r_x__57;
reg [`BIT_WIDTH-1:0] r_x__58;
reg [`BIT_WIDTH-1:0] r_x__59;
//reg [`BIT_WIDTH-1:0] r_y [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] r_y__0;
reg [`BIT_WIDTH-1:0] r_y__1;
reg [`BIT_WIDTH-1:0] r_y__2;
reg [`BIT_WIDTH-1:0] r_y__3;
reg [`BIT_WIDTH-1:0] r_y__4;
reg [`BIT_WIDTH-1:0] r_y__5;
reg [`BIT_WIDTH-1:0] r_y__6;
reg [`BIT_WIDTH-1:0] r_y__7;
reg [`BIT_WIDTH-1:0] r_y__8;
reg [`BIT_WIDTH-1:0] r_y__9;
reg [`BIT_WIDTH-1:0] r_y__10;
reg [`BIT_WIDTH-1:0] r_y__11;
reg [`BIT_WIDTH-1:0] r_y__12;
reg [`BIT_WIDTH-1:0] r_y__13;
reg [`BIT_WIDTH-1:0] r_y__14;
reg [`BIT_WIDTH-1:0] r_y__15;
reg [`BIT_WIDTH-1:0] r_y__16;
reg [`BIT_WIDTH-1:0] r_y__17;
reg [`BIT_WIDTH-1:0] r_y__18;
reg [`BIT_WIDTH-1:0] r_y__19;
reg [`BIT_WIDTH-1:0] r_y__20;
reg [`BIT_WIDTH-1:0] r_y__21;
reg [`BIT_WIDTH-1:0] r_y__22;
reg [`BIT_WIDTH-1:0] r_y__23;
reg [`BIT_WIDTH-1:0] r_y__24;
reg [`BIT_WIDTH-1:0] r_y__25;
reg [`BIT_WIDTH-1:0] r_y__26;
reg [`BIT_WIDTH-1:0] r_y__27;
reg [`BIT_WIDTH-1:0] r_y__28;
reg [`BIT_WIDTH-1:0] r_y__29;
reg [`BIT_WIDTH-1:0] r_y__30;
reg [`BIT_WIDTH-1:0] r_y__31;
reg [`BIT_WIDTH-1:0] r_y__32;
reg [`BIT_WIDTH-1:0] r_y__33;
reg [`BIT_WIDTH-1:0] r_y__34;
reg [`BIT_WIDTH-1:0] r_y__35;
reg [`BIT_WIDTH-1:0] r_y__36;
reg [`BIT_WIDTH-1:0] r_y__37;
reg [`BIT_WIDTH-1:0] r_y__38;
reg [`BIT_WIDTH-1:0] r_y__39;
reg [`BIT_WIDTH-1:0] r_y__40;
reg [`BIT_WIDTH-1:0] r_y__41;
reg [`BIT_WIDTH-1:0] r_y__42;
reg [`BIT_WIDTH-1:0] r_y__43;
reg [`BIT_WIDTH-1:0] r_y__44;
reg [`BIT_WIDTH-1:0] r_y__45;
reg [`BIT_WIDTH-1:0] r_y__46;
reg [`BIT_WIDTH-1:0] r_y__47;
reg [`BIT_WIDTH-1:0] r_y__48;
reg [`BIT_WIDTH-1:0] r_y__49;
reg [`BIT_WIDTH-1:0] r_y__50;
reg [`BIT_WIDTH-1:0] r_y__51;
reg [`BIT_WIDTH-1:0] r_y__52;
reg [`BIT_WIDTH-1:0] r_y__53;
reg [`BIT_WIDTH-1:0] r_y__54;
reg [`BIT_WIDTH-1:0] r_y__55;
reg [`BIT_WIDTH-1:0] r_y__56;
reg [`BIT_WIDTH-1:0] r_y__57;
reg [`BIT_WIDTH-1:0] r_y__58;
reg [`BIT_WIDTH-1:0] r_y__59;
//reg [`BIT_WIDTH-1:0] r_z [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] r_z__0;
reg [`BIT_WIDTH-1:0] r_z__1;
reg [`BIT_WIDTH-1:0] r_z__2;
reg [`BIT_WIDTH-1:0] r_z__3;
reg [`BIT_WIDTH-1:0] r_z__4;
reg [`BIT_WIDTH-1:0] r_z__5;
reg [`BIT_WIDTH-1:0] r_z__6;
reg [`BIT_WIDTH-1:0] r_z__7;
reg [`BIT_WIDTH-1:0] r_z__8;
reg [`BIT_WIDTH-1:0] r_z__9;
reg [`BIT_WIDTH-1:0] r_z__10;
reg [`BIT_WIDTH-1:0] r_z__11;
reg [`BIT_WIDTH-1:0] r_z__12;
reg [`BIT_WIDTH-1:0] r_z__13;
reg [`BIT_WIDTH-1:0] r_z__14;
reg [`BIT_WIDTH-1:0] r_z__15;
reg [`BIT_WIDTH-1:0] r_z__16;
reg [`BIT_WIDTH-1:0] r_z__17;
reg [`BIT_WIDTH-1:0] r_z__18;
reg [`BIT_WIDTH-1:0] r_z__19;
reg [`BIT_WIDTH-1:0] r_z__20;
reg [`BIT_WIDTH-1:0] r_z__21;
reg [`BIT_WIDTH-1:0] r_z__22;
reg [`BIT_WIDTH-1:0] r_z__23;
reg [`BIT_WIDTH-1:0] r_z__24;
reg [`BIT_WIDTH-1:0] r_z__25;
reg [`BIT_WIDTH-1:0] r_z__26;
reg [`BIT_WIDTH-1:0] r_z__27;
reg [`BIT_WIDTH-1:0] r_z__28;
reg [`BIT_WIDTH-1:0] r_z__29;
reg [`BIT_WIDTH-1:0] r_z__30;
reg [`BIT_WIDTH-1:0] r_z__31;
reg [`BIT_WIDTH-1:0] r_z__32;
reg [`BIT_WIDTH-1:0] r_z__33;
reg [`BIT_WIDTH-1:0] r_z__34;
reg [`BIT_WIDTH-1:0] r_z__35;
reg [`BIT_WIDTH-1:0] r_z__36;
reg [`BIT_WIDTH-1:0] r_z__37;
reg [`BIT_WIDTH-1:0] r_z__38;
reg [`BIT_WIDTH-1:0] r_z__39;
reg [`BIT_WIDTH-1:0] r_z__40;
reg [`BIT_WIDTH-1:0] r_z__41;
reg [`BIT_WIDTH-1:0] r_z__42;
reg [`BIT_WIDTH-1:0] r_z__43;
reg [`BIT_WIDTH-1:0] r_z__44;
reg [`BIT_WIDTH-1:0] r_z__45;
reg [`BIT_WIDTH-1:0] r_z__46;
reg [`BIT_WIDTH-1:0] r_z__47;
reg [`BIT_WIDTH-1:0] r_z__48;
reg [`BIT_WIDTH-1:0] r_z__49;
reg [`BIT_WIDTH-1:0] r_z__50;
reg [`BIT_WIDTH-1:0] r_z__51;
reg [`BIT_WIDTH-1:0] r_z__52;
reg [`BIT_WIDTH-1:0] r_z__53;
reg [`BIT_WIDTH-1:0] r_z__54;
reg [`BIT_WIDTH-1:0] r_z__55;
reg [`BIT_WIDTH-1:0] r_z__56;
reg [`BIT_WIDTH-1:0] r_z__57;
reg [`BIT_WIDTH-1:0] r_z__58;
reg [`BIT_WIDTH-1:0] r_z__59;
//reg [`BIT_WIDTH-1:0] r_ux [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] r_ux__0;
reg [`BIT_WIDTH-1:0] r_ux__1;
reg [`BIT_WIDTH-1:0] r_ux__2;
reg [`BIT_WIDTH-1:0] r_ux__3;
reg [`BIT_WIDTH-1:0] r_ux__4;
reg [`BIT_WIDTH-1:0] r_ux__5;
reg [`BIT_WIDTH-1:0] r_ux__6;
reg [`BIT_WIDTH-1:0] r_ux__7;
reg [`BIT_WIDTH-1:0] r_ux__8;
reg [`BIT_WIDTH-1:0] r_ux__9;
reg [`BIT_WIDTH-1:0] r_ux__10;
reg [`BIT_WIDTH-1:0] r_ux__11;
reg [`BIT_WIDTH-1:0] r_ux__12;
reg [`BIT_WIDTH-1:0] r_ux__13;
reg [`BIT_WIDTH-1:0] r_ux__14;
reg [`BIT_WIDTH-1:0] r_ux__15;
reg [`BIT_WIDTH-1:0] r_ux__16;
reg [`BIT_WIDTH-1:0] r_ux__17;
reg [`BIT_WIDTH-1:0] r_ux__18;
reg [`BIT_WIDTH-1:0] r_ux__19;
reg [`BIT_WIDTH-1:0] r_ux__20;
reg [`BIT_WIDTH-1:0] r_ux__21;
reg [`BIT_WIDTH-1:0] r_ux__22;
reg [`BIT_WIDTH-1:0] r_ux__23;
reg [`BIT_WIDTH-1:0] r_ux__24;
reg [`BIT_WIDTH-1:0] r_ux__25;
reg [`BIT_WIDTH-1:0] r_ux__26;
reg [`BIT_WIDTH-1:0] r_ux__27;
reg [`BIT_WIDTH-1:0] r_ux__28;
reg [`BIT_WIDTH-1:0] r_ux__29;
reg [`BIT_WIDTH-1:0] r_ux__30;
reg [`BIT_WIDTH-1:0] r_ux__31;
reg [`BIT_WIDTH-1:0] r_ux__32;
reg [`BIT_WIDTH-1:0] r_ux__33;
reg [`BIT_WIDTH-1:0] r_ux__34;
reg [`BIT_WIDTH-1:0] r_ux__35;
reg [`BIT_WIDTH-1:0] r_ux__36;
reg [`BIT_WIDTH-1:0] r_ux__37;
reg [`BIT_WIDTH-1:0] r_ux__38;
reg [`BIT_WIDTH-1:0] r_ux__39;
reg [`BIT_WIDTH-1:0] r_ux__40;
reg [`BIT_WIDTH-1:0] r_ux__41;
reg [`BIT_WIDTH-1:0] r_ux__42;
reg [`BIT_WIDTH-1:0] r_ux__43;
reg [`BIT_WIDTH-1:0] r_ux__44;
reg [`BIT_WIDTH-1:0] r_ux__45;
reg [`BIT_WIDTH-1:0] r_ux__46;
reg [`BIT_WIDTH-1:0] r_ux__47;
reg [`BIT_WIDTH-1:0] r_ux__48;
reg [`BIT_WIDTH-1:0] r_ux__49;
reg [`BIT_WIDTH-1:0] r_ux__50;
reg [`BIT_WIDTH-1:0] r_ux__51;
reg [`BIT_WIDTH-1:0] r_ux__52;
reg [`BIT_WIDTH-1:0] r_ux__53;
reg [`BIT_WIDTH-1:0] r_ux__54;
reg [`BIT_WIDTH-1:0] r_ux__55;
reg [`BIT_WIDTH-1:0] r_ux__56;
reg [`BIT_WIDTH-1:0] r_ux__57;
reg [`BIT_WIDTH-1:0] r_ux__58;
reg [`BIT_WIDTH-1:0] r_ux__59;
//reg [`BIT_WIDTH-1:0] r_uy [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] r_uy__0;
reg [`BIT_WIDTH-1:0] r_uy__1;
reg [`BIT_WIDTH-1:0] r_uy__2;
reg [`BIT_WIDTH-1:0] r_uy__3;
reg [`BIT_WIDTH-1:0] r_uy__4;
reg [`BIT_WIDTH-1:0] r_uy__5;
reg [`BIT_WIDTH-1:0] r_uy__6;
reg [`BIT_WIDTH-1:0] r_uy__7;
reg [`BIT_WIDTH-1:0] r_uy__8;
reg [`BIT_WIDTH-1:0] r_uy__9;
reg [`BIT_WIDTH-1:0] r_uy__10;
reg [`BIT_WIDTH-1:0] r_uy__11;
reg [`BIT_WIDTH-1:0] r_uy__12;
reg [`BIT_WIDTH-1:0] r_uy__13;
reg [`BIT_WIDTH-1:0] r_uy__14;
reg [`BIT_WIDTH-1:0] r_uy__15;
reg [`BIT_WIDTH-1:0] r_uy__16;
reg [`BIT_WIDTH-1:0] r_uy__17;
reg [`BIT_WIDTH-1:0] r_uy__18;
reg [`BIT_WIDTH-1:0] r_uy__19;
reg [`BIT_WIDTH-1:0] r_uy__20;
reg [`BIT_WIDTH-1:0] r_uy__21;
reg [`BIT_WIDTH-1:0] r_uy__22;
reg [`BIT_WIDTH-1:0] r_uy__23;
reg [`BIT_WIDTH-1:0] r_uy__24;
reg [`BIT_WIDTH-1:0] r_uy__25;
reg [`BIT_WIDTH-1:0] r_uy__26;
reg [`BIT_WIDTH-1:0] r_uy__27;
reg [`BIT_WIDTH-1:0] r_uy__28;
reg [`BIT_WIDTH-1:0] r_uy__29;
reg [`BIT_WIDTH-1:0] r_uy__30;
reg [`BIT_WIDTH-1:0] r_uy__31;
reg [`BIT_WIDTH-1:0] r_uy__32;
reg [`BIT_WIDTH-1:0] r_uy__33;
reg [`BIT_WIDTH-1:0] r_uy__34;
reg [`BIT_WIDTH-1:0] r_uy__35;
reg [`BIT_WIDTH-1:0] r_uy__36;
reg [`BIT_WIDTH-1:0] r_uy__37;
reg [`BIT_WIDTH-1:0] r_uy__38;
reg [`BIT_WIDTH-1:0] r_uy__39;
reg [`BIT_WIDTH-1:0] r_uy__40;
reg [`BIT_WIDTH-1:0] r_uy__41;
reg [`BIT_WIDTH-1:0] r_uy__42;
reg [`BIT_WIDTH-1:0] r_uy__43;
reg [`BIT_WIDTH-1:0] r_uy__44;
reg [`BIT_WIDTH-1:0] r_uy__45;
reg [`BIT_WIDTH-1:0] r_uy__46;
reg [`BIT_WIDTH-1:0] r_uy__47;
reg [`BIT_WIDTH-1:0] r_uy__48;
reg [`BIT_WIDTH-1:0] r_uy__49;
reg [`BIT_WIDTH-1:0] r_uy__50;
reg [`BIT_WIDTH-1:0] r_uy__51;
reg [`BIT_WIDTH-1:0] r_uy__52;
reg [`BIT_WIDTH-1:0] r_uy__53;
reg [`BIT_WIDTH-1:0] r_uy__54;
reg [`BIT_WIDTH-1:0] r_uy__55;
reg [`BIT_WIDTH-1:0] r_uy__56;
reg [`BIT_WIDTH-1:0] r_uy__57;
reg [`BIT_WIDTH-1:0] r_uy__58;
reg [`BIT_WIDTH-1:0] r_uy__59;
//reg [`BIT_WIDTH-1:0] r_uz [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] r_uz__0;
reg [`BIT_WIDTH-1:0] r_uz__1;
reg [`BIT_WIDTH-1:0] r_uz__2;
reg [`BIT_WIDTH-1:0] r_uz__3;
reg [`BIT_WIDTH-1:0] r_uz__4;
reg [`BIT_WIDTH-1:0] r_uz__5;
reg [`BIT_WIDTH-1:0] r_uz__6;
reg [`BIT_WIDTH-1:0] r_uz__7;
reg [`BIT_WIDTH-1:0] r_uz__8;
reg [`BIT_WIDTH-1:0] r_uz__9;
reg [`BIT_WIDTH-1:0] r_uz__10;
reg [`BIT_WIDTH-1:0] r_uz__11;
reg [`BIT_WIDTH-1:0] r_uz__12;
reg [`BIT_WIDTH-1:0] r_uz__13;
reg [`BIT_WIDTH-1:0] r_uz__14;
reg [`BIT_WIDTH-1:0] r_uz__15;
reg [`BIT_WIDTH-1:0] r_uz__16;
reg [`BIT_WIDTH-1:0] r_uz__17;
reg [`BIT_WIDTH-1:0] r_uz__18;
reg [`BIT_WIDTH-1:0] r_uz__19;
reg [`BIT_WIDTH-1:0] r_uz__20;
reg [`BIT_WIDTH-1:0] r_uz__21;
reg [`BIT_WIDTH-1:0] r_uz__22;
reg [`BIT_WIDTH-1:0] r_uz__23;
reg [`BIT_WIDTH-1:0] r_uz__24;
reg [`BIT_WIDTH-1:0] r_uz__25;
reg [`BIT_WIDTH-1:0] r_uz__26;
reg [`BIT_WIDTH-1:0] r_uz__27;
reg [`BIT_WIDTH-1:0] r_uz__28;
reg [`BIT_WIDTH-1:0] r_uz__29;
reg [`BIT_WIDTH-1:0] r_uz__30;
reg [`BIT_WIDTH-1:0] r_uz__31;
reg [`BIT_WIDTH-1:0] r_uz__32;
reg [`BIT_WIDTH-1:0] r_uz__33;
reg [`BIT_WIDTH-1:0] r_uz__34;
reg [`BIT_WIDTH-1:0] r_uz__35;
reg [`BIT_WIDTH-1:0] r_uz__36;
reg [`BIT_WIDTH-1:0] r_uz__37;
reg [`BIT_WIDTH-1:0] r_uz__38;
reg [`BIT_WIDTH-1:0] r_uz__39;
reg [`BIT_WIDTH-1:0] r_uz__40;
reg [`BIT_WIDTH-1:0] r_uz__41;
reg [`BIT_WIDTH-1:0] r_uz__42;
reg [`BIT_WIDTH-1:0] r_uz__43;
reg [`BIT_WIDTH-1:0] r_uz__44;
reg [`BIT_WIDTH-1:0] r_uz__45;
reg [`BIT_WIDTH-1:0] r_uz__46;
reg [`BIT_WIDTH-1:0] r_uz__47;
reg [`BIT_WIDTH-1:0] r_uz__48;
reg [`BIT_WIDTH-1:0] r_uz__49;
reg [`BIT_WIDTH-1:0] r_uz__50;
reg [`BIT_WIDTH-1:0] r_uz__51;
reg [`BIT_WIDTH-1:0] r_uz__52;
reg [`BIT_WIDTH-1:0] r_uz__53;
reg [`BIT_WIDTH-1:0] r_uz__54;
reg [`BIT_WIDTH-1:0] r_uz__55;
reg [`BIT_WIDTH-1:0] r_uz__56;
reg [`BIT_WIDTH-1:0] r_uz__57;
reg [`BIT_WIDTH-1:0] r_uz__58;
reg [`BIT_WIDTH-1:0] r_uz__59;
//reg [`BIT_WIDTH-1:0] r_sz [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] r_sz__0;
reg [`BIT_WIDTH-1:0] r_sz__1;
reg [`BIT_WIDTH-1:0] r_sz__2;
reg [`BIT_WIDTH-1:0] r_sz__3;
reg [`BIT_WIDTH-1:0] r_sz__4;
reg [`BIT_WIDTH-1:0] r_sz__5;
reg [`BIT_WIDTH-1:0] r_sz__6;
reg [`BIT_WIDTH-1:0] r_sz__7;
reg [`BIT_WIDTH-1:0] r_sz__8;
reg [`BIT_WIDTH-1:0] r_sz__9;
reg [`BIT_WIDTH-1:0] r_sz__10;
reg [`BIT_WIDTH-1:0] r_sz__11;
reg [`BIT_WIDTH-1:0] r_sz__12;
reg [`BIT_WIDTH-1:0] r_sz__13;
reg [`BIT_WIDTH-1:0] r_sz__14;
reg [`BIT_WIDTH-1:0] r_sz__15;
reg [`BIT_WIDTH-1:0] r_sz__16;
reg [`BIT_WIDTH-1:0] r_sz__17;
reg [`BIT_WIDTH-1:0] r_sz__18;
reg [`BIT_WIDTH-1:0] r_sz__19;
reg [`BIT_WIDTH-1:0] r_sz__20;
reg [`BIT_WIDTH-1:0] r_sz__21;
reg [`BIT_WIDTH-1:0] r_sz__22;
reg [`BIT_WIDTH-1:0] r_sz__23;
reg [`BIT_WIDTH-1:0] r_sz__24;
reg [`BIT_WIDTH-1:0] r_sz__25;
reg [`BIT_WIDTH-1:0] r_sz__26;
reg [`BIT_WIDTH-1:0] r_sz__27;
reg [`BIT_WIDTH-1:0] r_sz__28;
reg [`BIT_WIDTH-1:0] r_sz__29;
reg [`BIT_WIDTH-1:0] r_sz__30;
reg [`BIT_WIDTH-1:0] r_sz__31;
reg [`BIT_WIDTH-1:0] r_sz__32;
reg [`BIT_WIDTH-1:0] r_sz__33;
reg [`BIT_WIDTH-1:0] r_sz__34;
reg [`BIT_WIDTH-1:0] r_sz__35;
reg [`BIT_WIDTH-1:0] r_sz__36;
reg [`BIT_WIDTH-1:0] r_sz__37;
reg [`BIT_WIDTH-1:0] r_sz__38;
reg [`BIT_WIDTH-1:0] r_sz__39;
reg [`BIT_WIDTH-1:0] r_sz__40;
reg [`BIT_WIDTH-1:0] r_sz__41;
reg [`BIT_WIDTH-1:0] r_sz__42;
reg [`BIT_WIDTH-1:0] r_sz__43;
reg [`BIT_WIDTH-1:0] r_sz__44;
reg [`BIT_WIDTH-1:0] r_sz__45;
reg [`BIT_WIDTH-1:0] r_sz__46;
reg [`BIT_WIDTH-1:0] r_sz__47;
reg [`BIT_WIDTH-1:0] r_sz__48;
reg [`BIT_WIDTH-1:0] r_sz__49;
reg [`BIT_WIDTH-1:0] r_sz__50;
reg [`BIT_WIDTH-1:0] r_sz__51;
reg [`BIT_WIDTH-1:0] r_sz__52;
reg [`BIT_WIDTH-1:0] r_sz__53;
reg [`BIT_WIDTH-1:0] r_sz__54;
reg [`BIT_WIDTH-1:0] r_sz__55;
reg [`BIT_WIDTH-1:0] r_sz__56;
reg [`BIT_WIDTH-1:0] r_sz__57;
reg [`BIT_WIDTH-1:0] r_sz__58;
reg [`BIT_WIDTH-1:0] r_sz__59;
//reg [`BIT_WIDTH-1:0] r_sr [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] r_sr__0;
reg [`BIT_WIDTH-1:0] r_sr__1;
reg [`BIT_WIDTH-1:0] r_sr__2;
reg [`BIT_WIDTH-1:0] r_sr__3;
reg [`BIT_WIDTH-1:0] r_sr__4;
reg [`BIT_WIDTH-1:0] r_sr__5;
reg [`BIT_WIDTH-1:0] r_sr__6;
reg [`BIT_WIDTH-1:0] r_sr__7;
reg [`BIT_WIDTH-1:0] r_sr__8;
reg [`BIT_WIDTH-1:0] r_sr__9;
reg [`BIT_WIDTH-1:0] r_sr__10;
reg [`BIT_WIDTH-1:0] r_sr__11;
reg [`BIT_WIDTH-1:0] r_sr__12;
reg [`BIT_WIDTH-1:0] r_sr__13;
reg [`BIT_WIDTH-1:0] r_sr__14;
reg [`BIT_WIDTH-1:0] r_sr__15;
reg [`BIT_WIDTH-1:0] r_sr__16;
reg [`BIT_WIDTH-1:0] r_sr__17;
reg [`BIT_WIDTH-1:0] r_sr__18;
reg [`BIT_WIDTH-1:0] r_sr__19;
reg [`BIT_WIDTH-1:0] r_sr__20;
reg [`BIT_WIDTH-1:0] r_sr__21;
reg [`BIT_WIDTH-1:0] r_sr__22;
reg [`BIT_WIDTH-1:0] r_sr__23;
reg [`BIT_WIDTH-1:0] r_sr__24;
reg [`BIT_WIDTH-1:0] r_sr__25;
reg [`BIT_WIDTH-1:0] r_sr__26;
reg [`BIT_WIDTH-1:0] r_sr__27;
reg [`BIT_WIDTH-1:0] r_sr__28;
reg [`BIT_WIDTH-1:0] r_sr__29;
reg [`BIT_WIDTH-1:0] r_sr__30;
reg [`BIT_WIDTH-1:0] r_sr__31;
reg [`BIT_WIDTH-1:0] r_sr__32;
reg [`BIT_WIDTH-1:0] r_sr__33;
reg [`BIT_WIDTH-1:0] r_sr__34;
reg [`BIT_WIDTH-1:0] r_sr__35;
reg [`BIT_WIDTH-1:0] r_sr__36;
reg [`BIT_WIDTH-1:0] r_sr__37;
reg [`BIT_WIDTH-1:0] r_sr__38;
reg [`BIT_WIDTH-1:0] r_sr__39;
reg [`BIT_WIDTH-1:0] r_sr__40;
reg [`BIT_WIDTH-1:0] r_sr__41;
reg [`BIT_WIDTH-1:0] r_sr__42;
reg [`BIT_WIDTH-1:0] r_sr__43;
reg [`BIT_WIDTH-1:0] r_sr__44;
reg [`BIT_WIDTH-1:0] r_sr__45;
reg [`BIT_WIDTH-1:0] r_sr__46;
reg [`BIT_WIDTH-1:0] r_sr__47;
reg [`BIT_WIDTH-1:0] r_sr__48;
reg [`BIT_WIDTH-1:0] r_sr__49;
reg [`BIT_WIDTH-1:0] r_sr__50;
reg [`BIT_WIDTH-1:0] r_sr__51;
reg [`BIT_WIDTH-1:0] r_sr__52;
reg [`BIT_WIDTH-1:0] r_sr__53;
reg [`BIT_WIDTH-1:0] r_sr__54;
reg [`BIT_WIDTH-1:0] r_sr__55;
reg [`BIT_WIDTH-1:0] r_sr__56;
reg [`BIT_WIDTH-1:0] r_sr__57;
reg [`BIT_WIDTH-1:0] r_sr__58;
reg [`BIT_WIDTH-1:0] r_sr__59;
//reg [`BIT_WIDTH-1:0] r_sleftz [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] r_sleftz__0;
reg [`BIT_WIDTH-1:0] r_sleftz__1;
reg [`BIT_WIDTH-1:0] r_sleftz__2;
reg [`BIT_WIDTH-1:0] r_sleftz__3;
reg [`BIT_WIDTH-1:0] r_sleftz__4;
reg [`BIT_WIDTH-1:0] r_sleftz__5;
reg [`BIT_WIDTH-1:0] r_sleftz__6;
reg [`BIT_WIDTH-1:0] r_sleftz__7;
reg [`BIT_WIDTH-1:0] r_sleftz__8;
reg [`BIT_WIDTH-1:0] r_sleftz__9;
reg [`BIT_WIDTH-1:0] r_sleftz__10;
reg [`BIT_WIDTH-1:0] r_sleftz__11;
reg [`BIT_WIDTH-1:0] r_sleftz__12;
reg [`BIT_WIDTH-1:0] r_sleftz__13;
reg [`BIT_WIDTH-1:0] r_sleftz__14;
reg [`BIT_WIDTH-1:0] r_sleftz__15;
reg [`BIT_WIDTH-1:0] r_sleftz__16;
reg [`BIT_WIDTH-1:0] r_sleftz__17;
reg [`BIT_WIDTH-1:0] r_sleftz__18;
reg [`BIT_WIDTH-1:0] r_sleftz__19;
reg [`BIT_WIDTH-1:0] r_sleftz__20;
reg [`BIT_WIDTH-1:0] r_sleftz__21;
reg [`BIT_WIDTH-1:0] r_sleftz__22;
reg [`BIT_WIDTH-1:0] r_sleftz__23;
reg [`BIT_WIDTH-1:0] r_sleftz__24;
reg [`BIT_WIDTH-1:0] r_sleftz__25;
reg [`BIT_WIDTH-1:0] r_sleftz__26;
reg [`BIT_WIDTH-1:0] r_sleftz__27;
reg [`BIT_WIDTH-1:0] r_sleftz__28;
reg [`BIT_WIDTH-1:0] r_sleftz__29;
reg [`BIT_WIDTH-1:0] r_sleftz__30;
reg [`BIT_WIDTH-1:0] r_sleftz__31;
reg [`BIT_WIDTH-1:0] r_sleftz__32;
reg [`BIT_WIDTH-1:0] r_sleftz__33;
reg [`BIT_WIDTH-1:0] r_sleftz__34;
reg [`BIT_WIDTH-1:0] r_sleftz__35;
reg [`BIT_WIDTH-1:0] r_sleftz__36;
reg [`BIT_WIDTH-1:0] r_sleftz__37;
reg [`BIT_WIDTH-1:0] r_sleftz__38;
reg [`BIT_WIDTH-1:0] r_sleftz__39;
reg [`BIT_WIDTH-1:0] r_sleftz__40;
reg [`BIT_WIDTH-1:0] r_sleftz__41;
reg [`BIT_WIDTH-1:0] r_sleftz__42;
reg [`BIT_WIDTH-1:0] r_sleftz__43;
reg [`BIT_WIDTH-1:0] r_sleftz__44;
reg [`BIT_WIDTH-1:0] r_sleftz__45;
reg [`BIT_WIDTH-1:0] r_sleftz__46;
reg [`BIT_WIDTH-1:0] r_sleftz__47;
reg [`BIT_WIDTH-1:0] r_sleftz__48;
reg [`BIT_WIDTH-1:0] r_sleftz__49;
reg [`BIT_WIDTH-1:0] r_sleftz__50;
reg [`BIT_WIDTH-1:0] r_sleftz__51;
reg [`BIT_WIDTH-1:0] r_sleftz__52;
reg [`BIT_WIDTH-1:0] r_sleftz__53;
reg [`BIT_WIDTH-1:0] r_sleftz__54;
reg [`BIT_WIDTH-1:0] r_sleftz__55;
reg [`BIT_WIDTH-1:0] r_sleftz__56;
reg [`BIT_WIDTH-1:0] r_sleftz__57;
reg [`BIT_WIDTH-1:0] r_sleftz__58;
reg [`BIT_WIDTH-1:0] r_sleftz__59;
//reg [`BIT_WIDTH-1:0] r_sleftr [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] r_sleftr__0;
reg [`BIT_WIDTH-1:0] r_sleftr__1;
reg [`BIT_WIDTH-1:0] r_sleftr__2;
reg [`BIT_WIDTH-1:0] r_sleftr__3;
reg [`BIT_WIDTH-1:0] r_sleftr__4;
reg [`BIT_WIDTH-1:0] r_sleftr__5;
reg [`BIT_WIDTH-1:0] r_sleftr__6;
reg [`BIT_WIDTH-1:0] r_sleftr__7;
reg [`BIT_WIDTH-1:0] r_sleftr__8;
reg [`BIT_WIDTH-1:0] r_sleftr__9;
reg [`BIT_WIDTH-1:0] r_sleftr__10;
reg [`BIT_WIDTH-1:0] r_sleftr__11;
reg [`BIT_WIDTH-1:0] r_sleftr__12;
reg [`BIT_WIDTH-1:0] r_sleftr__13;
reg [`BIT_WIDTH-1:0] r_sleftr__14;
reg [`BIT_WIDTH-1:0] r_sleftr__15;
reg [`BIT_WIDTH-1:0] r_sleftr__16;
reg [`BIT_WIDTH-1:0] r_sleftr__17;
reg [`BIT_WIDTH-1:0] r_sleftr__18;
reg [`BIT_WIDTH-1:0] r_sleftr__19;
reg [`BIT_WIDTH-1:0] r_sleftr__20;
reg [`BIT_WIDTH-1:0] r_sleftr__21;
reg [`BIT_WIDTH-1:0] r_sleftr__22;
reg [`BIT_WIDTH-1:0] r_sleftr__23;
reg [`BIT_WIDTH-1:0] r_sleftr__24;
reg [`BIT_WIDTH-1:0] r_sleftr__25;
reg [`BIT_WIDTH-1:0] r_sleftr__26;
reg [`BIT_WIDTH-1:0] r_sleftr__27;
reg [`BIT_WIDTH-1:0] r_sleftr__28;
reg [`BIT_WIDTH-1:0] r_sleftr__29;
reg [`BIT_WIDTH-1:0] r_sleftr__30;
reg [`BIT_WIDTH-1:0] r_sleftr__31;
reg [`BIT_WIDTH-1:0] r_sleftr__32;
reg [`BIT_WIDTH-1:0] r_sleftr__33;
reg [`BIT_WIDTH-1:0] r_sleftr__34;
reg [`BIT_WIDTH-1:0] r_sleftr__35;
reg [`BIT_WIDTH-1:0] r_sleftr__36;
reg [`BIT_WIDTH-1:0] r_sleftr__37;
reg [`BIT_WIDTH-1:0] r_sleftr__38;
reg [`BIT_WIDTH-1:0] r_sleftr__39;
reg [`BIT_WIDTH-1:0] r_sleftr__40;
reg [`BIT_WIDTH-1:0] r_sleftr__41;
reg [`BIT_WIDTH-1:0] r_sleftr__42;
reg [`BIT_WIDTH-1:0] r_sleftr__43;
reg [`BIT_WIDTH-1:0] r_sleftr__44;
reg [`BIT_WIDTH-1:0] r_sleftr__45;
reg [`BIT_WIDTH-1:0] r_sleftr__46;
reg [`BIT_WIDTH-1:0] r_sleftr__47;
reg [`BIT_WIDTH-1:0] r_sleftr__48;
reg [`BIT_WIDTH-1:0] r_sleftr__49;
reg [`BIT_WIDTH-1:0] r_sleftr__50;
reg [`BIT_WIDTH-1:0] r_sleftr__51;
reg [`BIT_WIDTH-1:0] r_sleftr__52;
reg [`BIT_WIDTH-1:0] r_sleftr__53;
reg [`BIT_WIDTH-1:0] r_sleftr__54;
reg [`BIT_WIDTH-1:0] r_sleftr__55;
reg [`BIT_WIDTH-1:0] r_sleftr__56;
reg [`BIT_WIDTH-1:0] r_sleftr__57;
reg [`BIT_WIDTH-1:0] r_sleftr__58;
reg [`BIT_WIDTH-1:0] r_sleftr__59;
//reg [`BIT_WIDTH-1:0] r_weight [TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] r_weight__0;
reg [`BIT_WIDTH-1:0] r_weight__1;
reg [`BIT_WIDTH-1:0] r_weight__2;
reg [`BIT_WIDTH-1:0] r_weight__3;
reg [`BIT_WIDTH-1:0] r_weight__4;
reg [`BIT_WIDTH-1:0] r_weight__5;
reg [`BIT_WIDTH-1:0] r_weight__6;
reg [`BIT_WIDTH-1:0] r_weight__7;
reg [`BIT_WIDTH-1:0] r_weight__8;
reg [`BIT_WIDTH-1:0] r_weight__9;
reg [`BIT_WIDTH-1:0] r_weight__10;
reg [`BIT_WIDTH-1:0] r_weight__11;
reg [`BIT_WIDTH-1:0] r_weight__12;
reg [`BIT_WIDTH-1:0] r_weight__13;
reg [`BIT_WIDTH-1:0] r_weight__14;
reg [`BIT_WIDTH-1:0] r_weight__15;
reg [`BIT_WIDTH-1:0] r_weight__16;
reg [`BIT_WIDTH-1:0] r_weight__17;
reg [`BIT_WIDTH-1:0] r_weight__18;
reg [`BIT_WIDTH-1:0] r_weight__19;
reg [`BIT_WIDTH-1:0] r_weight__20;
reg [`BIT_WIDTH-1:0] r_weight__21;
reg [`BIT_WIDTH-1:0] r_weight__22;
reg [`BIT_WIDTH-1:0] r_weight__23;
reg [`BIT_WIDTH-1:0] r_weight__24;
reg [`BIT_WIDTH-1:0] r_weight__25;
reg [`BIT_WIDTH-1:0] r_weight__26;
reg [`BIT_WIDTH-1:0] r_weight__27;
reg [`BIT_WIDTH-1:0] r_weight__28;
reg [`BIT_WIDTH-1:0] r_weight__29;
reg [`BIT_WIDTH-1:0] r_weight__30;
reg [`BIT_WIDTH-1:0] r_weight__31;
reg [`BIT_WIDTH-1:0] r_weight__32;
reg [`BIT_WIDTH-1:0] r_weight__33;
reg [`BIT_WIDTH-1:0] r_weight__34;
reg [`BIT_WIDTH-1:0] r_weight__35;
reg [`BIT_WIDTH-1:0] r_weight__36;
reg [`BIT_WIDTH-1:0] r_weight__37;
reg [`BIT_WIDTH-1:0] r_weight__38;
reg [`BIT_WIDTH-1:0] r_weight__39;
reg [`BIT_WIDTH-1:0] r_weight__40;
reg [`BIT_WIDTH-1:0] r_weight__41;
reg [`BIT_WIDTH-1:0] r_weight__42;
reg [`BIT_WIDTH-1:0] r_weight__43;
reg [`BIT_WIDTH-1:0] r_weight__44;
reg [`BIT_WIDTH-1:0] r_weight__45;
reg [`BIT_WIDTH-1:0] r_weight__46;
reg [`BIT_WIDTH-1:0] r_weight__47;
reg [`BIT_WIDTH-1:0] r_weight__48;
reg [`BIT_WIDTH-1:0] r_weight__49;
reg [`BIT_WIDTH-1:0] r_weight__50;
reg [`BIT_WIDTH-1:0] r_weight__51;
reg [`BIT_WIDTH-1:0] r_weight__52;
reg [`BIT_WIDTH-1:0] r_weight__53;
reg [`BIT_WIDTH-1:0] r_weight__54;
reg [`BIT_WIDTH-1:0] r_weight__55;
reg [`BIT_WIDTH-1:0] r_weight__56;
reg [`BIT_WIDTH-1:0] r_weight__57;
reg [`BIT_WIDTH-1:0] r_weight__58;
reg [`BIT_WIDTH-1:0] r_weight__59;
//reg [`LAYER_WIDTH-1:0] r_layer [TOTAL_LATENCY - 1:0];
reg [`LAYER_WIDTH-1:0] r_layer__0;
reg [`LAYER_WIDTH-1:0] r_layer__1;
reg [`LAYER_WIDTH-1:0] r_layer__2;
reg [`LAYER_WIDTH-1:0] r_layer__3;
reg [`LAYER_WIDTH-1:0] r_layer__4;
reg [`LAYER_WIDTH-1:0] r_layer__5;
reg [`LAYER_WIDTH-1:0] r_layer__6;
reg [`LAYER_WIDTH-1:0] r_layer__7;
reg [`LAYER_WIDTH-1:0] r_layer__8;
reg [`LAYER_WIDTH-1:0] r_layer__9;
reg [`LAYER_WIDTH-1:0] r_layer__10;
reg [`LAYER_WIDTH-1:0] r_layer__11;
reg [`LAYER_WIDTH-1:0] r_layer__12;
reg [`LAYER_WIDTH-1:0] r_layer__13;
reg [`LAYER_WIDTH-1:0] r_layer__14;
reg [`LAYER_WIDTH-1:0] r_layer__15;
reg [`LAYER_WIDTH-1:0] r_layer__16;
reg [`LAYER_WIDTH-1:0] r_layer__17;
reg [`LAYER_WIDTH-1:0] r_layer__18;
reg [`LAYER_WIDTH-1:0] r_layer__19;
reg [`LAYER_WIDTH-1:0] r_layer__20;
reg [`LAYER_WIDTH-1:0] r_layer__21;
reg [`LAYER_WIDTH-1:0] r_layer__22;
reg [`LAYER_WIDTH-1:0] r_layer__23;
reg [`LAYER_WIDTH-1:0] r_layer__24;
reg [`LAYER_WIDTH-1:0] r_layer__25;
reg [`LAYER_WIDTH-1:0] r_layer__26;
reg [`LAYER_WIDTH-1:0] r_layer__27;
reg [`LAYER_WIDTH-1:0] r_layer__28;
reg [`LAYER_WIDTH-1:0] r_layer__29;
reg [`LAYER_WIDTH-1:0] r_layer__30;
reg [`LAYER_WIDTH-1:0] r_layer__31;
reg [`LAYER_WIDTH-1:0] r_layer__32;
reg [`LAYER_WIDTH-1:0] r_layer__33;
reg [`LAYER_WIDTH-1:0] r_layer__34;
reg [`LAYER_WIDTH-1:0] r_layer__35;
reg [`LAYER_WIDTH-1:0] r_layer__36;
reg [`LAYER_WIDTH-1:0] r_layer__37;
reg [`LAYER_WIDTH-1:0] r_layer__38;
reg [`LAYER_WIDTH-1:0] r_layer__39;
reg [`LAYER_WIDTH-1:0] r_layer__40;
reg [`LAYER_WIDTH-1:0] r_layer__41;
reg [`LAYER_WIDTH-1:0] r_layer__42;
reg [`LAYER_WIDTH-1:0] r_layer__43;
reg [`LAYER_WIDTH-1:0] r_layer__44;
reg [`LAYER_WIDTH-1:0] r_layer__45;
reg [`LAYER_WIDTH-1:0] r_layer__46;
reg [`LAYER_WIDTH-1:0] r_layer__47;
reg [`LAYER_WIDTH-1:0] r_layer__48;
reg [`LAYER_WIDTH-1:0] r_layer__49;
reg [`LAYER_WIDTH-1:0] r_layer__50;
reg [`LAYER_WIDTH-1:0] r_layer__51;
reg [`LAYER_WIDTH-1:0] r_layer__52;
reg [`LAYER_WIDTH-1:0] r_layer__53;
reg [`LAYER_WIDTH-1:0] r_layer__54;
reg [`LAYER_WIDTH-1:0] r_layer__55;
reg [`LAYER_WIDTH-1:0] r_layer__56;
reg [`LAYER_WIDTH-1:0] r_layer__57;
reg [`LAYER_WIDTH-1:0] r_layer__58;
reg [`LAYER_WIDTH-1:0] r_layer__59;
//reg r_dead [TOTAL_LATENCY - 1:0];
reg r_dead__0;
reg r_dead__1;
reg r_dead__2;
reg r_dead__3;
reg r_dead__4;
reg r_dead__5;
reg r_dead__6;
reg r_dead__7;
reg r_dead__8;
reg r_dead__9;
reg r_dead__10;
reg r_dead__11;
reg r_dead__12;
reg r_dead__13;
reg r_dead__14;
reg r_dead__15;
reg r_dead__16;
reg r_dead__17;
reg r_dead__18;
reg r_dead__19;
reg r_dead__20;
reg r_dead__21;
reg r_dead__22;
reg r_dead__23;
reg r_dead__24;
reg r_dead__25;
reg r_dead__26;
reg r_dead__27;
reg r_dead__28;
reg r_dead__29;
reg r_dead__30;
reg r_dead__31;
reg r_dead__32;
reg r_dead__33;
reg r_dead__34;
reg r_dead__35;
reg r_dead__36;
reg r_dead__37;
reg r_dead__38;
reg r_dead__39;
reg r_dead__40;
reg r_dead__41;
reg r_dead__42;
reg r_dead__43;
reg r_dead__44;
reg r_dead__45;
reg r_dead__46;
reg r_dead__47;
reg r_dead__48;
reg r_dead__49;
reg r_dead__50;
reg r_dead__51;
reg r_dead__52;
reg r_dead__53;
reg r_dead__54;
reg r_dead__55;
reg r_dead__56;
reg r_dead__57;
reg r_dead__58;
reg r_dead__59;
//reg r_hit [TOTAL_LATENCY - 1:0];
reg r_hit__0;
reg r_hit__1;
reg r_hit__2;
reg r_hit__3;
reg r_hit__4;
reg r_hit__5;
reg r_hit__6;
reg r_hit__7;
reg r_hit__8;
reg r_hit__9;
reg r_hit__10;
reg r_hit__11;
reg r_hit__12;
reg r_hit__13;
reg r_hit__14;
reg r_hit__15;
reg r_hit__16;
reg r_hit__17;
reg r_hit__18;
reg r_hit__19;
reg r_hit__20;
reg r_hit__21;
reg r_hit__22;
reg r_hit__23;
reg r_hit__24;
reg r_hit__25;
reg r_hit__26;
reg r_hit__27;
reg r_hit__28;
reg r_hit__29;
reg r_hit__30;
reg r_hit__31;
reg r_hit__32;
reg r_hit__33;
reg r_hit__34;
reg r_hit__35;
reg r_hit__36;
reg r_hit__37;
reg r_hit__38;
reg r_hit__39;
reg r_hit__40;
reg r_hit__41;
reg r_hit__42;
reg r_hit__43;
reg r_hit__44;
reg r_hit__45;
reg r_hit__46;
reg r_hit__47;
reg r_hit__48;
reg r_hit__49;
reg r_hit__50;
reg r_hit__51;
reg r_hit__52;
reg r_hit__53;
reg r_hit__54;
reg r_hit__55;
reg r_hit__56;
reg r_hit__57;
reg r_hit__58;
reg r_hit__59;
//reg [`BIT_WIDTH-1:0] r_diff[TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] r_diff__0;
reg [`BIT_WIDTH-1:0] r_diff__1;
reg [`BIT_WIDTH-1:0] r_diff__2;
reg [`BIT_WIDTH-1:0] r_diff__3;
reg [`BIT_WIDTH-1:0] r_diff__4;
reg [`BIT_WIDTH-1:0] r_diff__5;
reg [`BIT_WIDTH-1:0] r_diff__6;
reg [`BIT_WIDTH-1:0] r_diff__7;
reg [`BIT_WIDTH-1:0] r_diff__8;
reg [`BIT_WIDTH-1:0] r_diff__9;
reg [`BIT_WIDTH-1:0] r_diff__10;
reg [`BIT_WIDTH-1:0] r_diff__11;
reg [`BIT_WIDTH-1:0] r_diff__12;
reg [`BIT_WIDTH-1:0] r_diff__13;
reg [`BIT_WIDTH-1:0] r_diff__14;
reg [`BIT_WIDTH-1:0] r_diff__15;
reg [`BIT_WIDTH-1:0] r_diff__16;
reg [`BIT_WIDTH-1:0] r_diff__17;
reg [`BIT_WIDTH-1:0] r_diff__18;
reg [`BIT_WIDTH-1:0] r_diff__19;
reg [`BIT_WIDTH-1:0] r_diff__20;
reg [`BIT_WIDTH-1:0] r_diff__21;
reg [`BIT_WIDTH-1:0] r_diff__22;
reg [`BIT_WIDTH-1:0] r_diff__23;
reg [`BIT_WIDTH-1:0] r_diff__24;
reg [`BIT_WIDTH-1:0] r_diff__25;
reg [`BIT_WIDTH-1:0] r_diff__26;
reg [`BIT_WIDTH-1:0] r_diff__27;
reg [`BIT_WIDTH-1:0] r_diff__28;
reg [`BIT_WIDTH-1:0] r_diff__29;
reg [`BIT_WIDTH-1:0] r_diff__30;
reg [`BIT_WIDTH-1:0] r_diff__31;
reg [`BIT_WIDTH-1:0] r_diff__32;
reg [`BIT_WIDTH-1:0] r_diff__33;
reg [`BIT_WIDTH-1:0] r_diff__34;
reg [`BIT_WIDTH-1:0] r_diff__35;
reg [`BIT_WIDTH-1:0] r_diff__36;
reg [`BIT_WIDTH-1:0] r_diff__37;
reg [`BIT_WIDTH-1:0] r_diff__38;
reg [`BIT_WIDTH-1:0] r_diff__39;
reg [`BIT_WIDTH-1:0] r_diff__40;
reg [`BIT_WIDTH-1:0] r_diff__41;
reg [`BIT_WIDTH-1:0] r_diff__42;
reg [`BIT_WIDTH-1:0] r_diff__43;
reg [`BIT_WIDTH-1:0] r_diff__44;
reg [`BIT_WIDTH-1:0] r_diff__45;
reg [`BIT_WIDTH-1:0] r_diff__46;
reg [`BIT_WIDTH-1:0] r_diff__47;
reg [`BIT_WIDTH-1:0] r_diff__48;
reg [`BIT_WIDTH-1:0] r_diff__49;
reg [`BIT_WIDTH-1:0] r_diff__50;
reg [`BIT_WIDTH-1:0] r_diff__51;
reg [`BIT_WIDTH-1:0] r_diff__52;
reg [`BIT_WIDTH-1:0] r_diff__53;
reg [`BIT_WIDTH-1:0] r_diff__54;
reg [`BIT_WIDTH-1:0] r_diff__55;
reg [`BIT_WIDTH-1:0] r_diff__56;
reg [`BIT_WIDTH-1:0] r_diff__57;
reg [`BIT_WIDTH-1:0] r_diff__58;
reg [`BIT_WIDTH-1:0] r_diff__59;
//reg [`BIT_WIDTH-1:0] r_dl_b[TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] r_dl_b__0;
reg [`BIT_WIDTH-1:0] r_dl_b__1;
reg [`BIT_WIDTH-1:0] r_dl_b__2;
reg [`BIT_WIDTH-1:0] r_dl_b__3;
reg [`BIT_WIDTH-1:0] r_dl_b__4;
reg [`BIT_WIDTH-1:0] r_dl_b__5;
reg [`BIT_WIDTH-1:0] r_dl_b__6;
reg [`BIT_WIDTH-1:0] r_dl_b__7;
reg [`BIT_WIDTH-1:0] r_dl_b__8;
reg [`BIT_WIDTH-1:0] r_dl_b__9;
reg [`BIT_WIDTH-1:0] r_dl_b__10;
reg [`BIT_WIDTH-1:0] r_dl_b__11;
reg [`BIT_WIDTH-1:0] r_dl_b__12;
reg [`BIT_WIDTH-1:0] r_dl_b__13;
reg [`BIT_WIDTH-1:0] r_dl_b__14;
reg [`BIT_WIDTH-1:0] r_dl_b__15;
reg [`BIT_WIDTH-1:0] r_dl_b__16;
reg [`BIT_WIDTH-1:0] r_dl_b__17;
reg [`BIT_WIDTH-1:0] r_dl_b__18;
reg [`BIT_WIDTH-1:0] r_dl_b__19;
reg [`BIT_WIDTH-1:0] r_dl_b__20;
reg [`BIT_WIDTH-1:0] r_dl_b__21;
reg [`BIT_WIDTH-1:0] r_dl_b__22;
reg [`BIT_WIDTH-1:0] r_dl_b__23;
reg [`BIT_WIDTH-1:0] r_dl_b__24;
reg [`BIT_WIDTH-1:0] r_dl_b__25;
reg [`BIT_WIDTH-1:0] r_dl_b__26;
reg [`BIT_WIDTH-1:0] r_dl_b__27;
reg [`BIT_WIDTH-1:0] r_dl_b__28;
reg [`BIT_WIDTH-1:0] r_dl_b__29;
reg [`BIT_WIDTH-1:0] r_dl_b__30;
reg [`BIT_WIDTH-1:0] r_dl_b__31;
reg [`BIT_WIDTH-1:0] r_dl_b__32;
reg [`BIT_WIDTH-1:0] r_dl_b__33;
reg [`BIT_WIDTH-1:0] r_dl_b__34;
reg [`BIT_WIDTH-1:0] r_dl_b__35;
reg [`BIT_WIDTH-1:0] r_dl_b__36;
reg [`BIT_WIDTH-1:0] r_dl_b__37;
reg [`BIT_WIDTH-1:0] r_dl_b__38;
reg [`BIT_WIDTH-1:0] r_dl_b__39;
reg [`BIT_WIDTH-1:0] r_dl_b__40;
reg [`BIT_WIDTH-1:0] r_dl_b__41;
reg [`BIT_WIDTH-1:0] r_dl_b__42;
reg [`BIT_WIDTH-1:0] r_dl_b__43;
reg [`BIT_WIDTH-1:0] r_dl_b__44;
reg [`BIT_WIDTH-1:0] r_dl_b__45;
reg [`BIT_WIDTH-1:0] r_dl_b__46;
reg [`BIT_WIDTH-1:0] r_dl_b__47;
reg [`BIT_WIDTH-1:0] r_dl_b__48;
reg [`BIT_WIDTH-1:0] r_dl_b__49;
reg [`BIT_WIDTH-1:0] r_dl_b__50;
reg [`BIT_WIDTH-1:0] r_dl_b__51;
reg [`BIT_WIDTH-1:0] r_dl_b__52;
reg [`BIT_WIDTH-1:0] r_dl_b__53;
reg [`BIT_WIDTH-1:0] r_dl_b__54;
reg [`BIT_WIDTH-1:0] r_dl_b__55;
reg [`BIT_WIDTH-1:0] r_dl_b__56;
reg [`BIT_WIDTH-1:0] r_dl_b__57;
reg [`BIT_WIDTH-1:0] r_dl_b__58;
reg [`BIT_WIDTH-1:0] r_dl_b__59;
//reg [2*`BIT_WIDTH-1:0] r_numer[TOTAL_LATENCY - 1:0];
reg [2*`BIT_WIDTH-1:0] r_numer__0;
reg [2*`BIT_WIDTH-1:0] r_numer__1;
reg [2*`BIT_WIDTH-1:0] r_numer__2;
reg [2*`BIT_WIDTH-1:0] r_numer__3;
reg [2*`BIT_WIDTH-1:0] r_numer__4;
reg [2*`BIT_WIDTH-1:0] r_numer__5;
reg [2*`BIT_WIDTH-1:0] r_numer__6;
reg [2*`BIT_WIDTH-1:0] r_numer__7;
reg [2*`BIT_WIDTH-1:0] r_numer__8;
reg [2*`BIT_WIDTH-1:0] r_numer__9;
reg [2*`BIT_WIDTH-1:0] r_numer__10;
reg [2*`BIT_WIDTH-1:0] r_numer__11;
reg [2*`BIT_WIDTH-1:0] r_numer__12;
reg [2*`BIT_WIDTH-1:0] r_numer__13;
reg [2*`BIT_WIDTH-1:0] r_numer__14;
reg [2*`BIT_WIDTH-1:0] r_numer__15;
reg [2*`BIT_WIDTH-1:0] r_numer__16;
reg [2*`BIT_WIDTH-1:0] r_numer__17;
reg [2*`BIT_WIDTH-1:0] r_numer__18;
reg [2*`BIT_WIDTH-1:0] r_numer__19;
reg [2*`BIT_WIDTH-1:0] r_numer__20;
reg [2*`BIT_WIDTH-1:0] r_numer__21;
reg [2*`BIT_WIDTH-1:0] r_numer__22;
reg [2*`BIT_WIDTH-1:0] r_numer__23;
reg [2*`BIT_WIDTH-1:0] r_numer__24;
reg [2*`BIT_WIDTH-1:0] r_numer__25;
reg [2*`BIT_WIDTH-1:0] r_numer__26;
reg [2*`BIT_WIDTH-1:0] r_numer__27;
reg [2*`BIT_WIDTH-1:0] r_numer__28;
reg [2*`BIT_WIDTH-1:0] r_numer__29;
reg [2*`BIT_WIDTH-1:0] r_numer__30;
reg [2*`BIT_WIDTH-1:0] r_numer__31;
reg [2*`BIT_WIDTH-1:0] r_numer__32;
reg [2*`BIT_WIDTH-1:0] r_numer__33;
reg [2*`BIT_WIDTH-1:0] r_numer__34;
reg [2*`BIT_WIDTH-1:0] r_numer__35;
reg [2*`BIT_WIDTH-1:0] r_numer__36;
reg [2*`BIT_WIDTH-1:0] r_numer__37;
reg [2*`BIT_WIDTH-1:0] r_numer__38;
reg [2*`BIT_WIDTH-1:0] r_numer__39;
reg [2*`BIT_WIDTH-1:0] r_numer__40;
reg [2*`BIT_WIDTH-1:0] r_numer__41;
reg [2*`BIT_WIDTH-1:0] r_numer__42;
reg [2*`BIT_WIDTH-1:0] r_numer__43;
reg [2*`BIT_WIDTH-1:0] r_numer__44;
reg [2*`BIT_WIDTH-1:0] r_numer__45;
reg [2*`BIT_WIDTH-1:0] r_numer__46;
reg [2*`BIT_WIDTH-1:0] r_numer__47;
reg [2*`BIT_WIDTH-1:0] r_numer__48;
reg [2*`BIT_WIDTH-1:0] r_numer__49;
reg [2*`BIT_WIDTH-1:0] r_numer__50;
reg [2*`BIT_WIDTH-1:0] r_numer__51;
reg [2*`BIT_WIDTH-1:0] r_numer__52;
reg [2*`BIT_WIDTH-1:0] r_numer__53;
reg [2*`BIT_WIDTH-1:0] r_numer__54;
reg [2*`BIT_WIDTH-1:0] r_numer__55;
reg [2*`BIT_WIDTH-1:0] r_numer__56;
reg [2*`BIT_WIDTH-1:0] r_numer__57;
reg [2*`BIT_WIDTH-1:0] r_numer__58;
reg [2*`BIT_WIDTH-1:0] r_numer__59;
//reg [`BIT_WIDTH-1:0] r_z1[TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] r_z1__0;
reg [`BIT_WIDTH-1:0] r_z1__1;
reg [`BIT_WIDTH-1:0] r_z1__2;
reg [`BIT_WIDTH-1:0] r_z1__3;
reg [`BIT_WIDTH-1:0] r_z1__4;
reg [`BIT_WIDTH-1:0] r_z1__5;
reg [`BIT_WIDTH-1:0] r_z1__6;
reg [`BIT_WIDTH-1:0] r_z1__7;
reg [`BIT_WIDTH-1:0] r_z1__8;
reg [`BIT_WIDTH-1:0] r_z1__9;
reg [`BIT_WIDTH-1:0] r_z1__10;
reg [`BIT_WIDTH-1:0] r_z1__11;
reg [`BIT_WIDTH-1:0] r_z1__12;
reg [`BIT_WIDTH-1:0] r_z1__13;
reg [`BIT_WIDTH-1:0] r_z1__14;
reg [`BIT_WIDTH-1:0] r_z1__15;
reg [`BIT_WIDTH-1:0] r_z1__16;
reg [`BIT_WIDTH-1:0] r_z1__17;
reg [`BIT_WIDTH-1:0] r_z1__18;
reg [`BIT_WIDTH-1:0] r_z1__19;
reg [`BIT_WIDTH-1:0] r_z1__20;
reg [`BIT_WIDTH-1:0] r_z1__21;
reg [`BIT_WIDTH-1:0] r_z1__22;
reg [`BIT_WIDTH-1:0] r_z1__23;
reg [`BIT_WIDTH-1:0] r_z1__24;
reg [`BIT_WIDTH-1:0] r_z1__25;
reg [`BIT_WIDTH-1:0] r_z1__26;
reg [`BIT_WIDTH-1:0] r_z1__27;
reg [`BIT_WIDTH-1:0] r_z1__28;
reg [`BIT_WIDTH-1:0] r_z1__29;
reg [`BIT_WIDTH-1:0] r_z1__30;
reg [`BIT_WIDTH-1:0] r_z1__31;
reg [`BIT_WIDTH-1:0] r_z1__32;
reg [`BIT_WIDTH-1:0] r_z1__33;
reg [`BIT_WIDTH-1:0] r_z1__34;
reg [`BIT_WIDTH-1:0] r_z1__35;
reg [`BIT_WIDTH-1:0] r_z1__36;
reg [`BIT_WIDTH-1:0] r_z1__37;
reg [`BIT_WIDTH-1:0] r_z1__38;
reg [`BIT_WIDTH-1:0] r_z1__39;
reg [`BIT_WIDTH-1:0] r_z1__40;
reg [`BIT_WIDTH-1:0] r_z1__41;
reg [`BIT_WIDTH-1:0] r_z1__42;
reg [`BIT_WIDTH-1:0] r_z1__43;
reg [`BIT_WIDTH-1:0] r_z1__44;
reg [`BIT_WIDTH-1:0] r_z1__45;
reg [`BIT_WIDTH-1:0] r_z1__46;
reg [`BIT_WIDTH-1:0] r_z1__47;
reg [`BIT_WIDTH-1:0] r_z1__48;
reg [`BIT_WIDTH-1:0] r_z1__49;
reg [`BIT_WIDTH-1:0] r_z1__50;
reg [`BIT_WIDTH-1:0] r_z1__51;
reg [`BIT_WIDTH-1:0] r_z1__52;
reg [`BIT_WIDTH-1:0] r_z1__53;
reg [`BIT_WIDTH-1:0] r_z1__54;
reg [`BIT_WIDTH-1:0] r_z1__55;
reg [`BIT_WIDTH-1:0] r_z1__56;
reg [`BIT_WIDTH-1:0] r_z1__57;
reg [`BIT_WIDTH-1:0] r_z1__58;
reg [`BIT_WIDTH-1:0] r_z1__59;
//reg [`BIT_WIDTH-1:0] r_z0[TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] r_z0__0;
reg [`BIT_WIDTH-1:0] r_z0__1;
reg [`BIT_WIDTH-1:0] r_z0__2;
reg [`BIT_WIDTH-1:0] r_z0__3;
reg [`BIT_WIDTH-1:0] r_z0__4;
reg [`BIT_WIDTH-1:0] r_z0__5;
reg [`BIT_WIDTH-1:0] r_z0__6;
reg [`BIT_WIDTH-1:0] r_z0__7;
reg [`BIT_WIDTH-1:0] r_z0__8;
reg [`BIT_WIDTH-1:0] r_z0__9;
reg [`BIT_WIDTH-1:0] r_z0__10;
reg [`BIT_WIDTH-1:0] r_z0__11;
reg [`BIT_WIDTH-1:0] r_z0__12;
reg [`BIT_WIDTH-1:0] r_z0__13;
reg [`BIT_WIDTH-1:0] r_z0__14;
reg [`BIT_WIDTH-1:0] r_z0__15;
reg [`BIT_WIDTH-1:0] r_z0__16;
reg [`BIT_WIDTH-1:0] r_z0__17;
reg [`BIT_WIDTH-1:0] r_z0__18;
reg [`BIT_WIDTH-1:0] r_z0__19;
reg [`BIT_WIDTH-1:0] r_z0__20;
reg [`BIT_WIDTH-1:0] r_z0__21;
reg [`BIT_WIDTH-1:0] r_z0__22;
reg [`BIT_WIDTH-1:0] r_z0__23;
reg [`BIT_WIDTH-1:0] r_z0__24;
reg [`BIT_WIDTH-1:0] r_z0__25;
reg [`BIT_WIDTH-1:0] r_z0__26;
reg [`BIT_WIDTH-1:0] r_z0__27;
reg [`BIT_WIDTH-1:0] r_z0__28;
reg [`BIT_WIDTH-1:0] r_z0__29;
reg [`BIT_WIDTH-1:0] r_z0__30;
reg [`BIT_WIDTH-1:0] r_z0__31;
reg [`BIT_WIDTH-1:0] r_z0__32;
reg [`BIT_WIDTH-1:0] r_z0__33;
reg [`BIT_WIDTH-1:0] r_z0__34;
reg [`BIT_WIDTH-1:0] r_z0__35;
reg [`BIT_WIDTH-1:0] r_z0__36;
reg [`BIT_WIDTH-1:0] r_z0__37;
reg [`BIT_WIDTH-1:0] r_z0__38;
reg [`BIT_WIDTH-1:0] r_z0__39;
reg [`BIT_WIDTH-1:0] r_z0__40;
reg [`BIT_WIDTH-1:0] r_z0__41;
reg [`BIT_WIDTH-1:0] r_z0__42;
reg [`BIT_WIDTH-1:0] r_z0__43;
reg [`BIT_WIDTH-1:0] r_z0__44;
reg [`BIT_WIDTH-1:0] r_z0__45;
reg [`BIT_WIDTH-1:0] r_z0__46;
reg [`BIT_WIDTH-1:0] r_z0__47;
reg [`BIT_WIDTH-1:0] r_z0__48;
reg [`BIT_WIDTH-1:0] r_z0__49;
reg [`BIT_WIDTH-1:0] r_z0__50;
reg [`BIT_WIDTH-1:0] r_z0__51;
reg [`BIT_WIDTH-1:0] r_z0__52;
reg [`BIT_WIDTH-1:0] r_z0__53;
reg [`BIT_WIDTH-1:0] r_z0__54;
reg [`BIT_WIDTH-1:0] r_z0__55;
reg [`BIT_WIDTH-1:0] r_z0__56;
reg [`BIT_WIDTH-1:0] r_z0__57;
reg [`BIT_WIDTH-1:0] r_z0__58;
reg [`BIT_WIDTH-1:0] r_z0__59;
//reg [`BIT_WIDTH-1:0] r_mut[TOTAL_LATENCY - 1:0];
reg [`BIT_WIDTH-1:0] r_mut__0;
reg [`BIT_WIDTH-1:0] r_mut__1;
reg [`BIT_WIDTH-1:0] r_mut__2;
reg [`BIT_WIDTH-1:0] r_mut__3;
reg [`BIT_WIDTH-1:0] r_mut__4;
reg [`BIT_WIDTH-1:0] r_mut__5;
reg [`BIT_WIDTH-1:0] r_mut__6;
reg [`BIT_WIDTH-1:0] r_mut__7;
reg [`BIT_WIDTH-1:0] r_mut__8;
reg [`BIT_WIDTH-1:0] r_mut__9;
reg [`BIT_WIDTH-1:0] r_mut__10;
reg [`BIT_WIDTH-1:0] r_mut__11;
reg [`BIT_WIDTH-1:0] r_mut__12;
reg [`BIT_WIDTH-1:0] r_mut__13;
reg [`BIT_WIDTH-1:0] r_mut__14;
reg [`BIT_WIDTH-1:0] r_mut__15;
reg [`BIT_WIDTH-1:0] r_mut__16;
reg [`BIT_WIDTH-1:0] r_mut__17;
reg [`BIT_WIDTH-1:0] r_mut__18;
reg [`BIT_WIDTH-1:0] r_mut__19;
reg [`BIT_WIDTH-1:0] r_mut__20;
reg [`BIT_WIDTH-1:0] r_mut__21;
reg [`BIT_WIDTH-1:0] r_mut__22;
reg [`BIT_WIDTH-1:0] r_mut__23;
reg [`BIT_WIDTH-1:0] r_mut__24;
reg [`BIT_WIDTH-1:0] r_mut__25;
reg [`BIT_WIDTH-1:0] r_mut__26;
reg [`BIT_WIDTH-1:0] r_mut__27;
reg [`BIT_WIDTH-1:0] r_mut__28;
reg [`BIT_WIDTH-1:0] r_mut__29;
reg [`BIT_WIDTH-1:0] r_mut__30;
reg [`BIT_WIDTH-1:0] r_mut__31;
reg [`BIT_WIDTH-1:0] r_mut__32;
reg [`BIT_WIDTH-1:0] r_mut__33;
reg [`BIT_WIDTH-1:0] r_mut__34;
reg [`BIT_WIDTH-1:0] r_mut__35;
reg [`BIT_WIDTH-1:0] r_mut__36;
reg [`BIT_WIDTH-1:0] r_mut__37;
reg [`BIT_WIDTH-1:0] r_mut__38;
reg [`BIT_WIDTH-1:0] r_mut__39;
reg [`BIT_WIDTH-1:0] r_mut__40;
reg [`BIT_WIDTH-1:0] r_mut__41;
reg [`BIT_WIDTH-1:0] r_mut__42;
reg [`BIT_WIDTH-1:0] r_mut__43;
reg [`BIT_WIDTH-1:0] r_mut__44;
reg [`BIT_WIDTH-1:0] r_mut__45;
reg [`BIT_WIDTH-1:0] r_mut__46;
reg [`BIT_WIDTH-1:0] r_mut__47;
reg [`BIT_WIDTH-1:0] r_mut__48;
reg [`BIT_WIDTH-1:0] r_mut__49;
reg [`BIT_WIDTH-1:0] r_mut__50;
reg [`BIT_WIDTH-1:0] r_mut__51;
reg [`BIT_WIDTH-1:0] r_mut__52;
reg [`BIT_WIDTH-1:0] r_mut__53;
reg [`BIT_WIDTH-1:0] r_mut__54;
reg [`BIT_WIDTH-1:0] r_mut__55;
reg [`BIT_WIDTH-1:0] r_mut__56;
reg [`BIT_WIDTH-1:0] r_mut__57;
reg [`BIT_WIDTH-1:0] r_mut__58;
reg [`BIT_WIDTH-1:0] r_mut__59;
wire [2*`BIT_WIDTH-1:0] sleftz_big;
wire [2*`BIT_WIDTH-1:0] sleftr_big;
wire [2*`BIT_WIDTH-1:0] sr_big;
wire [`BIT_WIDTH-1:0] remainder_div1;
wire [2*`BIT_WIDTH-1:0] quotient_div1;
//ASSIGNMENTS FROM PIPE TO OUTPUT
assign x_boundaryChecker = r_x__59;
assign y_boundaryChecker = r_y__59;
assign z_boundaryChecker = r_z__59;
assign ux_boundaryChecker = r_ux__59;
assign uy_boundaryChecker = r_uy__59;
assign uz_boundaryChecker = r_uz__59;
assign sz_boundaryChecker = r_sz__59;
assign sr_boundaryChecker = r_sr__59;
assign sleftz_boundaryChecker = r_sleftz__59;
assign sleftr_boundaryChecker = r_sleftr__59;
assign weight_boundaryChecker = r_weight__59;
assign layer_boundaryChecker = r_layer__59;
assign dead_boundaryChecker = r_dead__59;
assign hit_boundaryChecker = r_hit__59;
// divider
signed_div_30 divide_u1 (
.clock(clock),
.denom(c_uz__0),
.numer(c_numer__0),
.quotient(quotient_div1),
.remain(remainder_div1));
// multipliers
mult_signed_32_bc mult_u1(
.clock(clock),
.dataa(c_diff__30),
.datab(c_mut__30),
.result(sleftz_big));
mult_signed_32_bc mult_u2(
.clock(clock),
.dataa(maxDepth_over_maxRadius),
.datab(c_sleftz__31),
.result(sleftr_big));
mult_signed_32_bc mult_u3(
.clock(clock),
.dataa(maxDepth_over_maxRadius),
.datab(c_dl_b__30),
.result(sr_big));
// multiplexor to find z1 and z0
always @(c_layer__0 or z1_0 or z0_0 or mut_0 or
z1_1 or z0_1 or mut_1 or
z1_2 or z0_2 or mut_2 or
z1_3 or z0_3 or mut_3 or
z1_4 or z0_4 or mut_4 or
z1_5 or z0_5 or mut_5)
begin
case(c_layer__0)
3'b000:
begin
c_z1__0 = z1_0;
c_z0__0 = z0_0;
c_mut__0 = mut_0;
end
3'b001:
begin
c_z1__0 = z1_1;
c_z0__0 = z0_1;
c_mut__0 = mut_1;
end
3'b010:
begin
c_z1__0 = z1_2;
c_z0__0 = z0_2;
c_mut__0 = mut_2;
end
3'b011:
begin
c_z1__0 = z1_3;
c_z0__0 = z0_3;
c_mut__0 = mut_3;
end
3'b100:
begin
c_z1__0 = z1_4;
c_z0__0 = z0_4;
c_mut__0 = mut_4;
end
3'b101:
begin
c_z1__0 = z1_5;
c_z0__0 = z0_5;
c_mut__0 = mut_5;
end
default:
begin
c_z1__0 = 0;
c_z0__0 = 0;
c_mut__0 = 0;
end
endcase
end
// May have to change block staments on this one for odin
// set numerator
always @(c_uz__0 or c_z1__0 or c_z__0 or c_z0__0)
begin
//c_numer__0 = 63'b0;
if(c_uz__0[31] == 1'b0)
begin
c_numer__0[63:32] = c_z1__0 - c_z__0;
c_numer__0[31:0] = 32'b0;
end
else if(c_uz__0[31] == 1'b1)
begin
c_numer__0[63:32] = c_z0__0 - c_z__0;
c_numer__0[31:0] = 32'b0;
end
else
begin
c_numer__0 = 63'b0;
end
end
// initialize uninitialized data in pipeline
always @(x_mover or y_mover or z_mover or
ux_mover or uy_mover or uz_mover or
sz_mover or sr_mover or sleftz_mover or sleftr_mover or
weight_mover or layer_mover or dead_mover)
begin
c_x__0 = x_mover;
c_y__0 = y_mover;
c_z__0 = z_mover;
c_ux__0 = ux_mover;
c_uy__0 = uy_mover;
c_uz__0 = uz_mover;
c_sz__0 = sz_mover;
c_sr__0 = sr_mover;
c_sleftz__0 = sleftz_mover;
c_sleftr__0 = sleftr_mover;
c_weight__0 = weight_mover;
c_layer__0 = layer_mover;
c_dead__0 = dead_mover;
c_hit__0 = 1'b0;
c_diff__0 = 32'b0;
c_dl_b__0 = 32'b0;
end
// Determine new (x,y,z) coordinates
always @(r_x__0 or r_y__0 or r_z__0 or r_ux__0 or r_uy__0 or r_uz__0 or r_sz__0 or r_sr__0 or r_sleftz__0 or r_sleftr__0 or
r_weight__0 or r_layer__0 or r_dead__0 or r_hit__0 or r_diff__0 or r_dl_b__0 or r_numer__0 or r_z1__0 or r_z0__0 or r_mut__0 or
r_x__1 or r_y__1 or r_z__1 or r_ux__1 or r_uy__1 or r_uz__1 or r_sz__1 or r_sr__1 or r_sleftz__1 or r_sleftr__1 or
r_weight__1 or r_layer__1 or r_dead__1 or r_hit__1 or r_diff__1 or r_dl_b__1 or r_numer__1 or r_z1__1 or r_z0__1 or r_mut__1 or
r_x__2 or r_y__2 or r_z__2 or r_ux__2 or r_uy__2 or r_uz__2 or r_sz__2 or r_sr__2 or r_sleftz__2 or r_sleftr__2 or
r_weight__2 or r_layer__2 or r_dead__2 or r_hit__2 or r_diff__2 or r_dl_b__2 or r_numer__2 or r_z1__2 or r_z0__2 or r_mut__2 or
r_x__3 or r_y__3 or r_z__3 or r_ux__3 or r_uy__3 or r_uz__3 or r_sz__3 or r_sr__3 or r_sleftz__3 or r_sleftr__3 or
r_weight__3 or r_layer__3 or r_dead__3 or r_hit__3 or r_diff__3 or r_dl_b__3 or r_numer__3 or r_z1__3 or r_z0__3 or r_mut__3 or
r_x__4 or r_y__4 or r_z__4 or r_ux__4 or r_uy__4 or r_uz__4 or r_sz__4 or r_sr__4 or r_sleftz__4 or r_sleftr__4 or
r_weight__4 or r_layer__4 or r_dead__4 or r_hit__4 or r_diff__4 or r_dl_b__4 or r_numer__4 or r_z1__4 or r_z0__4 or r_mut__4 or
r_x__5 or r_y__5 or r_z__5 or r_ux__5 or r_uy__5 or r_uz__5 or r_sz__5 or r_sr__5 or r_sleftz__5 or r_sleftr__5 or
r_weight__5 or r_layer__5 or r_dead__5 or r_hit__5 or r_diff__5 or r_dl_b__5 or r_numer__5 or r_z1__5 or r_z0__5 or r_mut__5 or
r_x__6 or r_y__6 or r_z__6 or r_ux__6 or r_uy__6 or r_uz__6 or r_sz__6 or r_sr__6 or r_sleftz__6 or r_sleftr__6 or
r_weight__6 or r_layer__6 or r_dead__6 or r_hit__6 or r_diff__6 or r_dl_b__6 or r_numer__6 or r_z1__6 or r_z0__6 or r_mut__6 or
r_x__7 or r_y__7 or r_z__7 or r_ux__7 or r_uy__7 or r_uz__7 or r_sz__7 or r_sr__7 or r_sleftz__7 or r_sleftr__7 or
r_weight__7 or r_layer__7 or r_dead__7 or r_hit__7 or r_diff__7 or r_dl_b__7 or r_numer__7 or r_z1__7 or r_z0__7 or r_mut__7 or
r_x__8 or r_y__8 or r_z__8 or r_ux__8 or r_uy__8 or r_uz__8 or r_sz__8 or r_sr__8 or r_sleftz__8 or r_sleftr__8 or
r_weight__8 or r_layer__8 or r_dead__8 or r_hit__8 or r_diff__8 or r_dl_b__8 or r_numer__8 or r_z1__8 or r_z0__8 or r_mut__8 or
r_x__9 or r_y__9 or r_z__9 or r_ux__9 or r_uy__9 or r_uz__9 or r_sz__9 or r_sr__9 or r_sleftz__9 or r_sleftr__9 or
r_weight__9 or r_layer__9 or r_dead__9 or r_hit__9 or r_diff__9 or r_dl_b__9 or r_numer__9 or r_z1__9 or r_z0__9 or r_mut__9 or
r_x__10 or r_y__10 or r_z__10 or r_ux__10 or r_uy__10 or r_uz__10 or r_sz__10 or r_sr__10 or r_sleftz__10 or r_sleftr__10 or
r_weight__10 or r_layer__10 or r_dead__10 or r_hit__10 or r_diff__10 or r_dl_b__10 or r_numer__10 or r_z1__10 or r_z0__10 or r_mut__10 or
r_x__11 or r_y__11 or r_z__11 or r_ux__11 or r_uy__11 or r_uz__11 or r_sz__11 or r_sr__11 or r_sleftz__11 or r_sleftr__11 or
r_weight__11 or r_layer__11 or r_dead__11 or r_hit__11 or r_diff__11 or r_dl_b__11 or r_numer__11 or r_z1__11 or r_z0__11 or r_mut__11 or
r_x__12 or r_y__12 or r_z__12 or r_ux__12 or r_uy__12 or r_uz__12 or r_sz__12 or r_sr__12 or r_sleftz__12 or r_sleftr__12 or
r_weight__12 or r_layer__12 or r_dead__12 or r_hit__12 or r_diff__12 or r_dl_b__12 or r_numer__12 or r_z1__12 or r_z0__12 or r_mut__12 or
r_x__13 or r_y__13 or r_z__13 or r_ux__13 or r_uy__13 or r_uz__13 or r_sz__13 or r_sr__13 or r_sleftz__13 or r_sleftr__13 or
r_weight__13 or r_layer__13 or r_dead__13 or r_hit__13 or r_diff__13 or r_dl_b__13 or r_numer__13 or r_z1__13 or r_z0__13 or r_mut__13 or
r_x__14 or r_y__14 or r_z__14 or r_ux__14 or r_uy__14 or r_uz__14 or r_sz__14 or r_sr__14 or r_sleftz__14 or r_sleftr__14 or
r_weight__14 or r_layer__14 or r_dead__14 or r_hit__14 or r_diff__14 or r_dl_b__14 or r_numer__14 or r_z1__14 or r_z0__14 or r_mut__14 or
r_x__15 or r_y__15 or r_z__15 or r_ux__15 or r_uy__15 or r_uz__15 or r_sz__15 or r_sr__15 or r_sleftz__15 or r_sleftr__15 or
r_weight__15 or r_layer__15 or r_dead__15 or r_hit__15 or r_diff__15 or r_dl_b__15 or r_numer__15 or r_z1__15 or r_z0__15 or r_mut__15 or
r_x__16 or r_y__16 or r_z__16 or r_ux__16 or r_uy__16 or r_uz__16 or r_sz__16 or r_sr__16 or r_sleftz__16 or r_sleftr__16 or
r_weight__16 or r_layer__16 or r_dead__16 or r_hit__16 or r_diff__16 or r_dl_b__16 or r_numer__16 or r_z1__16 or r_z0__16 or r_mut__16 or
r_x__17 or r_y__17 or r_z__17 or r_ux__17 or r_uy__17 or r_uz__17 or r_sz__17 or r_sr__17 or r_sleftz__17 or r_sleftr__17 or
r_weight__17 or r_layer__17 or r_dead__17 or r_hit__17 or r_diff__17 or r_dl_b__17 or r_numer__17 or r_z1__17 or r_z0__17 or r_mut__17 or
r_x__18 or r_y__18 or r_z__18 or r_ux__18 or r_uy__18 or r_uz__18 or r_sz__18 or r_sr__18 or r_sleftz__18 or r_sleftr__18 or
r_weight__18 or r_layer__18 or r_dead__18 or r_hit__18 or r_diff__18 or r_dl_b__18 or r_numer__18 or r_z1__18 or r_z0__18 or r_mut__18 or
r_x__19 or r_y__19 or r_z__19 or r_ux__19 or r_uy__19 or r_uz__19 or r_sz__19 or r_sr__19 or r_sleftz__19 or r_sleftr__19 or
r_weight__19 or r_layer__19 or r_dead__19 or r_hit__19 or r_diff__19 or r_dl_b__19 or r_numer__19 or r_z1__19 or r_z0__19 or r_mut__19 or
r_x__20 or r_y__20 or r_z__20 or r_ux__20 or r_uy__20 or r_uz__20 or r_sz__20 or r_sr__20 or r_sleftz__20 or r_sleftr__20 or
r_weight__20 or r_layer__20 or r_dead__20 or r_hit__20 or r_diff__20 or r_dl_b__20 or r_numer__20 or r_z1__20 or r_z0__20 or r_mut__20 or
r_x__21 or r_y__21 or r_z__21 or r_ux__21 or r_uy__21 or r_uz__21 or r_sz__21 or r_sr__21 or r_sleftz__21 or r_sleftr__21 or
r_weight__21 or r_layer__21 or r_dead__21 or r_hit__21 or r_diff__21 or r_dl_b__21 or r_numer__21 or r_z1__21 or r_z0__21 or r_mut__21 or
r_x__22 or r_y__22 or r_z__22 or r_ux__22 or r_uy__22 or r_uz__22 or r_sz__22 or r_sr__22 or r_sleftz__22 or r_sleftr__22 or
r_weight__22 or r_layer__22 or r_dead__22 or r_hit__22 or r_diff__22 or r_dl_b__22 or r_numer__22 or r_z1__22 or r_z0__22 or r_mut__22 or
r_x__23 or r_y__23 or r_z__23 or r_ux__23 or r_uy__23 or r_uz__23 or r_sz__23 or r_sr__23 or r_sleftz__23 or r_sleftr__23 or
r_weight__23 or r_layer__23 or r_dead__23 or r_hit__23 or r_diff__23 or r_dl_b__23 or r_numer__23 or r_z1__23 or r_z0__23 or r_mut__23 or
r_x__24 or r_y__24 or r_z__24 or r_ux__24 or r_uy__24 or r_uz__24 or r_sz__24 or r_sr__24 or r_sleftz__24 or r_sleftr__24 or
r_weight__24 or r_layer__24 or r_dead__24 or r_hit__24 or r_diff__24 or r_dl_b__24 or r_numer__24 or r_z1__24 or r_z0__24 or r_mut__24 or
r_x__25 or r_y__25 or r_z__25 or r_ux__25 or r_uy__25 or r_uz__25 or r_sz__25 or r_sr__25 or r_sleftz__25 or r_sleftr__25 or
r_weight__25 or r_layer__25 or r_dead__25 or r_hit__25 or r_diff__25 or r_dl_b__25 or r_numer__25 or r_z1__25 or r_z0__25 or r_mut__25 or
r_x__26 or r_y__26 or r_z__26 or r_ux__26 or r_uy__26 or r_uz__26 or r_sz__26 or r_sr__26 or r_sleftz__26 or r_sleftr__26 or
r_weight__26 or r_layer__26 or r_dead__26 or r_hit__26 or r_diff__26 or r_dl_b__26 or r_numer__26 or r_z1__26 or r_z0__26 or r_mut__26 or
r_x__27 or r_y__27 or r_z__27 or r_ux__27 or r_uy__27 or r_uz__27 or r_sz__27 or r_sr__27 or r_sleftz__27 or r_sleftr__27 or
r_weight__27 or r_layer__27 or r_dead__27 or r_hit__27 or r_diff__27 or r_dl_b__27 or r_numer__27 or r_z1__27 or r_z0__27 or r_mut__27 or
r_x__28 or r_y__28 or r_z__28 or r_ux__28 or r_uy__28 or r_uz__28 or r_sz__28 or r_sr__28 or r_sleftz__28 or r_sleftr__28 or
r_weight__28 or r_layer__28 or r_dead__28 or r_hit__28 or r_diff__28 or r_dl_b__28 or r_numer__28 or r_z1__28 or r_z0__28 or r_mut__28 or
r_x__29 or r_y__29 or r_z__29 or r_ux__29 or r_uy__29 or r_uz__29 or r_sz__29 or r_sr__29 or r_sleftz__29 or r_sleftr__29 or
r_weight__29 or r_layer__29 or r_dead__29 or r_hit__29 or r_diff__29 or r_dl_b__29 or r_numer__29 or r_z1__29 or r_z0__29 or r_mut__29 or
r_x__30 or r_y__30 or r_z__30 or r_ux__30 or r_uy__30 or r_uz__30 or r_sz__30 or r_sr__30 or r_sleftz__30 or r_sleftr__30 or
r_weight__30 or r_layer__30 or r_dead__30 or r_hit__30 or r_diff__30 or r_dl_b__30 or r_numer__30 or r_z1__30 or r_z0__30 or r_mut__30 or
r_x__31 or r_y__31 or r_z__31 or r_ux__31 or r_uy__31 or r_uz__31 or r_sz__31 or r_sr__31 or r_sleftz__31 or r_sleftr__31 or
r_weight__31 or r_layer__31 or r_dead__31 or r_hit__31 or r_diff__31 or r_dl_b__31 or r_numer__31 or r_z1__31 or r_z0__31 or r_mut__31 or
r_x__32 or r_y__32 or r_z__32 or r_ux__32 or r_uy__32 or r_uz__32 or r_sz__32 or r_sr__32 or r_sleftz__32 or r_sleftr__32 or
r_weight__32 or r_layer__32 or r_dead__32 or r_hit__32 or r_diff__32 or r_dl_b__32 or r_numer__32 or r_z1__32 or r_z0__32 or r_mut__32 or
r_x__33 or r_y__33 or r_z__33 or r_ux__33 or r_uy__33 or r_uz__33 or r_sz__33 or r_sr__33 or r_sleftz__33 or r_sleftr__33 or
r_weight__33 or r_layer__33 or r_dead__33 or r_hit__33 or r_diff__33 or r_dl_b__33 or r_numer__33 or r_z1__33 or r_z0__33 or r_mut__33 or
r_x__34 or r_y__34 or r_z__34 or r_ux__34 or r_uy__34 or r_uz__34 or r_sz__34 or r_sr__34 or r_sleftz__34 or r_sleftr__34 or
r_weight__34 or r_layer__34 or r_dead__34 or r_hit__34 or r_diff__34 or r_dl_b__34 or r_numer__34 or r_z1__34 or r_z0__34 or r_mut__34 or
r_x__35 or r_y__35 or r_z__35 or r_ux__35 or r_uy__35 or r_uz__35 or r_sz__35 or r_sr__35 or r_sleftz__35 or r_sleftr__35 or
r_weight__35 or r_layer__35 or r_dead__35 or r_hit__35 or r_diff__35 or r_dl_b__35 or r_numer__35 or r_z1__35 or r_z0__35 or r_mut__35 or
r_x__36 or r_y__36 or r_z__36 or r_ux__36 or r_uy__36 or r_uz__36 or r_sz__36 or r_sr__36 or r_sleftz__36 or r_sleftr__36 or
r_weight__36 or r_layer__36 or r_dead__36 or r_hit__36 or r_diff__36 or r_dl_b__36 or r_numer__36 or r_z1__36 or r_z0__36 or r_mut__36 or
r_x__37 or r_y__37 or r_z__37 or r_ux__37 or r_uy__37 or r_uz__37 or r_sz__37 or r_sr__37 or r_sleftz__37 or r_sleftr__37 or
r_weight__37 or r_layer__37 or r_dead__37 or r_hit__37 or r_diff__37 or r_dl_b__37 or r_numer__37 or r_z1__37 or r_z0__37 or r_mut__37 or
r_x__38 or r_y__38 or r_z__38 or r_ux__38 or r_uy__38 or r_uz__38 or r_sz__38 or r_sr__38 or r_sleftz__38 or r_sleftr__38 or
r_weight__38 or r_layer__38 or r_dead__38 or r_hit__38 or r_diff__38 or r_dl_b__38 or r_numer__38 or r_z1__38 or r_z0__38 or r_mut__38 or
r_x__39 or r_y__39 or r_z__39 or r_ux__39 or r_uy__39 or r_uz__39 or r_sz__39 or r_sr__39 or r_sleftz__39 or r_sleftr__39 or
r_weight__39 or r_layer__39 or r_dead__39 or r_hit__39 or r_diff__39 or r_dl_b__39 or r_numer__39 or r_z1__39 or r_z0__39 or r_mut__39 or
r_x__40 or r_y__40 or r_z__40 or r_ux__40 or r_uy__40 or r_uz__40 or r_sz__40 or r_sr__40 or r_sleftz__40 or r_sleftr__40 or
r_weight__40 or r_layer__40 or r_dead__40 or r_hit__40 or r_diff__40 or r_dl_b__40 or r_numer__40 or r_z1__40 or r_z0__40 or r_mut__40 or
r_x__41 or r_y__41 or r_z__41 or r_ux__41 or r_uy__41 or r_uz__41 or r_sz__41 or r_sr__41 or r_sleftz__41 or r_sleftr__41 or
r_weight__41 or r_layer__41 or r_dead__41 or r_hit__41 or r_diff__41 or r_dl_b__41 or r_numer__41 or r_z1__41 or r_z0__41 or r_mut__41 or
r_x__42 or r_y__42 or r_z__42 or r_ux__42 or r_uy__42 or r_uz__42 or r_sz__42 or r_sr__42 or r_sleftz__42 or r_sleftr__42 or
r_weight__42 or r_layer__42 or r_dead__42 or r_hit__42 or r_diff__42 or r_dl_b__42 or r_numer__42 or r_z1__42 or r_z0__42 or r_mut__42 or
r_x__43 or r_y__43 or r_z__43 or r_ux__43 or r_uy__43 or r_uz__43 or r_sz__43 or r_sr__43 or r_sleftz__43 or r_sleftr__43 or
r_weight__43 or r_layer__43 or r_dead__43 or r_hit__43 or r_diff__43 or r_dl_b__43 or r_numer__43 or r_z1__43 or r_z0__43 or r_mut__43 or
r_x__44 or r_y__44 or r_z__44 or r_ux__44 or r_uy__44 or r_uz__44 or r_sz__44 or r_sr__44 or r_sleftz__44 or r_sleftr__44 or
r_weight__44 or r_layer__44 or r_dead__44 or r_hit__44 or r_diff__44 or r_dl_b__44 or r_numer__44 or r_z1__44 or r_z0__44 or r_mut__44 or
r_x__45 or r_y__45 or r_z__45 or r_ux__45 or r_uy__45 or r_uz__45 or r_sz__45 or r_sr__45 or r_sleftz__45 or r_sleftr__45 or
r_weight__45 or r_layer__45 or r_dead__45 or r_hit__45 or r_diff__45 or r_dl_b__45 or r_numer__45 or r_z1__45 or r_z0__45 or r_mut__45 or
r_x__46 or r_y__46 or r_z__46 or r_ux__46 or r_uy__46 or r_uz__46 or r_sz__46 or r_sr__46 or r_sleftz__46 or r_sleftr__46 or
r_weight__46 or r_layer__46 or r_dead__46 or r_hit__46 or r_diff__46 or r_dl_b__46 or r_numer__46 or r_z1__46 or r_z0__46 or r_mut__46 or
r_x__47 or r_y__47 or r_z__47 or r_ux__47 or r_uy__47 or r_uz__47 or r_sz__47 or r_sr__47 or r_sleftz__47 or r_sleftr__47 or
r_weight__47 or r_layer__47 or r_dead__47 or r_hit__47 or r_diff__47 or r_dl_b__47 or r_numer__47 or r_z1__47 or r_z0__47 or r_mut__47 or
r_x__48 or r_y__48 or r_z__48 or r_ux__48 or r_uy__48 or r_uz__48 or r_sz__48 or r_sr__48 or r_sleftz__48 or r_sleftr__48 or
r_weight__48 or r_layer__48 or r_dead__48 or r_hit__48 or r_diff__48 or r_dl_b__48 or r_numer__48 or r_z1__48 or r_z0__48 or r_mut__48 or
r_x__49 or r_y__49 or r_z__49 or r_ux__49 or r_uy__49 or r_uz__49 or r_sz__49 or r_sr__49 or r_sleftz__49 or r_sleftr__49 or
r_weight__49 or r_layer__49 or r_dead__49 or r_hit__49 or r_diff__49 or r_dl_b__49 or r_numer__49 or r_z1__49 or r_z0__49 or r_mut__49 or
r_x__50 or r_y__50 or r_z__50 or r_ux__50 or r_uy__50 or r_uz__50 or r_sz__50 or r_sr__50 or r_sleftz__50 or r_sleftr__50 or
r_weight__50 or r_layer__50 or r_dead__50 or r_hit__50 or r_diff__50 or r_dl_b__50 or r_numer__50 or r_z1__50 or r_z0__50 or r_mut__50 or
r_x__51 or r_y__51 or r_z__51 or r_ux__51 or r_uy__51 or r_uz__51 or r_sz__51 or r_sr__51 or r_sleftz__51 or r_sleftr__51 or
r_weight__51 or r_layer__51 or r_dead__51 or r_hit__51 or r_diff__51 or r_dl_b__51 or r_numer__51 or r_z1__51 or r_z0__51 or r_mut__51 or
r_x__52 or r_y__52 or r_z__52 or r_ux__52 or r_uy__52 or r_uz__52 or r_sz__52 or r_sr__52 or r_sleftz__52 or r_sleftr__52 or
r_weight__52 or r_layer__52 or r_dead__52 or r_hit__52 or r_diff__52 or r_dl_b__52 or r_numer__52 or r_z1__52 or r_z0__52 or r_mut__52 or
r_x__53 or r_y__53 or r_z__53 or r_ux__53 or r_uy__53 or r_uz__53 or r_sz__53 or r_sr__53 or r_sleftz__53 or r_sleftr__53 or
r_weight__53 or r_layer__53 or r_dead__53 or r_hit__53 or r_diff__53 or r_dl_b__53 or r_numer__53 or r_z1__53 or r_z0__53 or r_mut__53 or
r_x__54 or r_y__54 or r_z__54 or r_ux__54 or r_uy__54 or r_uz__54 or r_sz__54 or r_sr__54 or r_sleftz__54 or r_sleftr__54 or
r_weight__54 or r_layer__54 or r_dead__54 or r_hit__54 or r_diff__54 or r_dl_b__54 or r_numer__54 or r_z1__54 or r_z0__54 or r_mut__54 or
r_x__55 or r_y__55 or r_z__55 or r_ux__55 or r_uy__55 or r_uz__55 or r_sz__55 or r_sr__55 or r_sleftz__55 or r_sleftr__55 or
r_weight__55 or r_layer__55 or r_dead__55 or r_hit__55 or r_diff__55 or r_dl_b__55 or r_numer__55 or r_z1__55 or r_z0__55 or r_mut__55 or
r_x__56 or r_y__56 or r_z__56 or r_ux__56 or r_uy__56 or r_uz__56 or r_sz__56 or r_sr__56 or r_sleftz__56 or r_sleftr__56 or
r_weight__56 or r_layer__56 or r_dead__56 or r_hit__56 or r_diff__56 or r_dl_b__56 or r_numer__56 or r_z1__56 or r_z0__56 or r_mut__56 or
r_x__57 or r_y__57 or r_z__57 or r_ux__57 or r_uy__57 or r_uz__57 or r_sz__57 or r_sr__57 or r_sleftz__57 or r_sleftr__57 or
r_weight__57 or r_layer__57 or r_dead__57 or r_hit__57 or r_diff__57 or r_dl_b__57 or r_numer__57 or r_z1__57 or r_z0__57 or r_mut__57 or
r_x__58 or r_y__58 or r_z__58 or r_ux__58 or r_uy__58 or r_uz__58 or r_sz__58 or r_sr__58 or r_sleftz__58 or r_sleftr__58 or
r_weight__58 or r_layer__58 or r_dead__58 or r_hit__58 or r_diff__58 or r_dl_b__58 or r_numer__58 or r_z1__58 or r_z0__58 or r_mut__58 or
r_x__59 or r_y__59 or r_z__59 or r_ux__59 or r_uy__59 or r_uz__59 or r_sz__59 or r_sr__59 or r_sleftz__59 or r_sleftr__59 or
r_weight__59 or r_layer__59 or r_dead__59 or r_hit__59 or r_diff__59 or r_dl_b__59 or r_numer__59 or r_z1__59 or r_z0__59 or r_mut__59 or
sr_big or sleftz_big or sleftr_big or quotient_div1)
// default
// setup standard pipeline
// for(i = 1; i < `TOTAL_LATENCY; i = i + 1)
// begin
// c_x[i] = r_x[i-1];
// c_y[i] = r_y[i-1];
// c_z[i] = r_z[i-1];
// c_ux[i] = r_ux[i-1];
// c_uy[i] = r_uy[i-1];
// c_uz[i] = r_uz[i-1];
// c_sz[i] = r_sz[i-1];
// c_sr[i] = r_sr[i-1];
// c_sleftz[i] = r_sleftz[i-1];
// c_sleftr[i] = r_sleftr[i-1];
// c_weight[i] = r_weight[i-1];
// c_layer[i] = r_layer[i-1];
// c_dead[i] = r_dead[i-1];
// c_hit[i] = r_hit[i-1];
// c_diff[i] = r_diff[i-1];
// c_dl_b[i] = r_dl_b[i-1];
// c_numer[i] = r_numer[i-1];
// c_z1[i] = r_z1[i-1];
// c_z0[i] = r_z0[i-1];
// c_mut[i] = r_mut[i-1];
// end
begin
//Instatiate all 60 instances of the above for-loop
//for 1
c_x__1 = r_x__0;
c_y__1 = r_y__0;
c_z__1 = r_z__0;
c_ux__1 = r_ux__0;
c_uy__1 = r_uy__0;
c_uz__1 = r_uz__0;
c_sz__1 = r_sz__0;
c_sr__1 = r_sr__0;
c_sleftz__1 = r_sleftz__0;
c_sleftr__1 = r_sleftr__0;
c_weight__1 = r_weight__0;
c_layer__1 = r_layer__0;
c_dead__1 = r_dead__0;
c_hit__1 = r_hit__0;
c_diff__1 = r_diff__0;
c_dl_b__1 = r_dl_b__0;
c_numer__1 = r_numer__0;
c_z1__1 = r_z1__0;
c_z0__1 = r_z0__0;
c_mut__1 = r_mut__0;
//for 2
c_x__2 = r_x__1;
c_y__2 = r_y__1;
c_z__2 = r_z__1;
c_ux__2 = r_ux__1;
c_uy__2 = r_uy__1;
c_uz__2 = r_uz__1;
c_sz__2 = r_sz__1;
c_sr__2 = r_sr__1;
c_sleftz__2 = r_sleftz__1;
c_sleftr__2 = r_sleftr__1;
c_weight__2 = r_weight__1;
c_layer__2 = r_layer__1;
c_dead__2 = r_dead__1;
c_hit__2 = r_hit__1;
c_diff__2 = r_diff__1;
c_dl_b__2 = r_dl_b__1;
c_numer__2 = r_numer__1;
c_z1__2 = r_z1__1;
c_z0__2 = r_z0__1;
c_mut__2 = r_mut__1;
//for 3
c_x__3 = r_x__2;
c_y__3 = r_y__2;
c_z__3 = r_z__2;
c_ux__3 = r_ux__2;
c_uy__3 = r_uy__2;
c_uz__3 = r_uz__2;
c_sz__3 = r_sz__2;
c_sr__3 = r_sr__2;
c_sleftz__3 = r_sleftz__2;
c_sleftr__3 = r_sleftr__2;
c_weight__3 = r_weight__2;
c_layer__3 = r_layer__2;
c_dead__3 = r_dead__2;
c_hit__3 = r_hit__2;
c_diff__3 = r_diff__2;
c_dl_b__3 = r_dl_b__2;
c_numer__3 = r_numer__2;
c_z1__3 = r_z1__2;
c_z0__3 = r_z0__2;
c_mut__3 = r_mut__2;
//for 4
c_x__4 = r_x__3;
c_y__4 = r_y__3;
c_z__4 = r_z__3;
c_ux__4 = r_ux__3;
c_uy__4 = r_uy__3;
c_uz__4 = r_uz__3;
c_sz__4 = r_sz__3;
c_sr__4 = r_sr__3;
c_sleftz__4 = r_sleftz__3;
c_sleftr__4 = r_sleftr__3;
c_weight__4 = r_weight__3;
c_layer__4 = r_layer__3;
c_dead__4 = r_dead__3;
c_hit__4 = r_hit__3;
c_diff__4 = r_diff__3;
c_dl_b__4 = r_dl_b__3;
c_numer__4 = r_numer__3;
c_z1__4 = r_z1__3;
c_z0__4 = r_z0__3;
c_mut__4 = r_mut__3;
//for 5
c_x__5 = r_x__4;
c_y__5 = r_y__4;
c_z__5 = r_z__4;
c_ux__5 = r_ux__4;
c_uy__5 = r_uy__4;
c_uz__5 = r_uz__4;
c_sz__5 = r_sz__4;
c_sr__5 = r_sr__4;
c_sleftz__5 = r_sleftz__4;
c_sleftr__5 = r_sleftr__4;
c_weight__5 = r_weight__4;
c_layer__5 = r_layer__4;
c_dead__5 = r_dead__4;
c_hit__5 = r_hit__4;
c_diff__5 = r_diff__4;
c_dl_b__5 = r_dl_b__4;
c_numer__5 = r_numer__4;
c_z1__5 = r_z1__4;
c_z0__5 = r_z0__4;
c_mut__5 = r_mut__4;
//for 6
c_x__6 = r_x__5;
c_y__6 = r_y__5;
c_z__6 = r_z__5;
c_ux__6 = r_ux__5;
c_uy__6 = r_uy__5;
c_uz__6 = r_uz__5;
c_sz__6 = r_sz__5;
c_sr__6 = r_sr__5;
c_sleftz__6 = r_sleftz__5;
c_sleftr__6 = r_sleftr__5;
c_weight__6 = r_weight__5;
c_layer__6 = r_layer__5;
c_dead__6 = r_dead__5;
c_hit__6 = r_hit__5;
c_diff__6 = r_diff__5;
c_dl_b__6 = r_dl_b__5;
c_numer__6 = r_numer__5;
c_z1__6 = r_z1__5;
c_z0__6 = r_z0__5;
c_mut__6 = r_mut__5;
//for 7
c_x__7 = r_x__6;
c_y__7 = r_y__6;
c_z__7 = r_z__6;
c_ux__7 = r_ux__6;
c_uy__7 = r_uy__6;
c_uz__7 = r_uz__6;
c_sz__7 = r_sz__6;
c_sr__7 = r_sr__6;
c_sleftz__7 = r_sleftz__6;
c_sleftr__7 = r_sleftr__6;
c_weight__7 = r_weight__6;
c_layer__7 = r_layer__6;
c_dead__7 = r_dead__6;
c_hit__7 = r_hit__6;
c_diff__7 = r_diff__6;
c_dl_b__7 = r_dl_b__6;
c_numer__7 = r_numer__6;
c_z1__7 = r_z1__6;
c_z0__7 = r_z0__6;
c_mut__7 = r_mut__6;
//for 8
c_x__8 = r_x__7;
c_y__8 = r_y__7;
c_z__8 = r_z__7;
c_ux__8 = r_ux__7;
c_uy__8 = r_uy__7;
c_uz__8 = r_uz__7;
c_sz__8 = r_sz__7;
c_sr__8 = r_sr__7;
c_sleftz__8 = r_sleftz__7;
c_sleftr__8 = r_sleftr__7;
c_weight__8 = r_weight__7;
c_layer__8 = r_layer__7;
c_dead__8 = r_dead__7;
c_hit__8 = r_hit__7;
c_diff__8 = r_diff__7;
c_dl_b__8 = r_dl_b__7;
c_numer__8 = r_numer__7;
c_z1__8 = r_z1__7;
c_z0__8 = r_z0__7;
c_mut__8 = r_mut__7;
//for 9
c_x__9 = r_x__8;
c_y__9 = r_y__8;
c_z__9 = r_z__8;
c_ux__9 = r_ux__8;
c_uy__9 = r_uy__8;
c_uz__9 = r_uz__8;
c_sz__9 = r_sz__8;
c_sr__9 = r_sr__8;
c_sleftz__9 = r_sleftz__8;
c_sleftr__9 = r_sleftr__8;
c_weight__9 = r_weight__8;
c_layer__9 = r_layer__8;
c_dead__9 = r_dead__8;
c_hit__9 = r_hit__8;
c_diff__9 = r_diff__8;
c_dl_b__9 = r_dl_b__8;
c_numer__9 = r_numer__8;
c_z1__9 = r_z1__8;
c_z0__9 = r_z0__8;
c_mut__9 = r_mut__8;
//for 10
c_x__10 = r_x__9;
c_y__10 = r_y__9;
c_z__10 = r_z__9;
c_ux__10 = r_ux__9;
c_uy__10 = r_uy__9;
c_uz__10 = r_uz__9;
c_sz__10 = r_sz__9;
c_sr__10 = r_sr__9;
c_sleftz__10 = r_sleftz__9;
c_sleftr__10 = r_sleftr__9;
c_weight__10 = r_weight__9;
c_layer__10 = r_layer__9;
c_dead__10 = r_dead__9;
c_hit__10 = r_hit__9;
c_diff__10 = r_diff__9;
c_dl_b__10 = r_dl_b__9;
c_numer__10 = r_numer__9;
c_z1__10 = r_z1__9;
c_z0__10 = r_z0__9;
c_mut__10 = r_mut__9;
//for 11
c_x__11 = r_x__10;
c_y__11 = r_y__10;
c_z__11 = r_z__10;
c_ux__11 = r_ux__10;
c_uy__11 = r_uy__10;
c_uz__11 = r_uz__10;
c_sz__11 = r_sz__10;
c_sr__11 = r_sr__10;
c_sleftz__11 = r_sleftz__10;
c_sleftr__11 = r_sleftr__10;
c_weight__11 = r_weight__10;
c_layer__11 = r_layer__10;
c_dead__11 = r_dead__10;
c_hit__11 = r_hit__10;
c_diff__11 = r_diff__10;
c_dl_b__11 = r_dl_b__10;
c_numer__11 = r_numer__10;
c_z1__11 = r_z1__10;
c_z0__11 = r_z0__10;
c_mut__11 = r_mut__10;
//for 12
c_x__12 = r_x__11;
c_y__12 = r_y__11;
c_z__12 = r_z__11;
c_ux__12 = r_ux__11;
c_uy__12 = r_uy__11;
c_uz__12 = r_uz__11;
c_sz__12 = r_sz__11;
c_sr__12 = r_sr__11;
c_sleftz__12 = r_sleftz__11;
c_sleftr__12 = r_sleftr__11;
c_weight__12 = r_weight__11;
c_layer__12 = r_layer__11;
c_dead__12 = r_dead__11;
c_hit__12 = r_hit__11;
c_diff__12 = r_diff__11;
c_dl_b__12 = r_dl_b__11;
c_numer__12 = r_numer__11;
c_z1__12 = r_z1__11;
c_z0__12 = r_z0__11;
c_mut__12 = r_mut__11;
//for 13
c_x__13 = r_x__12;
c_y__13 = r_y__12;
c_z__13 = r_z__12;
c_ux__13 = r_ux__12;
c_uy__13 = r_uy__12;
c_uz__13 = r_uz__12;
c_sz__13 = r_sz__12;
c_sr__13 = r_sr__12;
c_sleftz__13 = r_sleftz__12;
c_sleftr__13 = r_sleftr__12;
c_weight__13 = r_weight__12;
c_layer__13 = r_layer__12;
c_dead__13 = r_dead__12;
c_hit__13 = r_hit__12;
c_diff__13 = r_diff__12;
c_dl_b__13 = r_dl_b__12;
c_numer__13 = r_numer__12;
c_z1__13 = r_z1__12;
c_z0__13 = r_z0__12;
c_mut__13 = r_mut__12;
//for 14
c_x__14 = r_x__13;
c_y__14 = r_y__13;
c_z__14 = r_z__13;
c_ux__14 = r_ux__13;
c_uy__14 = r_uy__13;
c_uz__14 = r_uz__13;
c_sz__14 = r_sz__13;
c_sr__14 = r_sr__13;
c_sleftz__14 = r_sleftz__13;
c_sleftr__14 = r_sleftr__13;
c_weight__14 = r_weight__13;
c_layer__14 = r_layer__13;
c_dead__14 = r_dead__13;
c_hit__14 = r_hit__13;
c_diff__14 = r_diff__13;
c_dl_b__14 = r_dl_b__13;
c_numer__14 = r_numer__13;
c_z1__14 = r_z1__13;
c_z0__14 = r_z0__13;
c_mut__14 = r_mut__13;
//for 15
c_x__15 = r_x__14;
c_y__15 = r_y__14;
c_z__15 = r_z__14;
c_ux__15 = r_ux__14;
c_uy__15 = r_uy__14;
c_uz__15 = r_uz__14;
c_sz__15 = r_sz__14;
c_sr__15 = r_sr__14;
c_sleftz__15 = r_sleftz__14;
c_sleftr__15 = r_sleftr__14;
c_weight__15 = r_weight__14;
c_layer__15 = r_layer__14;
c_dead__15 = r_dead__14;
c_hit__15 = r_hit__14;
c_diff__15 = r_diff__14;
c_dl_b__15 = r_dl_b__14;
c_numer__15 = r_numer__14;
c_z1__15 = r_z1__14;
c_z0__15 = r_z0__14;
c_mut__15 = r_mut__14;
//for 16
c_x__16 = r_x__15;
c_y__16 = r_y__15;
c_z__16 = r_z__15;
c_ux__16 = r_ux__15;
c_uy__16 = r_uy__15;
c_uz__16 = r_uz__15;
c_sz__16 = r_sz__15;
c_sr__16 = r_sr__15;
c_sleftz__16 = r_sleftz__15;
c_sleftr__16 = r_sleftr__15;
c_weight__16 = r_weight__15;
c_layer__16 = r_layer__15;
c_dead__16 = r_dead__15;
c_hit__16 = r_hit__15;
c_diff__16 = r_diff__15;
c_dl_b__16 = r_dl_b__15;
c_numer__16 = r_numer__15;
c_z1__16 = r_z1__15;
c_z0__16 = r_z0__15;
c_mut__16 = r_mut__15;
//for 17
c_x__17 = r_x__16;
c_y__17 = r_y__16;
c_z__17 = r_z__16;
c_ux__17 = r_ux__16;
c_uy__17 = r_uy__16;
c_uz__17 = r_uz__16;
c_sz__17 = r_sz__16;
c_sr__17 = r_sr__16;
c_sleftz__17 = r_sleftz__16;
c_sleftr__17 = r_sleftr__16;
c_weight__17 = r_weight__16;
c_layer__17 = r_layer__16;
c_dead__17 = r_dead__16;
c_hit__17 = r_hit__16;
c_diff__17 = r_diff__16;
c_dl_b__17 = r_dl_b__16;
c_numer__17 = r_numer__16;
c_z1__17 = r_z1__16;
c_z0__17 = r_z0__16;
c_mut__17 = r_mut__16;
//for 18
c_x__18 = r_x__17;
c_y__18 = r_y__17;
c_z__18 = r_z__17;
c_ux__18 = r_ux__17;
c_uy__18 = r_uy__17;
c_uz__18 = r_uz__17;
c_sz__18 = r_sz__17;
c_sr__18 = r_sr__17;
c_sleftz__18 = r_sleftz__17;
c_sleftr__18 = r_sleftr__17;
c_weight__18 = r_weight__17;
c_layer__18 = r_layer__17;
c_dead__18 = r_dead__17;
c_hit__18 = r_hit__17;
c_diff__18 = r_diff__17;
c_dl_b__18 = r_dl_b__17;
c_numer__18 = r_numer__17;
c_z1__18 = r_z1__17;
c_z0__18 = r_z0__17;
c_mut__18 = r_mut__17;
//for 19
c_x__19 = r_x__18;
c_y__19 = r_y__18;
c_z__19 = r_z__18;
c_ux__19 = r_ux__18;
c_uy__19 = r_uy__18;
c_uz__19 = r_uz__18;
c_sz__19 = r_sz__18;
c_sr__19 = r_sr__18;
c_sleftz__19 = r_sleftz__18;
c_sleftr__19 = r_sleftr__18;
c_weight__19 = r_weight__18;
c_layer__19 = r_layer__18;
c_dead__19 = r_dead__18;
c_hit__19 = r_hit__18;
c_diff__19 = r_diff__18;
c_dl_b__19 = r_dl_b__18;
c_numer__19 = r_numer__18;
c_z1__19 = r_z1__18;
c_z0__19 = r_z0__18;
c_mut__19 = r_mut__18;
//for 20
c_x__20 = r_x__19;
c_y__20 = r_y__19;
c_z__20 = r_z__19;
c_ux__20 = r_ux__19;
c_uy__20 = r_uy__19;
c_uz__20 = r_uz__19;
c_sz__20 = r_sz__19;
c_sr__20 = r_sr__19;
c_sleftz__20 = r_sleftz__19;
c_sleftr__20 = r_sleftr__19;
c_weight__20 = r_weight__19;
c_layer__20 = r_layer__19;
c_dead__20 = r_dead__19;
c_hit__20 = r_hit__19;
c_diff__20 = r_diff__19;
c_dl_b__20 = r_dl_b__19;
c_numer__20 = r_numer__19;
c_z1__20 = r_z1__19;
c_z0__20 = r_z0__19;
c_mut__20 = r_mut__19;
//for 21
c_x__21 = r_x__20;
c_y__21 = r_y__20;
c_z__21 = r_z__20;
c_ux__21 = r_ux__20;
c_uy__21 = r_uy__20;
c_uz__21 = r_uz__20;
c_sz__21 = r_sz__20;
c_sr__21 = r_sr__20;
c_sleftz__21 = r_sleftz__20;
c_sleftr__21 = r_sleftr__20;
c_weight__21 = r_weight__20;
c_layer__21 = r_layer__20;
c_dead__21 = r_dead__20;
c_hit__21 = r_hit__20;
c_diff__21 = r_diff__20;
c_dl_b__21 = r_dl_b__20;
c_numer__21 = r_numer__20;
c_z1__21 = r_z1__20;
c_z0__21 = r_z0__20;
c_mut__21 = r_mut__20;
//for 22
c_x__22 = r_x__21;
c_y__22 = r_y__21;
c_z__22 = r_z__21;
c_ux__22 = r_ux__21;
c_uy__22 = r_uy__21;
c_uz__22 = r_uz__21;
c_sz__22 = r_sz__21;
c_sr__22 = r_sr__21;
c_sleftz__22 = r_sleftz__21;
c_sleftr__22 = r_sleftr__21;
c_weight__22 = r_weight__21;
c_layer__22 = r_layer__21;
c_dead__22 = r_dead__21;
c_hit__22 = r_hit__21;
c_diff__22 = r_diff__21;
c_dl_b__22 = r_dl_b__21;
c_numer__22 = r_numer__21;
c_z1__22 = r_z1__21;
c_z0__22 = r_z0__21;
c_mut__22 = r_mut__21;
//for 23
c_x__23 = r_x__22;
c_y__23 = r_y__22;
c_z__23 = r_z__22;
c_ux__23 = r_ux__22;
c_uy__23 = r_uy__22;
c_uz__23 = r_uz__22;
c_sz__23 = r_sz__22;
c_sr__23 = r_sr__22;
c_sleftz__23 = r_sleftz__22;
c_sleftr__23 = r_sleftr__22;
c_weight__23 = r_weight__22;
c_layer__23 = r_layer__22;
c_dead__23 = r_dead__22;
c_hit__23 = r_hit__22;
c_diff__23 = r_diff__22;
c_dl_b__23 = r_dl_b__22;
c_numer__23 = r_numer__22;
c_z1__23 = r_z1__22;
c_z0__23 = r_z0__22;
c_mut__23 = r_mut__22;
//for 24
c_x__24 = r_x__23;
c_y__24 = r_y__23;
c_z__24 = r_z__23;
c_ux__24 = r_ux__23;
c_uy__24 = r_uy__23;
c_uz__24 = r_uz__23;
c_sz__24 = r_sz__23;
c_sr__24 = r_sr__23;
c_sleftz__24 = r_sleftz__23;
c_sleftr__24 = r_sleftr__23;
c_weight__24 = r_weight__23;
c_layer__24 = r_layer__23;
c_dead__24 = r_dead__23;
c_hit__24 = r_hit__23;
c_diff__24 = r_diff__23;
c_dl_b__24 = r_dl_b__23;
c_numer__24 = r_numer__23;
c_z1__24 = r_z1__23;
c_z0__24 = r_z0__23;
c_mut__24 = r_mut__23;
//for 25
c_x__25 = r_x__24;
c_y__25 = r_y__24;
c_z__25 = r_z__24;
c_ux__25 = r_ux__24;
c_uy__25 = r_uy__24;
c_uz__25 = r_uz__24;
c_sz__25 = r_sz__24;
c_sr__25 = r_sr__24;
c_sleftz__25 = r_sleftz__24;
c_sleftr__25 = r_sleftr__24;
c_weight__25 = r_weight__24;
c_layer__25 = r_layer__24;
c_dead__25 = r_dead__24;
c_hit__25 = r_hit__24;
c_diff__25 = r_diff__24;
c_dl_b__25 = r_dl_b__24;
c_numer__25 = r_numer__24;
c_z1__25 = r_z1__24;
c_z0__25 = r_z0__24;
c_mut__25 = r_mut__24;
//for 26
c_x__26 = r_x__25;
c_y__26 = r_y__25;
c_z__26 = r_z__25;
c_ux__26 = r_ux__25;
c_uy__26 = r_uy__25;
c_uz__26 = r_uz__25;
c_sz__26 = r_sz__25;
c_sr__26 = r_sr__25;
c_sleftz__26 = r_sleftz__25;
c_sleftr__26 = r_sleftr__25;
c_weight__26 = r_weight__25;
c_layer__26 = r_layer__25;
c_dead__26 = r_dead__25;
c_hit__26 = r_hit__25;
c_diff__26 = r_diff__25;
c_dl_b__26 = r_dl_b__25;
c_numer__26 = r_numer__25;
c_z1__26 = r_z1__25;
c_z0__26 = r_z0__25;
c_mut__26 = r_mut__25;
//for 27
c_x__27 = r_x__26;
c_y__27 = r_y__26;
c_z__27 = r_z__26;
c_ux__27 = r_ux__26;
c_uy__27 = r_uy__26;
c_uz__27 = r_uz__26;
c_sz__27 = r_sz__26;
c_sr__27 = r_sr__26;
c_sleftz__27 = r_sleftz__26;
c_sleftr__27 = r_sleftr__26;
c_weight__27 = r_weight__26;
c_layer__27 = r_layer__26;
c_dead__27 = r_dead__26;
c_hit__27 = r_hit__26;
c_diff__27 = r_diff__26;
c_dl_b__27 = r_dl_b__26;
c_numer__27 = r_numer__26;
c_z1__27 = r_z1__26;
c_z0__27 = r_z0__26;
c_mut__27 = r_mut__26;
//for 28
c_x__28 = r_x__27;
c_y__28 = r_y__27;
c_z__28 = r_z__27;
c_ux__28 = r_ux__27;
c_uy__28 = r_uy__27;
c_uz__28 = r_uz__27;
c_sz__28 = r_sz__27;
c_sr__28 = r_sr__27;
c_sleftz__28 = r_sleftz__27;
c_sleftr__28 = r_sleftr__27;
c_weight__28 = r_weight__27;
c_layer__28 = r_layer__27;
c_dead__28 = r_dead__27;
c_hit__28 = r_hit__27;
c_diff__28 = r_diff__27;
c_dl_b__28 = r_dl_b__27;
c_numer__28 = r_numer__27;
c_z1__28 = r_z1__27;
c_z0__28 = r_z0__27;
c_mut__28 = r_mut__27;
//for 29
c_x__29 = r_x__28;
c_y__29 = r_y__28;
c_z__29 = r_z__28;
c_ux__29 = r_ux__28;
c_uy__29 = r_uy__28;
c_uz__29 = r_uz__28;
c_sz__29 = r_sz__28;
c_sr__29 = r_sr__28;
c_sleftz__29 = r_sleftz__28;
c_sleftr__29 = r_sleftr__28;
c_weight__29 = r_weight__28;
c_layer__29 = r_layer__28;
c_dead__29 = r_dead__28;
c_hit__29 = r_hit__28;
c_diff__29 = r_diff__28;
c_dl_b__29 = r_dl_b__28;
c_numer__29 = r_numer__28;
c_z1__29 = r_z1__28;
c_z0__29 = r_z0__28;
c_mut__29 = r_mut__28;
//for 30
c_x__30 = r_x__29;
c_y__30 = r_y__29;
c_z__30 = r_z__29;
c_ux__30 = r_ux__29;
c_uy__30 = r_uy__29;
c_uz__30 = r_uz__29;
c_sz__30 = r_sz__29;
c_sr__30 = r_sr__29;
c_sleftz__30 = r_sleftz__29;
c_sleftr__30 = r_sleftr__29;
c_weight__30 = r_weight__29;
c_layer__30 = r_layer__29;
c_dead__30 = r_dead__29;
// c_hit__30 = r_hit__29;//
// c_diff__30 = r_diff__29;//
// this value is set later, removing default - peter m
// c_dl_b__30 = r_dl_b__29;//
// this one too
c_numer__30 = r_numer__29;
c_z1__30 = r_z1__29;
c_z0__30 = r_z0__29;
c_mut__30 = r_mut__29;
//for 31
c_x__31 = r_x__30;
c_y__31 = r_y__30;
// c_z__31 = r_z__30;//
c_ux__31 = r_ux__30;
c_uy__31 = r_uy__30;
c_uz__31 = r_uz__30;
// c_sz__31 = r_sz__30;//
// c_sr__31 = r_sr__30;//
// c_sleftz__31 = r_sleftz__30;//
c_sleftr__31 = r_sleftr__30;
c_weight__31 = r_weight__30;
c_layer__31 = r_layer__30;
c_dead__31 = r_dead__30;
c_hit__31 = r_hit__30;
c_diff__31 = r_diff__30;
c_dl_b__31 = r_dl_b__30;
c_numer__31 = r_numer__30;
c_z1__31 = r_z1__30;
c_z0__31 = r_z0__30;
c_mut__31 = r_mut__30;
//for 32
c_x__32 = r_x__31;
c_y__32 = r_y__31;
c_z__32 = r_z__31;
c_ux__32 = r_ux__31;
c_uy__32 = r_uy__31;
c_uz__32 = r_uz__31;
c_sz__32 = r_sz__31;
c_sr__32 = r_sr__31;
c_sleftz__32 = r_sleftz__31;
// c_sleftr__32 = r_sleftr__31;//
c_weight__32 = r_weight__31;
c_layer__32 = r_layer__31;
c_dead__32 = r_dead__31;
c_hit__32 = r_hit__31;
c_diff__32 = r_diff__31;
c_dl_b__32 = r_dl_b__31;
c_numer__32 = r_numer__31;
c_z1__32 = r_z1__31;
c_z0__32 = r_z0__31;
c_mut__32 = r_mut__31;
//for 33
c_x__33 = r_x__32;
c_y__33 = r_y__32;
c_z__33 = r_z__32;
c_ux__33 = r_ux__32;
c_uy__33 = r_uy__32;
c_uz__33 = r_uz__32;
c_sz__33 = r_sz__32;
c_sr__33 = r_sr__32;
c_sleftz__33 = r_sleftz__32;
c_sleftr__33 = r_sleftr__32;
c_weight__33 = r_weight__32;
c_layer__33 = r_layer__32;
c_dead__33 = r_dead__32;
c_hit__33 = r_hit__32;
c_diff__33 = r_diff__32;
c_dl_b__33 = r_dl_b__32;
c_numer__33 = r_numer__32;
c_z1__33 = r_z1__32;
c_z0__33 = r_z0__32;
c_mut__33 = r_mut__32;
//for 34
c_x__34 = r_x__33;
c_y__34 = r_y__33;
c_z__34 = r_z__33;
c_ux__34 = r_ux__33;
c_uy__34 = r_uy__33;
c_uz__34 = r_uz__33;
c_sz__34 = r_sz__33;
c_sr__34 = r_sr__33;
c_sleftz__34 = r_sleftz__33;
c_sleftr__34 = r_sleftr__33;
c_weight__34 = r_weight__33;
c_layer__34 = r_layer__33;
c_dead__34 = r_dead__33;
c_hit__34 = r_hit__33;
c_diff__34 = r_diff__33;
c_dl_b__34 = r_dl_b__33;
c_numer__34 = r_numer__33;
c_z1__34 = r_z1__33;
c_z0__34 = r_z0__33;
c_mut__34 = r_mut__33;
//for 35
c_x__35 = r_x__34;
c_y__35 = r_y__34;
c_z__35 = r_z__34;
c_ux__35 = r_ux__34;
c_uy__35 = r_uy__34;
c_uz__35 = r_uz__34;
c_sz__35 = r_sz__34;
c_sr__35 = r_sr__34;
c_sleftz__35 = r_sleftz__34;
c_sleftr__35 = r_sleftr__34;
c_weight__35 = r_weight__34;
c_layer__35 = r_layer__34;
c_dead__35 = r_dead__34;
c_hit__35 = r_hit__34;
c_diff__35 = r_diff__34;
c_dl_b__35 = r_dl_b__34;
c_numer__35 = r_numer__34;
c_z1__35 = r_z1__34;
c_z0__35 = r_z0__34;
c_mut__35 = r_mut__34;
//for 36
c_x__36 = r_x__35;
c_y__36 = r_y__35;
c_z__36 = r_z__35;
c_ux__36 = r_ux__35;
c_uy__36 = r_uy__35;
c_uz__36 = r_uz__35;
c_sz__36 = r_sz__35;
c_sr__36 = r_sr__35;
c_sleftz__36 = r_sleftz__35;
c_sleftr__36 = r_sleftr__35;
c_weight__36 = r_weight__35;
c_layer__36 = r_layer__35;
c_dead__36 = r_dead__35;
c_hit__36 = r_hit__35;
c_diff__36 = r_diff__35;
c_dl_b__36 = r_dl_b__35;
c_numer__36 = r_numer__35;
c_z1__36 = r_z1__35;
c_z0__36 = r_z0__35;
c_mut__36 = r_mut__35;
//for 37
c_x__37 = r_x__36;
c_y__37 = r_y__36;
c_z__37 = r_z__36;
c_ux__37 = r_ux__36;
c_uy__37 = r_uy__36;
c_uz__37 = r_uz__36;
c_sz__37 = r_sz__36;
c_sr__37 = r_sr__36;
c_sleftz__37 = r_sleftz__36;
c_sleftr__37 = r_sleftr__36;
c_weight__37 = r_weight__36;
c_layer__37 = r_layer__36;
c_dead__37 = r_dead__36;
c_hit__37 = r_hit__36;
c_diff__37 = r_diff__36;
c_dl_b__37 = r_dl_b__36;
c_numer__37 = r_numer__36;
c_z1__37 = r_z1__36;
c_z0__37 = r_z0__36;
c_mut__37 = r_mut__36;
//for 38
c_x__38 = r_x__37;
c_y__38 = r_y__37;
c_z__38 = r_z__37;
c_ux__38 = r_ux__37;
c_uy__38 = r_uy__37;
c_uz__38 = r_uz__37;
c_sz__38 = r_sz__37;
c_sr__38 = r_sr__37;
c_sleftz__38 = r_sleftz__37;
c_sleftr__38 = r_sleftr__37;
c_weight__38 = r_weight__37;
c_layer__38 = r_layer__37;
c_dead__38 = r_dead__37;
c_hit__38 = r_hit__37;
c_diff__38 = r_diff__37;
c_dl_b__38 = r_dl_b__37;
c_numer__38 = r_numer__37;
c_z1__38 = r_z1__37;
c_z0__38 = r_z0__37;
c_mut__38 = r_mut__37;
//for 39
c_x__39 = r_x__38;
c_y__39 = r_y__38;
c_z__39 = r_z__38;
c_ux__39 = r_ux__38;
c_uy__39 = r_uy__38;
c_uz__39 = r_uz__38;
c_sz__39 = r_sz__38;
c_sr__39 = r_sr__38;
c_sleftz__39 = r_sleftz__38;
c_sleftr__39 = r_sleftr__38;
c_weight__39 = r_weight__38;
c_layer__39 = r_layer__38;
c_dead__39 = r_dead__38;
c_hit__39 = r_hit__38;
c_diff__39 = r_diff__38;
c_dl_b__39 = r_dl_b__38;
c_numer__39 = r_numer__38;
c_z1__39 = r_z1__38;
c_z0__39 = r_z0__38;
c_mut__39 = r_mut__38;
//for 40
c_x__40 = r_x__39;
c_y__40 = r_y__39;
c_z__40 = r_z__39;
c_ux__40 = r_ux__39;
c_uy__40 = r_uy__39;
c_uz__40 = r_uz__39;
c_sz__40 = r_sz__39;
c_sr__40 = r_sr__39;
c_sleftz__40 = r_sleftz__39;
c_sleftr__40 = r_sleftr__39;
c_weight__40 = r_weight__39;
c_layer__40 = r_layer__39;
c_dead__40 = r_dead__39;
c_hit__40 = r_hit__39;
c_diff__40 = r_diff__39;
c_dl_b__40 = r_dl_b__39;
c_numer__40 = r_numer__39;
c_z1__40 = r_z1__39;
c_z0__40 = r_z0__39;
c_mut__40 = r_mut__39;
//for 41
c_x__41 = r_x__40;
c_y__41 = r_y__40;
c_z__41 = r_z__40;
c_ux__41 = r_ux__40;
c_uy__41 = r_uy__40;
c_uz__41 = r_uz__40;
c_sz__41 = r_sz__40;
c_sr__41 = r_sr__40;
c_sleftz__41 = r_sleftz__40;
c_sleftr__41 = r_sleftr__40;
c_weight__41 = r_weight__40;
c_layer__41 = r_layer__40;
c_dead__41 = r_dead__40;
c_hit__41 = r_hit__40;
c_diff__41 = r_diff__40;
c_dl_b__41 = r_dl_b__40;
c_numer__41 = r_numer__40;
c_z1__41 = r_z1__40;
c_z0__41 = r_z0__40;
c_mut__41 = r_mut__40;
//for 42
c_x__42 = r_x__41;
c_y__42 = r_y__41;
c_z__42 = r_z__41;
c_ux__42 = r_ux__41;
c_uy__42 = r_uy__41;
c_uz__42 = r_uz__41;
c_sz__42 = r_sz__41;
c_sr__42 = r_sr__41;
c_sleftz__42 = r_sleftz__41;
c_sleftr__42 = r_sleftr__41;
c_weight__42 = r_weight__41;
c_layer__42 = r_layer__41;
c_dead__42 = r_dead__41;
c_hit__42 = r_hit__41;
c_diff__42 = r_diff__41;
c_dl_b__42 = r_dl_b__41;
c_numer__42 = r_numer__41;
c_z1__42 = r_z1__41;
c_z0__42 = r_z0__41;
c_mut__42 = r_mut__41;
//for 43
c_x__43 = r_x__42;
c_y__43 = r_y__42;
c_z__43 = r_z__42;
c_ux__43 = r_ux__42;
c_uy__43 = r_uy__42;
c_uz__43 = r_uz__42;
c_sz__43 = r_sz__42;
c_sr__43 = r_sr__42;
c_sleftz__43 = r_sleftz__42;
c_sleftr__43 = r_sleftr__42;
c_weight__43 = r_weight__42;
c_layer__43 = r_layer__42;
c_dead__43 = r_dead__42;
c_hit__43 = r_hit__42;
c_diff__43 = r_diff__42;
c_dl_b__43 = r_dl_b__42;
c_numer__43 = r_numer__42;
c_z1__43 = r_z1__42;
c_z0__43 = r_z0__42;
c_mut__43 = r_mut__42;
//for 44
c_x__44 = r_x__43;
c_y__44 = r_y__43;
c_z__44 = r_z__43;
c_ux__44 = r_ux__43;
c_uy__44 = r_uy__43;
c_uz__44 = r_uz__43;
c_sz__44 = r_sz__43;
c_sr__44 = r_sr__43;
c_sleftz__44 = r_sleftz__43;
c_sleftr__44 = r_sleftr__43;
c_weight__44 = r_weight__43;
c_layer__44 = r_layer__43;
c_dead__44 = r_dead__43;
c_hit__44 = r_hit__43;
c_diff__44 = r_diff__43;
c_dl_b__44 = r_dl_b__43;
c_numer__44 = r_numer__43;
c_z1__44 = r_z1__43;
c_z0__44 = r_z0__43;
c_mut__44 = r_mut__43;
//for 45
c_x__45 = r_x__44;
c_y__45 = r_y__44;
c_z__45 = r_z__44;
c_ux__45 = r_ux__44;
c_uy__45 = r_uy__44;
c_uz__45 = r_uz__44;
c_sz__45 = r_sz__44;
c_sr__45 = r_sr__44;
c_sleftz__45 = r_sleftz__44;
c_sleftr__45 = r_sleftr__44;
c_weight__45 = r_weight__44;
c_layer__45 = r_layer__44;
c_dead__45 = r_dead__44;
c_hit__45 = r_hit__44;
c_diff__45 = r_diff__44;
c_dl_b__45 = r_dl_b__44;
c_numer__45 = r_numer__44;
c_z1__45 = r_z1__44;
c_z0__45 = r_z0__44;
c_mut__45 = r_mut__44;
//for 46
c_x__46 = r_x__45;
c_y__46 = r_y__45;
c_z__46 = r_z__45;
c_ux__46 = r_ux__45;
c_uy__46 = r_uy__45;
c_uz__46 = r_uz__45;
c_sz__46 = r_sz__45;
c_sr__46 = r_sr__45;
c_sleftz__46 = r_sleftz__45;
c_sleftr__46 = r_sleftr__45;
c_weight__46 = r_weight__45;
c_layer__46 = r_layer__45;
c_dead__46 = r_dead__45;
c_hit__46 = r_hit__45;
c_diff__46 = r_diff__45;
c_dl_b__46 = r_dl_b__45;
c_numer__46 = r_numer__45;
c_z1__46 = r_z1__45;
c_z0__46 = r_z0__45;
c_mut__46 = r_mut__45;
//for 47
c_x__47 = r_x__46;
c_y__47 = r_y__46;
c_z__47 = r_z__46;
c_ux__47 = r_ux__46;
c_uy__47 = r_uy__46;
c_uz__47 = r_uz__46;
c_sz__47 = r_sz__46;
c_sr__47 = r_sr__46;
c_sleftz__47 = r_sleftz__46;
c_sleftr__47 = r_sleftr__46;
c_weight__47 = r_weight__46;
c_layer__47 = r_layer__46;
c_dead__47 = r_dead__46;
c_hit__47 = r_hit__46;
c_diff__47 = r_diff__46;
c_dl_b__47 = r_dl_b__46;
c_numer__47 = r_numer__46;
c_z1__47 = r_z1__46;
c_z0__47 = r_z0__46;
c_mut__47 = r_mut__46;
//for 48
c_x__48 = r_x__47;
c_y__48 = r_y__47;
c_z__48 = r_z__47;
c_ux__48 = r_ux__47;
c_uy__48 = r_uy__47;
c_uz__48 = r_uz__47;
c_sz__48 = r_sz__47;
c_sr__48 = r_sr__47;
c_sleftz__48 = r_sleftz__47;
c_sleftr__48 = r_sleftr__47;
c_weight__48 = r_weight__47;
c_layer__48 = r_layer__47;
c_dead__48 = r_dead__47;
c_hit__48 = r_hit__47;
c_diff__48 = r_diff__47;
c_dl_b__48 = r_dl_b__47;
c_numer__48 = r_numer__47;
c_z1__48 = r_z1__47;
c_z0__48 = r_z0__47;
c_mut__48 = r_mut__47;
//for 49
c_x__49 = r_x__48;
c_y__49 = r_y__48;
c_z__49 = r_z__48;
c_ux__49 = r_ux__48;
c_uy__49 = r_uy__48;
c_uz__49 = r_uz__48;
c_sz__49 = r_sz__48;
c_sr__49 = r_sr__48;
c_sleftz__49 = r_sleftz__48;
c_sleftr__49 = r_sleftr__48;
c_weight__49 = r_weight__48;
c_layer__49 = r_layer__48;
c_dead__49 = r_dead__48;
c_hit__49 = r_hit__48;
c_diff__49 = r_diff__48;
c_dl_b__49 = r_dl_b__48;
c_numer__49 = r_numer__48;
c_z1__49 = r_z1__48;
c_z0__49 = r_z0__48;
c_mut__49 = r_mut__48;
//for 50
c_x__50 = r_x__49;
c_y__50 = r_y__49;
c_z__50 = r_z__49;
c_ux__50 = r_ux__49;
c_uy__50 = r_uy__49;
c_uz__50 = r_uz__49;
c_sz__50 = r_sz__49;
c_sr__50 = r_sr__49;
c_sleftz__50 = r_sleftz__49;
c_sleftr__50 = r_sleftr__49;
c_weight__50 = r_weight__49;
c_layer__50 = r_layer__49;
c_dead__50 = r_dead__49;
c_hit__50 = r_hit__49;
c_diff__50 = r_diff__49;
c_dl_b__50 = r_dl_b__49;
c_numer__50 = r_numer__49;
c_z1__50 = r_z1__49;
c_z0__50 = r_z0__49;
c_mut__50 = r_mut__49;
//for 51
c_x__51 = r_x__50;
c_y__51 = r_y__50;
c_z__51 = r_z__50;
c_ux__51 = r_ux__50;
c_uy__51 = r_uy__50;
c_uz__51 = r_uz__50;
c_sz__51 = r_sz__50;
c_sr__51 = r_sr__50;
c_sleftz__51 = r_sleftz__50;
c_sleftr__51 = r_sleftr__50;
c_weight__51 = r_weight__50;
c_layer__51 = r_layer__50;
c_dead__51 = r_dead__50;
c_hit__51 = r_hit__50;
c_diff__51 = r_diff__50;
c_dl_b__51 = r_dl_b__50;
c_numer__51 = r_numer__50;
c_z1__51 = r_z1__50;
c_z0__51 = r_z0__50;
c_mut__51 = r_mut__50;
//for 52
c_x__52 = r_x__51;
c_y__52 = r_y__51;
c_z__52 = r_z__51;
c_ux__52 = r_ux__51;
c_uy__52 = r_uy__51;
c_uz__52 = r_uz__51;
c_sz__52 = r_sz__51;
c_sr__52 = r_sr__51;
c_sleftz__52 = r_sleftz__51;
c_sleftr__52 = r_sleftr__51;
c_weight__52 = r_weight__51;
c_layer__52 = r_layer__51;
c_dead__52 = r_dead__51;
c_hit__52 = r_hit__51;
c_diff__52 = r_diff__51;
c_dl_b__52 = r_dl_b__51;
c_numer__52 = r_numer__51;
c_z1__52 = r_z1__51;
c_z0__52 = r_z0__51;
c_mut__52 = r_mut__51;
//for 53
c_x__53 = r_x__52;
c_y__53 = r_y__52;
c_z__53 = r_z__52;
c_ux__53 = r_ux__52;
c_uy__53 = r_uy__52;
c_uz__53 = r_uz__52;
c_sz__53 = r_sz__52;
c_sr__53 = r_sr__52;
c_sleftz__53 = r_sleftz__52;
c_sleftr__53 = r_sleftr__52;
c_weight__53 = r_weight__52;
c_layer__53 = r_layer__52;
c_dead__53 = r_dead__52;
c_hit__53 = r_hit__52;
c_diff__53 = r_diff__52;
c_dl_b__53 = r_dl_b__52;
c_numer__53 = r_numer__52;
c_z1__53 = r_z1__52;
c_z0__53 = r_z0__52;
c_mut__53 = r_mut__52;
//for 54
c_x__54 = r_x__53;
c_y__54 = r_y__53;
c_z__54 = r_z__53;
c_ux__54 = r_ux__53;
c_uy__54 = r_uy__53;
c_uz__54 = r_uz__53;
c_sz__54 = r_sz__53;
c_sr__54 = r_sr__53;
c_sleftz__54 = r_sleftz__53;
c_sleftr__54 = r_sleftr__53;
c_weight__54 = r_weight__53;
c_layer__54 = r_layer__53;
c_dead__54 = r_dead__53;
c_hit__54 = r_hit__53;
c_diff__54 = r_diff__53;
c_dl_b__54 = r_dl_b__53;
c_numer__54 = r_numer__53;
c_z1__54 = r_z1__53;
c_z0__54 = r_z0__53;
c_mut__54 = r_mut__53;
//for 55
c_x__55 = r_x__54;
c_y__55 = r_y__54;
c_z__55 = r_z__54;
c_ux__55 = r_ux__54;
c_uy__55 = r_uy__54;
c_uz__55 = r_uz__54;
c_sz__55 = r_sz__54;
c_sr__55 = r_sr__54;
c_sleftz__55 = r_sleftz__54;
c_sleftr__55 = r_sleftr__54;
c_weight__55 = r_weight__54;
c_layer__55 = r_layer__54;
c_dead__55 = r_dead__54;
c_hit__55 = r_hit__54;
c_diff__55 = r_diff__54;
c_dl_b__55 = r_dl_b__54;
c_numer__55 = r_numer__54;
c_z1__55 = r_z1__54;
c_z0__55 = r_z0__54;
c_mut__55 = r_mut__54;
//for 56
c_x__56 = r_x__55;
c_y__56 = r_y__55;
c_z__56 = r_z__55;
c_ux__56 = r_ux__55;
c_uy__56 = r_uy__55;
c_uz__56 = r_uz__55;
c_sz__56 = r_sz__55;
c_sr__56 = r_sr__55;
c_sleftz__56 = r_sleftz__55;
c_sleftr__56 = r_sleftr__55;
c_weight__56 = r_weight__55;
c_layer__56 = r_layer__55;
c_dead__56 = r_dead__55;
c_hit__56 = r_hit__55;
c_diff__56 = r_diff__55;
c_dl_b__56 = r_dl_b__55;
c_numer__56 = r_numer__55;
c_z1__56 = r_z1__55;
c_z0__56 = r_z0__55;
c_mut__56 = r_mut__55;
//for 57
c_x__57 = r_x__56;
c_y__57 = r_y__56;
c_z__57 = r_z__56;
c_ux__57 = r_ux__56;
c_uy__57 = r_uy__56;
c_uz__57 = r_uz__56;
c_sz__57 = r_sz__56;
c_sr__57 = r_sr__56;
c_sleftz__57 = r_sleftz__56;
c_sleftr__57 = r_sleftr__56;
c_weight__57 = r_weight__56;
c_layer__57 = r_layer__56;
c_dead__57 = r_dead__56;
c_hit__57 = r_hit__56;
c_diff__57 = r_diff__56;
c_dl_b__57 = r_dl_b__56;
c_numer__57 = r_numer__56;
c_z1__57 = r_z1__56;
c_z0__57 = r_z0__56;
c_mut__57 = r_mut__56;
//for 58
c_x__58 = r_x__57;
c_y__58 = r_y__57;
c_z__58 = r_z__57;
c_ux__58 = r_ux__57;
c_uy__58 = r_uy__57;
c_uz__58 = r_uz__57;
c_sz__58 = r_sz__57;
c_sr__58 = r_sr__57;
c_sleftz__58 = r_sleftz__57;
c_sleftr__58 = r_sleftr__57;
c_weight__58 = r_weight__57;
c_layer__58 = r_layer__57;
c_dead__58 = r_dead__57;
c_hit__58 = r_hit__57;
c_diff__58 = r_diff__57;
c_dl_b__58 = r_dl_b__57;
c_numer__58 = r_numer__57;
c_z1__58 = r_z1__57;
c_z0__58 = r_z0__57;
c_mut__58 = r_mut__57;
//for 59
c_x__59 = r_x__58;
c_y__59 = r_y__58;
c_z__59 = r_z__58;
c_ux__59 = r_ux__58;
c_uy__59 = r_uy__58;
c_uz__59 = r_uz__58;
c_sz__59 = r_sz__58;
c_sr__59 = r_sr__58;
c_sleftz__59 = r_sleftz__58;
c_sleftr__59 = r_sleftr__58;
c_weight__59 = r_weight__58;
c_layer__59 = r_layer__58;
c_dead__59 = r_dead__58;
c_hit__59 = r_hit__58;
c_diff__59 = r_diff__58;
c_dl_b__59 = r_dl_b__58;
c_numer__59 = r_numer__58;
c_z1__59 = r_z1__58;
c_z0__59 = r_z0__58;
c_mut__59 = r_mut__58;
// Pull out and replace signals in pipe
/* STAGE 1: Division completed */
c_dl_b__30 = quotient_div1[32:1];
c_diff__30 = c_sz__30 - c_dl_b__30;
if(c_uz__30 != 32'b0 && c_sz__30 > c_dl_b__30 && quotient_div1[63:32] == 32'b0)
begin
/* not horizontal & crossing. */
c_hit__30 = 1'b1;
end
//Remove blocking on c_hit__30
else
begin
c_hit__30 = r_hit__29;
end
/* STAGE 2: First multiply completed */
if(c_hit__31 == 1'b1)
begin
/*step left = (original step - distance travelled) * scaling factor*/
c_sleftz__31 = sleftz_big[2*`BIT_WIDTH-2:`BIT_WIDTH - 1];
if(c_uz__31[`BIT_WIDTH-1] == 1'b0)
begin
c_z__31 = c_z1__31;
end
else
begin
c_z__31 = c_z0__31;
end
c_sz__31 = c_dl_b__31;
c_sr__31 = sr_big[2*`BIT_WIDTH-2 - `ASPECT_RATIO:`BIT_WIDTH - 1 - `ASPECT_RATIO];
end
//Remove blocking on c_sleftz_31, c_sr__31, c_sz__31, c_z__31
else
begin
c_sleftz__31 = r_sleftz__30;
c_sr__31 = r_sr__30;
c_sz__31 = r_sz__30;
c_z__31 = r_z__30;
end
/* STAGE 3: Second multiply completed */
if(c_hit__32 == 1'b1)
begin
/*additional scaling factor on dl_b to switch to r-dimension scale*/
c_sleftr__32 = sleftr_big[2*`BIT_WIDTH-2 - `ASPECT_RATIO:`BIT_WIDTH - 1 - `ASPECT_RATIO];
end
//Remove blocking on c_sleftr__32
else
begin
c_sleftr__32 = r_sleftr__31;
end
end
// latch values
always @ (posedge clock)
begin
// for(j = 0; j < `TOTAL_LATENCY; j = j + 1)
// begin
// if (reset)
// begin
// r_x[j] <= 32'b0;
// r_y[j] <= 32'b0;
// r_z[j] <= 32'b0;
// r_ux[j] <= 32'b0;
// r_uy[j] <= 32'b0;
// r_uz[j] <= 32'b0;
// r_sz[j] <= 32'b0;
// r_sr[j] <= 32'b0;
// r_sleftz[j] <= 32'b0;
// r_sleftr[j] <= 32'b0;
// r_weight[j] <= 32'b0;
// r_layer[j] <= 3'b0;
// r_dead[j] <= 1'b1;
// r_hit[j] <= 1'b0;
// r_diff[j] <= 32'b0;
// r_dl_b[j] <= 32'b0;
// r_numer[j] <= 64'b0;
// r_z1[j] <= 32'b0;
// r_z0[j] <= 32'b0;
// r_mut[j] <= 32'b0;
// end
// else
// begin
// if(enable)
// begin
// r_x[j] <= c_x[j];
// r_y[j] <= c_y[j];
// r_z[j] <= c_z[j];
// r_ux[j] <= c_ux[j];
// r_uy[j] <= c_uy[j];
// r_uz[j] <= c_uz[j];
// r_sz[j] <= c_sz[j];
// r_sr[j] <= c_sr[j];
// r_sleftz[j] <= c_sleftz[j];
// r_sleftr[j] <= c_sleftr[j];
// r_weight[j] <= c_weight[j];
// r_layer[j] <= c_layer[j];
// r_dead[j] <= c_dead[j];
// r_hit[j] <= c_hit[j];
// r_diff[j] <= c_diff[j];
// r_dl_b[j] <= c_dl_b[j];
// r_numer[j] <= c_numer[j];
// r_z1[j] <= c_z1[j];
// r_z0[j] <= c_z0[j];
// r_mut[j] <= c_mut[j];
// end
// end
// end
if(reset)
begin
//Instantiate all 60 aspects of loop
r_x__59 <= 32'b00000000000000000000000000000000;
r_y__59 <= 32'b00000000000000000000000000000000;
r_z__59 <= 32'b00000000000000000000000000000000;
r_ux__59 <= 32'b00000000000000000000000000000000;
r_uy__59 <= 32'b00000000000000000000000000000000;
r_uz__59 <= 32'b00000000000000000000000000000000;
r_sz__59 <= 32'b00000000000000000000000000000000;
r_sr__59 <= 32'b00000000000000000000000000000000;
r_sleftz__59 <= 32'b00000000000000000000000000000000;
r_sleftr__59 <= 32'b00000000000000000000000000000000;
r_weight__59 <= 32'b00000000000000000000000000000000;
r_layer__59 <= 3'b000;
r_dead__59 <= 1'b1;
r_hit__59 <= 1'b0;
r_diff__59 <= 32'b00000000000000000000000000000000;
r_dl_b__59 <= 32'b00000000000000000000000000000000;
r_numer__59 <= 0;
r_z1__59 <= 32'b00000000000000000000000000000000;
r_z0__59 <= 32'b00000000000000000000000000000000;
r_mut__59 <= 32'b00000000000000000000000000000000;
r_x__58 <= 32'b00000000000000000000000000000000;
r_y__58 <= 32'b00000000000000000000000000000000;
r_z__58 <= 32'b00000000000000000000000000000000;
r_ux__58 <= 32'b00000000000000000000000000000000;
r_uy__58 <= 32'b00000000000000000000000000000000;
r_uz__58 <= 32'b00000000000000000000000000000000;
r_sz__58 <= 32'b00000000000000000000000000000000;
r_sr__58 <= 32'b00000000000000000000000000000000;
r_sleftz__58 <= 32'b00000000000000000000000000000000;
r_sleftr__58 <= 32'b00000000000000000000000000000000;
r_weight__58 <= 32'b00000000000000000000000000000000;
r_layer__58 <= 3'b000;
r_dead__58 <= 1'b1;
r_hit__58 <= 1'b0;
r_diff__58 <= 32'b00000000000000000000000000000000;
r_dl_b__58 <= 32'b00000000000000000000000000000000;
r_numer__58 <= 0;
r_z1__58 <= 32'b00000000000000000000000000000000;
r_z0__58 <= 32'b00000000000000000000000000000000;
r_mut__58 <= 32'b00000000000000000000000000000000;
r_x__57 <= 32'b00000000000000000000000000000000;
r_y__57 <= 32'b00000000000000000000000000000000;
r_z__57 <= 32'b00000000000000000000000000000000;
r_ux__57 <= 32'b00000000000000000000000000000000;
r_uy__57 <= 32'b00000000000000000000000000000000;
r_uz__57 <= 32'b00000000000000000000000000000000;
r_sz__57 <= 32'b00000000000000000000000000000000;
r_sr__57 <= 32'b00000000000000000000000000000000;
r_sleftz__57 <= 32'b00000000000000000000000000000000;
r_sleftr__57 <= 32'b00000000000000000000000000000000;
r_weight__57 <= 32'b00000000000000000000000000000000;
r_layer__57 <= 3'b000;
r_dead__57 <= 1'b1;
r_hit__57 <= 1'b0;
r_diff__57 <= 32'b00000000000000000000000000000000;
r_dl_b__57 <= 32'b00000000000000000000000000000000;
r_numer__57 <= 0;
r_z1__57 <= 32'b00000000000000000000000000000000;
r_z0__57 <= 32'b00000000000000000000000000000000;
r_mut__57 <= 32'b00000000000000000000000000000000;
r_x__56 <= 32'b00000000000000000000000000000000;
r_y__56 <= 32'b00000000000000000000000000000000;
r_z__56 <= 32'b00000000000000000000000000000000;
r_ux__56 <= 32'b00000000000000000000000000000000;
r_uy__56 <= 32'b00000000000000000000000000000000;
r_uz__56 <= 32'b00000000000000000000000000000000;
r_sz__56 <= 32'b00000000000000000000000000000000;
r_sr__56 <= 32'b00000000000000000000000000000000;
r_sleftz__56 <= 32'b00000000000000000000000000000000;
r_sleftr__56 <= 32'b00000000000000000000000000000000;
r_weight__56 <= 32'b00000000000000000000000000000000;
r_layer__56 <= 3'b000;
r_dead__56 <= 1'b1;
r_hit__56 <= 1'b0;
r_diff__56 <= 32'b00000000000000000000000000000000;
r_dl_b__56 <= 32'b00000000000000000000000000000000;
r_numer__56 <= 0;
r_z1__56 <= 32'b00000000000000000000000000000000;
r_z0__56 <= 32'b00000000000000000000000000000000;
r_mut__56 <= 32'b00000000000000000000000000000000;
r_x__55 <= 32'b00000000000000000000000000000000;
r_y__55 <= 32'b00000000000000000000000000000000;
r_z__55 <= 32'b00000000000000000000000000000000;
r_ux__55 <= 32'b00000000000000000000000000000000;
r_uy__55 <= 32'b00000000000000000000000000000000;
r_uz__55 <= 32'b00000000000000000000000000000000;
r_sz__55 <= 32'b00000000000000000000000000000000;
r_sr__55 <= 32'b00000000000000000000000000000000;
r_sleftz__55 <= 32'b00000000000000000000000000000000;
r_sleftr__55 <= 32'b00000000000000000000000000000000;
r_weight__55 <= 32'b00000000000000000000000000000000;
r_layer__55 <= 3'b000;
r_dead__55 <= 1'b1;
r_hit__55 <= 1'b0;
r_diff__55 <= 32'b00000000000000000000000000000000;
r_dl_b__55 <= 32'b00000000000000000000000000000000;
r_numer__55 <= 0;
r_z1__55 <= 32'b00000000000000000000000000000000;
r_z0__55 <= 32'b00000000000000000000000000000000;
r_mut__55 <= 32'b00000000000000000000000000000000;
r_x__54 <= 32'b00000000000000000000000000000000;
r_y__54 <= 32'b00000000000000000000000000000000;
r_z__54 <= 32'b00000000000000000000000000000000;
r_ux__54 <= 32'b00000000000000000000000000000000;
r_uy__54 <= 32'b00000000000000000000000000000000;
r_uz__54 <= 32'b00000000000000000000000000000000;
r_sz__54 <= 32'b00000000000000000000000000000000;
r_sr__54 <= 32'b00000000000000000000000000000000;
r_sleftz__54 <= 32'b00000000000000000000000000000000;
r_sleftr__54 <= 32'b00000000000000000000000000000000;
r_weight__54 <= 32'b00000000000000000000000000000000;
r_layer__54 <= 3'b000;
r_dead__54 <= 1'b1;
r_hit__54 <= 1'b0;
r_diff__54 <= 32'b00000000000000000000000000000000;
r_dl_b__54 <= 32'b00000000000000000000000000000000;
r_numer__54 <= 0;
r_z1__54 <= 32'b00000000000000000000000000000000;
r_z0__54 <= 32'b00000000000000000000000000000000;
r_mut__54 <= 32'b00000000000000000000000000000000;
r_x__53 <= 32'b00000000000000000000000000000000;
r_y__53 <= 32'b00000000000000000000000000000000;
r_z__53 <= 32'b00000000000000000000000000000000;
r_ux__53 <= 32'b00000000000000000000000000000000;
r_uy__53 <= 32'b00000000000000000000000000000000;
r_uz__53 <= 32'b00000000000000000000000000000000;
r_sz__53 <= 32'b00000000000000000000000000000000;
r_sr__53 <= 32'b00000000000000000000000000000000;
r_sleftz__53 <= 32'b00000000000000000000000000000000;
r_sleftr__53 <= 32'b00000000000000000000000000000000;
r_weight__53 <= 32'b00000000000000000000000000000000;
r_layer__53 <= 3'b000;
r_dead__53 <= 1'b1;
r_hit__53 <= 1'b0;
r_diff__53 <= 32'b00000000000000000000000000000000;
r_dl_b__53 <= 32'b00000000000000000000000000000000;
r_numer__53 <= 0;
r_z1__53 <= 32'b00000000000000000000000000000000;
r_z0__53 <= 32'b00000000000000000000000000000000;
r_mut__53 <= 32'b00000000000000000000000000000000;
r_x__52 <= 32'b00000000000000000000000000000000;
r_y__52 <= 32'b00000000000000000000000000000000;
r_z__52 <= 32'b00000000000000000000000000000000;
r_ux__52 <= 32'b00000000000000000000000000000000;
r_uy__52 <= 32'b00000000000000000000000000000000;
r_uz__52 <= 32'b00000000000000000000000000000000;
r_sz__52 <= 32'b00000000000000000000000000000000;
r_sr__52 <= 32'b00000000000000000000000000000000;
r_sleftz__52 <= 32'b00000000000000000000000000000000;
r_sleftr__52 <= 32'b00000000000000000000000000000000;
r_weight__52 <= 32'b00000000000000000000000000000000;
r_layer__52 <= 3'b000;
r_dead__52 <= 1'b1;
r_hit__52 <= 1'b0;
r_diff__52 <= 32'b00000000000000000000000000000000;
r_dl_b__52 <= 32'b00000000000000000000000000000000;
r_numer__52 <= 0;
r_z1__52 <= 32'b00000000000000000000000000000000;
r_z0__52 <= 32'b00000000000000000000000000000000;
r_mut__52 <= 32'b00000000000000000000000000000000;
r_x__51 <= 32'b00000000000000000000000000000000;
r_y__51 <= 32'b00000000000000000000000000000000;
r_z__51 <= 32'b00000000000000000000000000000000;
r_ux__51 <= 32'b00000000000000000000000000000000;
r_uy__51 <= 32'b00000000000000000000000000000000;
r_uz__51 <= 32'b00000000000000000000000000000000;
r_sz__51 <= 32'b00000000000000000000000000000000;
r_sr__51 <= 32'b00000000000000000000000000000000;
r_sleftz__51 <= 32'b00000000000000000000000000000000;
r_sleftr__51 <= 32'b00000000000000000000000000000000;
r_weight__51 <= 32'b00000000000000000000000000000000;
r_layer__51 <= 3'b000;
r_dead__51 <= 1'b1;
r_hit__51 <= 1'b0;
r_diff__51 <= 32'b00000000000000000000000000000000;
r_dl_b__51 <= 32'b00000000000000000000000000000000;
r_numer__51 <= 0;
r_z1__51 <= 32'b00000000000000000000000000000000;
r_z0__51 <= 32'b00000000000000000000000000000000;
r_mut__51 <= 32'b00000000000000000000000000000000;
r_x__50 <= 32'b00000000000000000000000000000000;
r_y__50 <= 32'b00000000000000000000000000000000;
r_z__50 <= 32'b00000000000000000000000000000000;
r_ux__50 <= 32'b00000000000000000000000000000000;
r_uy__50 <= 32'b00000000000000000000000000000000;
r_uz__50 <= 32'b00000000000000000000000000000000;
r_sz__50 <= 32'b00000000000000000000000000000000;
r_sr__50 <= 32'b00000000000000000000000000000000;
r_sleftz__50 <= 32'b00000000000000000000000000000000;
r_sleftr__50 <= 32'b00000000000000000000000000000000;
r_weight__50 <= 32'b00000000000000000000000000000000;
r_layer__50 <= 3'b000;
r_dead__50 <= 1'b1;
r_hit__50 <= 1'b0;
r_diff__50 <= 32'b00000000000000000000000000000000;
r_dl_b__50 <= 32'b00000000000000000000000000000000;
r_numer__50 <= 0;
r_z1__50 <= 32'b00000000000000000000000000000000;
r_z0__50 <= 32'b00000000000000000000000000000000;
r_mut__50 <= 32'b00000000000000000000000000000000;
r_x__49 <= 32'b00000000000000000000000000000000;
r_y__49 <= 32'b00000000000000000000000000000000;
r_z__49 <= 32'b00000000000000000000000000000000;
r_ux__49 <= 32'b00000000000000000000000000000000;
r_uy__49 <= 32'b00000000000000000000000000000000;
r_uz__49 <= 32'b00000000000000000000000000000000;
r_sz__49 <= 32'b00000000000000000000000000000000;
r_sr__49 <= 32'b00000000000000000000000000000000;
r_sleftz__49 <= 32'b00000000000000000000000000000000;
r_sleftr__49 <= 32'b00000000000000000000000000000000;
r_weight__49 <= 32'b00000000000000000000000000000000;
r_layer__49 <= 3'b000;
r_dead__49 <= 1'b1;
r_hit__49 <= 1'b0;
r_diff__49 <= 32'b00000000000000000000000000000000;
r_dl_b__49 <= 32'b00000000000000000000000000000000;
r_numer__49 <= 0;
r_z1__49 <= 32'b00000000000000000000000000000000;
r_z0__49 <= 32'b00000000000000000000000000000000;
r_mut__49 <= 32'b00000000000000000000000000000000;
r_x__48 <= 32'b00000000000000000000000000000000;
r_y__48 <= 32'b00000000000000000000000000000000;
r_z__48 <= 32'b00000000000000000000000000000000;
r_ux__48 <= 32'b00000000000000000000000000000000;
r_uy__48 <= 32'b00000000000000000000000000000000;
r_uz__48 <= 32'b00000000000000000000000000000000;
r_sz__48 <= 32'b00000000000000000000000000000000;
r_sr__48 <= 32'b00000000000000000000000000000000;
r_sleftz__48 <= 32'b00000000000000000000000000000000;
r_sleftr__48 <= 32'b00000000000000000000000000000000;
r_weight__48 <= 32'b00000000000000000000000000000000;
r_layer__48 <= 3'b000;
r_dead__48 <= 1'b1;
r_hit__48 <= 1'b0;
r_diff__48 <= 32'b00000000000000000000000000000000;
r_dl_b__48 <= 32'b00000000000000000000000000000000;
r_numer__48 <= 0;
r_z1__48 <= 32'b00000000000000000000000000000000;
r_z0__48 <= 32'b00000000000000000000000000000000;
r_mut__48 <= 32'b00000000000000000000000000000000;
r_x__47 <= 32'b00000000000000000000000000000000;
r_y__47 <= 32'b00000000000000000000000000000000;
r_z__47 <= 32'b00000000000000000000000000000000;
r_ux__47 <= 32'b00000000000000000000000000000000;
r_uy__47 <= 32'b00000000000000000000000000000000;
r_uz__47 <= 32'b00000000000000000000000000000000;
r_sz__47 <= 32'b00000000000000000000000000000000;
r_sr__47 <= 32'b00000000000000000000000000000000;
r_sleftz__47 <= 32'b00000000000000000000000000000000;
r_sleftr__47 <= 32'b00000000000000000000000000000000;
r_weight__47 <= 32'b00000000000000000000000000000000;
r_layer__47 <= 3'b000;
r_dead__47 <= 1'b1;
r_hit__47 <= 1'b0;
r_diff__47 <= 32'b00000000000000000000000000000000;
r_dl_b__47 <= 32'b00000000000000000000000000000000;
r_numer__47 <= 0;
r_z1__47 <= 32'b00000000000000000000000000000000;
r_z0__47 <= 32'b00000000000000000000000000000000;
r_mut__47 <= 32'b00000000000000000000000000000000;
r_x__46 <= 32'b00000000000000000000000000000000;
r_y__46 <= 32'b00000000000000000000000000000000;
r_z__46 <= 32'b00000000000000000000000000000000;
r_ux__46 <= 32'b00000000000000000000000000000000;
r_uy__46 <= 32'b00000000000000000000000000000000;
r_uz__46 <= 32'b00000000000000000000000000000000;
r_sz__46 <= 32'b00000000000000000000000000000000;
r_sr__46 <= 32'b00000000000000000000000000000000;
r_sleftz__46 <= 32'b00000000000000000000000000000000;
r_sleftr__46 <= 32'b00000000000000000000000000000000;
r_weight__46 <= 32'b00000000000000000000000000000000;
r_layer__46 <= 3'b000;
r_dead__46 <= 1'b1;
r_hit__46 <= 1'b0;
r_diff__46 <= 32'b00000000000000000000000000000000;
r_dl_b__46 <= 32'b00000000000000000000000000000000;
r_numer__46 <= 0;
r_z1__46 <= 32'b00000000000000000000000000000000;
r_z0__46 <= 32'b00000000000000000000000000000000;
r_mut__46 <= 32'b00000000000000000000000000000000;
r_x__45 <= 32'b00000000000000000000000000000000;
r_y__45 <= 32'b00000000000000000000000000000000;
r_z__45 <= 32'b00000000000000000000000000000000;
r_ux__45 <= 32'b00000000000000000000000000000000;
r_uy__45 <= 32'b00000000000000000000000000000000;
r_uz__45 <= 32'b00000000000000000000000000000000;
r_sz__45 <= 32'b00000000000000000000000000000000;
r_sr__45 <= 32'b00000000000000000000000000000000;
r_sleftz__45 <= 32'b00000000000000000000000000000000;
r_sleftr__45 <= 32'b00000000000000000000000000000000;
r_weight__45 <= 32'b00000000000000000000000000000000;
r_layer__45 <= 3'b000;
r_dead__45 <= 1'b1;
r_hit__45 <= 1'b0;
r_diff__45 <= 32'b00000000000000000000000000000000;
r_dl_b__45 <= 32'b00000000000000000000000000000000;
r_numer__45 <= 0;
r_z1__45 <= 32'b00000000000000000000000000000000;
r_z0__45 <= 32'b00000000000000000000000000000000;
r_mut__45 <= 32'b00000000000000000000000000000000;
r_x__44 <= 32'b00000000000000000000000000000000;
r_y__44 <= 32'b00000000000000000000000000000000;
r_z__44 <= 32'b00000000000000000000000000000000;
r_ux__44 <= 32'b00000000000000000000000000000000;
r_uy__44 <= 32'b00000000000000000000000000000000;
r_uz__44 <= 32'b00000000000000000000000000000000;
r_sz__44 <= 32'b00000000000000000000000000000000;
r_sr__44 <= 32'b00000000000000000000000000000000;
r_sleftz__44 <= 32'b00000000000000000000000000000000;
r_sleftr__44 <= 32'b00000000000000000000000000000000;
r_weight__44 <= 32'b00000000000000000000000000000000;
r_layer__44 <= 3'b000;
r_dead__44 <= 1'b1;
r_hit__44 <= 1'b0;
r_diff__44 <= 32'b00000000000000000000000000000000;
r_dl_b__44 <= 32'b00000000000000000000000000000000;
r_numer__44 <= 0;
r_z1__44 <= 32'b00000000000000000000000000000000;
r_z0__44 <= 32'b00000000000000000000000000000000;
r_mut__44 <= 32'b00000000000000000000000000000000;
r_x__43 <= 32'b00000000000000000000000000000000;
r_y__43 <= 32'b00000000000000000000000000000000;
r_z__43 <= 32'b00000000000000000000000000000000;
r_ux__43 <= 32'b00000000000000000000000000000000;
r_uy__43 <= 32'b00000000000000000000000000000000;
r_uz__43 <= 32'b00000000000000000000000000000000;
r_sz__43 <= 32'b00000000000000000000000000000000;
r_sr__43 <= 32'b00000000000000000000000000000000;
r_sleftz__43 <= 32'b00000000000000000000000000000000;
r_sleftr__43 <= 32'b00000000000000000000000000000000;
r_weight__43 <= 32'b00000000000000000000000000000000;
r_layer__43 <= 3'b000;
r_dead__43 <= 1'b1;
r_hit__43 <= 1'b0;
r_diff__43 <= 32'b00000000000000000000000000000000;
r_dl_b__43 <= 32'b00000000000000000000000000000000;
r_numer__43 <= 0;
r_z1__43 <= 32'b00000000000000000000000000000000;
r_z0__43 <= 32'b00000000000000000000000000000000;
r_mut__43 <= 32'b00000000000000000000000000000000;
r_x__42 <= 32'b00000000000000000000000000000000;
r_y__42 <= 32'b00000000000000000000000000000000;
r_z__42 <= 32'b00000000000000000000000000000000;
r_ux__42 <= 32'b00000000000000000000000000000000;
r_uy__42 <= 32'b00000000000000000000000000000000;
r_uz__42 <= 32'b00000000000000000000000000000000;
r_sz__42 <= 32'b00000000000000000000000000000000;
r_sr__42 <= 32'b00000000000000000000000000000000;
r_sleftz__42 <= 32'b00000000000000000000000000000000;
r_sleftr__42 <= 32'b00000000000000000000000000000000;
r_weight__42 <= 32'b00000000000000000000000000000000;
r_layer__42 <= 3'b000;
r_dead__42 <= 1'b1;
r_hit__42 <= 1'b0;
r_diff__42 <= 32'b00000000000000000000000000000000;
r_dl_b__42 <= 32'b00000000000000000000000000000000;
r_numer__42 <= 0;
r_z1__42 <= 32'b00000000000000000000000000000000;
r_z0__42 <= 32'b00000000000000000000000000000000;
r_mut__42 <= 32'b00000000000000000000000000000000;
r_x__41 <= 32'b00000000000000000000000000000000;
r_y__41 <= 32'b00000000000000000000000000000000;
r_z__41 <= 32'b00000000000000000000000000000000;
r_ux__41 <= 32'b00000000000000000000000000000000;
r_uy__41 <= 32'b00000000000000000000000000000000;
r_uz__41 <= 32'b00000000000000000000000000000000;
r_sz__41 <= 32'b00000000000000000000000000000000;
r_sr__41 <= 32'b00000000000000000000000000000000;
r_sleftz__41 <= 32'b00000000000000000000000000000000;
r_sleftr__41 <= 32'b00000000000000000000000000000000;
r_weight__41 <= 32'b00000000000000000000000000000000;
r_layer__41 <= 3'b000;
r_dead__41 <= 1'b1;
r_hit__41 <= 1'b0;
r_diff__41 <= 32'b00000000000000000000000000000000;
r_dl_b__41 <= 32'b00000000000000000000000000000000;
r_numer__41 <= 0;
r_z1__41 <= 32'b00000000000000000000000000000000;
r_z0__41 <= 32'b00000000000000000000000000000000;
r_mut__41 <= 32'b00000000000000000000000000000000;
r_x__40 <= 32'b00000000000000000000000000000000;
r_y__40 <= 32'b00000000000000000000000000000000;
r_z__40 <= 32'b00000000000000000000000000000000;
r_ux__40 <= 32'b00000000000000000000000000000000;
r_uy__40 <= 32'b00000000000000000000000000000000;
r_uz__40 <= 32'b00000000000000000000000000000000;
r_sz__40 <= 32'b00000000000000000000000000000000;
r_sr__40 <= 32'b00000000000000000000000000000000;
r_sleftz__40 <= 32'b00000000000000000000000000000000;
r_sleftr__40 <= 32'b00000000000000000000000000000000;
r_weight__40 <= 32'b00000000000000000000000000000000;
r_layer__40 <= 3'b000;
r_dead__40 <= 1'b1;
r_hit__40 <= 1'b0;
r_diff__40 <= 32'b00000000000000000000000000000000;
r_dl_b__40 <= 32'b00000000000000000000000000000000;
r_numer__40 <= 0;
r_z1__40 <= 32'b00000000000000000000000000000000;
r_z0__40 <= 32'b00000000000000000000000000000000;
r_mut__40 <= 32'b00000000000000000000000000000000;
r_x__39 <= 32'b00000000000000000000000000000000;
r_y__39 <= 32'b00000000000000000000000000000000;
r_z__39 <= 32'b00000000000000000000000000000000;
r_ux__39 <= 32'b00000000000000000000000000000000;
r_uy__39 <= 32'b00000000000000000000000000000000;
r_uz__39 <= 32'b00000000000000000000000000000000;
r_sz__39 <= 32'b00000000000000000000000000000000;
r_sr__39 <= 32'b00000000000000000000000000000000;
r_sleftz__39 <= 32'b00000000000000000000000000000000;
r_sleftr__39 <= 32'b00000000000000000000000000000000;
r_weight__39 <= 32'b00000000000000000000000000000000;
r_layer__39 <= 3'b000;
r_dead__39 <= 1'b1;
r_hit__39 <= 1'b0;
r_diff__39 <= 32'b00000000000000000000000000000000;
r_dl_b__39 <= 32'b00000000000000000000000000000000;
r_numer__39 <= 0;
r_z1__39 <= 32'b00000000000000000000000000000000;
r_z0__39 <= 32'b00000000000000000000000000000000;
r_mut__39 <= 32'b00000000000000000000000000000000;
r_x__38 <= 32'b00000000000000000000000000000000;
r_y__38 <= 32'b00000000000000000000000000000000;
r_z__38 <= 32'b00000000000000000000000000000000;
r_ux__38 <= 32'b00000000000000000000000000000000;
r_uy__38 <= 32'b00000000000000000000000000000000;
r_uz__38 <= 32'b00000000000000000000000000000000;
r_sz__38 <= 32'b00000000000000000000000000000000;
r_sr__38 <= 32'b00000000000000000000000000000000;
r_sleftz__38 <= 32'b00000000000000000000000000000000;
r_sleftr__38 <= 32'b00000000000000000000000000000000;
r_weight__38 <= 32'b00000000000000000000000000000000;
r_layer__38 <= 3'b000;
r_dead__38 <= 1'b1;
r_hit__38 <= 1'b0;
r_diff__38 <= 32'b00000000000000000000000000000000;
r_dl_b__38 <= 32'b00000000000000000000000000000000;
r_numer__38 <= 0;
r_z1__38 <= 32'b00000000000000000000000000000000;
r_z0__38 <= 32'b00000000000000000000000000000000;
r_mut__38 <= 32'b00000000000000000000000000000000;
r_x__37 <= 32'b00000000000000000000000000000000;
r_y__37 <= 32'b00000000000000000000000000000000;
r_z__37 <= 32'b00000000000000000000000000000000;
r_ux__37 <= 32'b00000000000000000000000000000000;
r_uy__37 <= 32'b00000000000000000000000000000000;
r_uz__37 <= 32'b00000000000000000000000000000000;
r_sz__37 <= 32'b00000000000000000000000000000000;
r_sr__37 <= 32'b00000000000000000000000000000000;
r_sleftz__37 <= 32'b00000000000000000000000000000000;
r_sleftr__37 <= 32'b00000000000000000000000000000000;
r_weight__37 <= 32'b00000000000000000000000000000000;
r_layer__37 <= 3'b000;
r_dead__37 <= 1'b1;
r_hit__37 <= 1'b0;
r_diff__37 <= 32'b00000000000000000000000000000000;
r_dl_b__37 <= 32'b00000000000000000000000000000000;
r_numer__37 <= 0;
r_z1__37 <= 32'b00000000000000000000000000000000;
r_z0__37 <= 32'b00000000000000000000000000000000;
r_mut__37 <= 32'b00000000000000000000000000000000;
r_x__36 <= 32'b00000000000000000000000000000000;
r_y__36 <= 32'b00000000000000000000000000000000;
r_z__36 <= 32'b00000000000000000000000000000000;
r_ux__36 <= 32'b00000000000000000000000000000000;
r_uy__36 <= 32'b00000000000000000000000000000000;
r_uz__36 <= 32'b00000000000000000000000000000000;
r_sz__36 <= 32'b00000000000000000000000000000000;
r_sr__36 <= 32'b00000000000000000000000000000000;
r_sleftz__36 <= 32'b00000000000000000000000000000000;
r_sleftr__36 <= 32'b00000000000000000000000000000000;
r_weight__36 <= 32'b00000000000000000000000000000000;
r_layer__36 <= 3'b000;
r_dead__36 <= 1'b1;
r_hit__36 <= 1'b0;
r_diff__36 <= 32'b00000000000000000000000000000000;
r_dl_b__36 <= 32'b00000000000000000000000000000000;
r_numer__36 <= 0;
r_z1__36 <= 32'b00000000000000000000000000000000;
r_z0__36 <= 32'b00000000000000000000000000000000;
r_mut__36 <= 32'b00000000000000000000000000000000;
r_x__35 <= 32'b00000000000000000000000000000000;
r_y__35 <= 32'b00000000000000000000000000000000;
r_z__35 <= 32'b00000000000000000000000000000000;
r_ux__35 <= 32'b00000000000000000000000000000000;
r_uy__35 <= 32'b00000000000000000000000000000000;
r_uz__35 <= 32'b00000000000000000000000000000000;
r_sz__35 <= 32'b00000000000000000000000000000000;
r_sr__35 <= 32'b00000000000000000000000000000000;
r_sleftz__35 <= 32'b00000000000000000000000000000000;
r_sleftr__35 <= 32'b00000000000000000000000000000000;
r_weight__35 <= 32'b00000000000000000000000000000000;
r_layer__35 <= 3'b000;
r_dead__35 <= 1'b1;
r_hit__35 <= 1'b0;
r_diff__35 <= 32'b00000000000000000000000000000000;
r_dl_b__35 <= 32'b00000000000000000000000000000000;
r_numer__35 <= 0;
r_z1__35 <= 32'b00000000000000000000000000000000;
r_z0__35 <= 32'b00000000000000000000000000000000;
r_mut__35 <= 32'b00000000000000000000000000000000;
r_x__34 <= 32'b00000000000000000000000000000000;
r_y__34 <= 32'b00000000000000000000000000000000;
r_z__34 <= 32'b00000000000000000000000000000000;
r_ux__34 <= 32'b00000000000000000000000000000000;
r_uy__34 <= 32'b00000000000000000000000000000000;
r_uz__34 <= 32'b00000000000000000000000000000000;
r_sz__34 <= 32'b00000000000000000000000000000000;
r_sr__34 <= 32'b00000000000000000000000000000000;
r_sleftz__34 <= 32'b00000000000000000000000000000000;
r_sleftr__34 <= 32'b00000000000000000000000000000000;
r_weight__34 <= 32'b00000000000000000000000000000000;
r_layer__34 <= 3'b000;
r_dead__34 <= 1'b1;
r_hit__34 <= 1'b0;
r_diff__34 <= 32'b00000000000000000000000000000000;
r_dl_b__34 <= 32'b00000000000000000000000000000000;
r_numer__34 <= 0;
r_z1__34 <= 32'b00000000000000000000000000000000;
r_z0__34 <= 32'b00000000000000000000000000000000;
r_mut__34 <= 32'b00000000000000000000000000000000;
r_x__33 <= 32'b00000000000000000000000000000000;
r_y__33 <= 32'b00000000000000000000000000000000;
r_z__33 <= 32'b00000000000000000000000000000000;
r_ux__33 <= 32'b00000000000000000000000000000000;
r_uy__33 <= 32'b00000000000000000000000000000000;
r_uz__33 <= 32'b00000000000000000000000000000000;
r_sz__33 <= 32'b00000000000000000000000000000000;
r_sr__33 <= 32'b00000000000000000000000000000000;
r_sleftz__33 <= 32'b00000000000000000000000000000000;
r_sleftr__33 <= 32'b00000000000000000000000000000000;
r_weight__33 <= 32'b00000000000000000000000000000000;
r_layer__33 <= 3'b000;
r_dead__33 <= 1'b1;
r_hit__33 <= 1'b0;
r_diff__33 <= 32'b00000000000000000000000000000000;
r_dl_b__33 <= 32'b00000000000000000000000000000000;
r_numer__33 <= 0;
r_z1__33 <= 32'b00000000000000000000000000000000;
r_z0__33 <= 32'b00000000000000000000000000000000;
r_mut__33 <= 32'b00000000000000000000000000000000;
r_x__32 <= 32'b00000000000000000000000000000000;
r_y__32 <= 32'b00000000000000000000000000000000;
r_z__32 <= 32'b00000000000000000000000000000000;
r_ux__32 <= 32'b00000000000000000000000000000000;
r_uy__32 <= 32'b00000000000000000000000000000000;
r_uz__32 <= 32'b00000000000000000000000000000000;
r_sz__32 <= 32'b00000000000000000000000000000000;
r_sr__32 <= 32'b00000000000000000000000000000000;
r_sleftz__32 <= 32'b00000000000000000000000000000000;
r_sleftr__32 <= 32'b00000000000000000000000000000000;
r_weight__32 <= 32'b00000000000000000000000000000000;
r_layer__32 <= 3'b000;
r_dead__32 <= 1'b1;
r_hit__32 <= 1'b0;
r_diff__32 <= 32'b00000000000000000000000000000000;
r_dl_b__32 <= 32'b00000000000000000000000000000000;
r_numer__32 <= 0;
r_z1__32 <= 32'b00000000000000000000000000000000;
r_z0__32 <= 32'b00000000000000000000000000000000;
r_mut__32 <= 32'b00000000000000000000000000000000;
r_x__31 <= 32'b00000000000000000000000000000000;
r_y__31 <= 32'b00000000000000000000000000000000;
r_z__31 <= 32'b00000000000000000000000000000000;
r_ux__31 <= 32'b00000000000000000000000000000000;
r_uy__31 <= 32'b00000000000000000000000000000000;
r_uz__31 <= 32'b00000000000000000000000000000000;
r_sz__31 <= 32'b00000000000000000000000000000000;
r_sr__31 <= 32'b00000000000000000000000000000000;
r_sleftz__31 <= 32'b00000000000000000000000000000000;
r_sleftr__31 <= 32'b00000000000000000000000000000000;
r_weight__31 <= 32'b00000000000000000000000000000000;
r_layer__31 <= 3'b000;
r_dead__31 <= 1'b1;
r_hit__31 <= 1'b0;
r_diff__31 <= 32'b00000000000000000000000000000000;
r_dl_b__31 <= 32'b00000000000000000000000000000000;
r_numer__31 <= 0;
r_z1__31 <= 32'b00000000000000000000000000000000;
r_z0__31 <= 32'b00000000000000000000000000000000;
r_mut__31 <= 32'b00000000000000000000000000000000;
r_x__30 <= 32'b00000000000000000000000000000000;
r_y__30 <= 32'b00000000000000000000000000000000;
r_z__30 <= 32'b00000000000000000000000000000000;
r_ux__30 <= 32'b00000000000000000000000000000000;
r_uy__30 <= 32'b00000000000000000000000000000000;
r_uz__30 <= 32'b00000000000000000000000000000000;
r_sz__30 <= 32'b00000000000000000000000000000000;
r_sr__30 <= 32'b00000000000000000000000000000000;
r_sleftz__30 <= 32'b00000000000000000000000000000000;
r_sleftr__30 <= 32'b00000000000000000000000000000000;
r_weight__30 <= 32'b00000000000000000000000000000000;
r_layer__30 <= 3'b000;
r_dead__30 <= 1'b1;
r_hit__30 <= 1'b0;
r_diff__30 <= 32'b00000000000000000000000000000000;
r_dl_b__30 <= 32'b00000000000000000000000000000000;
r_numer__30 <= 0;
r_z1__30 <= 32'b00000000000000000000000000000000;
r_z0__30 <= 32'b00000000000000000000000000000000;
r_mut__30 <= 32'b00000000000000000000000000000000;
r_x__29 <= 32'b00000000000000000000000000000000;
r_y__29 <= 32'b00000000000000000000000000000000;
r_z__29 <= 32'b00000000000000000000000000000000;
r_ux__29 <= 32'b00000000000000000000000000000000;
r_uy__29 <= 32'b00000000000000000000000000000000;
r_uz__29 <= 32'b00000000000000000000000000000000;
r_sz__29 <= 32'b00000000000000000000000000000000;
r_sr__29 <= 32'b00000000000000000000000000000000;
r_sleftz__29 <= 32'b00000000000000000000000000000000;
r_sleftr__29 <= 32'b00000000000000000000000000000000;
r_weight__29 <= 32'b00000000000000000000000000000000;
r_layer__29 <= 3'b000;
r_dead__29 <= 1'b1;
r_hit__29 <= 1'b0;
r_diff__29 <= 32'b00000000000000000000000000000000;
r_dl_b__29 <= 32'b00000000000000000000000000000000;
r_numer__29 <= 0;
r_z1__29 <= 32'b00000000000000000000000000000000;
r_z0__29 <= 32'b00000000000000000000000000000000;
r_mut__29 <= 32'b00000000000000000000000000000000;
r_x__28 <= 32'b00000000000000000000000000000000;
r_y__28 <= 32'b00000000000000000000000000000000;
r_z__28 <= 32'b00000000000000000000000000000000;
r_ux__28 <= 32'b00000000000000000000000000000000;
r_uy__28 <= 32'b00000000000000000000000000000000;
r_uz__28 <= 32'b00000000000000000000000000000000;
r_sz__28 <= 32'b00000000000000000000000000000000;
r_sr__28 <= 32'b00000000000000000000000000000000;
r_sleftz__28 <= 32'b00000000000000000000000000000000;
r_sleftr__28 <= 32'b00000000000000000000000000000000;
r_weight__28 <= 32'b00000000000000000000000000000000;
r_layer__28 <= 3'b000;
r_dead__28 <= 1'b1;
r_hit__28 <= 1'b0;
r_diff__28 <= 32'b00000000000000000000000000000000;
r_dl_b__28 <= 32'b00000000000000000000000000000000;
r_numer__28 <= 0;
r_z1__28 <= 32'b00000000000000000000000000000000;
r_z0__28 <= 32'b00000000000000000000000000000000;
r_mut__28 <= 32'b00000000000000000000000000000000;
r_x__27 <= 32'b00000000000000000000000000000000;
r_y__27 <= 32'b00000000000000000000000000000000;
r_z__27 <= 32'b00000000000000000000000000000000;
r_ux__27 <= 32'b00000000000000000000000000000000;
r_uy__27 <= 32'b00000000000000000000000000000000;
r_uz__27 <= 32'b00000000000000000000000000000000;
r_sz__27 <= 32'b00000000000000000000000000000000;
r_sr__27 <= 32'b00000000000000000000000000000000;
r_sleftz__27 <= 32'b00000000000000000000000000000000;
r_sleftr__27 <= 32'b00000000000000000000000000000000;
r_weight__27 <= 32'b00000000000000000000000000000000;
r_layer__27 <= 3'b000;
r_dead__27 <= 1'b1;
r_hit__27 <= 1'b0;
r_diff__27 <= 32'b00000000000000000000000000000000;
r_dl_b__27 <= 32'b00000000000000000000000000000000;
r_numer__27 <= 0;
r_z1__27 <= 32'b00000000000000000000000000000000;
r_z0__27 <= 32'b00000000000000000000000000000000;
r_mut__27 <= 32'b00000000000000000000000000000000;
r_x__26 <= 32'b00000000000000000000000000000000;
r_y__26 <= 32'b00000000000000000000000000000000;
r_z__26 <= 32'b00000000000000000000000000000000;
r_ux__26 <= 32'b00000000000000000000000000000000;
r_uy__26 <= 32'b00000000000000000000000000000000;
r_uz__26 <= 32'b00000000000000000000000000000000;
r_sz__26 <= 32'b00000000000000000000000000000000;
r_sr__26 <= 32'b00000000000000000000000000000000;
r_sleftz__26 <= 32'b00000000000000000000000000000000;
r_sleftr__26 <= 32'b00000000000000000000000000000000;
r_weight__26 <= 32'b00000000000000000000000000000000;
r_layer__26 <= 3'b000;
r_dead__26 <= 1'b1;
r_hit__26 <= 1'b0;
r_diff__26 <= 32'b00000000000000000000000000000000;
r_dl_b__26 <= 32'b00000000000000000000000000000000;
r_numer__26 <= 0;
r_z1__26 <= 32'b00000000000000000000000000000000;
r_z0__26 <= 32'b00000000000000000000000000000000;
r_mut__26 <= 32'b00000000000000000000000000000000;
r_x__25 <= 32'b00000000000000000000000000000000;
r_y__25 <= 32'b00000000000000000000000000000000;
r_z__25 <= 32'b00000000000000000000000000000000;
r_ux__25 <= 32'b00000000000000000000000000000000;
r_uy__25 <= 32'b00000000000000000000000000000000;
r_uz__25 <= 32'b00000000000000000000000000000000;
r_sz__25 <= 32'b00000000000000000000000000000000;
r_sr__25 <= 32'b00000000000000000000000000000000;
r_sleftz__25 <= 32'b00000000000000000000000000000000;
r_sleftr__25 <= 32'b00000000000000000000000000000000;
r_weight__25 <= 32'b00000000000000000000000000000000;
r_layer__25 <= 3'b000;
r_dead__25 <= 1'b1;
r_hit__25 <= 1'b0;
r_diff__25 <= 32'b00000000000000000000000000000000;
r_dl_b__25 <= 32'b00000000000000000000000000000000;
r_numer__25 <= 0;
r_z1__25 <= 32'b00000000000000000000000000000000;
r_z0__25 <= 32'b00000000000000000000000000000000;
r_mut__25 <= 32'b00000000000000000000000000000000;
r_x__24 <= 32'b00000000000000000000000000000000;
r_y__24 <= 32'b00000000000000000000000000000000;
r_z__24 <= 32'b00000000000000000000000000000000;
r_ux__24 <= 32'b00000000000000000000000000000000;
r_uy__24 <= 32'b00000000000000000000000000000000;
r_uz__24 <= 32'b00000000000000000000000000000000;
r_sz__24 <= 32'b00000000000000000000000000000000;
r_sr__24 <= 32'b00000000000000000000000000000000;
r_sleftz__24 <= 32'b00000000000000000000000000000000;
r_sleftr__24 <= 32'b00000000000000000000000000000000;
r_weight__24 <= 32'b00000000000000000000000000000000;
r_layer__24 <= 3'b000;
r_dead__24 <= 1'b1;
r_hit__24 <= 1'b0;
r_diff__24 <= 32'b00000000000000000000000000000000;
r_dl_b__24 <= 32'b00000000000000000000000000000000;
r_numer__24 <= 0;
r_z1__24 <= 32'b00000000000000000000000000000000;
r_z0__24 <= 32'b00000000000000000000000000000000;
r_mut__24 <= 32'b00000000000000000000000000000000;
r_x__23 <= 32'b00000000000000000000000000000000;
r_y__23 <= 32'b00000000000000000000000000000000;
r_z__23 <= 32'b00000000000000000000000000000000;
r_ux__23 <= 32'b00000000000000000000000000000000;
r_uy__23 <= 32'b00000000000000000000000000000000;
r_uz__23 <= 32'b00000000000000000000000000000000;
r_sz__23 <= 32'b00000000000000000000000000000000;
r_sr__23 <= 32'b00000000000000000000000000000000;
r_sleftz__23 <= 32'b00000000000000000000000000000000;
r_sleftr__23 <= 32'b00000000000000000000000000000000;
r_weight__23 <= 32'b00000000000000000000000000000000;
r_layer__23 <= 3'b000;
r_dead__23 <= 1'b1;
r_hit__23 <= 1'b0;
r_diff__23 <= 32'b00000000000000000000000000000000;
r_dl_b__23 <= 32'b00000000000000000000000000000000;
r_numer__23 <= 0;
r_z1__23 <= 32'b00000000000000000000000000000000;
r_z0__23 <= 32'b00000000000000000000000000000000;
r_mut__23 <= 32'b00000000000000000000000000000000;
r_x__22 <= 32'b00000000000000000000000000000000;
r_y__22 <= 32'b00000000000000000000000000000000;
r_z__22 <= 32'b00000000000000000000000000000000;
r_ux__22 <= 32'b00000000000000000000000000000000;
r_uy__22 <= 32'b00000000000000000000000000000000;
r_uz__22 <= 32'b00000000000000000000000000000000;
r_sz__22 <= 32'b00000000000000000000000000000000;
r_sr__22 <= 32'b00000000000000000000000000000000;
r_sleftz__22 <= 32'b00000000000000000000000000000000;
r_sleftr__22 <= 32'b00000000000000000000000000000000;
r_weight__22 <= 32'b00000000000000000000000000000000;
r_layer__22 <= 3'b000;
r_dead__22 <= 1'b1;
r_hit__22 <= 1'b0;
r_diff__22 <= 32'b00000000000000000000000000000000;
r_dl_b__22 <= 32'b00000000000000000000000000000000;
r_numer__22 <= 0;
r_z1__22 <= 32'b00000000000000000000000000000000;
r_z0__22 <= 32'b00000000000000000000000000000000;
r_mut__22 <= 32'b00000000000000000000000000000000;
r_x__21 <= 32'b00000000000000000000000000000000;
r_y__21 <= 32'b00000000000000000000000000000000;
r_z__21 <= 32'b00000000000000000000000000000000;
r_ux__21 <= 32'b00000000000000000000000000000000;
r_uy__21 <= 32'b00000000000000000000000000000000;
r_uz__21 <= 32'b00000000000000000000000000000000;
r_sz__21 <= 32'b00000000000000000000000000000000;
r_sr__21 <= 32'b00000000000000000000000000000000;
r_sleftz__21 <= 32'b00000000000000000000000000000000;
r_sleftr__21 <= 32'b00000000000000000000000000000000;
r_weight__21 <= 32'b00000000000000000000000000000000;
r_layer__21 <= 3'b000;
r_dead__21 <= 1'b1;
r_hit__21 <= 1'b0;
r_diff__21 <= 32'b00000000000000000000000000000000;
r_dl_b__21 <= 32'b00000000000000000000000000000000;
r_numer__21 <= 0;
r_z1__21 <= 32'b00000000000000000000000000000000;
r_z0__21 <= 32'b00000000000000000000000000000000;
r_mut__21 <= 32'b00000000000000000000000000000000;
r_x__20 <= 32'b00000000000000000000000000000000;
r_y__20 <= 32'b00000000000000000000000000000000;
r_z__20 <= 32'b00000000000000000000000000000000;
r_ux__20 <= 32'b00000000000000000000000000000000;
r_uy__20 <= 32'b00000000000000000000000000000000;
r_uz__20 <= 32'b00000000000000000000000000000000;
r_sz__20 <= 32'b00000000000000000000000000000000;
r_sr__20 <= 32'b00000000000000000000000000000000;
r_sleftz__20 <= 32'b00000000000000000000000000000000;
r_sleftr__20 <= 32'b00000000000000000000000000000000;
r_weight__20 <= 32'b00000000000000000000000000000000;
r_layer__20 <= 3'b000;
r_dead__20 <= 1'b1;
r_hit__20 <= 1'b0;
r_diff__20 <= 32'b00000000000000000000000000000000;
r_dl_b__20 <= 32'b00000000000000000000000000000000;
r_numer__20 <= 0;
r_z1__20 <= 32'b00000000000000000000000000000000;
r_z0__20 <= 32'b00000000000000000000000000000000;
r_mut__20 <= 32'b00000000000000000000000000000000;
r_x__19 <= 32'b00000000000000000000000000000000;
r_y__19 <= 32'b00000000000000000000000000000000;
r_z__19 <= 32'b00000000000000000000000000000000;
r_ux__19 <= 32'b00000000000000000000000000000000;
r_uy__19 <= 32'b00000000000000000000000000000000;
r_uz__19 <= 32'b00000000000000000000000000000000;
r_sz__19 <= 32'b00000000000000000000000000000000;
r_sr__19 <= 32'b00000000000000000000000000000000;
r_sleftz__19 <= 32'b00000000000000000000000000000000;
r_sleftr__19 <= 32'b00000000000000000000000000000000;
r_weight__19 <= 32'b00000000000000000000000000000000;
r_layer__19 <= 3'b000;
r_dead__19 <= 1'b1;
r_hit__19 <= 1'b0;
r_diff__19 <= 32'b00000000000000000000000000000000;
r_dl_b__19 <= 32'b00000000000000000000000000000000;
r_numer__19 <= 0;
r_z1__19 <= 32'b00000000000000000000000000000000;
r_z0__19 <= 32'b00000000000000000000000000000000;
r_mut__19 <= 32'b00000000000000000000000000000000;
r_x__18 <= 32'b00000000000000000000000000000000;
r_y__18 <= 32'b00000000000000000000000000000000;
r_z__18 <= 32'b00000000000000000000000000000000;
r_ux__18 <= 32'b00000000000000000000000000000000;
r_uy__18 <= 32'b00000000000000000000000000000000;
r_uz__18 <= 32'b00000000000000000000000000000000;
r_sz__18 <= 32'b00000000000000000000000000000000;
r_sr__18 <= 32'b00000000000000000000000000000000;
r_sleftz__18 <= 32'b00000000000000000000000000000000;
r_sleftr__18 <= 32'b00000000000000000000000000000000;
r_weight__18 <= 32'b00000000000000000000000000000000;
r_layer__18 <= 3'b000;
r_dead__18 <= 1'b1;
r_hit__18 <= 1'b0;
r_diff__18 <= 32'b00000000000000000000000000000000;
r_dl_b__18 <= 32'b00000000000000000000000000000000;
r_numer__18 <= 0;
r_z1__18 <= 32'b00000000000000000000000000000000;
r_z0__18 <= 32'b00000000000000000000000000000000;
r_mut__18 <= 32'b00000000000000000000000000000000;
r_x__17 <= 32'b00000000000000000000000000000000;
r_y__17 <= 32'b00000000000000000000000000000000;
r_z__17 <= 32'b00000000000000000000000000000000;
r_ux__17 <= 32'b00000000000000000000000000000000;
r_uy__17 <= 32'b00000000000000000000000000000000;
r_uz__17 <= 32'b00000000000000000000000000000000;
r_sz__17 <= 32'b00000000000000000000000000000000;
r_sr__17 <= 32'b00000000000000000000000000000000;
r_sleftz__17 <= 32'b00000000000000000000000000000000;
r_sleftr__17 <= 32'b00000000000000000000000000000000;
r_weight__17 <= 32'b00000000000000000000000000000000;
r_layer__17 <= 3'b000;
r_dead__17 <= 1'b1;
r_hit__17 <= 1'b0;
r_diff__17 <= 32'b00000000000000000000000000000000;
r_dl_b__17 <= 32'b00000000000000000000000000000000;
r_numer__17 <= 0;
r_z1__17 <= 32'b00000000000000000000000000000000;
r_z0__17 <= 32'b00000000000000000000000000000000;
r_mut__17 <= 32'b00000000000000000000000000000000;
r_x__16 <= 32'b00000000000000000000000000000000;
r_y__16 <= 32'b00000000000000000000000000000000;
r_z__16 <= 32'b00000000000000000000000000000000;
r_ux__16 <= 32'b00000000000000000000000000000000;
r_uy__16 <= 32'b00000000000000000000000000000000;
r_uz__16 <= 32'b00000000000000000000000000000000;
r_sz__16 <= 32'b00000000000000000000000000000000;
r_sr__16 <= 32'b00000000000000000000000000000000;
r_sleftz__16 <= 32'b00000000000000000000000000000000;
r_sleftr__16 <= 32'b00000000000000000000000000000000;
r_weight__16 <= 32'b00000000000000000000000000000000;
r_layer__16 <= 3'b000;
r_dead__16 <= 1'b1;
r_hit__16 <= 1'b0;
r_diff__16 <= 32'b00000000000000000000000000000000;
r_dl_b__16 <= 32'b00000000000000000000000000000000;
r_numer__16 <= 0;
r_z1__16 <= 32'b00000000000000000000000000000000;
r_z0__16 <= 32'b00000000000000000000000000000000;
r_mut__16 <= 32'b00000000000000000000000000000000;
r_x__15 <= 32'b00000000000000000000000000000000;
r_y__15 <= 32'b00000000000000000000000000000000;
r_z__15 <= 32'b00000000000000000000000000000000;
r_ux__15 <= 32'b00000000000000000000000000000000;
r_uy__15 <= 32'b00000000000000000000000000000000;
r_uz__15 <= 32'b00000000000000000000000000000000;
r_sz__15 <= 32'b00000000000000000000000000000000;
r_sr__15 <= 32'b00000000000000000000000000000000;
r_sleftz__15 <= 32'b00000000000000000000000000000000;
r_sleftr__15 <= 32'b00000000000000000000000000000000;
r_weight__15 <= 32'b00000000000000000000000000000000;
r_layer__15 <= 3'b000;
r_dead__15 <= 1'b1;
r_hit__15 <= 1'b0;
r_diff__15 <= 32'b00000000000000000000000000000000;
r_dl_b__15 <= 32'b00000000000000000000000000000000;
r_numer__15 <= 0;
r_z1__15 <= 32'b00000000000000000000000000000000;
r_z0__15 <= 32'b00000000000000000000000000000000;
r_mut__15 <= 32'b00000000000000000000000000000000;
r_x__14 <= 32'b00000000000000000000000000000000;
r_y__14 <= 32'b00000000000000000000000000000000;
r_z__14 <= 32'b00000000000000000000000000000000;
r_ux__14 <= 32'b00000000000000000000000000000000;
r_uy__14 <= 32'b00000000000000000000000000000000;
r_uz__14 <= 32'b00000000000000000000000000000000;
r_sz__14 <= 32'b00000000000000000000000000000000;
r_sr__14 <= 32'b00000000000000000000000000000000;
r_sleftz__14 <= 32'b00000000000000000000000000000000;
r_sleftr__14 <= 32'b00000000000000000000000000000000;
r_weight__14 <= 32'b00000000000000000000000000000000;
r_layer__14 <= 3'b000;
r_dead__14 <= 1'b1;
r_hit__14 <= 1'b0;
r_diff__14 <= 32'b00000000000000000000000000000000;
r_dl_b__14 <= 32'b00000000000000000000000000000000;
r_numer__14 <= 0;
r_z1__14 <= 32'b00000000000000000000000000000000;
r_z0__14 <= 32'b00000000000000000000000000000000;
r_mut__14 <= 32'b00000000000000000000000000000000;
r_x__13 <= 32'b00000000000000000000000000000000;
r_y__13 <= 32'b00000000000000000000000000000000;
r_z__13 <= 32'b00000000000000000000000000000000;
r_ux__13 <= 32'b00000000000000000000000000000000;
r_uy__13 <= 32'b00000000000000000000000000000000;
r_uz__13 <= 32'b00000000000000000000000000000000;
r_sz__13 <= 32'b00000000000000000000000000000000;
r_sr__13 <= 32'b00000000000000000000000000000000;
r_sleftz__13 <= 32'b00000000000000000000000000000000;
r_sleftr__13 <= 32'b00000000000000000000000000000000;
r_weight__13 <= 32'b00000000000000000000000000000000;
r_layer__13 <= 3'b000;
r_dead__13 <= 1'b1;
r_hit__13 <= 1'b0;
r_diff__13 <= 32'b00000000000000000000000000000000;
r_dl_b__13 <= 32'b00000000000000000000000000000000;
r_numer__13 <= 0;
r_z1__13 <= 32'b00000000000000000000000000000000;
r_z0__13 <= 32'b00000000000000000000000000000000;
r_mut__13 <= 32'b00000000000000000000000000000000;
r_x__12 <= 32'b00000000000000000000000000000000;
r_y__12 <= 32'b00000000000000000000000000000000;
r_z__12 <= 32'b00000000000000000000000000000000;
r_ux__12 <= 32'b00000000000000000000000000000000;
r_uy__12 <= 32'b00000000000000000000000000000000;
r_uz__12 <= 32'b00000000000000000000000000000000;
r_sz__12 <= 32'b00000000000000000000000000000000;
r_sr__12 <= 32'b00000000000000000000000000000000;
r_sleftz__12 <= 32'b00000000000000000000000000000000;
r_sleftr__12 <= 32'b00000000000000000000000000000000;
r_weight__12 <= 32'b00000000000000000000000000000000;
r_layer__12 <= 3'b000;
r_dead__12 <= 1'b1;
r_hit__12 <= 1'b0;
r_diff__12 <= 32'b00000000000000000000000000000000;
r_dl_b__12 <= 32'b00000000000000000000000000000000;
r_numer__12 <= 0;
r_z1__12 <= 32'b00000000000000000000000000000000;
r_z0__12 <= 32'b00000000000000000000000000000000;
r_mut__12 <= 32'b00000000000000000000000000000000;
r_x__11 <= 32'b00000000000000000000000000000000;
r_y__11 <= 32'b00000000000000000000000000000000;
r_z__11 <= 32'b00000000000000000000000000000000;
r_ux__11 <= 32'b00000000000000000000000000000000;
r_uy__11 <= 32'b00000000000000000000000000000000;
r_uz__11 <= 32'b00000000000000000000000000000000;
r_sz__11 <= 32'b00000000000000000000000000000000;
r_sr__11 <= 32'b00000000000000000000000000000000;
r_sleftz__11 <= 32'b00000000000000000000000000000000;
r_sleftr__11 <= 32'b00000000000000000000000000000000;
r_weight__11 <= 32'b00000000000000000000000000000000;
r_layer__11 <= 3'b000;
r_dead__11 <= 1'b1;
r_hit__11 <= 1'b0;
r_diff__11 <= 32'b00000000000000000000000000000000;
r_dl_b__11 <= 32'b00000000000000000000000000000000;
r_numer__11 <= 0;
r_z1__11 <= 32'b00000000000000000000000000000000;
r_z0__11 <= 32'b00000000000000000000000000000000;
r_mut__11 <= 32'b00000000000000000000000000000000;
r_x__10 <= 32'b00000000000000000000000000000000;
r_y__10 <= 32'b00000000000000000000000000000000;
r_z__10 <= 32'b00000000000000000000000000000000;
r_ux__10 <= 32'b00000000000000000000000000000000;
r_uy__10 <= 32'b00000000000000000000000000000000;
r_uz__10 <= 32'b00000000000000000000000000000000;
r_sz__10 <= 32'b00000000000000000000000000000000;
r_sr__10 <= 32'b00000000000000000000000000000000;
r_sleftz__10 <= 32'b00000000000000000000000000000000;
r_sleftr__10 <= 32'b00000000000000000000000000000000;
r_weight__10 <= 32'b00000000000000000000000000000000;
r_layer__10 <= 3'b000;
r_dead__10 <= 1'b1;
r_hit__10 <= 1'b0;
r_diff__10 <= 32'b00000000000000000000000000000000;
r_dl_b__10 <= 32'b00000000000000000000000000000000;
r_numer__10 <= 0;
r_z1__10 <= 32'b00000000000000000000000000000000;
r_z0__10 <= 32'b00000000000000000000000000000000;
r_mut__10 <= 32'b00000000000000000000000000000000;
r_x__9 <= 32'b00000000000000000000000000000000;
r_y__9 <= 32'b00000000000000000000000000000000;
r_z__9 <= 32'b00000000000000000000000000000000;
r_ux__9 <= 32'b00000000000000000000000000000000;
r_uy__9 <= 32'b00000000000000000000000000000000;
r_uz__9 <= 32'b00000000000000000000000000000000;
r_sz__9 <= 32'b00000000000000000000000000000000;
r_sr__9 <= 32'b00000000000000000000000000000000;
r_sleftz__9 <= 32'b00000000000000000000000000000000;
r_sleftr__9 <= 32'b00000000000000000000000000000000;
r_weight__9 <= 32'b00000000000000000000000000000000;
r_layer__9 <= 3'b000;
r_dead__9 <= 1'b1;
r_hit__9 <= 1'b0;
r_diff__9 <= 32'b00000000000000000000000000000000;
r_dl_b__9 <= 32'b00000000000000000000000000000000;
r_numer__9 <= 0;
r_z1__9 <= 32'b00000000000000000000000000000000;
r_z0__9 <= 32'b00000000000000000000000000000000;
r_mut__9 <= 32'b00000000000000000000000000000000;
r_x__8 <= 32'b00000000000000000000000000000000;
r_y__8 <= 32'b00000000000000000000000000000000;
r_z__8 <= 32'b00000000000000000000000000000000;
r_ux__8 <= 32'b00000000000000000000000000000000;
r_uy__8 <= 32'b00000000000000000000000000000000;
r_uz__8 <= 32'b00000000000000000000000000000000;
r_sz__8 <= 32'b00000000000000000000000000000000;
r_sr__8 <= 32'b00000000000000000000000000000000;
r_sleftz__8 <= 32'b00000000000000000000000000000000;
r_sleftr__8 <= 32'b00000000000000000000000000000000;
r_weight__8 <= 32'b00000000000000000000000000000000;
r_layer__8 <= 3'b000;
r_dead__8 <= 1'b1;
r_hit__8 <= 1'b0;
r_diff__8 <= 32'b00000000000000000000000000000000;
r_dl_b__8 <= 32'b00000000000000000000000000000000;
r_numer__8 <= 0;
r_z1__8 <= 32'b00000000000000000000000000000000;
r_z0__8 <= 32'b00000000000000000000000000000000;
r_mut__8 <= 32'b00000000000000000000000000000000;
r_x__7 <= 32'b00000000000000000000000000000000;
r_y__7 <= 32'b00000000000000000000000000000000;
r_z__7 <= 32'b00000000000000000000000000000000;
r_ux__7 <= 32'b00000000000000000000000000000000;
r_uy__7 <= 32'b00000000000000000000000000000000;
r_uz__7 <= 32'b00000000000000000000000000000000;
r_sz__7 <= 32'b00000000000000000000000000000000;
r_sr__7 <= 32'b00000000000000000000000000000000;
r_sleftz__7 <= 32'b00000000000000000000000000000000;
r_sleftr__7 <= 32'b00000000000000000000000000000000;
r_weight__7 <= 32'b00000000000000000000000000000000;
r_layer__7 <= 3'b000;
r_dead__7 <= 1'b1;
r_hit__7 <= 1'b0;
r_diff__7 <= 32'b00000000000000000000000000000000;
r_dl_b__7 <= 32'b00000000000000000000000000000000;
r_numer__7 <= 0;
r_z1__7 <= 32'b00000000000000000000000000000000;
r_z0__7 <= 32'b00000000000000000000000000000000;
r_mut__7 <= 32'b00000000000000000000000000000000;
r_x__6 <= 32'b00000000000000000000000000000000;
r_y__6 <= 32'b00000000000000000000000000000000;
r_z__6 <= 32'b00000000000000000000000000000000;
r_ux__6 <= 32'b00000000000000000000000000000000;
r_uy__6 <= 32'b00000000000000000000000000000000;
r_uz__6 <= 32'b00000000000000000000000000000000;
r_sz__6 <= 32'b00000000000000000000000000000000;
r_sr__6 <= 32'b00000000000000000000000000000000;
r_sleftz__6 <= 32'b00000000000000000000000000000000;
r_sleftr__6 <= 32'b00000000000000000000000000000000;
r_weight__6 <= 32'b00000000000000000000000000000000;
r_layer__6 <= 3'b000;
r_dead__6 <= 1'b1;
r_hit__6 <= 1'b0;
r_diff__6 <= 32'b00000000000000000000000000000000;
r_dl_b__6 <= 32'b00000000000000000000000000000000;
r_numer__6 <= 0;
r_z1__6 <= 32'b00000000000000000000000000000000;
r_z0__6 <= 32'b00000000000000000000000000000000;
r_mut__6 <= 32'b00000000000000000000000000000000;
r_x__5 <= 32'b00000000000000000000000000000000;
r_y__5 <= 32'b00000000000000000000000000000000;
r_z__5 <= 32'b00000000000000000000000000000000;
r_ux__5 <= 32'b00000000000000000000000000000000;
r_uy__5 <= 32'b00000000000000000000000000000000;
r_uz__5 <= 32'b00000000000000000000000000000000;
r_sz__5 <= 32'b00000000000000000000000000000000;
r_sr__5 <= 32'b00000000000000000000000000000000;
r_sleftz__5 <= 32'b00000000000000000000000000000000;
r_sleftr__5 <= 32'b00000000000000000000000000000000;
r_weight__5 <= 32'b00000000000000000000000000000000;
r_layer__5 <= 3'b000;
r_dead__5 <= 1'b1;
r_hit__5 <= 1'b0;
r_diff__5 <= 32'b00000000000000000000000000000000;
r_dl_b__5 <= 32'b00000000000000000000000000000000;
r_numer__5 <= 0;
r_z1__5 <= 32'b00000000000000000000000000000000;
r_z0__5 <= 32'b00000000000000000000000000000000;
r_mut__5 <= 32'b00000000000000000000000000000000;
r_x__4 <= 32'b00000000000000000000000000000000;
r_y__4 <= 32'b00000000000000000000000000000000;
r_z__4 <= 32'b00000000000000000000000000000000;
r_ux__4 <= 32'b00000000000000000000000000000000;
r_uy__4 <= 32'b00000000000000000000000000000000;
r_uz__4 <= 32'b00000000000000000000000000000000;
r_sz__4 <= 32'b00000000000000000000000000000000;
r_sr__4 <= 32'b00000000000000000000000000000000;
r_sleftz__4 <= 32'b00000000000000000000000000000000;
r_sleftr__4 <= 32'b00000000000000000000000000000000;
r_weight__4 <= 32'b00000000000000000000000000000000;
r_layer__4 <= 3'b000;
r_dead__4 <= 1'b1;
r_hit__4 <= 1'b0;
r_diff__4 <= 32'b00000000000000000000000000000000;
r_dl_b__4 <= 32'b00000000000000000000000000000000;
r_numer__4 <= 0;
r_z1__4 <= 32'b00000000000000000000000000000000;
r_z0__4 <= 32'b00000000000000000000000000000000;
r_mut__4 <= 32'b00000000000000000000000000000000;
r_x__3 <= 32'b00000000000000000000000000000000;
r_y__3 <= 32'b00000000000000000000000000000000;
r_z__3 <= 32'b00000000000000000000000000000000;
r_ux__3 <= 32'b00000000000000000000000000000000;
r_uy__3 <= 32'b00000000000000000000000000000000;
r_uz__3 <= 32'b00000000000000000000000000000000;
r_sz__3 <= 32'b00000000000000000000000000000000;
r_sr__3 <= 32'b00000000000000000000000000000000;
r_sleftz__3 <= 32'b00000000000000000000000000000000;
r_sleftr__3 <= 32'b00000000000000000000000000000000;
r_weight__3 <= 32'b00000000000000000000000000000000;
r_layer__3 <= 3'b000;
r_dead__3 <= 1'b1;
r_hit__3 <= 1'b0;
r_diff__3 <= 32'b00000000000000000000000000000000;
r_dl_b__3 <= 32'b00000000000000000000000000000000;
r_numer__3 <= 0;
r_z1__3 <= 32'b00000000000000000000000000000000;
r_z0__3 <= 32'b00000000000000000000000000000000;
r_mut__3 <= 32'b00000000000000000000000000000000;
r_x__2 <= 32'b00000000000000000000000000000000;
r_y__2 <= 32'b00000000000000000000000000000000;
r_z__2 <= 32'b00000000000000000000000000000000;
r_ux__2 <= 32'b00000000000000000000000000000000;
r_uy__2 <= 32'b00000000000000000000000000000000;
r_uz__2 <= 32'b00000000000000000000000000000000;
r_sz__2 <= 32'b00000000000000000000000000000000;
r_sr__2 <= 32'b00000000000000000000000000000000;
r_sleftz__2 <= 32'b00000000000000000000000000000000;
r_sleftr__2 <= 32'b00000000000000000000000000000000;
r_weight__2 <= 32'b00000000000000000000000000000000;
r_layer__2 <= 3'b000;
r_dead__2 <= 1'b1;
r_hit__2 <= 1'b0;
r_diff__2 <= 32'b00000000000000000000000000000000;
r_dl_b__2 <= 32'b00000000000000000000000000000000;
r_numer__2 <= 0;
r_z1__2 <= 32'b00000000000000000000000000000000;
r_z0__2 <= 32'b00000000000000000000000000000000;
r_mut__2 <= 32'b00000000000000000000000000000000;
r_x__1 <= 32'b00000000000000000000000000000000;
r_y__1 <= 32'b00000000000000000000000000000000;
r_z__1 <= 32'b00000000000000000000000000000000;
r_ux__1 <= 32'b00000000000000000000000000000000;
r_uy__1 <= 32'b00000000000000000000000000000000;
r_uz__1 <= 32'b00000000000000000000000000000000;
r_sz__1 <= 32'b00000000000000000000000000000000;
r_sr__1 <= 32'b00000000000000000000000000000000;
r_sleftz__1 <= 32'b00000000000000000000000000000000;
r_sleftr__1 <= 32'b00000000000000000000000000000000;
r_weight__1 <= 32'b00000000000000000000000000000000;
r_layer__1 <= 3'b000;
r_dead__1 <= 1'b1;
r_hit__1 <= 1'b0;
r_diff__1 <= 32'b00000000000000000000000000000000;
r_dl_b__1 <= 32'b00000000000000000000000000000000;
r_numer__1 <= 0;
r_z1__1 <= 32'b00000000000000000000000000000000;
r_z0__1 <= 32'b00000000000000000000000000000000;
r_mut__1 <= 32'b00000000000000000000000000000000;
r_x__0 <= 32'b00000000000000000000000000000000;
r_y__0 <= 32'b00000000000000000000000000000000;
r_z__0 <= 32'b00000000000000000000000000000000;
r_ux__0 <= 32'b00000000000000000000000000000000;
r_uy__0 <= 32'b00000000000000000000000000000000;
r_uz__0 <= 32'b00000000000000000000000000000000;
r_sz__0 <= 32'b00000000000000000000000000000000;
r_sr__0 <= 32'b00000000000000000000000000000000;
r_sleftz__0 <= 32'b00000000000000000000000000000000;
r_sleftr__0 <= 32'b00000000000000000000000000000000;
r_weight__0 <= 32'b00000000000000000000000000000000;
r_layer__0 <= 3'b000;
r_dead__0 <= 1'b0;
r_hit__0 <= 1'b0;
r_diff__0 <= 32'b00000000000000000000000000000000;
r_dl_b__0 <= 32'b00000000000000000000000000000000;
r_numer__0 <= 0;
r_z1__0 <= 32'b00000000000000000000000000000000;
r_z0__0 <= 32'b00000000000000000000000000000000;
r_mut__0 <= 32'b00000000000000000000000000000000;
end
else
begin
if(enable)
begin
//for 0
r_x__0 <=c_x__0;
r_y__0 <=c_y__0;
r_z__0 <=c_z__0;
r_ux__0 <=c_ux__0;
r_uy__0 <=c_uy__0;
r_uz__0 <=c_uz__0;
r_sz__0 <=c_sz__0;
r_sr__0 <=c_sr__0;
r_sleftz__0 <=c_sleftz__0;
r_sleftr__0 <=c_sleftr__0;
r_weight__0 <=c_weight__0;
r_layer__0 <=c_layer__0;
r_dead__0 <=c_dead__0;
r_hit__0 <=c_hit__0;
r_diff__0 <=c_diff__0;
r_dl_b__0 <=c_dl_b__0;
r_numer__0 <=c_numer__0;
r_z1__0 <=c_z1__0;
r_z0__0 <=c_z0__0;
r_mut__0 <=c_mut__0;
//for 1
r_x__1 <=c_x__1;
r_y__1 <=c_y__1;
r_z__1 <=c_z__1;
r_ux__1 <=c_ux__1;
r_uy__1 <=c_uy__1;
r_uz__1 <=c_uz__1;
r_sz__1 <=c_sz__1;
r_sr__1 <=c_sr__1;
r_sleftz__1 <=c_sleftz__1;
r_sleftr__1 <=c_sleftr__1;
r_weight__1 <=c_weight__1;
r_layer__1 <=c_layer__1;
r_dead__1 <=c_dead__1;
r_hit__1 <=c_hit__1;
r_diff__1 <=c_diff__1;
r_dl_b__1 <=c_dl_b__1;
r_numer__1 <=c_numer__1;
r_z1__1 <=c_z1__1;
r_z0__1 <=c_z0__1;
r_mut__1 <=c_mut__1;
//for 2
r_x__2 <=c_x__2;
r_y__2 <=c_y__2;
r_z__2 <=c_z__2;
r_ux__2 <=c_ux__2;
r_uy__2 <=c_uy__2;
r_uz__2 <=c_uz__2;
r_sz__2 <=c_sz__2;
r_sr__2 <=c_sr__2;
r_sleftz__2 <=c_sleftz__2;
r_sleftr__2 <=c_sleftr__2;
r_weight__2 <=c_weight__2;
r_layer__2 <=c_layer__2;
r_dead__2 <=c_dead__2;
r_hit__2 <=c_hit__2;
r_diff__2 <=c_diff__2;
r_dl_b__2 <=c_dl_b__2;
r_numer__2 <=c_numer__2;
r_z1__2 <=c_z1__2;
r_z0__2 <=c_z0__2;
r_mut__2 <=c_mut__2;
//for 3
r_x__3 <=c_x__3;
r_y__3 <=c_y__3;
r_z__3 <=c_z__3;
r_ux__3 <=c_ux__3;
r_uy__3 <=c_uy__3;
r_uz__3 <=c_uz__3;
r_sz__3 <=c_sz__3;
r_sr__3 <=c_sr__3;
r_sleftz__3 <=c_sleftz__3;
r_sleftr__3 <=c_sleftr__3;
r_weight__3 <=c_weight__3;
r_layer__3 <=c_layer__3;
r_dead__3 <=c_dead__3;
r_hit__3 <=c_hit__3;
r_diff__3 <=c_diff__3;
r_dl_b__3 <=c_dl_b__3;
r_numer__3 <=c_numer__3;
r_z1__3 <=c_z1__3;
r_z0__3 <=c_z0__3;
r_mut__3 <=c_mut__3;
//for 4
r_x__4 <=c_x__4;
r_y__4 <=c_y__4;
r_z__4 <=c_z__4;
r_ux__4 <=c_ux__4;
r_uy__4 <=c_uy__4;
r_uz__4 <=c_uz__4;
r_sz__4 <=c_sz__4;
r_sr__4 <=c_sr__4;
r_sleftz__4 <=c_sleftz__4;
r_sleftr__4 <=c_sleftr__4;
r_weight__4 <=c_weight__4;
r_layer__4 <=c_layer__4;
r_dead__4 <=c_dead__4;
r_hit__4 <=c_hit__4;
r_diff__4 <=c_diff__4;
r_dl_b__4 <=c_dl_b__4;
r_numer__4 <=c_numer__4;
r_z1__4 <=c_z1__4;
r_z0__4 <=c_z0__4;
r_mut__4 <=c_mut__4;
//for 5
r_x__5 <=c_x__5;
r_y__5 <=c_y__5;
r_z__5 <=c_z__5;
r_ux__5 <=c_ux__5;
r_uy__5 <=c_uy__5;
r_uz__5 <=c_uz__5;
r_sz__5 <=c_sz__5;
r_sr__5 <=c_sr__5;
r_sleftz__5 <=c_sleftz__5;
r_sleftr__5 <=c_sleftr__5;
r_weight__5 <=c_weight__5;
r_layer__5 <=c_layer__5;
r_dead__5 <=c_dead__5;
r_hit__5 <=c_hit__5;
r_diff__5 <=c_diff__5;
r_dl_b__5 <=c_dl_b__5;
r_numer__5 <=c_numer__5;
r_z1__5 <=c_z1__5;
r_z0__5 <=c_z0__5;
r_mut__5 <=c_mut__5;
//for 6
r_x__6 <=c_x__6;
r_y__6 <=c_y__6;
r_z__6 <=c_z__6;
r_ux__6 <=c_ux__6;
r_uy__6 <=c_uy__6;
r_uz__6 <=c_uz__6;
r_sz__6 <=c_sz__6;
r_sr__6 <=c_sr__6;
r_sleftz__6 <=c_sleftz__6;
r_sleftr__6 <=c_sleftr__6;
r_weight__6 <=c_weight__6;
r_layer__6 <=c_layer__6;
r_dead__6 <=c_dead__6;
r_hit__6 <=c_hit__6;
r_diff__6 <=c_diff__6;
r_dl_b__6 <=c_dl_b__6;
r_numer__6 <=c_numer__6;
r_z1__6 <=c_z1__6;
r_z0__6 <=c_z0__6;
r_mut__6 <=c_mut__6;
//for 7
r_x__7 <=c_x__7;
r_y__7 <=c_y__7;
r_z__7 <=c_z__7;
r_ux__7 <=c_ux__7;
r_uy__7 <=c_uy__7;
r_uz__7 <=c_uz__7;
r_sz__7 <=c_sz__7;
r_sr__7 <=c_sr__7;
r_sleftz__7 <=c_sleftz__7;
r_sleftr__7 <=c_sleftr__7;
r_weight__7 <=c_weight__7;
r_layer__7 <=c_layer__7;
r_dead__7 <=c_dead__7;
r_hit__7 <=c_hit__7;
r_diff__7 <=c_diff__7;
r_dl_b__7 <=c_dl_b__7;
r_numer__7 <=c_numer__7;
r_z1__7 <=c_z1__7;
r_z0__7 <=c_z0__7;
r_mut__7 <=c_mut__7;
//for 8
r_x__8 <=c_x__8;
r_y__8 <=c_y__8;
r_z__8 <=c_z__8;
r_ux__8 <=c_ux__8;
r_uy__8 <=c_uy__8;
r_uz__8 <=c_uz__8;
r_sz__8 <=c_sz__8;
r_sr__8 <=c_sr__8;
r_sleftz__8 <=c_sleftz__8;
r_sleftr__8 <=c_sleftr__8;
r_weight__8 <=c_weight__8;
r_layer__8 <=c_layer__8;
r_dead__8 <=c_dead__8;
r_hit__8 <=c_hit__8;
r_diff__8 <=c_diff__8;
r_dl_b__8 <=c_dl_b__8;
r_numer__8 <=c_numer__8;
r_z1__8 <=c_z1__8;
r_z0__8 <=c_z0__8;
r_mut__8 <=c_mut__8;
//for 9
r_x__9 <=c_x__9;
r_y__9 <=c_y__9;
r_z__9 <=c_z__9;
r_ux__9 <=c_ux__9;
r_uy__9 <=c_uy__9;
r_uz__9 <=c_uz__9;
r_sz__9 <=c_sz__9;
r_sr__9 <=c_sr__9;
r_sleftz__9 <=c_sleftz__9;
r_sleftr__9 <=c_sleftr__9;
r_weight__9 <=c_weight__9;
r_layer__9 <=c_layer__9;
r_dead__9 <=c_dead__9;
r_hit__9 <=c_hit__9;
r_diff__9 <=c_diff__9;
r_dl_b__9 <=c_dl_b__9;
r_numer__9 <=c_numer__9;
r_z1__9 <=c_z1__9;
r_z0__9 <=c_z0__9;
r_mut__9 <=c_mut__9;
//for 10
r_x__10 <=c_x__10;
r_y__10 <=c_y__10;
r_z__10 <=c_z__10;
r_ux__10 <=c_ux__10;
r_uy__10 <=c_uy__10;
r_uz__10 <=c_uz__10;
r_sz__10 <=c_sz__10;
r_sr__10 <=c_sr__10;
r_sleftz__10 <=c_sleftz__10;
r_sleftr__10 <=c_sleftr__10;
r_weight__10 <=c_weight__10;
r_layer__10 <=c_layer__10;
r_dead__10 <=c_dead__10;
r_hit__10 <=c_hit__10;
r_diff__10 <=c_diff__10;
r_dl_b__10 <=c_dl_b__10;
r_numer__10 <=c_numer__10;
r_z1__10 <=c_z1__10;
r_z0__10 <=c_z0__10;
r_mut__10 <=c_mut__10;
//for 11
r_x__11 <=c_x__11;
r_y__11 <=c_y__11;
r_z__11 <=c_z__11;
r_ux__11 <=c_ux__11;
r_uy__11 <=c_uy__11;
r_uz__11 <=c_uz__11;
r_sz__11 <=c_sz__11;
r_sr__11 <=c_sr__11;
r_sleftz__11 <=c_sleftz__11;
r_sleftr__11 <=c_sleftr__11;
r_weight__11 <=c_weight__11;
r_layer__11 <=c_layer__11;
r_dead__11 <=c_dead__11;
r_hit__11 <=c_hit__11;
r_diff__11 <=c_diff__11;
r_dl_b__11 <=c_dl_b__11;
r_numer__11 <=c_numer__11;
r_z1__11 <=c_z1__11;
r_z0__11 <=c_z0__11;
r_mut__11 <=c_mut__11;
//for 12
r_x__12 <=c_x__12;
r_y__12 <=c_y__12;
r_z__12 <=c_z__12;
r_ux__12 <=c_ux__12;
r_uy__12 <=c_uy__12;
r_uz__12 <=c_uz__12;
r_sz__12 <=c_sz__12;
r_sr__12 <=c_sr__12;
r_sleftz__12 <=c_sleftz__12;
r_sleftr__12 <=c_sleftr__12;
r_weight__12 <=c_weight__12;
r_layer__12 <=c_layer__12;
r_dead__12 <=c_dead__12;
r_hit__12 <=c_hit__12;
r_diff__12 <=c_diff__12;
r_dl_b__12 <=c_dl_b__12;
r_numer__12 <=c_numer__12;
r_z1__12 <=c_z1__12;
r_z0__12 <=c_z0__12;
r_mut__12 <=c_mut__12;
//for 13
r_x__13 <=c_x__13;
r_y__13 <=c_y__13;
r_z__13 <=c_z__13;
r_ux__13 <=c_ux__13;
r_uy__13 <=c_uy__13;
r_uz__13 <=c_uz__13;
r_sz__13 <=c_sz__13;
r_sr__13 <=c_sr__13;
r_sleftz__13 <=c_sleftz__13;
r_sleftr__13 <=c_sleftr__13;
r_weight__13 <=c_weight__13;
r_layer__13 <=c_layer__13;
r_dead__13 <=c_dead__13;
r_hit__13 <=c_hit__13;
r_diff__13 <=c_diff__13;
r_dl_b__13 <=c_dl_b__13;
r_numer__13 <=c_numer__13;
r_z1__13 <=c_z1__13;
r_z0__13 <=c_z0__13;
r_mut__13 <=c_mut__13;
//for 14
r_x__14 <=c_x__14;
r_y__14 <=c_y__14;
r_z__14 <=c_z__14;
r_ux__14 <=c_ux__14;
r_uy__14 <=c_uy__14;
r_uz__14 <=c_uz__14;
r_sz__14 <=c_sz__14;
r_sr__14 <=c_sr__14;
r_sleftz__14 <=c_sleftz__14;
r_sleftr__14 <=c_sleftr__14;
r_weight__14 <=c_weight__14;
r_layer__14 <=c_layer__14;
r_dead__14 <=c_dead__14;
r_hit__14 <=c_hit__14;
r_diff__14 <=c_diff__14;
r_dl_b__14 <=c_dl_b__14;
r_numer__14 <=c_numer__14;
r_z1__14 <=c_z1__14;
r_z0__14 <=c_z0__14;
r_mut__14 <=c_mut__14;
//for 15
r_x__15 <=c_x__15;
r_y__15 <=c_y__15;
r_z__15 <=c_z__15;
r_ux__15 <=c_ux__15;
r_uy__15 <=c_uy__15;
r_uz__15 <=c_uz__15;
r_sz__15 <=c_sz__15;
r_sr__15 <=c_sr__15;
r_sleftz__15 <=c_sleftz__15;
r_sleftr__15 <=c_sleftr__15;
r_weight__15 <=c_weight__15;
r_layer__15 <=c_layer__15;
r_dead__15 <=c_dead__15;
r_hit__15 <=c_hit__15;
r_diff__15 <=c_diff__15;
r_dl_b__15 <=c_dl_b__15;
r_numer__15 <=c_numer__15;
r_z1__15 <=c_z1__15;
r_z0__15 <=c_z0__15;
r_mut__15 <=c_mut__15;
//for 16
r_x__16 <=c_x__16;
r_y__16 <=c_y__16;
r_z__16 <=c_z__16;
r_ux__16 <=c_ux__16;
r_uy__16 <=c_uy__16;
r_uz__16 <=c_uz__16;
r_sz__16 <=c_sz__16;
r_sr__16 <=c_sr__16;
r_sleftz__16 <=c_sleftz__16;
r_sleftr__16 <=c_sleftr__16;
r_weight__16 <=c_weight__16;
r_layer__16 <=c_layer__16;
r_dead__16 <=c_dead__16;
r_hit__16 <=c_hit__16;
r_diff__16 <=c_diff__16;
r_dl_b__16 <=c_dl_b__16;
r_numer__16 <=c_numer__16;
r_z1__16 <=c_z1__16;
r_z0__16 <=c_z0__16;
r_mut__16 <=c_mut__16;
//for 17
r_x__17 <=c_x__17;
r_y__17 <=c_y__17;
r_z__17 <=c_z__17;
r_ux__17 <=c_ux__17;
r_uy__17 <=c_uy__17;
r_uz__17 <=c_uz__17;
r_sz__17 <=c_sz__17;
r_sr__17 <=c_sr__17;
r_sleftz__17 <=c_sleftz__17;
r_sleftr__17 <=c_sleftr__17;
r_weight__17 <=c_weight__17;
r_layer__17 <=c_layer__17;
r_dead__17 <=c_dead__17;
r_hit__17 <=c_hit__17;
r_diff__17 <=c_diff__17;
r_dl_b__17 <=c_dl_b__17;
r_numer__17 <=c_numer__17;
r_z1__17 <=c_z1__17;
r_z0__17 <=c_z0__17;
r_mut__17 <=c_mut__17;
//for 18
r_x__18 <=c_x__18;
r_y__18 <=c_y__18;
r_z__18 <=c_z__18;
r_ux__18 <=c_ux__18;
r_uy__18 <=c_uy__18;
r_uz__18 <=c_uz__18;
r_sz__18 <=c_sz__18;
r_sr__18 <=c_sr__18;
r_sleftz__18 <=c_sleftz__18;
r_sleftr__18 <=c_sleftr__18;
r_weight__18 <=c_weight__18;
r_layer__18 <=c_layer__18;
r_dead__18 <=c_dead__18;
r_hit__18 <=c_hit__18;
r_diff__18 <=c_diff__18;
r_dl_b__18 <=c_dl_b__18;
r_numer__18 <=c_numer__18;
r_z1__18 <=c_z1__18;
r_z0__18 <=c_z0__18;
r_mut__18 <=c_mut__18;
//for 19
r_x__19 <=c_x__19;
r_y__19 <=c_y__19;
r_z__19 <=c_z__19;
r_ux__19 <=c_ux__19;
r_uy__19 <=c_uy__19;
r_uz__19 <=c_uz__19;
r_sz__19 <=c_sz__19;
r_sr__19 <=c_sr__19;
r_sleftz__19 <=c_sleftz__19;
r_sleftr__19 <=c_sleftr__19;
r_weight__19 <=c_weight__19;
r_layer__19 <=c_layer__19;
r_dead__19 <=c_dead__19;
r_hit__19 <=c_hit__19;
r_diff__19 <=c_diff__19;
r_dl_b__19 <=c_dl_b__19;
r_numer__19 <=c_numer__19;
r_z1__19 <=c_z1__19;
r_z0__19 <=c_z0__19;
r_mut__19 <=c_mut__19;
//for 20
r_x__20 <=c_x__20;
r_y__20 <=c_y__20;
r_z__20 <=c_z__20;
r_ux__20 <=c_ux__20;
r_uy__20 <=c_uy__20;
r_uz__20 <=c_uz__20;
r_sz__20 <=c_sz__20;
r_sr__20 <=c_sr__20;
r_sleftz__20 <=c_sleftz__20;
r_sleftr__20 <=c_sleftr__20;
r_weight__20 <=c_weight__20;
r_layer__20 <=c_layer__20;
r_dead__20 <=c_dead__20;
r_hit__20 <=c_hit__20;
r_diff__20 <=c_diff__20;
r_dl_b__20 <=c_dl_b__20;
r_numer__20 <=c_numer__20;
r_z1__20 <=c_z1__20;
r_z0__20 <=c_z0__20;
r_mut__20 <=c_mut__20;
//for 21
r_x__21 <=c_x__21;
r_y__21 <=c_y__21;
r_z__21 <=c_z__21;
r_ux__21 <=c_ux__21;
r_uy__21 <=c_uy__21;
r_uz__21 <=c_uz__21;
r_sz__21 <=c_sz__21;
r_sr__21 <=c_sr__21;
r_sleftz__21 <=c_sleftz__21;
r_sleftr__21 <=c_sleftr__21;
r_weight__21 <=c_weight__21;
r_layer__21 <=c_layer__21;
r_dead__21 <=c_dead__21;
r_hit__21 <=c_hit__21;
r_diff__21 <=c_diff__21;
r_dl_b__21 <=c_dl_b__21;
r_numer__21 <=c_numer__21;
r_z1__21 <=c_z1__21;
r_z0__21 <=c_z0__21;
r_mut__21 <=c_mut__21;
//for 22
r_x__22 <=c_x__22;
r_y__22 <=c_y__22;
r_z__22 <=c_z__22;
r_ux__22 <=c_ux__22;
r_uy__22 <=c_uy__22;
r_uz__22 <=c_uz__22;
r_sz__22 <=c_sz__22;
r_sr__22 <=c_sr__22;
r_sleftz__22 <=c_sleftz__22;
r_sleftr__22 <=c_sleftr__22;
r_weight__22 <=c_weight__22;
r_layer__22 <=c_layer__22;
r_dead__22 <=c_dead__22;
r_hit__22 <=c_hit__22;
r_diff__22 <=c_diff__22;
r_dl_b__22 <=c_dl_b__22;
r_numer__22 <=c_numer__22;
r_z1__22 <=c_z1__22;
r_z0__22 <=c_z0__22;
r_mut__22 <=c_mut__22;
//for 23
r_x__23 <=c_x__23;
r_y__23 <=c_y__23;
r_z__23 <=c_z__23;
r_ux__23 <=c_ux__23;
r_uy__23 <=c_uy__23;
r_uz__23 <=c_uz__23;
r_sz__23 <=c_sz__23;
r_sr__23 <=c_sr__23;
r_sleftz__23 <=c_sleftz__23;
r_sleftr__23 <=c_sleftr__23;
r_weight__23 <=c_weight__23;
r_layer__23 <=c_layer__23;
r_dead__23 <=c_dead__23;
r_hit__23 <=c_hit__23;
r_diff__23 <=c_diff__23;
r_dl_b__23 <=c_dl_b__23;
r_numer__23 <=c_numer__23;
r_z1__23 <=c_z1__23;
r_z0__23 <=c_z0__23;
r_mut__23 <=c_mut__23;
//for 24
r_x__24 <=c_x__24;
r_y__24 <=c_y__24;
r_z__24 <=c_z__24;
r_ux__24 <=c_ux__24;
r_uy__24 <=c_uy__24;
r_uz__24 <=c_uz__24;
r_sz__24 <=c_sz__24;
r_sr__24 <=c_sr__24;
r_sleftz__24 <=c_sleftz__24;
r_sleftr__24 <=c_sleftr__24;
r_weight__24 <=c_weight__24;
r_layer__24 <=c_layer__24;
r_dead__24 <=c_dead__24;
r_hit__24 <=c_hit__24;
r_diff__24 <=c_diff__24;
r_dl_b__24 <=c_dl_b__24;
r_numer__24 <=c_numer__24;
r_z1__24 <=c_z1__24;
r_z0__24 <=c_z0__24;
r_mut__24 <=c_mut__24;
//for 25
r_x__25 <=c_x__25;
r_y__25 <=c_y__25;
r_z__25 <=c_z__25;
r_ux__25 <=c_ux__25;
r_uy__25 <=c_uy__25;
r_uz__25 <=c_uz__25;
r_sz__25 <=c_sz__25;
r_sr__25 <=c_sr__25;
r_sleftz__25 <=c_sleftz__25;
r_sleftr__25 <=c_sleftr__25;
r_weight__25 <=c_weight__25;
r_layer__25 <=c_layer__25;
r_dead__25 <=c_dead__25;
r_hit__25 <=c_hit__25;
r_diff__25 <=c_diff__25;
r_dl_b__25 <=c_dl_b__25;
r_numer__25 <=c_numer__25;
r_z1__25 <=c_z1__25;
r_z0__25 <=c_z0__25;
r_mut__25 <=c_mut__25;
//for 26
r_x__26 <=c_x__26;
r_y__26 <=c_y__26;
r_z__26 <=c_z__26;
r_ux__26 <=c_ux__26;
r_uy__26 <=c_uy__26;
r_uz__26 <=c_uz__26;
r_sz__26 <=c_sz__26;
r_sr__26 <=c_sr__26;
r_sleftz__26 <=c_sleftz__26;
r_sleftr__26 <=c_sleftr__26;
r_weight__26 <=c_weight__26;
r_layer__26 <=c_layer__26;
r_dead__26 <=c_dead__26;
r_hit__26 <=c_hit__26;
r_diff__26 <=c_diff__26;
r_dl_b__26 <=c_dl_b__26;
r_numer__26 <=c_numer__26;
r_z1__26 <=c_z1__26;
r_z0__26 <=c_z0__26;
r_mut__26 <=c_mut__26;
//for 27
r_x__27 <=c_x__27;
r_y__27 <=c_y__27;
r_z__27 <=c_z__27;
r_ux__27 <=c_ux__27;
r_uy__27 <=c_uy__27;
r_uz__27 <=c_uz__27;
r_sz__27 <=c_sz__27;
r_sr__27 <=c_sr__27;
r_sleftz__27 <=c_sleftz__27;
r_sleftr__27 <=c_sleftr__27;
r_weight__27 <=c_weight__27;
r_layer__27 <=c_layer__27;
r_dead__27 <=c_dead__27;
r_hit__27 <=c_hit__27;
r_diff__27 <=c_diff__27;
r_dl_b__27 <=c_dl_b__27;
r_numer__27 <=c_numer__27;
r_z1__27 <=c_z1__27;
r_z0__27 <=c_z0__27;
r_mut__27 <=c_mut__27;
//for 28
r_x__28 <=c_x__28;
r_y__28 <=c_y__28;
r_z__28 <=c_z__28;
r_ux__28 <=c_ux__28;
r_uy__28 <=c_uy__28;
r_uz__28 <=c_uz__28;
r_sz__28 <=c_sz__28;
r_sr__28 <=c_sr__28;
r_sleftz__28 <=c_sleftz__28;
r_sleftr__28 <=c_sleftr__28;
r_weight__28 <=c_weight__28;
r_layer__28 <=c_layer__28;
r_dead__28 <=c_dead__28;
r_hit__28 <=c_hit__28;
r_diff__28 <=c_diff__28;
r_dl_b__28 <=c_dl_b__28;
r_numer__28 <=c_numer__28;
r_z1__28 <=c_z1__28;
r_z0__28 <=c_z0__28;
r_mut__28 <=c_mut__28;
//for 29
r_x__29 <=c_x__29;
r_y__29 <=c_y__29;
r_z__29 <=c_z__29;
r_ux__29 <=c_ux__29;
r_uy__29 <=c_uy__29;
r_uz__29 <=c_uz__29;
r_sz__29 <=c_sz__29;
r_sr__29 <=c_sr__29;
r_sleftz__29 <=c_sleftz__29;
r_sleftr__29 <=c_sleftr__29;
r_weight__29 <=c_weight__29;
r_layer__29 <=c_layer__29;
r_dead__29 <=c_dead__29;
r_hit__29 <=c_hit__29;
r_diff__29 <=c_diff__29;
r_dl_b__29 <=c_dl_b__29;
r_numer__29 <=c_numer__29;
r_z1__29 <=c_z1__29;
r_z0__29 <=c_z0__29;
r_mut__29 <=c_mut__29;
//for 30
r_x__30 <=c_x__30;
r_y__30 <=c_y__30;
r_z__30 <=c_z__30;
r_ux__30 <=c_ux__30;
r_uy__30 <=c_uy__30;
r_uz__30 <=c_uz__30;
r_sz__30 <=c_sz__30;
r_sr__30 <=c_sr__30;
r_sleftz__30 <=c_sleftz__30;
r_sleftr__30 <=c_sleftr__30;
r_weight__30 <=c_weight__30;
r_layer__30 <=c_layer__30;
r_dead__30 <=c_dead__30;
r_hit__30 <=c_hit__30;
r_diff__30 <=c_diff__30;
r_dl_b__30 <=c_dl_b__30;
r_numer__30 <=c_numer__30;
r_z1__30 <=c_z1__30;
r_z0__30 <=c_z0__30;
r_mut__30 <=c_mut__30;
//for 31
r_x__31 <=c_x__31;
r_y__31 <=c_y__31;
r_z__31 <=c_z__31;
r_ux__31 <=c_ux__31;
r_uy__31 <=c_uy__31;
r_uz__31 <=c_uz__31;
r_sz__31 <=c_sz__31;
r_sr__31 <=c_sr__31;
r_sleftz__31 <=c_sleftz__31;
r_sleftr__31 <=c_sleftr__31;
r_weight__31 <=c_weight__31;
r_layer__31 <=c_layer__31;
r_dead__31 <=c_dead__31;
r_hit__31 <=c_hit__31;
r_diff__31 <=c_diff__31;
r_dl_b__31 <=c_dl_b__31;
r_numer__31 <=c_numer__31;
r_z1__31 <=c_z1__31;
r_z0__31 <=c_z0__31;
r_mut__31 <=c_mut__31;
//for 32
r_x__32 <=c_x__32;
r_y__32 <=c_y__32;
r_z__32 <=c_z__32;
r_ux__32 <=c_ux__32;
r_uy__32 <=c_uy__32;
r_uz__32 <=c_uz__32;
r_sz__32 <=c_sz__32;
r_sr__32 <=c_sr__32;
r_sleftz__32 <=c_sleftz__32;
r_sleftr__32 <=c_sleftr__32;
r_weight__32 <=c_weight__32;
r_layer__32 <=c_layer__32;
r_dead__32 <=c_dead__32;
r_hit__32 <=c_hit__32;
r_diff__32 <=c_diff__32;
r_dl_b__32 <=c_dl_b__32;
r_numer__32 <=c_numer__32;
r_z1__32 <=c_z1__32;
r_z0__32 <=c_z0__32;
r_mut__32 <=c_mut__32;
//for 33
r_x__33 <=c_x__33;
r_y__33 <=c_y__33;
r_z__33 <=c_z__33;
r_ux__33 <=c_ux__33;
r_uy__33 <=c_uy__33;
r_uz__33 <=c_uz__33;
r_sz__33 <=c_sz__33;
r_sr__33 <=c_sr__33;
r_sleftz__33 <=c_sleftz__33;
r_sleftr__33 <=c_sleftr__33;
r_weight__33 <=c_weight__33;
r_layer__33 <=c_layer__33;
r_dead__33 <=c_dead__33;
r_hit__33 <=c_hit__33;
r_diff__33 <=c_diff__33;
r_dl_b__33 <=c_dl_b__33;
r_numer__33 <=c_numer__33;
r_z1__33 <=c_z1__33;
r_z0__33 <=c_z0__33;
r_mut__33 <=c_mut__33;
//for 34
r_x__34 <=c_x__34;
r_y__34 <=c_y__34;
r_z__34 <=c_z__34;
r_ux__34 <=c_ux__34;
r_uy__34 <=c_uy__34;
r_uz__34 <=c_uz__34;
r_sz__34 <=c_sz__34;
r_sr__34 <=c_sr__34;
r_sleftz__34 <=c_sleftz__34;
r_sleftr__34 <=c_sleftr__34;
r_weight__34 <=c_weight__34;
r_layer__34 <=c_layer__34;
r_dead__34 <=c_dead__34;
r_hit__34 <=c_hit__34;
r_diff__34 <=c_diff__34;
r_dl_b__34 <=c_dl_b__34;
r_numer__34 <=c_numer__34;
r_z1__34 <=c_z1__34;
r_z0__34 <=c_z0__34;
r_mut__34 <=c_mut__34;
//for 35
r_x__35 <=c_x__35;
r_y__35 <=c_y__35;
r_z__35 <=c_z__35;
r_ux__35 <=c_ux__35;
r_uy__35 <=c_uy__35;
r_uz__35 <=c_uz__35;
r_sz__35 <=c_sz__35;
r_sr__35 <=c_sr__35;
r_sleftz__35 <=c_sleftz__35;
r_sleftr__35 <=c_sleftr__35;
r_weight__35 <=c_weight__35;
r_layer__35 <=c_layer__35;
r_dead__35 <=c_dead__35;
r_hit__35 <=c_hit__35;
r_diff__35 <=c_diff__35;
r_dl_b__35 <=c_dl_b__35;
r_numer__35 <=c_numer__35;
r_z1__35 <=c_z1__35;
r_z0__35 <=c_z0__35;
r_mut__35 <=c_mut__35;
//for 36
r_x__36 <=c_x__36;
r_y__36 <=c_y__36;
r_z__36 <=c_z__36;
r_ux__36 <=c_ux__36;
r_uy__36 <=c_uy__36;
r_uz__36 <=c_uz__36;
r_sz__36 <=c_sz__36;
r_sr__36 <=c_sr__36;
r_sleftz__36 <=c_sleftz__36;
r_sleftr__36 <=c_sleftr__36;
r_weight__36 <=c_weight__36;
r_layer__36 <=c_layer__36;
r_dead__36 <=c_dead__36;
r_hit__36 <=c_hit__36;
r_diff__36 <=c_diff__36;
r_dl_b__36 <=c_dl_b__36;
r_numer__36 <=c_numer__36;
r_z1__36 <=c_z1__36;
r_z0__36 <=c_z0__36;
r_mut__36 <=c_mut__36;
//for 37
r_x__37 <=c_x__37;
r_y__37 <=c_y__37;
r_z__37 <=c_z__37;
r_ux__37 <=c_ux__37;
r_uy__37 <=c_uy__37;
r_uz__37 <=c_uz__37;
r_sz__37 <=c_sz__37;
r_sr__37 <=c_sr__37;
r_sleftz__37 <=c_sleftz__37;
r_sleftr__37 <=c_sleftr__37;
r_weight__37 <=c_weight__37;
r_layer__37 <=c_layer__37;
r_dead__37 <=c_dead__37;
r_hit__37 <=c_hit__37;
r_diff__37 <=c_diff__37;
r_dl_b__37 <=c_dl_b__37;
r_numer__37 <=c_numer__37;
r_z1__37 <=c_z1__37;
r_z0__37 <=c_z0__37;
r_mut__37 <=c_mut__37;
//for 38
r_x__38 <=c_x__38;
r_y__38 <=c_y__38;
r_z__38 <=c_z__38;
r_ux__38 <=c_ux__38;
r_uy__38 <=c_uy__38;
r_uz__38 <=c_uz__38;
r_sz__38 <=c_sz__38;
r_sr__38 <=c_sr__38;
r_sleftz__38 <=c_sleftz__38;
r_sleftr__38 <=c_sleftr__38;
r_weight__38 <=c_weight__38;
r_layer__38 <=c_layer__38;
r_dead__38 <=c_dead__38;
r_hit__38 <=c_hit__38;
r_diff__38 <=c_diff__38;
r_dl_b__38 <=c_dl_b__38;
r_numer__38 <=c_numer__38;
r_z1__38 <=c_z1__38;
r_z0__38 <=c_z0__38;
r_mut__38 <=c_mut__38;
//for 39
r_x__39 <=c_x__39;
r_y__39 <=c_y__39;
r_z__39 <=c_z__39;
r_ux__39 <=c_ux__39;
r_uy__39 <=c_uy__39;
r_uz__39 <=c_uz__39;
r_sz__39 <=c_sz__39;
r_sr__39 <=c_sr__39;
r_sleftz__39 <=c_sleftz__39;
r_sleftr__39 <=c_sleftr__39;
r_weight__39 <=c_weight__39;
r_layer__39 <=c_layer__39;
r_dead__39 <=c_dead__39;
r_hit__39 <=c_hit__39;
r_diff__39 <=c_diff__39;
r_dl_b__39 <=c_dl_b__39;
r_numer__39 <=c_numer__39;
r_z1__39 <=c_z1__39;
r_z0__39 <=c_z0__39;
r_mut__39 <=c_mut__39;
//for 40
r_x__40 <=c_x__40;
r_y__40 <=c_y__40;
r_z__40 <=c_z__40;
r_ux__40 <=c_ux__40;
r_uy__40 <=c_uy__40;
r_uz__40 <=c_uz__40;
r_sz__40 <=c_sz__40;
r_sr__40 <=c_sr__40;
r_sleftz__40 <=c_sleftz__40;
r_sleftr__40 <=c_sleftr__40;
r_weight__40 <=c_weight__40;
r_layer__40 <=c_layer__40;
r_dead__40 <=c_dead__40;
r_hit__40 <=c_hit__40;
r_diff__40 <=c_diff__40;
r_dl_b__40 <=c_dl_b__40;
r_numer__40 <=c_numer__40;
r_z1__40 <=c_z1__40;
r_z0__40 <=c_z0__40;
r_mut__40 <=c_mut__40;
//for 41
r_x__41 <=c_x__41;
r_y__41 <=c_y__41;
r_z__41 <=c_z__41;
r_ux__41 <=c_ux__41;
r_uy__41 <=c_uy__41;
r_uz__41 <=c_uz__41;
r_sz__41 <=c_sz__41;
r_sr__41 <=c_sr__41;
r_sleftz__41 <=c_sleftz__41;
r_sleftr__41 <=c_sleftr__41;
r_weight__41 <=c_weight__41;
r_layer__41 <=c_layer__41;
r_dead__41 <=c_dead__41;
r_hit__41 <=c_hit__41;
r_diff__41 <=c_diff__41;
r_dl_b__41 <=c_dl_b__41;
r_numer__41 <=c_numer__41;
r_z1__41 <=c_z1__41;
r_z0__41 <=c_z0__41;
r_mut__41 <=c_mut__41;
//for 42
r_x__42 <=c_x__42;
r_y__42 <=c_y__42;
r_z__42 <=c_z__42;
r_ux__42 <=c_ux__42;
r_uy__42 <=c_uy__42;
r_uz__42 <=c_uz__42;
r_sz__42 <=c_sz__42;
r_sr__42 <=c_sr__42;
r_sleftz__42 <=c_sleftz__42;
r_sleftr__42 <=c_sleftr__42;
r_weight__42 <=c_weight__42;
r_layer__42 <=c_layer__42;
r_dead__42 <=c_dead__42;
r_hit__42 <=c_hit__42;
r_diff__42 <=c_diff__42;
r_dl_b__42 <=c_dl_b__42;
r_numer__42 <=c_numer__42;
r_z1__42 <=c_z1__42;
r_z0__42 <=c_z0__42;
r_mut__42 <=c_mut__42;
//for 43
r_x__43 <=c_x__43;
r_y__43 <=c_y__43;
r_z__43 <=c_z__43;
r_ux__43 <=c_ux__43;
r_uy__43 <=c_uy__43;
r_uz__43 <=c_uz__43;
r_sz__43 <=c_sz__43;
r_sr__43 <=c_sr__43;
r_sleftz__43 <=c_sleftz__43;
r_sleftr__43 <=c_sleftr__43;
r_weight__43 <=c_weight__43;
r_layer__43 <=c_layer__43;
r_dead__43 <=c_dead__43;
r_hit__43 <=c_hit__43;
r_diff__43 <=c_diff__43;
r_dl_b__43 <=c_dl_b__43;
r_numer__43 <=c_numer__43;
r_z1__43 <=c_z1__43;
r_z0__43 <=c_z0__43;
r_mut__43 <=c_mut__43;
//for 44
r_x__44 <=c_x__44;
r_y__44 <=c_y__44;
r_z__44 <=c_z__44;
r_ux__44 <=c_ux__44;
r_uy__44 <=c_uy__44;
r_uz__44 <=c_uz__44;
r_sz__44 <=c_sz__44;
r_sr__44 <=c_sr__44;
r_sleftz__44 <=c_sleftz__44;
r_sleftr__44 <=c_sleftr__44;
r_weight__44 <=c_weight__44;
r_layer__44 <=c_layer__44;
r_dead__44 <=c_dead__44;
r_hit__44 <=c_hit__44;
r_diff__44 <=c_diff__44;
r_dl_b__44 <=c_dl_b__44;
r_numer__44 <=c_numer__44;
r_z1__44 <=c_z1__44;
r_z0__44 <=c_z0__44;
r_mut__44 <=c_mut__44;
//for 45
r_x__45 <=c_x__45;
r_y__45 <=c_y__45;
r_z__45 <=c_z__45;
r_ux__45 <=c_ux__45;
r_uy__45 <=c_uy__45;
r_uz__45 <=c_uz__45;
r_sz__45 <=c_sz__45;
r_sr__45 <=c_sr__45;
r_sleftz__45 <=c_sleftz__45;
r_sleftr__45 <=c_sleftr__45;
r_weight__45 <=c_weight__45;
r_layer__45 <=c_layer__45;
r_dead__45 <=c_dead__45;
r_hit__45 <=c_hit__45;
r_diff__45 <=c_diff__45;
r_dl_b__45 <=c_dl_b__45;
r_numer__45 <=c_numer__45;
r_z1__45 <=c_z1__45;
r_z0__45 <=c_z0__45;
r_mut__45 <=c_mut__45;
//for 46
r_x__46 <=c_x__46;
r_y__46 <=c_y__46;
r_z__46 <=c_z__46;
r_ux__46 <=c_ux__46;
r_uy__46 <=c_uy__46;
r_uz__46 <=c_uz__46;
r_sz__46 <=c_sz__46;
r_sr__46 <=c_sr__46;
r_sleftz__46 <=c_sleftz__46;
r_sleftr__46 <=c_sleftr__46;
r_weight__46 <=c_weight__46;
r_layer__46 <=c_layer__46;
r_dead__46 <=c_dead__46;
r_hit__46 <=c_hit__46;
r_diff__46 <=c_diff__46;
r_dl_b__46 <=c_dl_b__46;
r_numer__46 <=c_numer__46;
r_z1__46 <=c_z1__46;
r_z0__46 <=c_z0__46;
r_mut__46 <=c_mut__46;
//for 47
r_x__47 <=c_x__47;
r_y__47 <=c_y__47;
r_z__47 <=c_z__47;
r_ux__47 <=c_ux__47;
r_uy__47 <=c_uy__47;
r_uz__47 <=c_uz__47;
r_sz__47 <=c_sz__47;
r_sr__47 <=c_sr__47;
r_sleftz__47 <=c_sleftz__47;
r_sleftr__47 <=c_sleftr__47;
r_weight__47 <=c_weight__47;
r_layer__47 <=c_layer__47;
r_dead__47 <=c_dead__47;
r_hit__47 <=c_hit__47;
r_diff__47 <=c_diff__47;
r_dl_b__47 <=c_dl_b__47;
r_numer__47 <=c_numer__47;
r_z1__47 <=c_z1__47;
r_z0__47 <=c_z0__47;
r_mut__47 <=c_mut__47;
//for 48
r_x__48 <=c_x__48;
r_y__48 <=c_y__48;
r_z__48 <=c_z__48;
r_ux__48 <=c_ux__48;
r_uy__48 <=c_uy__48;
r_uz__48 <=c_uz__48;
r_sz__48 <=c_sz__48;
r_sr__48 <=c_sr__48;
r_sleftz__48 <=c_sleftz__48;
r_sleftr__48 <=c_sleftr__48;
r_weight__48 <=c_weight__48;
r_layer__48 <=c_layer__48;
r_dead__48 <=c_dead__48;
r_hit__48 <=c_hit__48;
r_diff__48 <=c_diff__48;
r_dl_b__48 <=c_dl_b__48;
r_numer__48 <=c_numer__48;
r_z1__48 <=c_z1__48;
r_z0__48 <=c_z0__48;
r_mut__48 <=c_mut__48;
//for 49
r_x__49 <=c_x__49;
r_y__49 <=c_y__49;
r_z__49 <=c_z__49;
r_ux__49 <=c_ux__49;
r_uy__49 <=c_uy__49;
r_uz__49 <=c_uz__49;
r_sz__49 <=c_sz__49;
r_sr__49 <=c_sr__49;
r_sleftz__49 <=c_sleftz__49;
r_sleftr__49 <=c_sleftr__49;
r_weight__49 <=c_weight__49;
r_layer__49 <=c_layer__49;
r_dead__49 <=c_dead__49;
r_hit__49 <=c_hit__49;
r_diff__49 <=c_diff__49;
r_dl_b__49 <=c_dl_b__49;
r_numer__49 <=c_numer__49;
r_z1__49 <=c_z1__49;
r_z0__49 <=c_z0__49;
r_mut__49 <=c_mut__49;
//for 50
r_x__50 <=c_x__50;
r_y__50 <=c_y__50;
r_z__50 <=c_z__50;
r_ux__50 <=c_ux__50;
r_uy__50 <=c_uy__50;
r_uz__50 <=c_uz__50;
r_sz__50 <=c_sz__50;
r_sr__50 <=c_sr__50;
r_sleftz__50 <=c_sleftz__50;
r_sleftr__50 <=c_sleftr__50;
r_weight__50 <=c_weight__50;
r_layer__50 <=c_layer__50;
r_dead__50 <=c_dead__50;
r_hit__50 <=c_hit__50;
r_diff__50 <=c_diff__50;
r_dl_b__50 <=c_dl_b__50;
r_numer__50 <=c_numer__50;
r_z1__50 <=c_z1__50;
r_z0__50 <=c_z0__50;
r_mut__50 <=c_mut__50;
//for 51
r_x__51 <=c_x__51;
r_y__51 <=c_y__51;
r_z__51 <=c_z__51;
r_ux__51 <=c_ux__51;
r_uy__51 <=c_uy__51;
r_uz__51 <=c_uz__51;
r_sz__51 <=c_sz__51;
r_sr__51 <=c_sr__51;
r_sleftz__51 <=c_sleftz__51;
r_sleftr__51 <=c_sleftr__51;
r_weight__51 <=c_weight__51;
r_layer__51 <=c_layer__51;
r_dead__51 <=c_dead__51;
r_hit__51 <=c_hit__51;
r_diff__51 <=c_diff__51;
r_dl_b__51 <=c_dl_b__51;
r_numer__51 <=c_numer__51;
r_z1__51 <=c_z1__51;
r_z0__51 <=c_z0__51;
r_mut__51 <=c_mut__51;
//for 52
r_x__52 <=c_x__52;
r_y__52 <=c_y__52;
r_z__52 <=c_z__52;
r_ux__52 <=c_ux__52;
r_uy__52 <=c_uy__52;
r_uz__52 <=c_uz__52;
r_sz__52 <=c_sz__52;
r_sr__52 <=c_sr__52;
r_sleftz__52 <=c_sleftz__52;
r_sleftr__52 <=c_sleftr__52;
r_weight__52 <=c_weight__52;
r_layer__52 <=c_layer__52;
r_dead__52 <=c_dead__52;
r_hit__52 <=c_hit__52;
r_diff__52 <=c_diff__52;
r_dl_b__52 <=c_dl_b__52;
r_numer__52 <=c_numer__52;
r_z1__52 <=c_z1__52;
r_z0__52 <=c_z0__52;
r_mut__52 <=c_mut__52;
//for 53
r_x__53 <=c_x__53;
r_y__53 <=c_y__53;
r_z__53 <=c_z__53;
r_ux__53 <=c_ux__53;
r_uy__53 <=c_uy__53;
r_uz__53 <=c_uz__53;
r_sz__53 <=c_sz__53;
r_sr__53 <=c_sr__53;
r_sleftz__53 <=c_sleftz__53;
r_sleftr__53 <=c_sleftr__53;
r_weight__53 <=c_weight__53;
r_layer__53 <=c_layer__53;
r_dead__53 <=c_dead__53;
r_hit__53 <=c_hit__53;
r_diff__53 <=c_diff__53;
r_dl_b__53 <=c_dl_b__53;
r_numer__53 <=c_numer__53;
r_z1__53 <=c_z1__53;
r_z0__53 <=c_z0__53;
r_mut__53 <=c_mut__53;
//for 54
r_x__54 <=c_x__54;
r_y__54 <=c_y__54;
r_z__54 <=c_z__54;
r_ux__54 <=c_ux__54;
r_uy__54 <=c_uy__54;
r_uz__54 <=c_uz__54;
r_sz__54 <=c_sz__54;
r_sr__54 <=c_sr__54;
r_sleftz__54 <=c_sleftz__54;
r_sleftr__54 <=c_sleftr__54;
r_weight__54 <=c_weight__54;
r_layer__54 <=c_layer__54;
r_dead__54 <=c_dead__54;
r_hit__54 <=c_hit__54;
r_diff__54 <=c_diff__54;
r_dl_b__54 <=c_dl_b__54;
r_numer__54 <=c_numer__54;
r_z1__54 <=c_z1__54;
r_z0__54 <=c_z0__54;
r_mut__54 <=c_mut__54;
//for 55
r_x__55 <=c_x__55;
r_y__55 <=c_y__55;
r_z__55 <=c_z__55;
r_ux__55 <=c_ux__55;
r_uy__55 <=c_uy__55;
r_uz__55 <=c_uz__55;
r_sz__55 <=c_sz__55;
r_sr__55 <=c_sr__55;
r_sleftz__55 <=c_sleftz__55;
r_sleftr__55 <=c_sleftr__55;
r_weight__55 <=c_weight__55;
r_layer__55 <=c_layer__55;
r_dead__55 <=c_dead__55;
r_hit__55 <=c_hit__55;
r_diff__55 <=c_diff__55;
r_dl_b__55 <=c_dl_b__55;
r_numer__55 <=c_numer__55;
r_z1__55 <=c_z1__55;
r_z0__55 <=c_z0__55;
r_mut__55 <=c_mut__55;
//for 56
r_x__56 <=c_x__56;
r_y__56 <=c_y__56;
r_z__56 <=c_z__56;
r_ux__56 <=c_ux__56;
r_uy__56 <=c_uy__56;
r_uz__56 <=c_uz__56;
r_sz__56 <=c_sz__56;
r_sr__56 <=c_sr__56;
r_sleftz__56 <=c_sleftz__56;
r_sleftr__56 <=c_sleftr__56;
r_weight__56 <=c_weight__56;
r_layer__56 <=c_layer__56;
r_dead__56 <=c_dead__56;
r_hit__56 <=c_hit__56;
r_diff__56 <=c_diff__56;
r_dl_b__56 <=c_dl_b__56;
r_numer__56 <=c_numer__56;
r_z1__56 <=c_z1__56;
r_z0__56 <=c_z0__56;
r_mut__56 <=c_mut__56;
//for 57
r_x__57 <=c_x__57;
r_y__57 <=c_y__57;
r_z__57 <=c_z__57;
r_ux__57 <=c_ux__57;
r_uy__57 <=c_uy__57;
r_uz__57 <=c_uz__57;
r_sz__57 <=c_sz__57;
r_sr__57 <=c_sr__57;
r_sleftz__57 <=c_sleftz__57;
r_sleftr__57 <=c_sleftr__57;
r_weight__57 <=c_weight__57;
r_layer__57 <=c_layer__57;
r_dead__57 <=c_dead__57;
r_hit__57 <=c_hit__57;
r_diff__57 <=c_diff__57;
r_dl_b__57 <=c_dl_b__57;
r_numer__57 <=c_numer__57;
r_z1__57 <=c_z1__57;
r_z0__57 <=c_z0__57;
r_mut__57 <=c_mut__57;
//for 58
r_x__58 <=c_x__58;
r_y__58 <=c_y__58;
r_z__58 <=c_z__58;
r_ux__58 <=c_ux__58;
r_uy__58 <=c_uy__58;
r_uz__58 <=c_uz__58;
r_sz__58 <=c_sz__58;
r_sr__58 <=c_sr__58;
r_sleftz__58 <=c_sleftz__58;
r_sleftr__58 <=c_sleftr__58;
r_weight__58 <=c_weight__58;
r_layer__58 <=c_layer__58;
r_dead__58 <=c_dead__58;
r_hit__58 <=c_hit__58;
r_diff__58 <=c_diff__58;
r_dl_b__58 <=c_dl_b__58;
r_numer__58 <=c_numer__58;
r_z1__58 <=c_z1__58;
r_z0__58 <=c_z0__58;
r_mut__58 <=c_mut__58;
//for 59
r_x__59 <=c_x__59;
r_y__59 <=c_y__59;
r_z__59 <=c_z__59;
r_ux__59 <=c_ux__59;
r_uy__59 <=c_uy__59;
r_uz__59 <=c_uz__59;
r_sz__59 <=c_sz__59;
r_sr__59 <=c_sr__59;
r_sleftz__59 <=c_sleftz__59;
r_sleftr__59 <=c_sleftr__59;
r_weight__59 <=c_weight__59;
r_layer__59 <=c_layer__59;
r_dead__59 <=c_dead__59;
r_hit__59 <=c_hit__59;
r_diff__59 <=c_diff__59;
r_dl_b__59 <=c_dl_b__59;
r_numer__59 <=c_numer__59;
r_z1__59 <=c_z1__59;
r_z0__59 <=c_z0__59;
r_mut__59 <=c_mut__59;
end
end
end
endmodule
/////////////////////////////////////////////////////////////
//mult_signed_32_bc
/////////////////////////////////////////////////////////////
module mult_signed_32_bc ( clock, dataa, datab, result);
input clock;
input [31:0] dataa;
input [31:0] datab;
output [63:0] result;
reg [63:0] result;
wire [63:0] prelim_result;
wire [31:0] opa;
wire [31:0] opb;
wire [31:0] opa_comp;
wire [31:0] opb_comp;
assign opa_comp = ((~dataa) + 32'b00000000000000000000000000000001);
assign opb_comp = ((~datab) + 32'b00000000000000000000000000000001);
wire opa_is_neg;
wire opb_is_neg;
assign opa_is_neg = dataa[31];
assign opb_is_neg = datab [31];
assign opa = (opa_is_neg== 1'b1) ? opa_comp:dataa;
assign opb = (opb_is_neg == 1'b1) ? opb_comp:datab;
assign prelim_result = opa * opb ;
wire sign;
assign sign = dataa[31] ^ datab[31];
wire [63:0] prelim_result_comp;
wire [63:0] prelim_result_changed;
wire [63:0] result_changed;
assign result_changed = (sign==1'b1)? prelim_result_comp :prelim_result;
assign prelim_result_comp = ((~prelim_result) + 1);
always @ (posedge clock)
begin
result <= result_changed;
end
endmodule
/////////////////////////////////////////////////////////////
//signed_div_30
/////////////////////////////////////////////////////////////
module signed_div_30 (clock , denom , numer, quotient, remain);
input clock;
input [31:0] denom;
input [63:0] numer;
output [63:0] quotient;
output [31:0] remain;
Div_64b div_replace (.clock(clock), .denom(denom), .numer(numer), .quotient(quotient), .remain(remain));
endmodule
module Hop( //INPUTS
clock, reset, enable,
x_boundaryChecker, y_boundaryChecker, z_boundaryChecker,
ux_boundaryChecker, uy_boundaryChecker, uz_boundaryChecker,
sz_boundaryChecker, sr_boundaryChecker,
sleftz_boundaryChecker, sleftr_boundaryChecker,
layer_boundaryChecker, weight_boundaryChecker, dead_boundaryChecker,
hit_boundaryChecker,
//OUTPUTS
x_hop, y_hop, z_hop,
ux_hop, uy_hop, uz_hop,
sz_hop, sr_hop,
sleftz_hop, sleftr_hop,
layer_hop, weight_hop, dead_hop, hit_hop
);
//parameter BIT_WIDTH=32;
//parameter LAYER_WIDTH=3;
//parameter INTMAX=2147483647;
//parameter INTMIN=-2147483648;
input clock;
input reset;
input enable;
input [`BIT_WIDTH-1:0] x_boundaryChecker;
input [`BIT_WIDTH-1:0] y_boundaryChecker;
input [`BIT_WIDTH-1:0] z_boundaryChecker;
input [`BIT_WIDTH-1:0] ux_boundaryChecker;
input [`BIT_WIDTH-1:0] uy_boundaryChecker;
input [`BIT_WIDTH-1:0] uz_boundaryChecker;
input [`BIT_WIDTH-1:0] sz_boundaryChecker;
input [`BIT_WIDTH-1:0] sr_boundaryChecker;
input [`BIT_WIDTH-1:0] sleftz_boundaryChecker;
input [`BIT_WIDTH-1:0] sleftr_boundaryChecker;
input [`LAYER_WIDTH-1:0] layer_boundaryChecker;
input [`BIT_WIDTH-1:0] weight_boundaryChecker;
input dead_boundaryChecker;
input hit_boundaryChecker;
output [`BIT_WIDTH-1:0] x_hop;
output [`BIT_WIDTH-1:0] y_hop;
output [`BIT_WIDTH-1:0] z_hop;
output [`BIT_WIDTH-1:0] ux_hop;
output [`BIT_WIDTH-1:0] uy_hop;
output [`BIT_WIDTH-1:0] uz_hop;
output [`BIT_WIDTH-1:0] sz_hop;
output [`BIT_WIDTH-1:0] sr_hop;
output [`BIT_WIDTH-1:0] sleftz_hop;
output [`BIT_WIDTH-1:0] sleftr_hop;
output [`LAYER_WIDTH-1:0]layer_hop;
output [`BIT_WIDTH-1:0] weight_hop;
output dead_hop;
output hit_hop;
//------------Local Variables------------------------
reg [`BIT_WIDTH-1:0] c_x;
reg [`BIT_WIDTH-1:0] c_y;
reg [`BIT_WIDTH-1:0] c_z;
reg c_dead;
reg [`BIT_WIDTH:0] c_x_big;
reg [`BIT_WIDTH:0] c_y_big;
reg [`BIT_WIDTH:0] c_z_big;
wire [2*`BIT_WIDTH-1:0] c_xmult_big;
wire [2*`BIT_WIDTH-1:0] c_ymult_big;
wire [2*`BIT_WIDTH-1:0] c_zmult_big;
//------------REGISTERED Values------------------------
reg [`BIT_WIDTH-1:0] x_hop;
reg [`BIT_WIDTH-1:0] y_hop;
reg [`BIT_WIDTH-1:0] z_hop;
reg [`BIT_WIDTH-1:0] ux_hop;
reg [`BIT_WIDTH-1:0] uy_hop;
reg [`BIT_WIDTH-1:0] uz_hop;
reg [`BIT_WIDTH-1:0] sz_hop;
reg [`BIT_WIDTH-1:0] sr_hop;
reg [`BIT_WIDTH-1:0] sleftz_hop;
reg [`BIT_WIDTH-1:0] sleftr_hop;
reg [`LAYER_WIDTH-1:0]layer_hop;
reg [`BIT_WIDTH-1:0] weight_hop;
reg dead_hop;
reg hit_hop;
mult_signed_32 u1(sr_boundaryChecker, ux_boundaryChecker, c_xmult_big);
mult_signed_32 u2(sr_boundaryChecker, uy_boundaryChecker, c_ymult_big);
mult_signed_32 u3(sz_boundaryChecker, uz_boundaryChecker, c_zmult_big);
// Determine new (x,y,z) coordinates
always @(c_dead or
c_x_big or c_y_big or c_z_big or
c_x or c_y or c_z or
x_boundaryChecker or y_boundaryChecker or z_boundaryChecker or
c_xmult_big or c_ymult_big or c_zmult_big
or hit_boundaryChecker or dead_boundaryChecker)
begin
c_x_big = x_boundaryChecker + c_xmult_big[2*`BIT_WIDTH-2:31];
c_y_big = y_boundaryChecker + c_ymult_big[2*`BIT_WIDTH-2:31];
c_z_big = z_boundaryChecker + c_zmult_big[2*`BIT_WIDTH-2:31];
// Calculate x position, photon dies if outside grid
if(c_x_big[`BIT_WIDTH] != c_x_big[`BIT_WIDTH-1] && x_boundaryChecker[`BIT_WIDTH-1] == c_xmult_big[2*`BIT_WIDTH-2])
begin
if(c_x_big[`BIT_WIDTH] == 1'b0)
begin
// c_dead = 1'b1;
c_x = `INTMAX;
end
else
begin
// c_dead = 1'b1;
c_x = `INTMIN;
end
end
else
begin
c_x = c_x_big[`BIT_WIDTH-1:0];
end
// Calculate y position, photon dies if outside grid
if(c_y_big[`BIT_WIDTH] != c_y_big[`BIT_WIDTH-1] && y_boundaryChecker[`BIT_WIDTH-1] == c_ymult_big[2*`BIT_WIDTH-2])
begin
if(c_y_big[`BIT_WIDTH] == 1'b0)
begin
// c_dead = 1'b1;
c_y = `INTMAX;
end
else
begin
// c_dead = 1'b1;
c_y = `INTMIN;
end
end
else
begin
c_y = c_y_big[`BIT_WIDTH-1:0];
end
// Calculate z position, photon dies if outside grid
if(hit_boundaryChecker)
begin
c_z = z_boundaryChecker;
end
else if(c_z_big[`BIT_WIDTH] != c_z_big[`BIT_WIDTH-1] && z_boundaryChecker[`BIT_WIDTH-1] == c_zmult_big[2*`BIT_WIDTH-2])
begin
// c_dead = 1'b1;
c_z = `INTMAX;
end
else if (c_z_big[`BIT_WIDTH-1] == 1'b1)
begin
// c_dead = 1'b1;
c_z = 0;
end
else
begin
c_z = c_z_big[`BIT_WIDTH-1:0];
end
// Calculate c_dead (necessary because odin does not support block statements).
if( (c_x_big[`BIT_WIDTH] != c_x_big[`BIT_WIDTH-1] && x_boundaryChecker[`BIT_WIDTH-1] == c_xmult_big[2*`BIT_WIDTH-2])
|(c_y_big[`BIT_WIDTH] != c_y_big[`BIT_WIDTH-1] && y_boundaryChecker[`BIT_WIDTH-1] == c_ymult_big[2*`BIT_WIDTH-2])
|(c_z_big[`BIT_WIDTH] != c_z_big[`BIT_WIDTH-1] && z_boundaryChecker[`BIT_WIDTH-1] == c_zmult_big[2*`BIT_WIDTH-2]) )
begin
c_dead = 1'b1;
end
else
begin
c_dead = dead_boundaryChecker;
end
end
// latch values
always @ (posedge clock)
begin
if (reset)
begin
// Photon variables
x_hop <= 0;
y_hop <= 0;
z_hop <= 0;
ux_hop <= 0;
uy_hop <= 0;
uz_hop <= 0;
sz_hop <= 0;
sr_hop <= 0;
sleftz_hop <= 0;
sleftr_hop <= 0;
layer_hop <= 0;
weight_hop <= 0;
dead_hop <= 1'b1;
hit_hop <= 1'b0;
end
else
begin
if(enable)
begin
// Photon variables
ux_hop <= ux_boundaryChecker;
uy_hop <= uy_boundaryChecker;
uz_hop <= uz_boundaryChecker;
sz_hop <= sz_boundaryChecker;
sr_hop <= sr_boundaryChecker;
sleftz_hop <= sleftz_boundaryChecker;
sleftr_hop <= sleftr_boundaryChecker;
layer_hop <= layer_boundaryChecker;
weight_hop <= weight_boundaryChecker;
hit_hop <= hit_boundaryChecker;
x_hop <= c_x;
y_hop <= c_y;
z_hop <= c_z;
dead_hop <= c_dead;
end
end
end
endmodule
/////////////////////////////////////////////////////////////
//mult_signed_32
/////////////////////////////////////////////////////////////
module mult_signed_32(a, b, c);
input [31:0]a;
input [31:0]b;
output [63:0]c;
reg [63:0]c;
reg is_neg_a;
reg is_neg_b;
reg [31:0]a_tmp;
reg [31:0]b_tmp;
reg [63:0]c_tmp;
always@(a or b or is_neg_a or is_neg_b or a_tmp or b_tmp or c)
begin
if(a[31] == 1) begin
a_tmp = -a;
is_neg_a = 1;
end else
begin
a_tmp = a;
is_neg_a = 0;
end
if(b[31] == 1) begin
b_tmp = -b;
is_neg_b = 1;
end else
begin
b_tmp = b;
is_neg_b = 0;
end
if( is_neg_a != is_neg_b) begin
c_tmp = -(a_tmp * b_tmp);
end else
begin
c_tmp = (a_tmp * b_tmp);
end
end
always@(c_tmp)
begin
c = c_tmp;
end
endmodule
module Roulette ( //INPUTS
clock, reset, enable,
x_RouletteMux, y_RouletteMux, z_RouletteMux,
ux_RouletteMux, uy_RouletteMux, uz_RouletteMux,
sz_RouletteMux, sr_RouletteMux,
sleftz_RouletteMux, sleftr_RouletteMux,
layer_RouletteMux, weight_absorber, dead_RouletteMux,
//From Random Number Generator in Skeleton.v
randnumber,
//OUTPUTS
x_Roulette, y_Roulette, z_Roulette,
ux_Roulette, uy_Roulette, uz_Roulette,
sz_Roulette, sr_Roulette,
sleftz_Roulette, sleftr_Roulette,
layer_Roulette, weight_Roulette, dead_Roulette
);
//parameter BIT_WIDTH=32;
//parameter LAYER_WIDTH=3;
//parameter LEFTSHIFT=3; // 2^3=8=1/0.125 where 0.125 = CHANCE of roulette
//parameter INTCHANCE=536870912; //Based on 32 bit rand num generator
//parameter MIN_WEIGHT=200;
input clock;
input reset;
input enable;
input [`BIT_WIDTH-1:0] x_RouletteMux;
input [`BIT_WIDTH-1:0] y_RouletteMux;
input [`BIT_WIDTH-1:0] z_RouletteMux;
input [`BIT_WIDTH-1:0] ux_RouletteMux;
input [`BIT_WIDTH-1:0] uy_RouletteMux;
input [`BIT_WIDTH-1:0] uz_RouletteMux;
input [`BIT_WIDTH-1:0] sz_RouletteMux;
input [`BIT_WIDTH-1:0] sr_RouletteMux;
input [`BIT_WIDTH-1:0] sleftz_RouletteMux;
input [`BIT_WIDTH-1:0] sleftr_RouletteMux;
input [`LAYER_WIDTH-1:0] layer_RouletteMux;
input [`BIT_WIDTH-1:0] weight_absorber;
input [`BIT_WIDTH-1:0] randnumber;
input dead_RouletteMux;
output [`BIT_WIDTH-1:0] x_Roulette;
output [`BIT_WIDTH-1:0] y_Roulette;
output [`BIT_WIDTH-1:0] z_Roulette;
output [`BIT_WIDTH-1:0] ux_Roulette;
output [`BIT_WIDTH-1:0] uy_Roulette;
output [`BIT_WIDTH-1:0] uz_Roulette;
output [`BIT_WIDTH-1:0] sz_Roulette;
output [`BIT_WIDTH-1:0] sr_Roulette;
output [`BIT_WIDTH-1:0] sleftz_Roulette;
output [`BIT_WIDTH-1:0] sleftr_Roulette;
output [`LAYER_WIDTH-1:0]layer_Roulette;
output [`BIT_WIDTH-1:0] weight_Roulette;
output dead_Roulette;
//------------Local Variables------------------------
reg dead_roulette;
reg [`BIT_WIDTH-1:0] weight_roulette;
reg [31:0] randBits; //Hard-coded bitwidth because rng is 32-bit
//------------REGISTERED Values------------------------
reg [`BIT_WIDTH-1:0] x_Roulette;
reg [`BIT_WIDTH-1:0] y_Roulette;
reg [`BIT_WIDTH-1:0] z_Roulette;
reg [`BIT_WIDTH-1:0] ux_Roulette;
reg [`BIT_WIDTH-1:0] uy_Roulette;
reg [`BIT_WIDTH-1:0] uz_Roulette;
reg [`BIT_WIDTH-1:0] sz_Roulette;
reg [`BIT_WIDTH-1:0] sr_Roulette;
reg [`BIT_WIDTH-1:0] sleftz_Roulette;
reg [`BIT_WIDTH-1:0] sleftr_Roulette;
reg [`LAYER_WIDTH-1:0]layer_Roulette;
reg [`BIT_WIDTH-1:0] weight_Roulette;
reg dead_Roulette;
always @ (reset or enable or weight_absorber or randBits or randnumber or dead_RouletteMux) begin
//Default case moved inside else statements for odin
//randBits = randnumber; //Reading from external random num generator
//weight_roulette=weight_absorber; //Avoid inferring a latch
//dead_roulette=dead_RouletteMux;
if (reset) begin
//Local variables
weight_roulette=0;
dead_roulette=0;
randBits=0;
end
else if (enable) begin
//Set default case
randBits = randnumber;
//DO ROULETTE!!!
if (weight_absorber < `MIN_WEIGHT && !dead_RouletteMux) begin
//Replicate Operator (same as 32'b000000..., except more flexible)
if (weight_absorber== {`BIT_WIDTH{1'b0}}) begin
dead_roulette = 1;
weight_roulette = weight_absorber;
end
else if (randBits < `INTCHANCE) begin // survived the roulette
dead_roulette=0;
weight_roulette=weight_absorber << `LEFTSHIFT; //To avoid mult
end
else begin
dead_roulette=1;
weight_roulette = weight_absorber;
end
end
//No Roulette
else begin
weight_roulette = weight_absorber;
dead_roulette = 0;
end
end
else //for insurance that this is default case
begin
randBits = randnumber;
weight_roulette = weight_absorber;
dead_roulette = dead_RouletteMux;
end
end
always @ (posedge clock) begin
if (reset) begin
x_Roulette <= 0;
y_Roulette <= 0;
z_Roulette <= 0;
ux_Roulette <= 0;
uy_Roulette <= 0;
uz_Roulette <= 0;
sz_Roulette <= 0;
sr_Roulette <= 0;
sleftz_Roulette <= 0;
sleftr_Roulette <= 0;
layer_Roulette <= 0;
weight_Roulette <= 0;
dead_Roulette <= 1'b1;
end
else if (enable) begin
//Write through values from Roulette block
dead_Roulette <= (dead_RouletteMux | dead_roulette); //OR operator ???
weight_Roulette <= weight_roulette; //weight_absorber.read();
//Write through unchanged values
x_Roulette <= x_RouletteMux;
y_Roulette <= y_RouletteMux;
z_Roulette <= z_RouletteMux;
ux_Roulette <= ux_RouletteMux;
uy_Roulette <= uy_RouletteMux;
uz_Roulette <= uz_RouletteMux;
sz_Roulette <= sz_RouletteMux;
sr_Roulette <= sr_RouletteMux;
sleftz_Roulette <= sleftz_RouletteMux;
sleftr_Roulette <= sleftr_RouletteMux;
layer_Roulette <= layer_RouletteMux;
end
end
endmodule
module rng(clk, en, resetn,loadseed_i,seed_i,number_o);
input clk;
input resetn;
input en;
input loadseed_i;
input [31:0] seed_i;
output [31:0] number_o;
wire [31:0] number_o;
reg [31:0] c_b1, c_b2, c_b3;
reg [31:0] c_s1, c_s2, c_s3;
reg [31:0] r_s1, r_s2, r_s3;
assign number_o = r_s1 ^ r_s2 ^ r_s3;
always @(loadseed_i or seed_i or r_s1 or r_s2 or r_s3)
begin
if(loadseed_i)
begin
c_b1 = 32'b0;
c_s1 = seed_i;
c_b2 = 32'b0;
c_s2 = {seed_i[5:0], seed_i[17], seed_i[18], seed_i[19], seed_i[20], seed_i[25:21], seed_i[31:26], seed_i[16:6]} ^ 32'd1493609598;
c_b3 = 32'b0;
c_s3 = {seed_i[23:16], seed_i[5], seed_i[6], seed_i[7], seed_i[15:8], seed_i[4:0], seed_i[31:24]} ^ 32'd3447127471;
end
else
begin
c_b1 = (((r_s1 << 13) ^ r_s1) >> 19);
c_s1 = (((r_s1 & 32'd4294967294) << 12) ^ c_b1);
c_b2 = (((r_s2 << 2) ^ r_s2) >> 25);
c_s2 = (((r_s2 & 32'd4294967288) << 4) ^ c_b2);
c_b3 = (((r_s3 << 3) ^ r_s3) >> 11);
c_s3 = (((r_s3 & 32'd4294967280) << 17) ^ c_b3);
end
end
//combinate:
always @(posedge clk or negedge resetn)
begin
if (!resetn )
begin
r_s1 <= 32'b0;
r_s2 <= 32'b0;
r_s3 <= 32'b0;
end
else if (en) //Originally else only
begin
r_s1 <= c_s1;
r_s2 <= c_s2;
r_s3 <= c_s3;
end
end
endmodule
module LogCalc(clock, reset, enable, in_x, log_x);
//parameter BIT_WIDTH=32;
//parameter MANTISSA_PRECISION=10;
//parameter LOG2_BIT_WIDTH = 6;
//parameter LOG2=93032639;
input clock;
input reset;
input enable;
input [`BIT_WIDTH - 1:0] in_x;
output [`BIT_WIDTH - 1:0] log_x;
wire [`BIT_WIDTH - 1:0] mantissa;
reg [`BIT_WIDTH - 1:0] c_mantissa_val;
// deleted unsigned in these
reg [`BIT_WIDTH - 1:0] c_log_x;
reg [`LOG2_BIT_WIDTH - 1:0] c_indexFirstOne;
reg [`BIT_WIDTH - 1:0] c_temp_shift_x;
reg [`MANTISSA_PRECISION - 1:0] c_shifted_x;
reg [`LOG2_BIT_WIDTH - 1:0] r_indexFirstOne;
reg [`BIT_WIDTH - 1:0] log_x;
//Log_mantissa u1(c_shifted_x, clock, mantissa);
wire [31:0]blank;
assign blank = 32'b000000000000000000000000000000;
single_port_ram sram_replace0 (.clk (clock), .addr (c_shifted_x), .data (blank), .we (1'b0), .out (mantissa));
// priority encoder
//integer i;
//always @*
//begin
// c_indexFirstOne = 6'b0;
// for(i = 0; i < `BIT_WIDTH; i = i + 1)
// begin
// if(in_x[i])
// c_indexFirstOne = i;
// end
//end
// Priority encoder, loop expanded
always @(in_x)
begin
if (in_x[31]) begin
c_indexFirstOne = 6'b011111;
end
else if (in_x[30]) begin
c_indexFirstOne = 6'b011110;
end
else if (in_x[29]) begin
c_indexFirstOne = 6'b011101;
end
else if (in_x[28]) begin
c_indexFirstOne = 6'b011100;
end
else if (in_x[27]) begin
c_indexFirstOne = 6'b011011;
end
else if (in_x[26]) begin
c_indexFirstOne = 6'b011010;
end
else if (in_x[25]) begin
c_indexFirstOne = 6'b011001;
end
else if (in_x[24]) begin
c_indexFirstOne = 6'b011000;
end
else if (in_x[23]) begin
c_indexFirstOne = 6'b010111;
end
else if (in_x[22]) begin
c_indexFirstOne = 6'b010110;
end
else if (in_x[21]) begin
c_indexFirstOne = 6'b010101;
end
else if (in_x[20]) begin
c_indexFirstOne = 6'b010100;
end
else if (in_x[19]) begin
c_indexFirstOne = 6'b010011;
end
else if (in_x[18]) begin
c_indexFirstOne = 6'b010010;
end
else if (in_x[17]) begin
c_indexFirstOne = 6'b010001;
end
else if (in_x[16]) begin
c_indexFirstOne = 6'b010000;
end
else if (in_x[15]) begin
c_indexFirstOne = 6'b001111;
end
else if (in_x[14]) begin
c_indexFirstOne = 6'b001110;
end
else if (in_x[13]) begin
c_indexFirstOne = 6'b001101;
end
else if (in_x[12]) begin
c_indexFirstOne = 6'b001100;
end
else if (in_x[11]) begin
c_indexFirstOne = 6'b001011;
end
else if (in_x[10]) begin
c_indexFirstOne = 6'b001010;
end
else if (in_x[9]) begin
c_indexFirstOne = 6'b001001;
end
else if (in_x[8]) begin
c_indexFirstOne = 6'b001000;
end
else if (in_x[7]) begin
c_indexFirstOne = 6'b000111;
end
else if (in_x[6]) begin
c_indexFirstOne = 6'b000110;
end
else if (in_x[5]) begin
c_indexFirstOne = 6'b000101;
end
else if (in_x[4]) begin
c_indexFirstOne = 6'b000100;
end
else if (in_x[3]) begin
c_indexFirstOne = 6'b000011;
end
else if (in_x[2]) begin
c_indexFirstOne = 6'b000010;
end
else if (in_x[1]) begin
c_indexFirstOne = 6'b000001;
end
else if (in_x[0]) begin
c_indexFirstOne = 6'b000000;
end
else begin
c_indexFirstOne = 6'b000000;
end
end
// shift operation based on priority encoder results
//Need constant shift
wire [5:0]shifted;
assign shifted = c_indexFirstOne - `MANTISSA_PRECISION + 1;
always@(c_indexFirstOne or in_x or shifted)
begin
// c_temp_shift_x = in_x >> (c_indexFirstOne - `MANTISSA_PRECISION + 1);
if(c_indexFirstOne >= `MANTISSA_PRECISION)
begin
if(shifted == 22) begin
c_temp_shift_x = in_x >> 22;
end
else if(shifted == 21) begin
c_temp_shift_x = in_x >> 21;
end
else if(shifted == 20) begin
c_temp_shift_x = in_x >> 20;
end
else if(shifted == 19) begin
c_temp_shift_x = in_x >> 19;
end
else if(shifted == 18) begin
c_temp_shift_x = in_x >> 18;
end
else if(shifted == 17) begin
c_temp_shift_x = in_x >> 17;
end
else if(shifted == 16) begin
c_temp_shift_x = in_x >> 16;
end
else if(shifted == 15) begin
c_temp_shift_x = in_x >> 15;
end
else if(shifted == 14) begin
c_temp_shift_x = in_x >> 14;
end
else if(shifted == 13) begin
c_temp_shift_x = in_x >> 13;
end
else if(shifted == 12) begin
c_temp_shift_x = in_x >> 12;
end
else if(shifted == 11) begin
c_temp_shift_x = in_x >> 11;
end
else if(shifted == 10) begin
c_temp_shift_x = in_x >> 10;
end
else if(shifted == 9) begin
c_temp_shift_x = in_x >> 9;
end
else if(shifted == 8) begin
c_temp_shift_x = in_x >> 8;
end
else if(shifted == 7) begin
c_temp_shift_x = in_x >> 7;
end
else if(shifted == 6) begin
c_temp_shift_x = in_x >> 6;
end
else if(shifted == 5) begin
c_temp_shift_x = in_x >> 5;
end
else if(shifted == 4) begin
c_temp_shift_x = in_x >> 4;
end
else if(shifted == 3) begin
c_temp_shift_x = in_x >> 3;
end
else if(shifted == 2) begin
c_temp_shift_x = in_x >> 2;
end
else if(shifted == 1) begin
c_temp_shift_x = in_x >> 1;
end
else begin
c_temp_shift_x = in_x >> 0;
end
//Store needed bits of shifted value
c_shifted_x = c_temp_shift_x[`MANTISSA_PRECISION - 1:0];
end
else begin
c_shifted_x = in_x[`MANTISSA_PRECISION - 1:0];
c_temp_shift_x = 32'b0;
end
end
// calculate log
always@(r_indexFirstOne or mantissa)
begin
if(r_indexFirstOne >= `MANTISSA_PRECISION)
begin
c_log_x = mantissa - ((`MANTISSA_PRECISION - 1) * `LOG2) + (r_indexFirstOne * `LOG2);
end
else
begin
c_log_x = mantissa;
end
end
// latch values
always @(posedge clock)
begin
if(reset)
begin
log_x <= 0;
r_indexFirstOne <= 0;
end
else
begin
if(enable)
begin
r_indexFirstOne <= c_indexFirstOne;
log_x <= c_log_x;
end
end
end
endmodule
module DropSpinWrapper (
clock, reset, enable,
//From Hopper Module
i_x,
i_y,
i_z,
i_ux,
i_uy,
i_uz,
i_sz,
i_sr,
i_sleftz,
i_sleftr,
i_weight,
i_layer,
i_dead,
i_hit,
//From System Register File (5 layers)- Absorber
muaFraction1, muaFraction2, muaFraction3, muaFraction4, muaFraction5,
//From System Register File - ScattererReflector
down_niOverNt_1,
down_niOverNt_2,
down_niOverNt_3,
down_niOverNt_4,
down_niOverNt_5,
up_niOverNt_1,
up_niOverNt_2,
up_niOverNt_3,
up_niOverNt_4,
up_niOverNt_5,
down_niOverNt_2_1,
down_niOverNt_2_2,
down_niOverNt_2_3,
down_niOverNt_2_4,
down_niOverNt_2_5,
up_niOverNt_2_1,
up_niOverNt_2_2,
up_niOverNt_2_3,
up_niOverNt_2_4,
up_niOverNt_2_5,
downCritAngle_0,
downCritAngle_1,
downCritAngle_2,
downCritAngle_3,
downCritAngle_4,
upCritAngle_0,
upCritAngle_1,
upCritAngle_2,
upCritAngle_3,
upCritAngle_4,
//////////////////////////////////////////////////////////////////////////////
//I/O to on-chip mem
/////////////////////////////////////////////////////////////////////////////
data,
rdaddress, wraddress,
wren, q,
//From Memories
up_rFresnel,
down_rFresnel,
sint,
cost,
rand2,
rand3,
rand5,
//To Memories
tindex,
fresIndex,
//To DeadOrAlive Module
o_x,
o_y,
o_z,
o_ux,
o_uy,
o_uz,
o_sz,
o_sr,
o_sleftz,
o_sleftr,
o_weight,
o_layer,
o_dead,
o_hit
);
//////////////////////////////////////////////////////////////////////////////
//PARAMETERS
//////////////////////////////////////////////////////////////////////////////
//parameter BIT_WIDTH=32;
//parameter LAYER_WIDTH=3;
//parameter PIPE_DEPTH = 37;
//parameter ADDR_WIDTH=16; //TODO: TBD
//parameter WORD_WIDTH=64;
//////////////////////////////////////////////////////////////////////////////
//INPUTS
//////////////////////////////////////////////////////////////////////////////
input clock, reset, enable;
//From Hopper Module
input [`BIT_WIDTH-1:0] i_x;
input [`BIT_WIDTH-1:0] i_y;
input [`BIT_WIDTH-1:0] i_z;
input [`BIT_WIDTH-1:0] i_ux;
input [`BIT_WIDTH-1:0] i_uy;
input [`BIT_WIDTH-1:0] i_uz;
input [`BIT_WIDTH-1:0] i_sz;
input [`BIT_WIDTH-1:0] i_sr;
input [`BIT_WIDTH-1:0] i_sleftz;
input [`BIT_WIDTH-1:0] i_sleftr;
input [`BIT_WIDTH-1:0] i_weight;
input [`LAYER_WIDTH-1:0] i_layer;
input i_dead;
input i_hit;
//From System Register File (5 layers)- Absorber
input [`BIT_WIDTH-1:0] muaFraction1, muaFraction2, muaFraction3, muaFraction4, muaFraction5;
//From System Register File - ScattererReflector
input [`BIT_WIDTH-1:0] down_niOverNt_1;
input [`BIT_WIDTH-1:0] down_niOverNt_2;
input [`BIT_WIDTH-1:0] down_niOverNt_3;
input [`BIT_WIDTH-1:0] down_niOverNt_4;
input [`BIT_WIDTH-1:0] down_niOverNt_5;
input [`BIT_WIDTH-1:0] up_niOverNt_1;
input [`BIT_WIDTH-1:0] up_niOverNt_2;
input [`BIT_WIDTH-1:0] up_niOverNt_3;
input [`BIT_WIDTH-1:0] up_niOverNt_4;
input [`BIT_WIDTH-1:0] up_niOverNt_5;
input [`WORD_WIDTH-1:0] down_niOverNt_2_1;
input [`WORD_WIDTH-1:0] down_niOverNt_2_2;
input [`WORD_WIDTH-1:0] down_niOverNt_2_3;
input [`WORD_WIDTH-1:0] down_niOverNt_2_4;
input [`WORD_WIDTH-1:0] down_niOverNt_2_5;
input [`WORD_WIDTH-1:0] up_niOverNt_2_1;
input [`WORD_WIDTH-1:0] up_niOverNt_2_2;
input [`WORD_WIDTH-1:0] up_niOverNt_2_3;
input [`WORD_WIDTH-1:0] up_niOverNt_2_4;
input [`WORD_WIDTH-1:0] up_niOverNt_2_5;
input [`BIT_WIDTH-1:0] downCritAngle_0;
input [`BIT_WIDTH-1:0] downCritAngle_1;
input [`BIT_WIDTH-1:0] downCritAngle_2;
input [`BIT_WIDTH-1:0] downCritAngle_3;
input [`BIT_WIDTH-1:0] downCritAngle_4;
input [`BIT_WIDTH-1:0] upCritAngle_0;
input [`BIT_WIDTH-1:0] upCritAngle_1;
input [`BIT_WIDTH-1:0] upCritAngle_2;
input [`BIT_WIDTH-1:0] upCritAngle_3;
input [`BIT_WIDTH-1:0] upCritAngle_4;
//Generated by random number generators controlled by skeleton
output [12:0] tindex;
output [9:0] fresIndex;
input [31:0] rand2;
input [31:0] rand3;
input [31:0] rand5;
input [31:0] sint;
input [31:0] cost;
input [31:0] up_rFresnel;
input [31:0] down_rFresnel;
//////////////////////////////////////////////////////////////////////////////
//OUTPUTS
/////////////////////////////////////////////////////////////////////////////
//To DeadOrAlive Module
output [`BIT_WIDTH-1:0] o_x;
output [`BIT_WIDTH-1:0] o_y;
output [`BIT_WIDTH-1:0] o_z;
output [`BIT_WIDTH-1:0] o_ux;
output [`BIT_WIDTH-1:0] o_uy;
output [`BIT_WIDTH-1:0] o_uz;
output [`BIT_WIDTH-1:0] o_sz;
output [`BIT_WIDTH-1:0] o_sr;
output [`BIT_WIDTH-1:0] o_sleftz;
output [`BIT_WIDTH-1:0] o_sleftr;
output [`BIT_WIDTH-1:0] o_weight;
output [`LAYER_WIDTH-1:0] o_layer;
output o_dead;
output o_hit;
wire [`BIT_WIDTH-1:0] o_x;
wire [`BIT_WIDTH-1:0] o_y;
wire [`BIT_WIDTH-1:0] o_z;
reg [`BIT_WIDTH-1:0] o_ux;
reg [`BIT_WIDTH-1:0] o_uy;
reg [`BIT_WIDTH-1:0] o_uz;
wire [`BIT_WIDTH-1:0] o_sz;
wire [`BIT_WIDTH-1:0] o_sr;
wire [`BIT_WIDTH-1:0] o_sleftz;
wire [`BIT_WIDTH-1:0] o_sleftr;
wire [`BIT_WIDTH-1:0] o_weight;
reg [`LAYER_WIDTH-1:0] o_layer;
reg o_dead;
wire o_hit;
//////////////////////////////////////////////////////////////////////////////
//I/O to on-chip mem
/////////////////////////////////////////////////////////////////////////////
output [`WORD_WIDTH-1:0] data;
output [`ADDR_WIDTH-1:0] rdaddress, wraddress;
output wren;
input [`WORD_WIDTH-1:0] q;
//////////////////////////////////////////////////////////////////////////////
//Generate SHARED REGISTER PIPELINE
//////////////////////////////////////////////////////////////////////////////
//WIRES FOR CONNECTING REGISTERS
//wire [`BIT_WIDTH-1:0] x [PIPE_DEPTH:0];
//wire [`BIT_WIDTH-1:0] y [PIPE_DEPTH:0];
//wire [`BIT_WIDTH-1:0] z [PIPE_DEPTH:0];
//wire [`BIT_WIDTH-1:0] ux [PIPE_DEPTH:0];
//wire [`BIT_WIDTH-1:0] uy [PIPE_DEPTH:0];
//wire [`BIT_WIDTH-1:0] uz [PIPE_DEPTH:0];
//wire [`BIT_WIDTH-1:0] sz [PIPE_DEPTH:0];
//wire [`BIT_WIDTH-1:0] sr [PIPE_DEPTH:0];
//wire [`BIT_WIDTH-1:0] sleftz [PIPE_DEPTH:0];
//wire [`BIT_WIDTH-1:0] sleftr [PIPE_DEPTH:0];
//wire [`BIT_WIDTH-1:0] weight [PIPE_DEPTH:0];
//wire [LAYER_WIDTH-1:0] layer [PIPE_DEPTH:0];
//wire dead [PIPE_DEPTH:0];
//wire hit [PIPE_DEPTH:0];
//WIRES FOR CONNECTING REGISTERS
//wire [32-1:0] x [37:0];
wire [32-1:0] x__0;
wire [32-1:0] x__1;
wire [32-1:0] x__2;
wire [32-1:0] x__3;
wire [32-1:0] x__4;
wire [32-1:0] x__5;
wire [32-1:0] x__6;
wire [32-1:0] x__7;
wire [32-1:0] x__8;
wire [32-1:0] x__9;
wire [32-1:0] x__10;
wire [32-1:0] x__11;
wire [32-1:0] x__12;
wire [32-1:0] x__13;
wire [32-1:0] x__14;
wire [32-1:0] x__15;
wire [32-1:0] x__16;
wire [32-1:0] x__17;
wire [32-1:0] x__18;
wire [32-1:0] x__19;
wire [32-1:0] x__20;
wire [32-1:0] x__21;
wire [32-1:0] x__22;
wire [32-1:0] x__23;
wire [32-1:0] x__24;
wire [32-1:0] x__25;
wire [32-1:0] x__26;
wire [32-1:0] x__27;
wire [32-1:0] x__28;
wire [32-1:0] x__29;
wire [32-1:0] x__30;
wire [32-1:0] x__31;
wire [32-1:0] x__32;
wire [32-1:0] x__33;
wire [32-1:0] x__34;
wire [32-1:0] x__35;
wire [32-1:0] x__36;
wire [32-1:0] x__37;
//wire [32-1:0] y [37:0];
wire [32-1:0] y__0;
wire [32-1:0] y__1;
wire [32-1:0] y__2;
wire [32-1:0] y__3;
wire [32-1:0] y__4;
wire [32-1:0] y__5;
wire [32-1:0] y__6;
wire [32-1:0] y__7;
wire [32-1:0] y__8;
wire [32-1:0] y__9;
wire [32-1:0] y__10;
wire [32-1:0] y__11;
wire [32-1:0] y__12;
wire [32-1:0] y__13;
wire [32-1:0] y__14;
wire [32-1:0] y__15;
wire [32-1:0] y__16;
wire [32-1:0] y__17;
wire [32-1:0] y__18;
wire [32-1:0] y__19;
wire [32-1:0] y__20;
wire [32-1:0] y__21;
wire [32-1:0] y__22;
wire [32-1:0] y__23;
wire [32-1:0] y__24;
wire [32-1:0] y__25;
wire [32-1:0] y__26;
wire [32-1:0] y__27;
wire [32-1:0] y__28;
wire [32-1:0] y__29;
wire [32-1:0] y__30;
wire [32-1:0] y__31;
wire [32-1:0] y__32;
wire [32-1:0] y__33;
wire [32-1:0] y__34;
wire [32-1:0] y__35;
wire [32-1:0] y__36;
wire [32-1:0] y__37;
//wire [32-1:0] z [37:0];
wire [32-1:0] z__0;
wire [32-1:0] z__1;
wire [32-1:0] z__2;
wire [32-1:0] z__3;
wire [32-1:0] z__4;
wire [32-1:0] z__5;
wire [32-1:0] z__6;
wire [32-1:0] z__7;
wire [32-1:0] z__8;
wire [32-1:0] z__9;
wire [32-1:0] z__10;
wire [32-1:0] z__11;
wire [32-1:0] z__12;
wire [32-1:0] z__13;
wire [32-1:0] z__14;
wire [32-1:0] z__15;
wire [32-1:0] z__16;
wire [32-1:0] z__17;
wire [32-1:0] z__18;
wire [32-1:0] z__19;
wire [32-1:0] z__20;
wire [32-1:0] z__21;
wire [32-1:0] z__22;
wire [32-1:0] z__23;
wire [32-1:0] z__24;
wire [32-1:0] z__25;
wire [32-1:0] z__26;
wire [32-1:0] z__27;
wire [32-1:0] z__28;
wire [32-1:0] z__29;
wire [32-1:0] z__30;
wire [32-1:0] z__31;
wire [32-1:0] z__32;
wire [32-1:0] z__33;
wire [32-1:0] z__34;
wire [32-1:0] z__35;
wire [32-1:0] z__36;
wire [32-1:0] z__37;
//wire [32-1:0] ux [37:0];
wire [32-1:0] ux__0;
wire [32-1:0] ux__1;
wire [32-1:0] ux__2;
wire [32-1:0] ux__3;
wire [32-1:0] ux__4;
wire [32-1:0] ux__5;
wire [32-1:0] ux__6;
wire [32-1:0] ux__7;
wire [32-1:0] ux__8;
wire [32-1:0] ux__9;
wire [32-1:0] ux__10;
wire [32-1:0] ux__11;
wire [32-1:0] ux__12;
wire [32-1:0] ux__13;
wire [32-1:0] ux__14;
wire [32-1:0] ux__15;
wire [32-1:0] ux__16;
wire [32-1:0] ux__17;
wire [32-1:0] ux__18;
wire [32-1:0] ux__19;
wire [32-1:0] ux__20;
wire [32-1:0] ux__21;
wire [32-1:0] ux__22;
wire [32-1:0] ux__23;
wire [32-1:0] ux__24;
wire [32-1:0] ux__25;
wire [32-1:0] ux__26;
wire [32-1:0] ux__27;
wire [32-1:0] ux__28;
wire [32-1:0] ux__29;
wire [32-1:0] ux__30;
wire [32-1:0] ux__31;
wire [32-1:0] ux__32;
wire [32-1:0] ux__33;
wire [32-1:0] ux__34;
wire [32-1:0] ux__35;
wire [32-1:0] ux__36;
wire [32-1:0] ux__37;
//wire [32-1:0] uy [37:0];
wire [32-1:0] uy__0;
wire [32-1:0] uy__1;
wire [32-1:0] uy__2;
wire [32-1:0] uy__3;
wire [32-1:0] uy__4;
wire [32-1:0] uy__5;
wire [32-1:0] uy__6;
wire [32-1:0] uy__7;
wire [32-1:0] uy__8;
wire [32-1:0] uy__9;
wire [32-1:0] uy__10;
wire [32-1:0] uy__11;
wire [32-1:0] uy__12;
wire [32-1:0] uy__13;
wire [32-1:0] uy__14;
wire [32-1:0] uy__15;
wire [32-1:0] uy__16;
wire [32-1:0] uy__17;
wire [32-1:0] uy__18;
wire [32-1:0] uy__19;
wire [32-1:0] uy__20;
wire [32-1:0] uy__21;
wire [32-1:0] uy__22;
wire [32-1:0] uy__23;
wire [32-1:0] uy__24;
wire [32-1:0] uy__25;
wire [32-1:0] uy__26;
wire [32-1:0] uy__27;
wire [32-1:0] uy__28;
wire [32-1:0] uy__29;
wire [32-1:0] uy__30;
wire [32-1:0] uy__31;
wire [32-1:0] uy__32;
wire [32-1:0] uy__33;
wire [32-1:0] uy__34;
wire [32-1:0] uy__35;
wire [32-1:0] uy__36;
wire [32-1:0] uy__37;
//wire [32-1:0] uz [37:0];
wire [32-1:0] uz__0;
wire [32-1:0] uz__1;
wire [32-1:0] uz__2;
wire [32-1:0] uz__3;
wire [32-1:0] uz__4;
wire [32-1:0] uz__5;
wire [32-1:0] uz__6;
wire [32-1:0] uz__7;
wire [32-1:0] uz__8;
wire [32-1:0] uz__9;
wire [32-1:0] uz__10;
wire [32-1:0] uz__11;
wire [32-1:0] uz__12;
wire [32-1:0] uz__13;
wire [32-1:0] uz__14;
wire [32-1:0] uz__15;
wire [32-1:0] uz__16;
wire [32-1:0] uz__17;
wire [32-1:0] uz__18;
wire [32-1:0] uz__19;
wire [32-1:0] uz__20;
wire [32-1:0] uz__21;
wire [32-1:0] uz__22;
wire [32-1:0] uz__23;
wire [32-1:0] uz__24;
wire [32-1:0] uz__25;
wire [32-1:0] uz__26;
wire [32-1:0] uz__27;
wire [32-1:0] uz__28;
wire [32-1:0] uz__29;
wire [32-1:0] uz__30;
wire [32-1:0] uz__31;
wire [32-1:0] uz__32;
wire [32-1:0] uz__33;
wire [32-1:0] uz__34;
wire [32-1:0] uz__35;
wire [32-1:0] uz__36;
wire [32-1:0] uz__37;
//wire [32-1:0] sz [37:0];
wire [32-1:0] sz__0;
wire [32-1:0] sz__1;
wire [32-1:0] sz__2;
wire [32-1:0] sz__3;
wire [32-1:0] sz__4;
wire [32-1:0] sz__5;
wire [32-1:0] sz__6;
wire [32-1:0] sz__7;
wire [32-1:0] sz__8;
wire [32-1:0] sz__9;
wire [32-1:0] sz__10;
wire [32-1:0] sz__11;
wire [32-1:0] sz__12;
wire [32-1:0] sz__13;
wire [32-1:0] sz__14;
wire [32-1:0] sz__15;
wire [32-1:0] sz__16;
wire [32-1:0] sz__17;
wire [32-1:0] sz__18;
wire [32-1:0] sz__19;
wire [32-1:0] sz__20;
wire [32-1:0] sz__21;
wire [32-1:0] sz__22;
wire [32-1:0] sz__23;
wire [32-1:0] sz__24;
wire [32-1:0] sz__25;
wire [32-1:0] sz__26;
wire [32-1:0] sz__27;
wire [32-1:0] sz__28;
wire [32-1:0] sz__29;
wire [32-1:0] sz__30;
wire [32-1:0] sz__31;
wire [32-1:0] sz__32;
wire [32-1:0] sz__33;
wire [32-1:0] sz__34;
wire [32-1:0] sz__35;
wire [32-1:0] sz__36;
wire [32-1:0] sz__37;
//wire [32-1:0] sr [37:0];
wire [32-1:0] sr__0;
wire [32-1:0] sr__1;
wire [32-1:0] sr__2;
wire [32-1:0] sr__3;
wire [32-1:0] sr__4;
wire [32-1:0] sr__5;
wire [32-1:0] sr__6;
wire [32-1:0] sr__7;
wire [32-1:0] sr__8;
wire [32-1:0] sr__9;
wire [32-1:0] sr__10;
wire [32-1:0] sr__11;
wire [32-1:0] sr__12;
wire [32-1:0] sr__13;
wire [32-1:0] sr__14;
wire [32-1:0] sr__15;
wire [32-1:0] sr__16;
wire [32-1:0] sr__17;
wire [32-1:0] sr__18;
wire [32-1:0] sr__19;
wire [32-1:0] sr__20;
wire [32-1:0] sr__21;
wire [32-1:0] sr__22;
wire [32-1:0] sr__23;
wire [32-1:0] sr__24;
wire [32-1:0] sr__25;
wire [32-1:0] sr__26;
wire [32-1:0] sr__27;
wire [32-1:0] sr__28;
wire [32-1:0] sr__29;
wire [32-1:0] sr__30;
wire [32-1:0] sr__31;
wire [32-1:0] sr__32;
wire [32-1:0] sr__33;
wire [32-1:0] sr__34;
wire [32-1:0] sr__35;
wire [32-1:0] sr__36;
wire [32-1:0] sr__37;
//wire [32-1:0] sleftz [37:0];
wire [32-1:0] sleftz__0;
wire [32-1:0] sleftz__1;
wire [32-1:0] sleftz__2;
wire [32-1:0] sleftz__3;
wire [32-1:0] sleftz__4;
wire [32-1:0] sleftz__5;
wire [32-1:0] sleftz__6;
wire [32-1:0] sleftz__7;
wire [32-1:0] sleftz__8;
wire [32-1:0] sleftz__9;
wire [32-1:0] sleftz__10;
wire [32-1:0] sleftz__11;
wire [32-1:0] sleftz__12;
wire [32-1:0] sleftz__13;
wire [32-1:0] sleftz__14;
wire [32-1:0] sleftz__15;
wire [32-1:0] sleftz__16;
wire [32-1:0] sleftz__17;
wire [32-1:0] sleftz__18;
wire [32-1:0] sleftz__19;
wire [32-1:0] sleftz__20;
wire [32-1:0] sleftz__21;
wire [32-1:0] sleftz__22;
wire [32-1:0] sleftz__23;
wire [32-1:0] sleftz__24;
wire [32-1:0] sleftz__25;
wire [32-1:0] sleftz__26;
wire [32-1:0] sleftz__27;
wire [32-1:0] sleftz__28;
wire [32-1:0] sleftz__29;
wire [32-1:0] sleftz__30;
wire [32-1:0] sleftz__31;
wire [32-1:0] sleftz__32;
wire [32-1:0] sleftz__33;
wire [32-1:0] sleftz__34;
wire [32-1:0] sleftz__35;
wire [32-1:0] sleftz__36;
wire [32-1:0] sleftz__37;
//wire [32-1:0] sleftr [37:0];
wire [32-1:0] sleftr__0;
wire [32-1:0] sleftr__1;
wire [32-1:0] sleftr__2;
wire [32-1:0] sleftr__3;
wire [32-1:0] sleftr__4;
wire [32-1:0] sleftr__5;
wire [32-1:0] sleftr__6;
wire [32-1:0] sleftr__7;
wire [32-1:0] sleftr__8;
wire [32-1:0] sleftr__9;
wire [32-1:0] sleftr__10;
wire [32-1:0] sleftr__11;
wire [32-1:0] sleftr__12;
wire [32-1:0] sleftr__13;
wire [32-1:0] sleftr__14;
wire [32-1:0] sleftr__15;
wire [32-1:0] sleftr__16;
wire [32-1:0] sleftr__17;
wire [32-1:0] sleftr__18;
wire [32-1:0] sleftr__19;
wire [32-1:0] sleftr__20;
wire [32-1:0] sleftr__21;
wire [32-1:0] sleftr__22;
wire [32-1:0] sleftr__23;
wire [32-1:0] sleftr__24;
wire [32-1:0] sleftr__25;
wire [32-1:0] sleftr__26;
wire [32-1:0] sleftr__27;
wire [32-1:0] sleftr__28;
wire [32-1:0] sleftr__29;
wire [32-1:0] sleftr__30;
wire [32-1:0] sleftr__31;
wire [32-1:0] sleftr__32;
wire [32-1:0] sleftr__33;
wire [32-1:0] sleftr__34;
wire [32-1:0] sleftr__35;
wire [32-1:0] sleftr__36;
wire [32-1:0] sleftr__37;
//wire [32-1:0] weight [37:0];
wire [32-1:0] weight__0;
wire [32-1:0] weight__1;
wire [32-1:0] weight__2;
wire [32-1:0] weight__3;
wire [32-1:0] weight__4;
wire [32-1:0] weight__5;
wire [32-1:0] weight__6;
wire [32-1:0] weight__7;
wire [32-1:0] weight__8;
wire [32-1:0] weight__9;
wire [32-1:0] weight__10;
wire [32-1:0] weight__11;
wire [32-1:0] weight__12;
wire [32-1:0] weight__13;
wire [32-1:0] weight__14;
wire [32-1:0] weight__15;
wire [32-1:0] weight__16;
wire [32-1:0] weight__17;
wire [32-1:0] weight__18;
wire [32-1:0] weight__19;
wire [32-1:0] weight__20;
wire [32-1:0] weight__21;
wire [32-1:0] weight__22;
wire [32-1:0] weight__23;
wire [32-1:0] weight__24;
wire [32-1:0] weight__25;
wire [32-1:0] weight__26;
wire [32-1:0] weight__27;
wire [32-1:0] weight__28;
wire [32-1:0] weight__29;
wire [32-1:0] weight__30;
wire [32-1:0] weight__31;
wire [32-1:0] weight__32;
wire [32-1:0] weight__33;
wire [32-1:0] weight__34;
wire [32-1:0] weight__35;
wire [32-1:0] weight__36;
wire [32-1:0] weight__37;
//wire [3-1:0] layer [37:0];
wire [3-1:0] layer__0;
wire [3-1:0] layer__1;
wire [3-1:0] layer__2;
wire [3-1:0] layer__3;
wire [3-1:0] layer__4;
wire [3-1:0] layer__5;
wire [3-1:0] layer__6;
wire [3-1:0] layer__7;
wire [3-1:0] layer__8;
wire [3-1:0] layer__9;
wire [3-1:0] layer__10;
wire [3-1:0] layer__11;
wire [3-1:0] layer__12;
wire [3-1:0] layer__13;
wire [3-1:0] layer__14;
wire [3-1:0] layer__15;
wire [3-1:0] layer__16;
wire [3-1:0] layer__17;
wire [3-1:0] layer__18;
wire [3-1:0] layer__19;
wire [3-1:0] layer__20;
wire [3-1:0] layer__21;
wire [3-1:0] layer__22;
wire [3-1:0] layer__23;
wire [3-1:0] layer__24;
wire [3-1:0] layer__25;
wire [3-1:0] layer__26;
wire [3-1:0] layer__27;
wire [3-1:0] layer__28;
wire [3-1:0] layer__29;
wire [3-1:0] layer__30;
wire [3-1:0] layer__31;
wire [3-1:0] layer__32;
wire [3-1:0] layer__33;
wire [3-1:0] layer__34;
wire [3-1:0] layer__35;
wire [3-1:0] layer__36;
wire [3-1:0] layer__37;
//wire [37:0] dead;
wire dead__0;
wire dead__1;
wire dead__2;
wire dead__3;
wire dead__4;
wire dead__5;
wire dead__6;
wire dead__7;
wire dead__8;
wire dead__9;
wire dead__10;
wire dead__11;
wire dead__12;
wire dead__13;
wire dead__14;
wire dead__15;
wire dead__16;
wire dead__17;
wire dead__18;
wire dead__19;
wire dead__20;
wire dead__21;
wire dead__22;
wire dead__23;
wire dead__24;
wire dead__25;
wire dead__26;
wire dead__27;
wire dead__28;
wire dead__29;
wire dead__30;
wire dead__31;
wire dead__32;
wire dead__33;
wire dead__34;
wire dead__35;
wire dead__36;
wire dead__37;
//wire [37:0] hit ;
wire hit__0;
wire hit__1;
wire hit__2;
wire hit__3;
wire hit__4;
wire hit__5;
wire hit__6;
wire hit__7;
wire hit__8;
wire hit__9;
wire hit__10;
wire hit__11;
wire hit__12;
wire hit__13;
wire hit__14;
wire hit__15;
wire hit__16;
wire hit__17;
wire hit__18;
wire hit__19;
wire hit__20;
wire hit__21;
wire hit__22;
wire hit__23;
wire hit__24;
wire hit__25;
wire hit__26;
wire hit__27;
wire hit__28;
wire hit__29;
wire hit__30;
wire hit__31;
wire hit__32;
wire hit__33;
wire hit__34;
wire hit__35;
wire hit__36;
wire hit__37;
//ASSIGNMENTS FROM INPUTS TO PIPE
assign x__0 = i_x;
assign y__0 = i_y;
assign z__0 = i_z;
assign ux__0 = i_ux;
assign uy__0 = i_uy;
assign uz__0 = i_uz;
assign sz__0 = i_sz;
assign sr__0 = i_sr;
assign sleftz__0 = i_sleftz;
assign sleftr__0 = i_sleftr;
assign weight__0 = i_weight;
assign layer__0 = i_layer;
assign dead__0 = i_dead;
assign hit__0 = i_hit;
//ASSIGNMENTS FROM PIPE TO OUTPUT
//TODO: Assign outputs from the correct module
assign o_x =x__37;
assign o_y =y__37;
assign o_z =z__37;
//assign o_ux =ux[PIPE_DEPTH]; Assigned by deadOrAliveMux
//assign o_uy =uy[PIPE_DEPTH]; Assigned by deadOrAliveMux
//assign o_uz =uz[PIPE_DEPTH]; Assigned by deadOrAliveMux
assign o_sz =sz__37;
assign o_sr =sr__37;
assign o_sleftz =sleftz__37;
assign o_sleftr =sleftr__37;
//assign o_weight =weight[PIPE_DEPTH]; Assigned by absorber module (below)
//assign o_layer =layer[PIPE_DEPTH]; Assigned by deadOrAliveMux
//assign o_dead =dead[PIPE_DEPTH]; Assigned by deadOrAliveMux
assign o_hit =hit__37;
//GENERATE PIPELINE
//genvar i;
//generate
// for(i=PIPE_DEPTH; i>0; i=i-1) begin: regPipe
// case(i)
//
// default:
// PhotonBlock5 photon(
// //Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_x(x[i-1]),
// .i_y(y[i-1]),
// .i_z(z[i-1]),
// .i_ux(ux[i-1]),
// .i_uy(uy[i-1]),
// .i_uz(uz[i-1]),
// .i_sz(sz[i-1]),
// .i_sr(sr[i-1]),
// .i_sleftz(sleftz[i-1]),
// .i_sleftr(sleftr[i-1]),
// .i_weight(weight[i-1]),
// .i_layer(layer[i-1]),
// .i_dead(dead[i-1]),
// .i_hit(hit[i-1]),
//
// //Outputs
// .o_x(x[i]),
// .o_y(y[i]),
// .o_z(z[i]),
// .o_ux(ux[i]),
// .o_uy(uy[i]),
// .o_uz(uz[i]),
// .o_sz(sz[i]),
// .o_sr(sr[i]),
// .o_sleftz(sleftz[i]),
// .o_sleftr(sleftr[i]),
// .o_weight(weight[i]),
// .o_layer(layer[i]),
// .o_dead(dead[i]),
// .o_hit(hit[i])
// );
// endcase
// end
//endgenerate
PhotonBlock5 photon37(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__36),
.i_y(y__36),
.i_z(z__36),
.i_ux(ux__36),
.i_uy(uy__36),
.i_uz(uz__36),
.i_sz(sz__36),
.i_sr(sr__36),
.i_sleftz(sleftz__36),
.i_sleftr(sleftr__36),
.i_weight(weight__36),
.i_layer(layer__36),
.i_dead(dead__36),
.i_hit(hit__36),
//Outputs
.o_x(x__37),
.o_y(y__37),
.o_z(z__37),
.o_ux(ux__37),
.o_uy(uy__37),
.o_uz(uz__37),
.o_sz(sz__37),
.o_sr(sr__37),
.o_sleftz(sleftz__37),
.o_sleftr(sleftr__37),
.o_weight(weight__37),
.o_layer(layer__37),
.o_dead(dead__37),
.o_hit(hit__37)
);
PhotonBlock5 photon36(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__35),
.i_y(y__35),
.i_z(z__35),
.i_ux(ux__35),
.i_uy(uy__35),
.i_uz(uz__35),
.i_sz(sz__35),
.i_sr(sr__35),
.i_sleftz(sleftz__35),
.i_sleftr(sleftr__35),
.i_weight(weight__35),
.i_layer(layer__35),
.i_dead(dead__35),
.i_hit(hit__35),
//Outputs
.o_x(x__36),
.o_y(y__36),
.o_z(z__36),
.o_ux(ux__36),
.o_uy(uy__36),
.o_uz(uz__36),
.o_sz(sz__36),
.o_sr(sr__36),
.o_sleftz(sleftz__36),
.o_sleftr(sleftr__36),
.o_weight(weight__36),
.o_layer(layer__36),
.o_dead(dead__36),
.o_hit(hit__36)
);
PhotonBlock5 photon35(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__34),
.i_y(y__34),
.i_z(z__34),
.i_ux(ux__34),
.i_uy(uy__34),
.i_uz(uz__34),
.i_sz(sz__34),
.i_sr(sr__34),
.i_sleftz(sleftz__34),
.i_sleftr(sleftr__34),
.i_weight(weight__34),
.i_layer(layer__34),
.i_dead(dead__34),
.i_hit(hit__34),
//Outputs
.o_x(x__35),
.o_y(y__35),
.o_z(z__35),
.o_ux(ux__35),
.o_uy(uy__35),
.o_uz(uz__35),
.o_sz(sz__35),
.o_sr(sr__35),
.o_sleftz(sleftz__35),
.o_sleftr(sleftr__35),
.o_weight(weight__35),
.o_layer(layer__35),
.o_dead(dead__35),
.o_hit(hit__35)
);
PhotonBlock5 photon34(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__33),
.i_y(y__33),
.i_z(z__33),
.i_ux(ux__33),
.i_uy(uy__33),
.i_uz(uz__33),
.i_sz(sz__33),
.i_sr(sr__33),
.i_sleftz(sleftz__33),
.i_sleftr(sleftr__33),
.i_weight(weight__33),
.i_layer(layer__33),
.i_dead(dead__33),
.i_hit(hit__33),
//Outputs
.o_x(x__34),
.o_y(y__34),
.o_z(z__34),
.o_ux(ux__34),
.o_uy(uy__34),
.o_uz(uz__34),
.o_sz(sz__34),
.o_sr(sr__34),
.o_sleftz(sleftz__34),
.o_sleftr(sleftr__34),
.o_weight(weight__34),
.o_layer(layer__34),
.o_dead(dead__34),
.o_hit(hit__34)
);
PhotonBlock5 photon33(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__32),
.i_y(y__32),
.i_z(z__32),
.i_ux(ux__32),
.i_uy(uy__32),
.i_uz(uz__32),
.i_sz(sz__32),
.i_sr(sr__32),
.i_sleftz(sleftz__32),
.i_sleftr(sleftr__32),
.i_weight(weight__32),
.i_layer(layer__32),
.i_dead(dead__32),
.i_hit(hit__32),
//Outputs
.o_x(x__33),
.o_y(y__33),
.o_z(z__33),
.o_ux(ux__33),
.o_uy(uy__33),
.o_uz(uz__33),
.o_sz(sz__33),
.o_sr(sr__33),
.o_sleftz(sleftz__33),
.o_sleftr(sleftr__33),
.o_weight(weight__33),
.o_layer(layer__33),
.o_dead(dead__33),
.o_hit(hit__33)
);
PhotonBlock5 photon32(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__31),
.i_y(y__31),
.i_z(z__31),
.i_ux(ux__31),
.i_uy(uy__31),
.i_uz(uz__31),
.i_sz(sz__31),
.i_sr(sr__31),
.i_sleftz(sleftz__31),
.i_sleftr(sleftr__31),
.i_weight(weight__31),
.i_layer(layer__31),
.i_dead(dead__31),
.i_hit(hit__31),
//Outputs
.o_x(x__32),
.o_y(y__32),
.o_z(z__32),
.o_ux(ux__32),
.o_uy(uy__32),
.o_uz(uz__32),
.o_sz(sz__32),
.o_sr(sr__32),
.o_sleftz(sleftz__32),
.o_sleftr(sleftr__32),
.o_weight(weight__32),
.o_layer(layer__32),
.o_dead(dead__32),
.o_hit(hit__32)
);
PhotonBlock5 photon31(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__30),
.i_y(y__30),
.i_z(z__30),
.i_ux(ux__30),
.i_uy(uy__30),
.i_uz(uz__30),
.i_sz(sz__30),
.i_sr(sr__30),
.i_sleftz(sleftz__30),
.i_sleftr(sleftr__30),
.i_weight(weight__30),
.i_layer(layer__30),
.i_dead(dead__30),
.i_hit(hit__30),
//Outputs
.o_x(x__31),
.o_y(y__31),
.o_z(z__31),
.o_ux(ux__31),
.o_uy(uy__31),
.o_uz(uz__31),
.o_sz(sz__31),
.o_sr(sr__31),
.o_sleftz(sleftz__31),
.o_sleftr(sleftr__31),
.o_weight(weight__31),
.o_layer(layer__31),
.o_dead(dead__31),
.o_hit(hit__31)
);
PhotonBlock5 photon30(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__29),
.i_y(y__29),
.i_z(z__29),
.i_ux(ux__29),
.i_uy(uy__29),
.i_uz(uz__29),
.i_sz(sz__29),
.i_sr(sr__29),
.i_sleftz(sleftz__29),
.i_sleftr(sleftr__29),
.i_weight(weight__29),
.i_layer(layer__29),
.i_dead(dead__29),
.i_hit(hit__29),
//Outputs
.o_x(x__30),
.o_y(y__30),
.o_z(z__30),
.o_ux(ux__30),
.o_uy(uy__30),
.o_uz(uz__30),
.o_sz(sz__30),
.o_sr(sr__30),
.o_sleftz(sleftz__30),
.o_sleftr(sleftr__30),
.o_weight(weight__30),
.o_layer(layer__30),
.o_dead(dead__30),
.o_hit(hit__30)
);
PhotonBlock5 photon29(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__28),
.i_y(y__28),
.i_z(z__28),
.i_ux(ux__28),
.i_uy(uy__28),
.i_uz(uz__28),
.i_sz(sz__28),
.i_sr(sr__28),
.i_sleftz(sleftz__28),
.i_sleftr(sleftr__28),
.i_weight(weight__28),
.i_layer(layer__28),
.i_dead(dead__28),
.i_hit(hit__28),
//Outputs
.o_x(x__29),
.o_y(y__29),
.o_z(z__29),
.o_ux(ux__29),
.o_uy(uy__29),
.o_uz(uz__29),
.o_sz(sz__29),
.o_sr(sr__29),
.o_sleftz(sleftz__29),
.o_sleftr(sleftr__29),
.o_weight(weight__29),
.o_layer(layer__29),
.o_dead(dead__29),
.o_hit(hit__29)
);
PhotonBlock5 photon28(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__27),
.i_y(y__27),
.i_z(z__27),
.i_ux(ux__27),
.i_uy(uy__27),
.i_uz(uz__27),
.i_sz(sz__27),
.i_sr(sr__27),
.i_sleftz(sleftz__27),
.i_sleftr(sleftr__27),
.i_weight(weight__27),
.i_layer(layer__27),
.i_dead(dead__27),
.i_hit(hit__27),
//Outputs
.o_x(x__28),
.o_y(y__28),
.o_z(z__28),
.o_ux(ux__28),
.o_uy(uy__28),
.o_uz(uz__28),
.o_sz(sz__28),
.o_sr(sr__28),
.o_sleftz(sleftz__28),
.o_sleftr(sleftr__28),
.o_weight(weight__28),
.o_layer(layer__28),
.o_dead(dead__28),
.o_hit(hit__28)
);
PhotonBlock5 photon27(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__26),
.i_y(y__26),
.i_z(z__26),
.i_ux(ux__26),
.i_uy(uy__26),
.i_uz(uz__26),
.i_sz(sz__26),
.i_sr(sr__26),
.i_sleftz(sleftz__26),
.i_sleftr(sleftr__26),
.i_weight(weight__26),
.i_layer(layer__26),
.i_dead(dead__26),
.i_hit(hit__26),
//Outputs
.o_x(x__27),
.o_y(y__27),
.o_z(z__27),
.o_ux(ux__27),
.o_uy(uy__27),
.o_uz(uz__27),
.o_sz(sz__27),
.o_sr(sr__27),
.o_sleftz(sleftz__27),
.o_sleftr(sleftr__27),
.o_weight(weight__27),
.o_layer(layer__27),
.o_dead(dead__27),
.o_hit(hit__27)
);
PhotonBlock5 photon26(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__25),
.i_y(y__25),
.i_z(z__25),
.i_ux(ux__25),
.i_uy(uy__25),
.i_uz(uz__25),
.i_sz(sz__25),
.i_sr(sr__25),
.i_sleftz(sleftz__25),
.i_sleftr(sleftr__25),
.i_weight(weight__25),
.i_layer(layer__25),
.i_dead(dead__25),
.i_hit(hit__25),
//Outputs
.o_x(x__26),
.o_y(y__26),
.o_z(z__26),
.o_ux(ux__26),
.o_uy(uy__26),
.o_uz(uz__26),
.o_sz(sz__26),
.o_sr(sr__26),
.o_sleftz(sleftz__26),
.o_sleftr(sleftr__26),
.o_weight(weight__26),
.o_layer(layer__26),
.o_dead(dead__26),
.o_hit(hit__26)
);
PhotonBlock5 photon25(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__24),
.i_y(y__24),
.i_z(z__24),
.i_ux(ux__24),
.i_uy(uy__24),
.i_uz(uz__24),
.i_sz(sz__24),
.i_sr(sr__24),
.i_sleftz(sleftz__24),
.i_sleftr(sleftr__24),
.i_weight(weight__24),
.i_layer(layer__24),
.i_dead(dead__24),
.i_hit(hit__24),
//Outputs
.o_x(x__25),
.o_y(y__25),
.o_z(z__25),
.o_ux(ux__25),
.o_uy(uy__25),
.o_uz(uz__25),
.o_sz(sz__25),
.o_sr(sr__25),
.o_sleftz(sleftz__25),
.o_sleftr(sleftr__25),
.o_weight(weight__25),
.o_layer(layer__25),
.o_dead(dead__25),
.o_hit(hit__25)
);
PhotonBlock5 photon24(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__23),
.i_y(y__23),
.i_z(z__23),
.i_ux(ux__23),
.i_uy(uy__23),
.i_uz(uz__23),
.i_sz(sz__23),
.i_sr(sr__23),
.i_sleftz(sleftz__23),
.i_sleftr(sleftr__23),
.i_weight(weight__23),
.i_layer(layer__23),
.i_dead(dead__23),
.i_hit(hit__23),
//Outputs
.o_x(x__24),
.o_y(y__24),
.o_z(z__24),
.o_ux(ux__24),
.o_uy(uy__24),
.o_uz(uz__24),
.o_sz(sz__24),
.o_sr(sr__24),
.o_sleftz(sleftz__24),
.o_sleftr(sleftr__24),
.o_weight(weight__24),
.o_layer(layer__24),
.o_dead(dead__24),
.o_hit(hit__24)
);
PhotonBlock5 photon23(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__22),
.i_y(y__22),
.i_z(z__22),
.i_ux(ux__22),
.i_uy(uy__22),
.i_uz(uz__22),
.i_sz(sz__22),
.i_sr(sr__22),
.i_sleftz(sleftz__22),
.i_sleftr(sleftr__22),
.i_weight(weight__22),
.i_layer(layer__22),
.i_dead(dead__22),
.i_hit(hit__22),
//Outputs
.o_x(x__23),
.o_y(y__23),
.o_z(z__23),
.o_ux(ux__23),
.o_uy(uy__23),
.o_uz(uz__23),
.o_sz(sz__23),
.o_sr(sr__23),
.o_sleftz(sleftz__23),
.o_sleftr(sleftr__23),
.o_weight(weight__23),
.o_layer(layer__23),
.o_dead(dead__23),
.o_hit(hit__23)
);
PhotonBlock5 photon22(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__21),
.i_y(y__21),
.i_z(z__21),
.i_ux(ux__21),
.i_uy(uy__21),
.i_uz(uz__21),
.i_sz(sz__21),
.i_sr(sr__21),
.i_sleftz(sleftz__21),
.i_sleftr(sleftr__21),
.i_weight(weight__21),
.i_layer(layer__21),
.i_dead(dead__21),
.i_hit(hit__21),
//Outputs
.o_x(x__22),
.o_y(y__22),
.o_z(z__22),
.o_ux(ux__22),
.o_uy(uy__22),
.o_uz(uz__22),
.o_sz(sz__22),
.o_sr(sr__22),
.o_sleftz(sleftz__22),
.o_sleftr(sleftr__22),
.o_weight(weight__22),
.o_layer(layer__22),
.o_dead(dead__22),
.o_hit(hit__22)
);
PhotonBlock5 photon21(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__20),
.i_y(y__20),
.i_z(z__20),
.i_ux(ux__20),
.i_uy(uy__20),
.i_uz(uz__20),
.i_sz(sz__20),
.i_sr(sr__20),
.i_sleftz(sleftz__20),
.i_sleftr(sleftr__20),
.i_weight(weight__20),
.i_layer(layer__20),
.i_dead(dead__20),
.i_hit(hit__20),
//Outputs
.o_x(x__21),
.o_y(y__21),
.o_z(z__21),
.o_ux(ux__21),
.o_uy(uy__21),
.o_uz(uz__21),
.o_sz(sz__21),
.o_sr(sr__21),
.o_sleftz(sleftz__21),
.o_sleftr(sleftr__21),
.o_weight(weight__21),
.o_layer(layer__21),
.o_dead(dead__21),
.o_hit(hit__21)
);
PhotonBlock5 photon20(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__19),
.i_y(y__19),
.i_z(z__19),
.i_ux(ux__19),
.i_uy(uy__19),
.i_uz(uz__19),
.i_sz(sz__19),
.i_sr(sr__19),
.i_sleftz(sleftz__19),
.i_sleftr(sleftr__19),
.i_weight(weight__19),
.i_layer(layer__19),
.i_dead(dead__19),
.i_hit(hit__19),
//Outputs
.o_x(x__20),
.o_y(y__20),
.o_z(z__20),
.o_ux(ux__20),
.o_uy(uy__20),
.o_uz(uz__20),
.o_sz(sz__20),
.o_sr(sr__20),
.o_sleftz(sleftz__20),
.o_sleftr(sleftr__20),
.o_weight(weight__20),
.o_layer(layer__20),
.o_dead(dead__20),
.o_hit(hit__20)
);
PhotonBlock5 photon19(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__18),
.i_y(y__18),
.i_z(z__18),
.i_ux(ux__18),
.i_uy(uy__18),
.i_uz(uz__18),
.i_sz(sz__18),
.i_sr(sr__18),
.i_sleftz(sleftz__18),
.i_sleftr(sleftr__18),
.i_weight(weight__18),
.i_layer(layer__18),
.i_dead(dead__18),
.i_hit(hit__18),
//Outputs
.o_x(x__19),
.o_y(y__19),
.o_z(z__19),
.o_ux(ux__19),
.o_uy(uy__19),
.o_uz(uz__19),
.o_sz(sz__19),
.o_sr(sr__19),
.o_sleftz(sleftz__19),
.o_sleftr(sleftr__19),
.o_weight(weight__19),
.o_layer(layer__19),
.o_dead(dead__19),
.o_hit(hit__19)
);
PhotonBlock5 photon18(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__17),
.i_y(y__17),
.i_z(z__17),
.i_ux(ux__17),
.i_uy(uy__17),
.i_uz(uz__17),
.i_sz(sz__17),
.i_sr(sr__17),
.i_sleftz(sleftz__17),
.i_sleftr(sleftr__17),
.i_weight(weight__17),
.i_layer(layer__17),
.i_dead(dead__17),
.i_hit(hit__17),
//Outputs
.o_x(x__18),
.o_y(y__18),
.o_z(z__18),
.o_ux(ux__18),
.o_uy(uy__18),
.o_uz(uz__18),
.o_sz(sz__18),
.o_sr(sr__18),
.o_sleftz(sleftz__18),
.o_sleftr(sleftr__18),
.o_weight(weight__18),
.o_layer(layer__18),
.o_dead(dead__18),
.o_hit(hit__18)
);
PhotonBlock5 photon17(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__16),
.i_y(y__16),
.i_z(z__16),
.i_ux(ux__16),
.i_uy(uy__16),
.i_uz(uz__16),
.i_sz(sz__16),
.i_sr(sr__16),
.i_sleftz(sleftz__16),
.i_sleftr(sleftr__16),
.i_weight(weight__16),
.i_layer(layer__16),
.i_dead(dead__16),
.i_hit(hit__16),
//Outputs
.o_x(x__17),
.o_y(y__17),
.o_z(z__17),
.o_ux(ux__17),
.o_uy(uy__17),
.o_uz(uz__17),
.o_sz(sz__17),
.o_sr(sr__17),
.o_sleftz(sleftz__17),
.o_sleftr(sleftr__17),
.o_weight(weight__17),
.o_layer(layer__17),
.o_dead(dead__17),
.o_hit(hit__17)
);
PhotonBlock5 photon16(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__15),
.i_y(y__15),
.i_z(z__15),
.i_ux(ux__15),
.i_uy(uy__15),
.i_uz(uz__15),
.i_sz(sz__15),
.i_sr(sr__15),
.i_sleftz(sleftz__15),
.i_sleftr(sleftr__15),
.i_weight(weight__15),
.i_layer(layer__15),
.i_dead(dead__15),
.i_hit(hit__15),
//Outputs
.o_x(x__16),
.o_y(y__16),
.o_z(z__16),
.o_ux(ux__16),
.o_uy(uy__16),
.o_uz(uz__16),
.o_sz(sz__16),
.o_sr(sr__16),
.o_sleftz(sleftz__16),
.o_sleftr(sleftr__16),
.o_weight(weight__16),
.o_layer(layer__16),
.o_dead(dead__16),
.o_hit(hit__16)
);
PhotonBlock5 photon15(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__14),
.i_y(y__14),
.i_z(z__14),
.i_ux(ux__14),
.i_uy(uy__14),
.i_uz(uz__14),
.i_sz(sz__14),
.i_sr(sr__14),
.i_sleftz(sleftz__14),
.i_sleftr(sleftr__14),
.i_weight(weight__14),
.i_layer(layer__14),
.i_dead(dead__14),
.i_hit(hit__14),
//Outputs
.o_x(x__15),
.o_y(y__15),
.o_z(z__15),
.o_ux(ux__15),
.o_uy(uy__15),
.o_uz(uz__15),
.o_sz(sz__15),
.o_sr(sr__15),
.o_sleftz(sleftz__15),
.o_sleftr(sleftr__15),
.o_weight(weight__15),
.o_layer(layer__15),
.o_dead(dead__15),
.o_hit(hit__15)
);
PhotonBlock5 photon14(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__13),
.i_y(y__13),
.i_z(z__13),
.i_ux(ux__13),
.i_uy(uy__13),
.i_uz(uz__13),
.i_sz(sz__13),
.i_sr(sr__13),
.i_sleftz(sleftz__13),
.i_sleftr(sleftr__13),
.i_weight(weight__13),
.i_layer(layer__13),
.i_dead(dead__13),
.i_hit(hit__13),
//Outputs
.o_x(x__14),
.o_y(y__14),
.o_z(z__14),
.o_ux(ux__14),
.o_uy(uy__14),
.o_uz(uz__14),
.o_sz(sz__14),
.o_sr(sr__14),
.o_sleftz(sleftz__14),
.o_sleftr(sleftr__14),
.o_weight(weight__14),
.o_layer(layer__14),
.o_dead(dead__14),
.o_hit(hit__14)
);
PhotonBlock5 photon13(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__12),
.i_y(y__12),
.i_z(z__12),
.i_ux(ux__12),
.i_uy(uy__12),
.i_uz(uz__12),
.i_sz(sz__12),
.i_sr(sr__12),
.i_sleftz(sleftz__12),
.i_sleftr(sleftr__12),
.i_weight(weight__12),
.i_layer(layer__12),
.i_dead(dead__12),
.i_hit(hit__12),
//Outputs
.o_x(x__13),
.o_y(y__13),
.o_z(z__13),
.o_ux(ux__13),
.o_uy(uy__13),
.o_uz(uz__13),
.o_sz(sz__13),
.o_sr(sr__13),
.o_sleftz(sleftz__13),
.o_sleftr(sleftr__13),
.o_weight(weight__13),
.o_layer(layer__13),
.o_dead(dead__13),
.o_hit(hit__13)
);
PhotonBlock5 photon12(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__11),
.i_y(y__11),
.i_z(z__11),
.i_ux(ux__11),
.i_uy(uy__11),
.i_uz(uz__11),
.i_sz(sz__11),
.i_sr(sr__11),
.i_sleftz(sleftz__11),
.i_sleftr(sleftr__11),
.i_weight(weight__11),
.i_layer(layer__11),
.i_dead(dead__11),
.i_hit(hit__11),
//Outputs
.o_x(x__12),
.o_y(y__12),
.o_z(z__12),
.o_ux(ux__12),
.o_uy(uy__12),
.o_uz(uz__12),
.o_sz(sz__12),
.o_sr(sr__12),
.o_sleftz(sleftz__12),
.o_sleftr(sleftr__12),
.o_weight(weight__12),
.o_layer(layer__12),
.o_dead(dead__12),
.o_hit(hit__12)
);
PhotonBlock5 photon11(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__10),
.i_y(y__10),
.i_z(z__10),
.i_ux(ux__10),
.i_uy(uy__10),
.i_uz(uz__10),
.i_sz(sz__10),
.i_sr(sr__10),
.i_sleftz(sleftz__10),
.i_sleftr(sleftr__10),
.i_weight(weight__10),
.i_layer(layer__10),
.i_dead(dead__10),
.i_hit(hit__10),
//Outputs
.o_x(x__11),
.o_y(y__11),
.o_z(z__11),
.o_ux(ux__11),
.o_uy(uy__11),
.o_uz(uz__11),
.o_sz(sz__11),
.o_sr(sr__11),
.o_sleftz(sleftz__11),
.o_sleftr(sleftr__11),
.o_weight(weight__11),
.o_layer(layer__11),
.o_dead(dead__11),
.o_hit(hit__11)
);
PhotonBlock5 photon10(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__9),
.i_y(y__9),
.i_z(z__9),
.i_ux(ux__9),
.i_uy(uy__9),
.i_uz(uz__9),
.i_sz(sz__9),
.i_sr(sr__9),
.i_sleftz(sleftz__9),
.i_sleftr(sleftr__9),
.i_weight(weight__9),
.i_layer(layer__9),
.i_dead(dead__9),
.i_hit(hit__9),
//Outputs
.o_x(x__10),
.o_y(y__10),
.o_z(z__10),
.o_ux(ux__10),
.o_uy(uy__10),
.o_uz(uz__10),
.o_sz(sz__10),
.o_sr(sr__10),
.o_sleftz(sleftz__10),
.o_sleftr(sleftr__10),
.o_weight(weight__10),
.o_layer(layer__10),
.o_dead(dead__10),
.o_hit(hit__10)
);
PhotonBlock5 photon9(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__8),
.i_y(y__8),
.i_z(z__8),
.i_ux(ux__8),
.i_uy(uy__8),
.i_uz(uz__8),
.i_sz(sz__8),
.i_sr(sr__8),
.i_sleftz(sleftz__8),
.i_sleftr(sleftr__8),
.i_weight(weight__8),
.i_layer(layer__8),
.i_dead(dead__8),
.i_hit(hit__8),
//Outputs
.o_x(x__9),
.o_y(y__9),
.o_z(z__9),
.o_ux(ux__9),
.o_uy(uy__9),
.o_uz(uz__9),
.o_sz(sz__9),
.o_sr(sr__9),
.o_sleftz(sleftz__9),
.o_sleftr(sleftr__9),
.o_weight(weight__9),
.o_layer(layer__9),
.o_dead(dead__9),
.o_hit(hit__9)
);
PhotonBlock5 photon8(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__7),
.i_y(y__7),
.i_z(z__7),
.i_ux(ux__7),
.i_uy(uy__7),
.i_uz(uz__7),
.i_sz(sz__7),
.i_sr(sr__7),
.i_sleftz(sleftz__7),
.i_sleftr(sleftr__7),
.i_weight(weight__7),
.i_layer(layer__7),
.i_dead(dead__7),
.i_hit(hit__7),
//Outputs
.o_x(x__8),
.o_y(y__8),
.o_z(z__8),
.o_ux(ux__8),
.o_uy(uy__8),
.o_uz(uz__8),
.o_sz(sz__8),
.o_sr(sr__8),
.o_sleftz(sleftz__8),
.o_sleftr(sleftr__8),
.o_weight(weight__8),
.o_layer(layer__8),
.o_dead(dead__8),
.o_hit(hit__8)
);
PhotonBlock5 photon7(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__6),
.i_y(y__6),
.i_z(z__6),
.i_ux(ux__6),
.i_uy(uy__6),
.i_uz(uz__6),
.i_sz(sz__6),
.i_sr(sr__6),
.i_sleftz(sleftz__6),
.i_sleftr(sleftr__6),
.i_weight(weight__6),
.i_layer(layer__6),
.i_dead(dead__6),
.i_hit(hit__6),
//Outputs
.o_x(x__7),
.o_y(y__7),
.o_z(z__7),
.o_ux(ux__7),
.o_uy(uy__7),
.o_uz(uz__7),
.o_sz(sz__7),
.o_sr(sr__7),
.o_sleftz(sleftz__7),
.o_sleftr(sleftr__7),
.o_weight(weight__7),
.o_layer(layer__7),
.o_dead(dead__7),
.o_hit(hit__7)
);
PhotonBlock5 photon6(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__5),
.i_y(y__5),
.i_z(z__5),
.i_ux(ux__5),
.i_uy(uy__5),
.i_uz(uz__5),
.i_sz(sz__5),
.i_sr(sr__5),
.i_sleftz(sleftz__5),
.i_sleftr(sleftr__5),
.i_weight(weight__5),
.i_layer(layer__5),
.i_dead(dead__5),
.i_hit(hit__5),
//Outputs
.o_x(x__6),
.o_y(y__6),
.o_z(z__6),
.o_ux(ux__6),
.o_uy(uy__6),
.o_uz(uz__6),
.o_sz(sz__6),
.o_sr(sr__6),
.o_sleftz(sleftz__6),
.o_sleftr(sleftr__6),
.o_weight(weight__6),
.o_layer(layer__6),
.o_dead(dead__6),
.o_hit(hit__6)
);
PhotonBlock5 photon5(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__4),
.i_y(y__4),
.i_z(z__4),
.i_ux(ux__4),
.i_uy(uy__4),
.i_uz(uz__4),
.i_sz(sz__4),
.i_sr(sr__4),
.i_sleftz(sleftz__4),
.i_sleftr(sleftr__4),
.i_weight(weight__4),
.i_layer(layer__4),
.i_dead(dead__4),
.i_hit(hit__4),
//Outputs
.o_x(x__5),
.o_y(y__5),
.o_z(z__5),
.o_ux(ux__5),
.o_uy(uy__5),
.o_uz(uz__5),
.o_sz(sz__5),
.o_sr(sr__5),
.o_sleftz(sleftz__5),
.o_sleftr(sleftr__5),
.o_weight(weight__5),
.o_layer(layer__5),
.o_dead(dead__5),
.o_hit(hit__5)
);
PhotonBlock5 photon4(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__3),
.i_y(y__3),
.i_z(z__3),
.i_ux(ux__3),
.i_uy(uy__3),
.i_uz(uz__3),
.i_sz(sz__3),
.i_sr(sr__3),
.i_sleftz(sleftz__3),
.i_sleftr(sleftr__3),
.i_weight(weight__3),
.i_layer(layer__3),
.i_dead(dead__3),
.i_hit(hit__3),
//Outputs
.o_x(x__4),
.o_y(y__4),
.o_z(z__4),
.o_ux(ux__4),
.o_uy(uy__4),
.o_uz(uz__4),
.o_sz(sz__4),
.o_sr(sr__4),
.o_sleftz(sleftz__4),
.o_sleftr(sleftr__4),
.o_weight(weight__4),
.o_layer(layer__4),
.o_dead(dead__4),
.o_hit(hit__4)
);
PhotonBlock5 photon3(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__2),
.i_y(y__2),
.i_z(z__2),
.i_ux(ux__2),
.i_uy(uy__2),
.i_uz(uz__2),
.i_sz(sz__2),
.i_sr(sr__2),
.i_sleftz(sleftz__2),
.i_sleftr(sleftr__2),
.i_weight(weight__2),
.i_layer(layer__2),
.i_dead(dead__2),
.i_hit(hit__2),
//Outputs
.o_x(x__3),
.o_y(y__3),
.o_z(z__3),
.o_ux(ux__3),
.o_uy(uy__3),
.o_uz(uz__3),
.o_sz(sz__3),
.o_sr(sr__3),
.o_sleftz(sleftz__3),
.o_sleftr(sleftr__3),
.o_weight(weight__3),
.o_layer(layer__3),
.o_dead(dead__3),
.o_hit(hit__3)
);
PhotonBlock5 photon2(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__1),
.i_y(y__1),
.i_z(z__1),
.i_ux(ux__1),
.i_uy(uy__1),
.i_uz(uz__1),
.i_sz(sz__1),
.i_sr(sr__1),
.i_sleftz(sleftz__1),
.i_sleftr(sleftr__1),
.i_weight(weight__1),
.i_layer(layer__1),
.i_dead(dead__1),
.i_hit(hit__1),
//Outputs
.o_x(x__2),
.o_y(y__2),
.o_z(z__2),
.o_ux(ux__2),
.o_uy(uy__2),
.o_uz(uz__2),
.o_sz(sz__2),
.o_sr(sr__2),
.o_sleftz(sleftz__2),
.o_sleftr(sleftr__2),
.o_weight(weight__2),
.o_layer(layer__2),
.o_dead(dead__2),
.o_hit(hit__2)
);
PhotonBlock5 photon1(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(x__0),
.i_y(y__0),
.i_z(z__0),
.i_ux(ux__0),
.i_uy(uy__0),
.i_uz(uz__0),
.i_sz(sz__0),
.i_sr(sr__0),
.i_sleftz(sleftz__0),
.i_sleftr(sleftr__0),
.i_weight(weight__0),
.i_layer(layer__0),
.i_dead(dead__0),
.i_hit(hit__0),
//Outputs
.o_x(x__1),
.o_y(y__1),
.o_z(z__1),
.o_ux(ux__1),
.o_uy(uy__1),
.o_uz(uz__1),
.o_sz(sz__1),
.o_sr(sr__1),
.o_sleftz(sleftz__1),
.o_sleftr(sleftr__1),
.o_weight(weight__1),
.o_layer(layer__1),
.o_dead(dead__1),
.o_hit(hit__1)
);
//////////////////////////////////////////////////////////////////////////////
//Tapping into the Registered Pipeline
//***NOTE: Index must be incremented by 1 compared to SystemC version
//////////////////////////////////////////////////////////////////////////////
//>>>>>>>>>>>>> Absorber <<<<<<<<<<<<<<<<<<
wire [`BIT_WIDTH-1:0] x_pipe, y_pipe, z_pipe;
wire [`LAYER_WIDTH-1:0] layer_pipe;
assign x_pipe=x__2;
assign y_pipe=y__2;
assign z_pipe=z__14; //TODO: Check square-root latency and modify z[14] if needed!!!!
assign layer_pipe=layer__4;
//>>>>>>>>>>>>> ScattererReflectorWrapper <<<<<<<<<<<<<<<<<<
wire [`BIT_WIDTH-1:0] ux_scatterer;
wire [`BIT_WIDTH-1:0] uy_scatterer;
wire [`BIT_WIDTH-1:0] uz_scatterer;
wire [`BIT_WIDTH-1:0] ux_reflector;
wire [`BIT_WIDTH-1:0] uy_reflector;
wire [`BIT_WIDTH-1:0] uz_reflector;
wire [`LAYER_WIDTH-1:0] layer_reflector;
wire dead_reflector;
//////////////////////////////////////////////////////////////////////////////
//Connect up different modules
//////////////////////////////////////////////////////////////////////////////
//>>>>>>>>>>>>> Absorber <<<<<<<<<<<<<<<<<<
Absorber absorb ( //INPUTS
.clock(clock) , .reset(reset), .enable(enable),
//From hopper
.weight_hop(i_weight), .hit_hop(i_hit), .dead_hop(i_dead),
//From Shared Registers
.x_pipe (x_pipe), .y_pipe (y_pipe), .z_pipe(z_pipe), .layer_pipe(layer_pipe),
//From System Register File (5 layers)
.muaFraction1(muaFraction1), .muaFraction2(muaFraction2), .muaFraction3(muaFraction3), .muaFraction4(muaFraction4), .muaFraction5(muaFraction5),
//Dual-port Mem
.data(data), .rdaddress(rdaddress), .wraddress(wraddress),
.wren(wren), .q(q),
//OUTPUT
.weight_absorber(o_weight)
);
//>>>>>>>>>>>>> ScattererReflectorWrapper <<<<<<<<<<<<<<<<<<
ScattererReflectorWrapper scattererReflector(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
//Inputs
//Photon values
.i_uz1_pipeWrapper(uz__1),
.i_hit2_pipeWrapper(hit__1),
.i_ux3_pipeWrapper(ux__3),
.i_uz3_pipeWrapper(uz__3),
.i_layer3_pipeWrapper(layer__3),
.i_hit4_pipeWrapper(hit__3),
.i_hit6_pipeWrapper(hit__5),
.i_hit16_pipeWrapper(hit__15),
.i_layer31_pipeWrapper(layer__31),
.i_uy32_pipeWrapper(uy__32),
.i_uz32_pipeWrapper(uz__32),
.i_hit33_pipeWrapper(hit__32),
.i_ux33_pipeWrapper(ux__33),
.i_uy33_pipeWrapper(uy__33),
.i_hit34_pipeWrapper(hit__33),
.i_ux35_pipeWrapper(ux__35),
.i_uy35_pipeWrapper(uy__35),
.i_uz35_pipeWrapper(uz__35),
.i_layer35_pipeWrapper(layer__35),
.i_hit36_pipeWrapper(hit__35),
.i_ux36_pipeWrapper(ux__36),
.i_uy36_pipeWrapper(uy__36),
.i_uz36_pipeWrapper(uz__36),
.i_layer36_pipeWrapper(layer__36),
.i_dead36_pipeWrapper(dead__36),
//Memory Interface
//Inputs
.rand2(rand2),
.rand3(rand3),
.rand5(rand5),
.sint(sint),
.cost(cost),
.up_rFresnel(up_rFresnel),
.down_rFresnel(down_rFresnel),
//Outputs
.tindex(tindex),
.fresIndex(fresIndex),
//Constants
.down_niOverNt_1(down_niOverNt_1),
.down_niOverNt_2(down_niOverNt_2),
.down_niOverNt_3(down_niOverNt_3),
.down_niOverNt_4(down_niOverNt_4),
.down_niOverNt_5(down_niOverNt_5),
.up_niOverNt_1(up_niOverNt_1),
.up_niOverNt_2(up_niOverNt_2),
.up_niOverNt_3(up_niOverNt_3),
.up_niOverNt_4(up_niOverNt_4),
.up_niOverNt_5(up_niOverNt_5),
.down_niOverNt_2_1(down_niOverNt_2_1),
.down_niOverNt_2_2(down_niOverNt_2_2),
.down_niOverNt_2_3(down_niOverNt_2_3),
.down_niOverNt_2_4(down_niOverNt_2_4),
.down_niOverNt_2_5(down_niOverNt_2_5),
.up_niOverNt_2_1(up_niOverNt_2_1),
.up_niOverNt_2_2(up_niOverNt_2_2),
.up_niOverNt_2_3(up_niOverNt_2_3),
.up_niOverNt_2_4(up_niOverNt_2_4),
.up_niOverNt_2_5(up_niOverNt_2_5),
.downCritAngle_0(downCritAngle_0),
.downCritAngle_1(downCritAngle_1),
.downCritAngle_2(downCritAngle_2),
.downCritAngle_3(downCritAngle_3),
.downCritAngle_4(downCritAngle_4),
.upCritAngle_0(upCritAngle_0),
.upCritAngle_1(upCritAngle_1),
.upCritAngle_2(upCritAngle_2),
.upCritAngle_3(upCritAngle_3),
.upCritAngle_4(upCritAngle_4),
//Outputs
.ux_scatterer(ux_scatterer),
.uy_scatterer(uy_scatterer),
.uz_scatterer(uz_scatterer),
.ux_reflector(ux_reflector),
.uy_reflector(uy_reflector),
.uz_reflector(uz_reflector),
.layer_reflector(layer_reflector),
.dead_reflector(dead_reflector)
);
//////////////////////////////////////////////////////////////////////
//// dead or alive MUX ////
//// ////
//// Description: ////
//// Used to determine whether the output from the scatterer ////
//// or the reflector should be used in any clock cycle ////
//////////////////////////////////////////////////////////////////////
always @ (hit__37 or ux_scatterer or uy_scatterer or uz_scatterer or layer__37 or dead__37 or
ux_reflector or uy_reflector or uz_reflector or layer_reflector or dead_reflector) begin
case (hit__37)
0: begin
o_ux = ux_scatterer;
o_uy = uy_scatterer;
o_uz = uz_scatterer;
o_layer = layer__37;
o_dead = dead__37;
end
1: begin
o_ux = ux_reflector;
o_uy = uy_reflector;
o_uz = uz_reflector;
o_layer = layer_reflector;
o_dead = dead_reflector;
end
endcase
end
endmodule
//Photons that make up the register pipeline
module PhotonBlock5(
//Inputs
clock,
reset,
enable,
i_x,
i_y,
i_z,
i_ux,
i_uy,
i_uz,
i_sz,
i_sr,
i_sleftz,
i_sleftr,
i_weight,
i_layer,
i_dead,
i_hit,
//Outputs
o_x,
o_y,
o_z,
o_ux,
o_uy,
o_uz,
o_sz,
o_sr,
o_sleftz,
o_sleftr,
o_weight,
o_layer,
o_dead,
o_hit
);
//parameter BIT_WIDTH=32;
//parameter LAYER_WIDTH=3;
input clock;
input reset;
input enable;
input [`BIT_WIDTH-1:0] i_x;
input [`BIT_WIDTH-1:0] i_y;
input [`BIT_WIDTH-1:0] i_z;
input [`BIT_WIDTH-1:0] i_ux;
input [`BIT_WIDTH-1:0] i_uy;
input [`BIT_WIDTH-1:0] i_uz;
input [`BIT_WIDTH-1:0] i_sz;
input [`BIT_WIDTH-1:0] i_sr;
input [`BIT_WIDTH-1:0] i_sleftz;
input [`BIT_WIDTH-1:0] i_sleftr;
input [`BIT_WIDTH-1:0] i_weight;
input [`LAYER_WIDTH-1:0] i_layer;
input i_dead;
input i_hit;
output [`BIT_WIDTH-1:0] o_x;
output [`BIT_WIDTH-1:0] o_y;
output [`BIT_WIDTH-1:0] o_z;
output [`BIT_WIDTH-1:0] o_ux;
output [`BIT_WIDTH-1:0] o_uy;
output [`BIT_WIDTH-1:0] o_uz;
output [`BIT_WIDTH-1:0] o_sz;
output [`BIT_WIDTH-1:0] o_sr;
output [`BIT_WIDTH-1:0] o_sleftz;
output [`BIT_WIDTH-1:0] o_sleftr;
output [`BIT_WIDTH-1:0] o_weight;
output [`LAYER_WIDTH-1:0] o_layer;
output o_dead;
output o_hit;
wire clock;
wire reset;
wire enable;
wire [`BIT_WIDTH-1:0] i_x;
wire [`BIT_WIDTH-1:0] i_y;
wire [`BIT_WIDTH-1:0] i_z;
wire [`BIT_WIDTH-1:0] i_ux;
wire [`BIT_WIDTH-1:0] i_uy;
wire [`BIT_WIDTH-1:0] i_uz;
wire [`BIT_WIDTH-1:0] i_sz;
wire [`BIT_WIDTH-1:0] i_sr;
wire [`BIT_WIDTH-1:0] i_sleftz;
wire [`BIT_WIDTH-1:0] i_sleftr;
wire [`BIT_WIDTH-1:0] i_weight;
wire [`LAYER_WIDTH-1:0] i_layer;
wire i_dead;
wire i_hit;
reg [`BIT_WIDTH-1:0] o_x;
reg [`BIT_WIDTH-1:0] o_y;
reg [`BIT_WIDTH-1:0] o_z;
reg [`BIT_WIDTH-1:0] o_ux;
reg [`BIT_WIDTH-1:0] o_uy;
reg [`BIT_WIDTH-1:0] o_uz;
reg [`BIT_WIDTH-1:0] o_sz;
reg [`BIT_WIDTH-1:0] o_sr;
reg [`BIT_WIDTH-1:0] o_sleftz;
reg [`BIT_WIDTH-1:0] o_sleftr;
reg [`BIT_WIDTH-1:0] o_weight;
reg [`LAYER_WIDTH-1:0] o_layer;
reg o_dead;
reg o_hit;
always @ (posedge clock)
if(reset) begin
o_x <= {`BIT_WIDTH{1'b0}};
o_y <= {`BIT_WIDTH{1'b0}};
o_z <= {`BIT_WIDTH{1'b0}};
o_ux <= {`BIT_WIDTH{1'b0}};
o_uy <= {`BIT_WIDTH{1'b0}};
o_uz <= {`BIT_WIDTH{1'b0}};
o_sz <= {`BIT_WIDTH{1'b0}};
o_sr <= {`BIT_WIDTH{1'b0}};
o_sleftz <= {`BIT_WIDTH{1'b0}};
o_sleftr <= {`BIT_WIDTH{1'b0}};
o_weight <= {`BIT_WIDTH{1'b0}};
o_layer <= {`LAYER_WIDTH{1'b0}};
o_dead <= 1'b1;
o_hit <= 1'b0;
end else if(enable) begin
o_x <= i_x;
o_y <= i_y;
o_z <= i_z;
o_ux <= i_ux;
o_uy <= i_uy;
o_uz <= i_uz;
o_sz <= i_sz;
o_sr <= i_sr;
o_sleftz <= i_sleftz;
o_sleftr <= i_sleftr;
o_weight <= i_weight;
o_layer <= i_layer;
o_dead <= i_dead;
o_hit <= i_hit;
end
endmodule
//module FluenceUpdate ( //INPUTS
module Absorber ( //INPUTS
clock, reset, enable,
//From hopper
weight_hop, hit_hop, dead_hop,
//From Shared Registers
x_pipe, y_pipe, z_pipe, layer_pipe,
//From System Register File (5 layers)
muaFraction1, muaFraction2, muaFraction3, muaFraction4, muaFraction5,
//I/O to on-chip mem -- check interface
data, rdaddress, wraddress, wren, q,
//OUTPUT
weight_absorber
);
//////////////////////////////////////////////////////////////////////////////
//PARAMETERS
//////////////////////////////////////////////////////////////////////////////
//parameter `NR=256;
//parameter `NZ=256;
//
//parameter `NR_EXP=8; //meaning `NR=2^`NR_exp or 2^8=256
//parameter `RGRID_SCLAE_EXP=21; //2^21 = RGRID_SCALE
//parameter `ZGRID_SCLAE_EXP=21; //2^21 = ZGRID_SCALE
//
//
//parameter `BIT_WIDTH=32;
//parameter `BIT_WIDTH_2=64;
//parameter `WORD_WIDTH=64;
//parameter `ADDR_WIDTH=16; //256x256=2^8*2^8=2^16
//
//
//parameter `LAYER_WIDTH=3;
//parameter `PIPE_DEPTH = 37;
//////////////////////////////////////////////////////////////////////////////
//INPUTS
//////////////////////////////////////////////////////////////////////////////
input clock;
input reset;
input enable;
//From hopper
input [`BIT_WIDTH-1:0] weight_hop;
input hit_hop;
input dead_hop;
//From Shared Reg
//input signed [`BIT_WIDTH-1:0] x_pipe;
//input signed [`BIT_WIDTH-1:0] y_pipe;
input [`BIT_WIDTH-1:0] x_pipe;
input [`BIT_WIDTH-1:0] y_pipe;
input [`BIT_WIDTH-1:0] z_pipe;
input [`LAYER_WIDTH-1:0] layer_pipe;
//From System Reg File
input [`BIT_WIDTH-1:0] muaFraction1, muaFraction2, muaFraction3, muaFraction4, muaFraction5;
//////////////////////////////////////////////////////////////////////////////
//OUTPUTS
//////////////////////////////////////////////////////////////////////////////
output [`BIT_WIDTH-1:0] weight_absorber;
//////////////////////////////////////////////////////////////////////////////
//I/O to on-chip mem -- check interface
//////////////////////////////////////////////////////////////////////////////
output [`WORD_WIDTH-1:0] data;
output [`ADDR_WIDTH-1:0] rdaddress, wraddress;
output wren;
reg wren;
input [`WORD_WIDTH-1:0] q;
//////////////////////////////////////////////////////////////////////////////
//Local AND Registered Value Variables
//////////////////////////////////////////////////////////////////////////////
//STAGE 1 - Do nothing
//STAGE 2
reg [`BIT_WIDTH_2-1:0] x2_temp, y2_temp; //From mult
reg [`BIT_WIDTH_2-1:0] x2_P, y2_P; //Registered Value
//STAGE 3
reg [`BIT_WIDTH_2-1:0] r2_temp, r2_P;
wire [`BIT_WIDTH_2-1:0] r2_P_wire;
//STAGE 4
reg [`BIT_WIDTH-1:0] fractionScaled;
reg [`BIT_WIDTH-1:0] weight_P4;
reg [`BIT_WIDTH-1:0] r_P;
wire [`BIT_WIDTH-1:0] r_P_wire;
reg [`BIT_WIDTH_2-1:0] product64bit;
reg [`BIT_WIDTH-1:0] dwa_temp;
//STAGE 14
reg [`BIT_WIDTH-1:0] ir_temp;
reg [`BIT_WIDTH-1:0] iz_temp;
//STAGE 15
reg [`BIT_WIDTH-1:0] ir_P;
reg [`BIT_WIDTH-1:0] iz_P;
reg [`BIT_WIDTH-1:0] ir_scaled;
reg [`ADDR_WIDTH-1:0] rADDR_temp;
reg [`ADDR_WIDTH-1:0] rADDR_16;
//STAGE 16
reg [`WORD_WIDTH-1:0] oldAbs_MEM;
reg [`WORD_WIDTH-1:0] oldAbs_P;
reg [`ADDR_WIDTH-1:0] rADDR_17;
//STAGE 17
reg [`BIT_WIDTH-1:0] weight_P;
reg [`BIT_WIDTH-1:0] dwa_P;
reg [`BIT_WIDTH-1:0] newWeight;
reg [`WORD_WIDTH-1:0] newAbs_P;
reg [`WORD_WIDTH-1:0] newAbs_temp;
//reg [`ADDR_WIDTH-1:0] wADDR;
//////////////////////////////////////////////////////////////////////////////
//PIPELINE weight, hit, dead
//////////////////////////////////////////////////////////////////////////////
//WIRES FOR CONNECTING REGISTERS
//peter m made this manual
//wire [32-1:0] weight [37:0];
wire [32-1:0] weight__0;
wire [32-1:0] weight__1;
wire [32-1:0] weight__2;
wire [32-1:0] weight__3;
wire [32-1:0] weight__4;
wire [32-1:0] weight__5;
wire [32-1:0] weight__6;
wire [32-1:0] weight__7;
wire [32-1:0] weight__8;
wire [32-1:0] weight__9;
wire [32-1:0] weight__10;
wire [32-1:0] weight__11;
wire [32-1:0] weight__12;
wire [32-1:0] weight__13;
wire [32-1:0] weight__14;
wire [32-1:0] weight__15;
wire [32-1:0] weight__16;
wire [32-1:0] weight__17;
wire [32-1:0] weight__18;
wire [32-1:0] weight__19;
wire [32-1:0] weight__20;
wire [32-1:0] weight__21;
wire [32-1:0] weight__22;
wire [32-1:0] weight__23;
wire [32-1:0] weight__24;
wire [32-1:0] weight__25;
wire [32-1:0] weight__26;
wire [32-1:0] weight__27;
wire [32-1:0] weight__28;
wire [32-1:0] weight__29;
wire [32-1:0] weight__30;
wire [32-1:0] weight__31;
wire [32-1:0] weight__32;
wire [32-1:0] weight__33;
wire [32-1:0] weight__34;
wire [32-1:0] weight__35;
wire [32-1:0] weight__36;
wire [32-1:0] weight__37;
//wire [37:0] hit ;
wire hit__0;
wire hit__1;
wire hit__2;
wire hit__3;
wire hit__4;
wire hit__5;
wire hit__6;
wire hit__7;
wire hit__8;
wire hit__9;
wire hit__10;
wire hit__11;
wire hit__12;
wire hit__13;
wire hit__14;
wire hit__15;
wire hit__16;
wire hit__17;
wire hit__18;
wire hit__19;
wire hit__20;
wire hit__21;
wire hit__22;
wire hit__23;
wire hit__24;
wire hit__25;
wire hit__26;
wire hit__27;
wire hit__28;
wire hit__29;
wire hit__30;
wire hit__31;
wire hit__32;
wire hit__33;
wire hit__34;
wire hit__35;
wire hit__36;
wire hit__37;
//wire [37:0] dead ;
wire dead__0;
wire dead__1;
wire dead__2;
wire dead__3;
wire dead__4;
wire dead__5;
wire dead__6;
wire dead__7;
wire dead__8;
wire dead__9;
wire dead__10;
wire dead__11;
wire dead__12;
wire dead__13;
wire dead__14;
wire dead__15;
wire dead__16;
wire dead__17;
wire dead__18;
wire dead__19;
wire dead__20;
wire dead__21;
wire dead__22;
wire dead__23;
wire dead__24;
wire dead__25;
wire dead__26;
wire dead__27;
wire dead__28;
wire dead__29;
wire dead__30;
wire dead__31;
wire dead__32;
wire dead__33;
wire dead__34;
wire dead__35;
wire dead__36;
wire dead__37;
//ASSIGNMENTS FROM INPUTS TO PIPE
assign weight__0 = weight_hop;
assign hit__0 = hit_hop;
assign dead__0 = dead_hop;
//ASSIGNMENTS FROM PIPE TO OUTPUT
assign weight_absorber = weight__37;
//GENERATE PIPELINE
//genvar i;
//generate
// for(i=`PIPE_DEPTH; i>0; i=i-1) begin: weightHitDeadPipe
// case(i)
//
// //REGISTER 17 on diagram!!
// 18:
// begin
//
// PhotonBlock2 photon(
// //Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_x(newWeight),
// .i_y(hit[17]),
// .i_z(dead[17]),
//
// //Outputs
// .o_x(weight[18]),
// .o_y(hit[18]),
// .o_z(dead[18])
// );
//
// end
// default:
// begin
// PhotonBlock2 photon(
// //Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_x(weight[i-1]),
// .i_y(hit[i-1]),
// .i_z(dead[i-1]),
//
// //Outputs
// .o_x(weight[i]),
// .o_y(hit[i]),
// .o_z(dead[i])
// );
// end
// endcase
// end
//endgenerate
//Expand pipeline generation
//special case i = 18 first
PhotonBlock2 photon18(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(newWeight),
.i_y(hit__17),
.i_z(dead__17),
//Outputs
.o_x(weight__18),
.o_y(hit__18),
.o_z(dead__18)
);
PhotonBlock2 photon37(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__36),
.i_y(hit__36),
.i_z(dead__36),
//Outputs
.o_x(weight__37),
.o_y(hit__37),
.o_z(dead__37)
);
PhotonBlock2 photon36(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__35),
.i_y(hit__35),
.i_z(dead__35),
//Outputs
.o_x(weight__36),
.o_y(hit__36),
.o_z(dead__36)
);
PhotonBlock2 photon35(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__34),
.i_y(hit__34),
.i_z(dead__34),
//Outputs
.o_x(weight__35),
.o_y(hit__35),
.o_z(dead__35)
);
PhotonBlock2 photon34(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__33),
.i_y(hit__33),
.i_z(dead__33),
//Outputs
.o_x(weight__34),
.o_y(hit__34),
.o_z(dead__34)
);
PhotonBlock2 photon33(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__32),
.i_y(hit__32),
.i_z(dead__32),
//Outputs
.o_x(weight__33),
.o_y(hit__33),
.o_z(dead__33)
);
PhotonBlock2 photon32(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__31),
.i_y(hit__31),
.i_z(dead__31),
//Outputs
.o_x(weight__32),
.o_y(hit__32),
.o_z(dead__32)
);
PhotonBlock2 photon31(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__30),
.i_y(hit__30),
.i_z(dead__30),
//Outputs
.o_x(weight__31),
.o_y(hit__31),
.o_z(dead__31)
);
PhotonBlock2 photon30(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__29),
.i_y(hit__29),
.i_z(dead__29),
//Outputs
.o_x(weight__30),
.o_y(hit__30),
.o_z(dead__30)
);
PhotonBlock2 photon29(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__28),
.i_y(hit__28),
.i_z(dead__28),
//Outputs
.o_x(weight__29),
.o_y(hit__29),
.o_z(dead__29)
);
PhotonBlock2 photon28(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__27),
.i_y(hit__27),
.i_z(dead__27),
//Outputs
.o_x(weight__28),
.o_y(hit__28),
.o_z(dead__28)
);
PhotonBlock2 photon27(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__26),
.i_y(hit__26),
.i_z(dead__26),
//Outputs
.o_x(weight__27),
.o_y(hit__27),
.o_z(dead__27)
);
PhotonBlock2 photon26(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__25),
.i_y(hit__25),
.i_z(dead__25),
//Outputs
.o_x(weight__26),
.o_y(hit__26),
.o_z(dead__26)
);
PhotonBlock2 photon25(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__24),
.i_y(hit__24),
.i_z(dead__24),
//Outputs
.o_x(weight__25),
.o_y(hit__25),
.o_z(dead__25)
);
PhotonBlock2 photon24(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__23),
.i_y(hit__23),
.i_z(dead__23),
//Outputs
.o_x(weight__24),
.o_y(hit__24),
.o_z(dead__24)
);
PhotonBlock2 photon23(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__22),
.i_y(hit__22),
.i_z(dead__22),
//Outputs
.o_x(weight__23),
.o_y(hit__23),
.o_z(dead__23)
);
PhotonBlock2 photon22(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__21),
.i_y(hit__21),
.i_z(dead__21),
//Outputs
.o_x(weight__22),
.o_y(hit__22),
.o_z(dead__22)
);
PhotonBlock2 photon21(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__20),
.i_y(hit__20),
.i_z(dead__20),
//Outputs
.o_x(weight__21),
.o_y(hit__21),
.o_z(dead__21)
);
PhotonBlock2 photon20(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__19),
.i_y(hit__19),
.i_z(dead__19),
//Outputs
.o_x(weight__20),
.o_y(hit__20),
.o_z(dead__20)
);
PhotonBlock2 photon19(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__18),
.i_y(hit__18),
.i_z(dead__18),
//Outputs
.o_x(weight__19),
.o_y(hit__19),
.o_z(dead__19)
);
PhotonBlock2 photon17(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__16),
.i_y(hit__16),
.i_z(dead__16),
//Outputs
.o_x(weight__17),
.o_y(hit__17),
.o_z(dead__17)
);
PhotonBlock2 photon16(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__15),
.i_y(hit__15),
.i_z(dead__15),
//Outputs
.o_x(weight__16),
.o_y(hit__16),
.o_z(dead__16)
);
PhotonBlock2 photon15(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__14),
.i_y(hit__14),
.i_z(dead__14),
//Outputs
.o_x(weight__15),
.o_y(hit__15),
.o_z(dead__15)
);
PhotonBlock2 photon14(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__13),
.i_y(hit__13),
.i_z(dead__13),
//Outputs
.o_x(weight__14),
.o_y(hit__14),
.o_z(dead__14)
);
PhotonBlock2 photon13(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__12),
.i_y(hit__12),
.i_z(dead__12),
//Outputs
.o_x(weight__13),
.o_y(hit__13),
.o_z(dead__13)
);
PhotonBlock2 photon12(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__11),
.i_y(hit__11),
.i_z(dead__11),
//Outputs
.o_x(weight__12),
.o_y(hit__12),
.o_z(dead__12)
);
PhotonBlock2 photon11(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__10),
.i_y(hit__10),
.i_z(dead__10),
//Outputs
.o_x(weight__11),
.o_y(hit__11),
.o_z(dead__11)
);
PhotonBlock2 photon10(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__9),
.i_y(hit__9),
.i_z(dead__9),
//Outputs
.o_x(weight__10),
.o_y(hit__10),
.o_z(dead__10)
);
PhotonBlock2 photon9(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__8),
.i_y(hit__8),
.i_z(dead__8),
//Outputs
.o_x(weight__9),
.o_y(hit__9),
.o_z(dead__9)
);
PhotonBlock2 photon8(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__7),
.i_y(hit__7),
.i_z(dead__7),
//Outputs
.o_x(weight__8),
.o_y(hit__8),
.o_z(dead__8)
);
PhotonBlock2 photon7(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__6),
.i_y(hit__6),
.i_z(dead__6),
//Outputs
.o_x(weight__7),
.o_y(hit__7),
.o_z(dead__7)
);
PhotonBlock2 photon6(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__5),
.i_y(hit__5),
.i_z(dead__5),
//Outputs
.o_x(weight__6),
.o_y(hit__6),
.o_z(dead__6)
);
PhotonBlock2 photon5(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__4),
.i_y(hit__4),
.i_z(dead__4),
//Outputs
.o_x(weight__5),
.o_y(hit__5),
.o_z(dead__5)
);
PhotonBlock2 photon4(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__3),
.i_y(hit__3),
.i_z(dead__3),
//Outputs
.o_x(weight__4),
.o_y(hit__4),
.o_z(dead__4)
);
PhotonBlock2 photon3(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__2),
.i_y(hit__2),
.i_z(dead__2),
//Outputs
.o_x(weight__3),
.o_y(hit__3),
.o_z(dead__3)
);
PhotonBlock2 photon2(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__1),
.i_y(hit__1),
.i_z(dead__1),
//Outputs
.o_x(weight__2),
.o_y(hit__2),
.o_z(dead__2)
);
PhotonBlock2 photon1(
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(weight__0),
.i_y(hit__0),
.i_z(dead__0),
//Outputs
.o_x(weight__1),
.o_y(hit__1),
.o_z(dead__1)
);
//////////////////////////////////////////////////////////////////////////////
//PIPELINE ir,iz,dwa
//////////////////////////////////////////////////////////////////////////////
//WIRES FOR CONNECTING REGISTERS
//wire [32-1:0] ir [37:0];
wire [32-1:0] ir__0;
wire [32-1:0] ir__1;
wire [32-1:0] ir__2;
wire [32-1:0] ir__3;
wire [32-1:0] ir__4;
wire [32-1:0] ir__5;
wire [32-1:0] ir__6;
wire [32-1:0] ir__7;
wire [32-1:0] ir__8;
wire [32-1:0] ir__9;
wire [32-1:0] ir__10;
wire [32-1:0] ir__11;
wire [32-1:0] ir__12;
wire [32-1:0] ir__13;
wire [32-1:0] ir__14;
wire [32-1:0] ir__15;
wire [32-1:0] ir__16;
wire [32-1:0] ir__17;
wire [32-1:0] ir__18;
wire [32-1:0] ir__19;
wire [32-1:0] ir__20;
wire [32-1:0] ir__21;
wire [32-1:0] ir__22;
wire [32-1:0] ir__23;
wire [32-1:0] ir__24;
wire [32-1:0] ir__25;
wire [32-1:0] ir__26;
wire [32-1:0] ir__27;
wire [32-1:0] ir__28;
wire [32-1:0] ir__29;
wire [32-1:0] ir__30;
wire [32-1:0] ir__31;
wire [32-1:0] ir__32;
wire [32-1:0] ir__33;
wire [32-1:0] ir__34;
wire [32-1:0] ir__35;
wire [32-1:0] ir__36;
wire [32-1:0] ir__37;
//wire [32-1:0] iz [37:0];
wire [32-1:0] iz__0;
wire [32-1:0] iz__1;
wire [32-1:0] iz__2;
wire [32-1:0] iz__3;
wire [32-1:0] iz__4;
wire [32-1:0] iz__5;
wire [32-1:0] iz__6;
wire [32-1:0] iz__7;
wire [32-1:0] iz__8;
wire [32-1:0] iz__9;
wire [32-1:0] iz__10;
wire [32-1:0] iz__11;
wire [32-1:0] iz__12;
wire [32-1:0] iz__13;
wire [32-1:0] iz__14;
wire [32-1:0] iz__15;
wire [32-1:0] iz__16;
wire [32-1:0] iz__17;
wire [32-1:0] iz__18;
wire [32-1:0] iz__19;
wire [32-1:0] iz__20;
wire [32-1:0] iz__21;
wire [32-1:0] iz__22;
wire [32-1:0] iz__23;
wire [32-1:0] iz__24;
wire [32-1:0] iz__25;
wire [32-1:0] iz__26;
wire [32-1:0] iz__27;
wire [32-1:0] iz__28;
wire [32-1:0] iz__29;
wire [32-1:0] iz__30;
wire [32-1:0] iz__31;
wire [32-1:0] iz__32;
wire [32-1:0] iz__33;
wire [32-1:0] iz__34;
wire [32-1:0] iz__35;
wire [32-1:0] iz__36;
wire [32-1:0] iz__37;
//wire [32-1:0] dwa [37:0];
wire [32-1:0] dwa__0;
wire [32-1:0] dwa__1;
wire [32-1:0] dwa__2;
wire [32-1:0] dwa__3;
wire [32-1:0] dwa__4;
wire [32-1:0] dwa__5;
wire [32-1:0] dwa__6;
wire [32-1:0] dwa__7;
wire [32-1:0] dwa__8;
wire [32-1:0] dwa__9;
wire [32-1:0] dwa__10;
wire [32-1:0] dwa__11;
wire [32-1:0] dwa__12;
wire [32-1:0] dwa__13;
wire [32-1:0] dwa__14;
wire [32-1:0] dwa__15;
wire [32-1:0] dwa__16;
wire [32-1:0] dwa__17;
wire [32-1:0] dwa__18;
wire [32-1:0] dwa__19;
wire [32-1:0] dwa__20;
wire [32-1:0] dwa__21;
wire [32-1:0] dwa__22;
wire [32-1:0] dwa__23;
wire [32-1:0] dwa__24;
wire [32-1:0] dwa__25;
wire [32-1:0] dwa__26;
wire [32-1:0] dwa__27;
wire [32-1:0] dwa__28;
wire [32-1:0] dwa__29;
wire [32-1:0] dwa__30;
wire [32-1:0] dwa__31;
wire [32-1:0] dwa__32;
wire [32-1:0] dwa__33;
wire [32-1:0] dwa__34;
wire [32-1:0] dwa__35;
wire [32-1:0] dwa__36;
wire [32-1:0] dwa__37;
//ASSIGNMENTS FROM INPUTS TO PIPE
assign ir__0 = 32'b0;
assign iz__0 = 32'b0;
assign dwa__0 = 32'b0;
//GENERATE PIPELINE
//generate
// for(i=`PIPE_DEPTH; i>0; i=i-1) begin: IrIzDwaPipe
// case(i)
//
// //NOTE: STAGE 14 --> REGISTER 14 on diagram !! ir, iz
// 15:
// begin
//
// PhotonBlock1 photon(
// //Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_x(ir_temp),
// .i_y(iz_temp),
// .i_z(dwa[14]),
//
// //Outputs
// .o_x(ir[15]),
// .o_y(iz[15]),
// .o_z(dwa[15])
// );
//
// end
//
// //NOTE: STAGE 4 --> REGISTER 4 on diagram !! dwa
// 5:
// begin
//
// PhotonBlock1 photon(
// //Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_x(ir[4]),
// .i_y(iz[4]),
// .i_z(dwa_temp),
//
// //Outputs
// .o_x(ir[5]),
// .o_y(iz[5]),
// .o_z(dwa[5])
// );
//
// end
//
// default:
// begin
//
// PhotonBlock1 photon(
// //Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_x(ir[i-1]),
// .i_y(iz[i-1]),
// .i_z(dwa[i-1]),
//
// //Outputs
// .o_x(ir[i]),
// .o_y(iz[i]),
// .o_z(dwa[i])
// );
// end
// endcase
// end
//endgenerate
//Expanded generation
//special cases first peter m
PhotonBlock1 photon15q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir_temp),
.i_y(iz_temp),
.i_z(dwa__14),
//Outputs
.o_x(ir__15),
.o_y(iz__15),
.o_z(dwa__15)
);
//NOTE: STAGE 4 --> REGISTER 4 on diagram !! dwa
PhotonBlock1 photon5q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__4),
.i_y(iz__4),
.i_z(dwa_temp),
//Outputs
.o_x(ir__5),
.o_y(iz__5),
.o_z(dwa__5)
);
PhotonBlock1 photon37q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__36),
.i_y(iz__36),
.i_z(dwa__36),
//Outputs
.o_x(ir__37),
.o_y(iz__37),
.o_z(dwa__37)
);
PhotonBlock1 photon36q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__35),
.i_y(iz__35),
.i_z(dwa__35),
//Outputs
.o_x(ir__36),
.o_y(iz__36),
.o_z(dwa__36)
);
PhotonBlock1 photon35q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__34),
.i_y(iz__34),
.i_z(dwa__34),
//Outputs
.o_x(ir__35),
.o_y(iz__35),
.o_z(dwa__35)
);
PhotonBlock1 photon34q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__33),
.i_y(iz__33),
.i_z(dwa__33),
//Outputs
.o_x(ir__34),
.o_y(iz__34),
.o_z(dwa__34)
);
PhotonBlock1 photon33q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__32),
.i_y(iz__32),
.i_z(dwa__32),
//Outputs
.o_x(ir__33),
.o_y(iz__33),
.o_z(dwa__33)
);
PhotonBlock1 photon32q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__31),
.i_y(iz__31),
.i_z(dwa__31),
//Outputs
.o_x(ir__32),
.o_y(iz__32),
.o_z(dwa__32)
);
PhotonBlock1 photon31q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__30),
.i_y(iz__30),
.i_z(dwa__30),
//Outputs
.o_x(ir__31),
.o_y(iz__31),
.o_z(dwa__31)
);
PhotonBlock1 photon30q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__29),
.i_y(iz__29),
.i_z(dwa__29),
//Outputs
.o_x(ir__30),
.o_y(iz__30),
.o_z(dwa__30)
);
PhotonBlock1 photon29q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__28),
.i_y(iz__28),
.i_z(dwa__28),
//Outputs
.o_x(ir__29),
.o_y(iz__29),
.o_z(dwa__29)
);
PhotonBlock1 photon28q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__27),
.i_y(iz__27),
.i_z(dwa__27),
//Outputs
.o_x(ir__28),
.o_y(iz__28),
.o_z(dwa__28)
);
PhotonBlock1 photon27q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__26),
.i_y(iz__26),
.i_z(dwa__26),
//Outputs
.o_x(ir__27),
.o_y(iz__27),
.o_z(dwa__27)
);
PhotonBlock1 photon26q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__25),
.i_y(iz__25),
.i_z(dwa__25),
//Outputs
.o_x(ir__26),
.o_y(iz__26),
.o_z(dwa__26)
);
PhotonBlock1 photon25q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__24),
.i_y(iz__24),
.i_z(dwa__24),
//Outputs
.o_x(ir__25),
.o_y(iz__25),
.o_z(dwa__25)
);
PhotonBlock1 photon24q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__23),
.i_y(iz__23),
.i_z(dwa__23),
//Outputs
.o_x(ir__24),
.o_y(iz__24),
.o_z(dwa__24)
);
PhotonBlock1 photon23q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__22),
.i_y(iz__22),
.i_z(dwa__22),
//Outputs
.o_x(ir__23),
.o_y(iz__23),
.o_z(dwa__23)
);
PhotonBlock1 photon22q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__21),
.i_y(iz__21),
.i_z(dwa__21),
//Outputs
.o_x(ir__22),
.o_y(iz__22),
.o_z(dwa__22)
);
PhotonBlock1 photon21q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__20),
.i_y(iz__20),
.i_z(dwa__20),
//Outputs
.o_x(ir__21),
.o_y(iz__21),
.o_z(dwa__21)
);
PhotonBlock1 photon20q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__19),
.i_y(iz__19),
.i_z(dwa__19),
//Outputs
.o_x(ir__20),
.o_y(iz__20),
.o_z(dwa__20)
);
PhotonBlock1 photon19q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__18),
.i_y(iz__18),
.i_z(dwa__18),
//Outputs
.o_x(ir__19),
.o_y(iz__19),
.o_z(dwa__19)
);
PhotonBlock1 photon18q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__17),
.i_y(iz__17),
.i_z(dwa__17),
//Outputs
.o_x(ir__18),
.o_y(iz__18),
.o_z(dwa__18)
);
PhotonBlock1 photon17q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__16),
.i_y(iz__16),
.i_z(dwa__16),
//Outputs
.o_x(ir__17),
.o_y(iz__17),
.o_z(dwa__17)
);
PhotonBlock1 photon16q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__15),
.i_y(iz__15),
.i_z(dwa__15),
//Outputs
.o_x(ir__16),
.o_y(iz__16),
.o_z(dwa__16)
);
PhotonBlock1 photon14q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__13),
.i_y(iz__13),
.i_z(dwa__13),
//Outputs
.o_x(ir__14),
.o_y(iz__14),
.o_z(dwa__14)
);
PhotonBlock1 photon13q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__12),
.i_y(iz__12),
.i_z(dwa__12),
//Outputs
.o_x(ir__13),
.o_y(iz__13),
.o_z(dwa__13)
);
PhotonBlock1 photon12q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__11),
.i_y(iz__11),
.i_z(dwa__11),
//Outputs
.o_x(ir__12),
.o_y(iz__12),
.o_z(dwa__12)
);
PhotonBlock1 photon11q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__10),
.i_y(iz__10),
.i_z(dwa__10),
//Outputs
.o_x(ir__11),
.o_y(iz__11),
.o_z(dwa__11)
);
PhotonBlock1 photon10q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__9),
.i_y(iz__9),
.i_z(dwa__9),
//Outputs
.o_x(ir__10),
.o_y(iz__10),
.o_z(dwa__10)
);
PhotonBlock1 photon9q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__8),
.i_y(iz__8),
.i_z(dwa__8),
//Outputs
.o_x(ir__9),
.o_y(iz__9),
.o_z(dwa__9)
);
PhotonBlock1 photon8q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__7),
.i_y(iz__7),
.i_z(dwa__7),
//Outputs
.o_x(ir__8),
.o_y(iz__8),
.o_z(dwa__8)
);
PhotonBlock1 photon7q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__6),
.i_y(iz__6),
.i_z(dwa__6),
//Outputs
.o_x(ir__7),
.o_y(iz__7),
.o_z(dwa__7)
);
PhotonBlock1 photon6q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__5),
.i_y(iz__5),
.i_z(dwa__5),
//Outputs
.o_x(ir__6),
.o_y(iz__6),
.o_z(dwa__6)
);
PhotonBlock1 photon4q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__3),
.i_y(iz__3),
.i_z(dwa__3),
//Outputs
.o_x(ir__4),
.o_y(iz__4),
.o_z(dwa__4)
);
PhotonBlock1 photon3q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__2),
.i_y(iz__2),
.i_z(dwa__2),
//Outputs
.o_x(ir__3),
.o_y(iz__3),
.o_z(dwa__3)
);
PhotonBlock1 photon2q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__1),
.i_y(iz__1),
.i_z(dwa__1),
//Outputs
.o_x(ir__2),
.o_y(iz__2),
.o_z(dwa__2)
);
PhotonBlock1 photon1q(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_x(ir__0),
.i_y(iz__0),
.i_z(dwa__0),
//Outputs
.o_x(ir__1),
.o_y(iz__1),
.o_z(dwa__1)
);
//////////////////////////////////////////////////////////////////////////////
//STAGE BY STAGE PIPELINE DESIGN
//////////////////////////////////////////////////////////////////////////////
///////////////STAGE 2 - square of x and y/////////////////////////
always @(reset or x_pipe or y_pipe) begin
if (reset) begin
x2_temp=0;
y2_temp=0;
end
else begin
x2_temp=x_pipe*x_pipe;
y2_temp=y_pipe*y_pipe;
end
end
///////////////STAGE 3 - square of r/////////////////////////
always @(reset or x2_P or y2_P) begin
if (reset)
r2_temp=0;
else
r2_temp=x2_P+y2_P;
end
///////////////STAGE 4 - Find r and dwa/////////////////////////
//Create MUX
always@(layer_pipe or muaFraction1 or muaFraction2 or muaFraction3 or muaFraction4 or muaFraction5)
case(layer_pipe)
1: fractionScaled=muaFraction1;
2: fractionScaled=muaFraction2;
3: fractionScaled=muaFraction3;
4: fractionScaled=muaFraction4;
5: fractionScaled=muaFraction5;
default: fractionScaled=0; //Sys Reset case
endcase
always @(reset or weight__4 or r_P_wire or weight_P4 or fractionScaled or product64bit or dead__4 or hit__4) begin
if (reset) begin
weight_P4=0;
r_P=0;
product64bit=0;
dwa_temp=0;
end
else begin
weight_P4=weight__4;
r_P=r_P_wire; //Connect to sqrt block
product64bit=weight_P4*fractionScaled;
//Checking corner cases
if (dead__4==1) //Dead photon
dwa_temp=weight_P4;//drop all its weight
else if (hit__4==1) //Hit Boundary
dwa_temp=0; //Don't add to absorption array
else
dwa_temp=product64bit[63:32];
end
end
assign r2_P_wire=r2_P;
Sqrt_64b squareRoot (
.clk(clock),
.num_(r2_P_wire),
.res(r_P_wire)
);
///////////////STAGE 14 - Find ir and iz/////////////////////////
always @(reset or r_P or z_pipe or dead__14 or hit__14 or iz_temp or ir_temp) begin
if (reset) begin
ir_temp=0;
iz_temp=0;
end
//Checking corner cases!!!
else begin
//ir_temp=r_P>>`RGRID_SCLAE_EXP;
//iz_temp=z_pipe>>`ZGRID_SCLAE_EXP;
if (dead__14==1) begin
ir_temp=`NR-1;
iz_temp=`NZ-1;
end
else if (hit__14==1) begin
ir_temp=0;
iz_temp=0;
end
else begin
if ((z_pipe>>`ZGRID_SCLAE_EXP) >=`NZ ) begin
iz_temp=`NZ-1;
end
else begin
iz_temp=z_pipe>>`ZGRID_SCLAE_EXP;
end
if ((r_P>>`RGRID_SCLAE_EXP) >= `NR ) begin
ir_temp=`NR-1;
end
else begin
ir_temp=r_P>>`RGRID_SCLAE_EXP;
end
end
// if (iz_temp>=`NZ) begin
// iz_temp=`NZ-1;
// end
//
//
// if (ir_temp>=`NR) begin
// ir_temp=`NR-1;
// end
end
end
///////////////STAGE 15 - Compute MEM address/////////////////////////
always @(reset or ir__15 or iz__15 or ir_P or iz_P or ir_scaled) begin
if (reset) begin
ir_P=0;
iz_P=0;
ir_scaled=0;
rADDR_temp=0;
end
else begin
ir_P=ir__15;
iz_P=iz__15;
ir_scaled=ir_P<<`NR_EXP;
rADDR_temp=ir_scaled[15:0] + iz_P[15:0];
end
end
///////////////STAGE 16 - MEM read/////////////////////////
always @(reset or ir__16 or ir__17 or iz__16 or iz__17 or ir__18 or iz__18 or newAbs_P or q or newAbs_temp) begin
if (reset) begin
oldAbs_MEM=0;
end else begin
//Check Corner cases (RAW hazards)
if ((ir__16==ir__17) && (iz__16==iz__17)) begin
oldAbs_MEM=newAbs_temp;
end else if ((ir__16==ir__18) && (iz__16==iz__18)) begin
oldAbs_MEM=newAbs_P; //RAW hazard
end else begin
oldAbs_MEM=q; //Connect to REAL dual-port MEM
end
end
end
///////////////STAGE 17 - Update Weight/////////////////////////
//TO BE TESTED!!!
always @(reset or dwa__17 or weight__17 or weight_P or dwa_P or oldAbs_P) begin
if(reset) begin
dwa_P=0; //How to specify Base 10???
weight_P=0;
newWeight = 0;
newAbs_temp =0;
end
else begin
dwa_P=dwa__17;
weight_P=weight__17;
newWeight=weight_P-dwa_P;
newAbs_temp=oldAbs_P+dwa_P; //Check bit width casting (64-bit<--64-bit+32-bit)
end
end
//////////////////////////////////////////////////////////////////////////////
//STAGE BY STAGE - EXTRA REGISTERS
//////////////////////////////////////////////////////////////////////////////
always @ (posedge clock)
begin
if (reset) begin
//Stage 2
x2_P<=0;
y2_P<=0;
//Stage 3
r2_P<=0;
//Stage 15
rADDR_16<=0;
//Stage 16
oldAbs_P<=0;
rADDR_17<=0;
//Stage 17
newAbs_P<=0;
// wADDR <=0;
end
else if (enable) begin
//Stage 2
x2_P<=x2_temp; //From comb logic above
y2_P<=y2_temp;
//Stage 3
r2_P<=r2_temp;
//Stage 15
rADDR_16<=rADDR_temp;
//Stage 16
oldAbs_P<=oldAbs_MEM;
rADDR_17<=rADDR_16;
//Stage 17
newAbs_P<=newAbs_temp;
// wADDR <=rADDR_17;
end
end
//////////////////////////////////////////////////////////////////////////////
//INTERFACE to on-chip MEM
//////////////////////////////////////////////////////////////////////////////
always @ (posedge clock)
begin
if (reset)
wren <=0;
else
wren<=1; //Memory enabled every cycle after global enable
end
assign rdaddress=rADDR_temp;
assign wraddress=rADDR_17;
assign data=newAbs_temp;
endmodule
//Photons that make up the register pipeline
module PhotonBlock1(
//Inputs
clock,
reset,
enable,
i_x,
i_y,
i_z,
//Outputs
o_x,
o_y,
o_z
);
//////////////////////////////////////////////////////////////////////////////
//PARAMETERS
//////////////////////////////////////////////////////////////////////////////
//parameter BIT_WIDTH=32;
input clock;
input reset;
input enable;
input [`BIT_WIDTH-1:0] i_x;
input [`BIT_WIDTH-1:0] i_y;
input [`BIT_WIDTH-1:0] i_z;
output [`BIT_WIDTH-1:0] o_x;
output [`BIT_WIDTH-1:0] o_y;
output [`BIT_WIDTH-1:0] o_z;
wire clock;
wire reset;
wire enable;
wire [`BIT_WIDTH-1:0] i_x;
wire [`BIT_WIDTH-1:0] i_y;
wire [`BIT_WIDTH-1:0] i_z;
reg [`BIT_WIDTH-1:0] o_x;
reg [`BIT_WIDTH-1:0] o_y;
reg [`BIT_WIDTH-1:0] o_z;
always @ (posedge clock)
if(reset) begin
o_x <= {`BIT_WIDTH{1'b0}} ;
o_y <= {`BIT_WIDTH{1'b0}};
o_z <= {`BIT_WIDTH{1'b0}};
end else if(enable) begin
o_x <= i_x;
o_y <= i_y;
o_z <= i_z;
end
endmodule
//Photons that make up the register pipeline
module PhotonBlock2(
//Inputs
clock,
reset,
enable,
i_x,
i_y,
i_z,
//Outputs
o_x,
o_y,
o_z
);
//////////////////////////////////////////////////////////////////////////////
//PARAMETERS
//////////////////////////////////////////////////////////////////////////////
//parameter BIT_WIDTH=32;
input clock;
input reset;
input enable;
input [`BIT_WIDTH-1:0] i_x;
input i_y;
input i_z;
output [`BIT_WIDTH-1:0] o_x;
output o_y;
output o_z;
wire clock;
wire reset;
wire enable;
wire [`BIT_WIDTH-1:0] i_x;
wire i_y;
wire i_z;
reg [`BIT_WIDTH-1:0] o_x;
reg o_y;
reg o_z;
always @ (posedge clock)
if(reset) begin
o_x <= {`BIT_WIDTH{1'b0}} ;
o_y <= 1'b0;
o_z <= 1'b0;
end else if(enable) begin
o_x <= i_x;
o_y <= i_y;
o_z <= i_z;
end
endmodule
module ScattererReflectorWrapper (
//Inputs
clock,
reset,
enable,
//MEMORY WRAPPER
//Inputs
//Photon values
i_uz1_pipeWrapper,
i_hit2_pipeWrapper,
i_ux3_pipeWrapper,
i_uz3_pipeWrapper,
i_layer3_pipeWrapper,
i_hit4_pipeWrapper,
i_hit6_pipeWrapper,
i_hit16_pipeWrapper,
i_layer31_pipeWrapper,
i_uy32_pipeWrapper,
i_uz32_pipeWrapper,
i_hit33_pipeWrapper,
i_ux33_pipeWrapper,
i_uy33_pipeWrapper,
i_hit34_pipeWrapper,
i_ux35_pipeWrapper,
i_uy35_pipeWrapper,
i_uz35_pipeWrapper,
i_layer35_pipeWrapper,
i_hit36_pipeWrapper,
i_ux36_pipeWrapper,
i_uy36_pipeWrapper,
i_uz36_pipeWrapper,
i_layer36_pipeWrapper,
i_dead36_pipeWrapper,
//Memory Interface
//Inputs
rand2,
rand3,
rand5,
sint,
cost,
up_rFresnel,
down_rFresnel,
//Outputs
tindex,
fresIndex,
//Constants
down_niOverNt_1,
down_niOverNt_2,
down_niOverNt_3,
down_niOverNt_4,
down_niOverNt_5,
up_niOverNt_1,
up_niOverNt_2,
up_niOverNt_3,
up_niOverNt_4,
up_niOverNt_5,
down_niOverNt_2_1,
down_niOverNt_2_2,
down_niOverNt_2_3,
down_niOverNt_2_4,
down_niOverNt_2_5,
up_niOverNt_2_1,
up_niOverNt_2_2,
up_niOverNt_2_3,
up_niOverNt_2_4,
up_niOverNt_2_5,
downCritAngle_0,
downCritAngle_1,
downCritAngle_2,
downCritAngle_3,
downCritAngle_4,
upCritAngle_0,
upCritAngle_1,
upCritAngle_2,
upCritAngle_3,
upCritAngle_4,
//Outputs
ux_scatterer,
uy_scatterer,
uz_scatterer,
ux_reflector,
uy_reflector,
uz_reflector,
layer_reflector,
dead_reflector
);
//-------------------PARAMETER DEFINITION----------------------
//
//
//
//
//
//
//Assign values to parameters used later in the program.
//parameter INTMAX_2 = 64'h3FFFFFFF00000001;
//The above parameter is never used in the ScattererReflectorWrapper module itself
//-----------------------------PIN DECLARATION----------------------
//
//
//
//
//
//
//
//
//Assign appropriate types to pins (input or output).
input clock;
input reset;
input enable;
input [2:0] i_layer31_pipeWrapper;
input [31:0] i_uz1_pipeWrapper;
input i_hit2_pipeWrapper;
input [31:0] i_ux3_pipeWrapper;
input [31:0] i_uz3_pipeWrapper;
input [2:0] i_layer3_pipeWrapper;
input i_hit4_pipeWrapper;
input i_hit6_pipeWrapper;
input i_hit16_pipeWrapper;
input [31:0] i_uy32_pipeWrapper;
input [31:0] i_uz32_pipeWrapper;
input i_hit33_pipeWrapper;
input [31:0] i_ux33_pipeWrapper;
input [31:0] i_uy33_pipeWrapper;
input i_hit34_pipeWrapper;
input [31:0] i_ux35_pipeWrapper;
input [31:0] i_uy35_pipeWrapper;
input [31:0] i_uz35_pipeWrapper;
input [2:0] i_layer35_pipeWrapper;
input i_hit36_pipeWrapper;
input [31:0] i_ux36_pipeWrapper;
input [31:0] i_uy36_pipeWrapper;
input [31:0] i_uz36_pipeWrapper;
input [2:0] i_layer36_pipeWrapper;
input i_dead36_pipeWrapper;
//Memory Interface
input [31:0] rand2;
input [31:0] rand3;
input [31:0] rand5;
input [31:0] sint;
input [31:0] cost;
input [31:0] up_rFresnel;
input [31:0] down_rFresnel;
output [12:0] tindex;
output [9:0] fresIndex;
//Constants
input [31:0] down_niOverNt_1;
input [31:0] down_niOverNt_2;
input [31:0] down_niOverNt_3;
input [31:0] down_niOverNt_4;
input [31:0] down_niOverNt_5;
input [31:0] up_niOverNt_1;
input [31:0] up_niOverNt_2;
input [31:0] up_niOverNt_3;
input [31:0] up_niOverNt_4;
input [31:0] up_niOverNt_5;
input [63:0] down_niOverNt_2_1;
input [63:0] down_niOverNt_2_2;
input [63:0] down_niOverNt_2_3;
input [63:0] down_niOverNt_2_4;
input [63:0] down_niOverNt_2_5;
input [63:0] up_niOverNt_2_1;
input [63:0] up_niOverNt_2_2;
input [63:0] up_niOverNt_2_3;
input [63:0] up_niOverNt_2_4;
input [63:0] up_niOverNt_2_5;
input [31:0] downCritAngle_0;
input [31:0] downCritAngle_1;
input [31:0] downCritAngle_2;
input [31:0] downCritAngle_3;
input [31:0] downCritAngle_4;
input [31:0] upCritAngle_0;
input [31:0] upCritAngle_1;
input [31:0] upCritAngle_2;
input [31:0] upCritAngle_3;
input [31:0] upCritAngle_4;
output [31:0] ux_scatterer;
output [31:0] uy_scatterer;
output [31:0] uz_scatterer;
output [31:0] ux_reflector;
output [31:0] uy_reflector;
output [31:0] uz_reflector;
output [2:0] layer_reflector;
output dead_reflector;
//-----------------------------PIN TYPES-----------------------------
//
//
//
//
//
//
//
//
//Assign pins to be wires or regs.
wire clock;
wire reset;
wire enable;
wire [2:0] i_layer31_pipeWrapper;
wire [31:0] i_uz1_pipeWrapper;
wire i_hit2_pipeWrapper;
wire [31:0] i_ux3_pipeWrapper;
wire [31:0] i_uz3_pipeWrapper;
wire [2:0] i_layer3_pipeWrapper;
wire i_hit4_pipeWrapper;
wire i_hit6_pipeWrapper;
wire i_hit16_pipeWrapper;
wire [31:0] i_uy32_pipeWrapper;
wire [31:0] i_uz32_pipeWrapper;
wire i_hit33_pipeWrapper;
wire [31:0] i_ux33_pipeWrapper;
wire [31:0] i_uy33_pipeWrapper;
wire i_hit34_pipeWrapper;
wire [31:0] i_ux35_pipeWrapper;
wire [31:0] i_uy35_pipeWrapper;
wire [31:0] i_uz35_pipeWrapper;
wire [2:0] i_layer35_pipeWrapper;
wire i_hit36_pipeWrapper;
wire [31:0] i_ux36_pipeWrapper;
wire [31:0] i_uy36_pipeWrapper;
wire [31:0] i_uz36_pipeWrapper;
wire [2:0] i_layer36_pipeWrapper;
wire i_dead36_pipeWrapper;
wire [9:0] pindex;
wire [12:0] tindex;
wire [31:0] rand2;
wire [31:0] rand3;
wire [31:0] rand5;
//Constants
wire [31:0] down_niOverNt_1;
wire [31:0] down_niOverNt_2;
wire [31:0] down_niOverNt_3;
wire [31:0] down_niOverNt_4;
wire [31:0] down_niOverNt_5;
wire [31:0] up_niOverNt_1;
wire [31:0] up_niOverNt_2;
wire [31:0] up_niOverNt_3;
wire [31:0] up_niOverNt_4;
wire [31:0] up_niOverNt_5;
wire [63:0] down_niOverNt_2_1;
wire [63:0] down_niOverNt_2_2;
wire [63:0] down_niOverNt_2_3;
wire [63:0] down_niOverNt_2_4;
wire [63:0] down_niOverNt_2_5;
wire [63:0] up_niOverNt_2_1;
wire [63:0] up_niOverNt_2_2;
wire [63:0] up_niOverNt_2_3;
wire [63:0] up_niOverNt_2_4;
wire [63:0] up_niOverNt_2_5;
wire [31:0] downCritAngle_0;
wire [31:0] downCritAngle_1;
wire [31:0] downCritAngle_2;
wire [31:0] downCritAngle_3;
wire [31:0] downCritAngle_4;
wire [31:0] upCritAngle_0;
wire [31:0] upCritAngle_1;
wire [31:0] upCritAngle_2;
wire [31:0] upCritAngle_3;
wire [31:0] upCritAngle_4;
//Scatterer, final calculated values
wire [31:0] ux_scatterer;
wire [31:0] uy_scatterer;
wire [31:0] uz_scatterer;
wire [31:0] ux_reflector;
wire [31:0] uy_reflector;
wire [31:0] uz_reflector;
wire [2:0] layer_reflector;
wire dead_reflector;
//Mathematics results signals
wire [63:0] prod1_2;
wire [63:0] prod1_4;
wire [31:0] sqrtResult1_6;
//wire [32:0] sqrtRemainder; //not necessary, not used except as dummy var in sqrt.
wire [63:0] prod1_33;
wire [63:0] prod2_33;
wire [63:0] prod3_33;
wire [63:0] prod1_34;
wire [63:0] prod2_34;
wire [63:0] prod3_34;
wire [63:0] prod4_34;
wire [63:0] quot1_16;
wire [31:0] divRemainder;
wire [63:0] prod1_36;
wire [63:0] prod2_36;
wire [63:0] prod3_36;
wire [63:0] prod4_36;
wire [63:0] prod5_36;
wire [63:0] prod6_36;
//Scatterer Operands
wire [31:0] op1_2_1_scatterer;
wire [31:0] op1_2_2_scatterer;
wire [31:0] op1_4_1_scatterer;
wire [31:0] op1_4_2_scatterer;
wire [63:0] sqrtOperand1_6_scatterer;
wire [63:0] divNumerator1_16_scatterer;
wire [31:0] divDenominator1_16_scatterer;
wire [31:0] op1_33_1_scatterer;
wire [31:0] op1_33_2_scatterer;
wire [31:0] op2_33_1_scatterer;
wire [31:0] op2_33_2_scatterer;
wire [31:0] op3_33_1_scatterer;
wire [31:0] op3_33_2_scatterer;
wire [31:0] op1_34_1_scatterer;
wire [31:0] op1_34_2_scatterer;
wire [31:0] op2_34_1_scatterer;
wire [31:0] op2_34_2_scatterer;
wire [31:0] op3_34_1_scatterer;
wire [31:0] op3_34_2_scatterer;
wire [31:0] op4_34_1_scatterer;
wire [31:0] op4_34_2_scatterer;
wire [31:0] op1_36_1_scatterer;
wire [31:0] op1_36_2_scatterer;
wire [31:0] op2_36_1_scatterer;
wire [31:0] op2_36_2_scatterer;
wire [31:0] op3_36_1_scatterer;
wire [31:0] op3_36_2_scatterer;
wire [31:0] op4_36_1_scatterer;
wire [31:0] op4_36_2_scatterer;
wire [31:0] op5_36_1_scatterer;
wire [31:0] op5_36_2_scatterer;
wire [31:0] op6_36_1_scatterer;
wire [31:0] op6_36_2_scatterer;
//Reflector Operands
wire [31:0] op1_2_1_reflector;
wire [31:0] op1_2_2_reflector;
wire [31:0] op1_4_1_reflector;
wire [31:0] op1_4_2_reflector;
wire [63:0] sqrtOperand1_6_reflector;
wire [31:0] op1_36_1_reflector;
wire [31:0] op1_36_2_reflector;
wire [31:0] op2_36_1_reflector;
wire [31:0] op2_36_2_reflector;
//Operands entering the multipliers, divider, and sqrt
wire [31:0] op1_2_1;
wire [31:0] op1_2_2;
wire [31:0] op1_4_1;
wire [31:0] op1_4_2;
wire [63:0] sqrtOperand1_6;
wire [63:0] divNumerator1_16;
wire [31:0] divDenominator1_16;
wire [31:0] op1_33_1;
wire [31:0] op1_33_2;
wire [31:0] op2_33_1;
wire [31:0] op2_33_2;
wire [31:0] op3_33_1;
wire [31:0] op3_33_2;
wire [31:0] op1_34_1;
wire [31:0] op1_34_2;
wire [31:0] op2_34_1;
wire [31:0] op2_34_2;
wire [31:0] op3_34_1;
wire [31:0] op3_34_2;
wire [31:0] op4_34_1;
wire [31:0] op4_34_2;
wire [31:0] op1_36_1;
wire [31:0] op1_36_2;
wire [31:0] op2_36_1;
wire [31:0] op2_36_2;
wire [31:0] op3_36_1;
wire [31:0] op3_36_2;
wire [31:0] op4_36_1;
wire [31:0] op4_36_2;
wire [31:0] op5_36_1;
wire [31:0] op5_36_2;
wire [31:0] op6_36_1;
wire [31:0] op6_36_2;
reg [2:0] layerMinusOne;
wire [31:0] sint;
wire [31:0] cost;
wire [31:0] sinp;
wire [31:0] cosp;
wire [31:0] up_rFresnel;
wire [31:0] down_rFresnel;
wire [9:0] fresIndex;
//Need this to deal with 'unused' inputs for ODIN II
wire bigOr;
assign bigOr = i_hit16_pipeWrapper|i_hit33_pipeWrapper|i_hit34_pipeWrapper|
rand2[31]|rand2[30]|rand2[29]|rand2[28]|rand2[27]|rand2[26]|
rand2[25]|rand2[24]|rand2[23]|rand2[22]|rand2[21]|rand2[20]|
rand2[19]|rand2[18]|rand2[17]|rand2[16]|rand2[15]|rand2[14]|
rand2[13]|rand2[12]|rand2[11]|rand2[10]|
rand3[31]|rand3[30]|rand3[29]|rand3[28]|rand3[27]|rand3[26]|
rand3[25]|rand3[24]|rand3[23]|rand3[22]|rand3[21]|rand3[20]|
rand3[19]|rand3[18]|rand3[17]|rand3[16]|rand3[15]|rand3[14]|
rand3[13]|rand3[12]|rand3[11]|rand3[10]|
rand5[31]|(1'b1);
wire reset_new;
assign reset_new = reset & bigOr;
//MUX for sending in indices for memory.
always @ (i_layer31_pipeWrapper) begin
case (i_layer31_pipeWrapper)
3'b001: layerMinusOne = 0;
3'b010: layerMinusOne = 1;
3'b011: layerMinusOne = 2;
3'b100: layerMinusOne = 3;
3'b101: layerMinusOne = 4;
default: layerMinusOne = 0;
endcase
end
assign tindex = {layerMinusOne, rand2[9:0]};
assign pindex = rand3[9:0];
//Arbitrarily decide on values of sine and cosine for now, should be memory lookups
Memory_Wrapper memories(
//INPUTS
.clock(clock),
//.reset(reset), //Unused. ODIN II complained.
.pindex(pindex),
//OUTPUTS
.sinp(sinp),
.cosp(cosp)
);
Scatterer scatterer_0 (
.clock(clock),
.reset(reset_new), //so pins are used
.enable(enable),
//Photon values
.i_uz1(i_uz1_pipeWrapper),
.i_ux3(i_ux3_pipeWrapper),
.i_uz3(i_uz3_pipeWrapper),
.i_uy32(i_uy32_pipeWrapper),
.i_uz32(i_uz32_pipeWrapper),
.i_ux33(i_ux33_pipeWrapper),
.i_uy33(i_uy33_pipeWrapper),
.i_ux35(i_ux35_pipeWrapper),
.i_uy35(i_uy35_pipeWrapper),
.i_uz35(i_uz35_pipeWrapper),
.i_uz36(i_uz36_pipeWrapper),
//Mathematics Results
.prod1_2(prod1_2),
.prod1_4({prod1_4[63:63], prod1_4[61:31]}),
.sqrtResult1_6(sqrtResult1_6),
.prod1_33({prod1_33[63:63], prod1_33[61:31]}),
.prod2_33({prod2_33[63:63], prod2_33[61:31]}),
.prod3_33({prod3_33[63:63], prod3_33[61:31]}),
.prod1_34({prod1_34[63:63], prod1_34[61:31]}),
.prod2_34({prod2_34[63:63], prod2_34[61:31]}),
.prod3_34({prod3_34[63:63], prod3_34[61:31]}),
.prod4_34({prod4_34[63:63], prod4_34[61:31]}),
.quot1_16(quot1_16[63:0]),
.prod1_36(prod1_36[63:0]),
.prod2_36(prod2_36[63:0]),
.prod3_36({prod3_36[63:63], prod3_36[61:31]}),
.prod4_36({prod4_36[63:63], prod4_36[61:31]}),
.prod5_36({prod5_36[63:63], prod5_36[61:31]}),
.prod6_36({prod6_36[63:63], prod6_36[61:31]}),
//Trig from Memory
.sint_Mem(sint),
.cost_Mem(cost),
.sinp_Mem(sinp),
.cosp_Mem(cosp),
//Operands for mathematics
.op1_2_1(op1_2_1_scatterer),
.op1_2_2(op1_2_2_scatterer),
.op1_4_1(op1_4_1_scatterer),
.op1_4_2(op1_4_2_scatterer),
.sqrtOperand1_6(sqrtOperand1_6_scatterer),
.divNumerator1_16(divNumerator1_16_scatterer),
.divDenominator1_16(divDenominator1_16_scatterer),
.op1_33_1(op1_33_1_scatterer),
.op1_33_2(op1_33_2_scatterer),
.op2_33_1(op2_33_1_scatterer),
.op2_33_2(op2_33_2_scatterer),
.op3_33_1(op3_33_1_scatterer),
.op3_33_2(op3_33_2_scatterer),
.op1_34_1(op1_34_1_scatterer),
.op1_34_2(op1_34_2_scatterer),
.op2_34_1(op2_34_1_scatterer),
.op2_34_2(op2_34_2_scatterer),
.op3_34_1(op3_34_1_scatterer),
.op3_34_2(op3_34_2_scatterer),
.op4_34_1(op4_34_1_scatterer),
.op4_34_2(op4_34_2_scatterer),
.op1_36_1(op1_36_1_scatterer),
.op1_36_2(op1_36_2_scatterer),
.op2_36_1(op2_36_1_scatterer),
.op2_36_2(op2_36_2_scatterer),
.op3_36_1(op3_36_1_scatterer),
.op3_36_2(op3_36_2_scatterer),
.op4_36_1(op4_36_1_scatterer),
.op4_36_2(op4_36_2_scatterer),
.op5_36_1(op5_36_1_scatterer),
.op5_36_2(op5_36_2_scatterer),
.op6_36_1(op6_36_1_scatterer),
.op6_36_2(op6_36_2_scatterer),
//Final calculated values
.ux_scatterer(ux_scatterer),
.uy_scatterer(uy_scatterer),
.uz_scatterer(uz_scatterer)
);
Reflector reflector_0 (
//INPUTS
.clock(clock),
.reset(reset),
.enable(enable),
//Photon values
.i_uz1(i_uz1_pipeWrapper),
.i_uz3(i_uz3_pipeWrapper),
.i_layer3(i_layer3_pipeWrapper),
.i_ux35(i_ux35_pipeWrapper),
.i_uy35(i_uy35_pipeWrapper),
.i_uz35(i_uz35_pipeWrapper),
.i_layer35(i_layer35_pipeWrapper),
.i_ux36(i_ux36_pipeWrapper),
.i_uy36(i_uy36_pipeWrapper),
.i_uz36(i_uz36_pipeWrapper),
.i_layer36(i_layer36_pipeWrapper),
.i_dead36(i_dead36_pipeWrapper),
//Constants
.down_niOverNt_1(down_niOverNt_1),
.down_niOverNt_2(down_niOverNt_2),
.down_niOverNt_3(down_niOverNt_3),
.down_niOverNt_4(down_niOverNt_4),
.down_niOverNt_5(down_niOverNt_5),
.up_niOverNt_1(up_niOverNt_1),
.up_niOverNt_2(up_niOverNt_2),
.up_niOverNt_3(up_niOverNt_3),
.up_niOverNt_4(up_niOverNt_4),
.up_niOverNt_5(up_niOverNt_5),
.down_niOverNt_2_1(down_niOverNt_2_1),
.down_niOverNt_2_2(down_niOverNt_2_2),
.down_niOverNt_2_3(down_niOverNt_2_3),
.down_niOverNt_2_4(down_niOverNt_2_4),
.down_niOverNt_2_5(down_niOverNt_2_5),
.up_niOverNt_2_1(up_niOverNt_2_1),
.up_niOverNt_2_2(up_niOverNt_2_2),
.up_niOverNt_2_3(up_niOverNt_2_3),
.up_niOverNt_2_4(up_niOverNt_2_4),
.up_niOverNt_2_5(up_niOverNt_2_5),
.downCritAngle_0(downCritAngle_0),
.downCritAngle_1(downCritAngle_1),
.downCritAngle_2(downCritAngle_2),
.downCritAngle_3(downCritAngle_3),
.downCritAngle_4(downCritAngle_4),
.upCritAngle_0(upCritAngle_0),
.upCritAngle_1(upCritAngle_1),
.upCritAngle_2(upCritAngle_2),
.upCritAngle_3(upCritAngle_3),
.upCritAngle_4(upCritAngle_4),
//Fresnels inputs
.rnd({1'b0, rand5[30:0]}),
.up_rFresnel(up_rFresnel),
.down_rFresnel(down_rFresnel),
//Mathematics Results
.prod1_2(prod1_2),
.prod1_4(prod1_4),
.sqrtResult1_6(sqrtResult1_6),
.prod1_36(prod1_36),
.prod2_36(prod2_36),
//OUTPUTS
//Fresnels outputs
.fresIndex(fresIndex),
//Mathematics Operands
.op1_2_1(op1_2_1_reflector),
.op1_2_2(op1_2_2_reflector),
.op1_4_1(op1_4_1_reflector),
.op1_4_2(op1_4_2_reflector),
.sqrtOperand1_6(sqrtOperand1_6_reflector),
.op1_36_1(op1_36_1_reflector),
.op1_36_2(op1_36_2_reflector),
.op2_36_1(op2_36_1_reflector),
.op2_36_2(op2_36_2_reflector),
//Final Calculated Results
.ux_reflector(ux_reflector),
.uy_reflector(uy_reflector),
.uz_reflector(uz_reflector),
.layer_reflector(layer_reflector),
.dead_reflector(dead_reflector)
);
//Multipliers, Dividers, and Sqrts for Scatterer & Reflector
assign op1_2_1 = (i_hit2_pipeWrapper == 1'b1) ? op1_2_1_reflector : op1_2_1_scatterer;
assign op1_2_2 = (i_hit2_pipeWrapper == 1'b1) ? op1_2_2_reflector : op1_2_2_scatterer;
Mult_32b multiplier1_2 (
.dataa(op1_2_1),
.datab(op1_2_2),
.result(prod1_2)
);
assign op1_4_1 = (i_hit4_pipeWrapper == 1'b1) ? op1_4_1_reflector : op1_4_1_scatterer;
assign op1_4_2 = (i_hit4_pipeWrapper == 1'b1) ? op1_4_2_reflector : op1_4_2_scatterer;
Mult_32b multiplier1_4 (
.dataa(op1_4_1),
.datab(op1_4_2),
.result(prod1_4)
);
Mult_32b multiplier1_33 (
.dataa(op1_33_1_scatterer),
.datab(op1_33_2_scatterer),
.result(prod1_33)
);
Mult_32b multiplier2_33 (
.dataa(op2_33_1_scatterer),
.datab(op2_33_2_scatterer),
.result(prod2_33)
);
Mult_32b multiplier3_33 (
.dataa(op3_33_1_scatterer),
.datab(op3_33_2_scatterer),
.result(prod3_33)
);
Mult_32b multiplier1_34 (
.dataa(op1_34_1_scatterer),
.datab(op1_34_2_scatterer),
.result(prod1_34)
);
Mult_32b multiplier2_34 (
.dataa(op2_34_1_scatterer),
.datab(op2_34_2_scatterer),
.result(prod2_34)
);
Mult_32b multiplier3_34 (
.dataa(op3_34_1_scatterer),
.datab(op3_34_2_scatterer),
.result(prod3_34)
);
Mult_32b multiplier4_34 (
.dataa(op4_34_1_scatterer),
.datab(op4_34_2_scatterer),
.result(prod4_34)
);
assign op1_36_1 = (i_hit36_pipeWrapper == 1'b1) ? op1_36_1_reflector : op1_36_1_scatterer;
assign op1_36_2 = (i_hit36_pipeWrapper == 1'b1) ? op1_36_2_reflector : op1_36_2_scatterer;
Mult_32b multiplier1_36 (
.dataa(op1_36_1),
.datab(op1_36_2),
.result(prod1_36)
);
assign op2_36_1 = (i_hit36_pipeWrapper == 1'b1) ? op2_36_1_reflector : op2_36_1_scatterer;
assign op2_36_2 = (i_hit36_pipeWrapper == 1'b1) ? op2_36_2_reflector : op2_36_2_scatterer;
Mult_32b multiplier2_36 (
.dataa(op2_36_1),
.datab(op2_36_2),
.result(prod2_36)
);
Mult_32b multiplier3_36 (
.dataa(op3_36_1_scatterer),
.datab(op3_36_2_scatterer),
.result(prod3_36)
);
Mult_32b multiplier4_36 (
.dataa(op4_36_1_scatterer),
.datab(op4_36_2_scatterer),
.result(prod4_36)
);
Mult_32b multiplier5_36 (
.dataa(op5_36_1_scatterer),
.datab(op5_36_2_scatterer),
.result(prod5_36)
);
Mult_32b multiplier6_36 (
.dataa(op6_36_1_scatterer),
.datab(op6_36_2_scatterer),
.result(prod6_36)
);
assign sqrtOperand1_6 = (i_hit6_pipeWrapper == 1'b1) ? sqrtOperand1_6_reflector : sqrtOperand1_6_scatterer;
Sqrt_64b squareRoot1_6 (
.clk(clock),
.num_(sqrtOperand1_6),
.res(sqrtResult1_6)
);
Div_64b divide1_16 (
.clock(clock),
.denom(divDenominator1_16_scatterer),
.numer(divNumerator1_16_scatterer),
.quotient(quot1_16),
.remain(divRemainder)
);
endmodule
module InternalsBlock_Reflector(
//Inputs
clock,
reset,
enable,
i_uz_2, //uz^2
i_uz2, //new uz, should the photon transmit to new layer
i_oneMinusUz_2, //(1-uz)^2
i_sa2_2, //(sine of angle 2)^2 (uz2 = cosine of angle 2).
i_uz2_2, //(uz2)^2, new uz squared.
i_ux_transmitted, //new value for ux, if the photon transmits to the next layer
i_uy_transmitted, //new value for uy, if the photon transmits to the next layer
//Outputs
o_uz_2,
o_uz2,
o_oneMinusUz_2,
o_sa2_2,
o_uz2_2,
o_ux_transmitted,
o_uy_transmitted
);
input clock;
input reset;
input enable;
input [63:0] i_uz_2;
input [31:0] i_uz2;
input [63:0] i_oneMinusUz_2;
input [63:0] i_sa2_2;
input [63:0] i_uz2_2;
input [31:0] i_ux_transmitted;
input [31:0] i_uy_transmitted;
output [63:0] o_uz_2;
output [31:0] o_uz2;
output [63:0] o_oneMinusUz_2;
output [63:0] o_sa2_2;
output [63:0] o_uz2_2;
output [31:0] o_ux_transmitted;
output [31:0] o_uy_transmitted;
wire clock;
wire reset;
wire enable;
wire [63:0] i_uz_2;
wire [31:0] i_uz2;
wire [63:0] i_oneMinusUz_2;
wire [63:0] i_sa2_2;
wire [63:0] i_uz2_2;
wire [31:0] i_ux_transmitted;
wire [31:0] i_uy_transmitted;
reg [63:0] o_uz_2;
reg [31:0] o_uz2;
reg [63:0] o_oneMinusUz_2;
reg [63:0] o_sa2_2;
reg [63:0] o_uz2_2;
reg [31:0] o_ux_transmitted;
reg [31:0] o_uy_transmitted;
always @ (posedge clock)
if(reset) begin
o_uz_2 <= 64'h3FFFFFFFFFFFFFFF;
o_uz2 <= 32'h7FFFFFFF;
o_oneMinusUz_2 <= 64'h0000000000000000;
o_sa2_2 <= 64'h0000000000000000;
o_uz2_2 <= 64'h3FFFFFFFFFFFFFFF;
o_ux_transmitted <= 32'h00000000;
o_uy_transmitted <= 32'h00000000;
end else if(enable) begin
o_uz_2 <= i_uz_2;
o_uz2 <= i_uz2;
o_oneMinusUz_2 <= i_oneMinusUz_2;
o_sa2_2 <= i_sa2_2;
o_uz2_2 <= i_uz2_2;
o_ux_transmitted <= i_ux_transmitted;
o_uy_transmitted <= i_uy_transmitted;
end
endmodule
module Reflector (
//INPUTS
clock,
reset,
enable,
//Values from Photon Pipeline
i_uz1,
i_uz3,
i_layer3,
i_ux35,
i_uy35,
i_uz35,
i_layer35,
i_ux36,
i_uy36,
i_uz36,
i_layer36,
i_dead36,
//Constants
down_niOverNt_1,
down_niOverNt_2,
down_niOverNt_3,
down_niOverNt_4,
down_niOverNt_5,
up_niOverNt_1,
up_niOverNt_2,
up_niOverNt_3,
up_niOverNt_4,
up_niOverNt_5,
down_niOverNt_2_1,
down_niOverNt_2_2,
down_niOverNt_2_3,
down_niOverNt_2_4,
down_niOverNt_2_5,
up_niOverNt_2_1,
up_niOverNt_2_2,
up_niOverNt_2_3,
up_niOverNt_2_4,
up_niOverNt_2_5,
downCritAngle_0,
downCritAngle_1,
downCritAngle_2,
downCritAngle_3,
downCritAngle_4,
upCritAngle_0,
upCritAngle_1,
upCritAngle_2,
upCritAngle_3,
upCritAngle_4,
//Fresnels inputs
rnd,
up_rFresnel,
down_rFresnel,
//Mathematics Results
prod1_2,
prod1_4,
sqrtResult1_6,
prod1_36,
prod2_36,
//OUTPUTS
//Fresnels outputs
fresIndex,
//Mathematics Operands
op1_2_1,
op1_2_2,
op1_4_1,
op1_4_2,
sqrtOperand1_6,
op1_36_1,
op1_36_2,
op2_36_1,
op2_36_2,
//Final Calcu`LATed Results
ux_reflector,
uy_reflector,
uz_reflector,
layer_reflector,
dead_reflector
);
//-------------------PARAMETER DEFINITION----------------------
//
//
//
//
//
//
//Assign values to parameters used `LATer in the program.
//parameter `DIV = 20;
//parameter `SQRT = 10;
//parameter `LAT = `DIV + `SQRT + 7;
//parameter `INTMAX_2 = 64'h3FFFFFFFFFFFFFFF;
//parameter `INTMAX = 2147483647;
//parameter `INTMIN = -2147483647;
//-----------------------------PIN DECLARATION----------------------
//
//
//
//
//
//
//
//
//Assign appropriate types to pins (input or output).
input clock;
input reset;
input enable;
//Values from Photon Pipeline
input [31:0] i_uz1;
input [31:0] i_uz3;
input [2:0] i_layer3;
input [31:0] i_ux35;
input [31:0] i_uy35;
input [31:0] i_uz35;
input [2:0] i_layer35;
input [31:0] i_ux36;
input [31:0] i_uy36;
input [31:0] i_uz36;
input [2:0] i_layer36;
input i_dead36;
//Constants
input [31:0] down_niOverNt_1;
input [31:0] down_niOverNt_2;
input [31:0] down_niOverNt_3;
input [31:0] down_niOverNt_4;
input [31:0] down_niOverNt_5;
input [31:0] up_niOverNt_1;
input [31:0] up_niOverNt_2;
input [31:0] up_niOverNt_3;
input [31:0] up_niOverNt_4;
input [31:0] up_niOverNt_5;
input [63:0] down_niOverNt_2_1;
input [63:0] down_niOverNt_2_2;
input [63:0] down_niOverNt_2_3;
input [63:0] down_niOverNt_2_4;
input [63:0] down_niOverNt_2_5;
input [63:0] up_niOverNt_2_1;
input [63:0] up_niOverNt_2_2;
input [63:0] up_niOverNt_2_3;
input [63:0] up_niOverNt_2_4;
input [63:0] up_niOverNt_2_5;
input [31:0] downCritAngle_0;
input [31:0] downCritAngle_1;
input [31:0] downCritAngle_2;
input [31:0] downCritAngle_3;
input [31:0] downCritAngle_4;
input [31:0] upCritAngle_0;
input [31:0] upCritAngle_1;
input [31:0] upCritAngle_2;
input [31:0] upCritAngle_3;
input [31:0] upCritAngle_4;
//Fresnels inputs
input [31:0] rnd;
input [31:0] up_rFresnel;
input [31:0] down_rFresnel;
//Mathematics Results
input [63:0] prod1_2;
input [63:0] prod1_4;
input [31:0] sqrtResult1_6;
input [63:0] prod1_36;
input [63:0] prod2_36;
//OUTPUTS
//Fresnels outputs
output [9:0] fresIndex;
//Mathematics operands
output [31:0] op1_2_1;
output [31:0] op1_2_2;
output [31:0] op1_4_1;
output [31:0] op1_4_2;
output [63:0] sqrtOperand1_6;
output [31:0] op1_36_1;
output [31:0] op1_36_2;
output [31:0] op2_36_1;
output [31:0] op2_36_2;
//Final Calcu`LATed Results
output [31:0] ux_reflector;
output [31:0] uy_reflector;
output [31:0] uz_reflector;
output [2:0] layer_reflector;
output dead_reflector;
//-----------------------------PIN TYPES-----------------------------
//
//
//
//
//
//
//
//
//Assign pins to be wires or regs.
wire clock;
wire reset;
wire enable;
//Values from Photon Pipeline
wire [31:0] i_uz1;
wire [31:0] i_uz3;
wire [2:0] i_layer3;
wire [31:0] i_ux35;
wire [31:0] i_uy35;
wire [31:0] i_uz35;
wire [2:0] i_layer35;
wire [31:0] i_ux36;
wire [31:0] i_uy36;
wire [31:0] i_uz36;
wire [2:0] i_layer36;
wire i_dead36;
//Constants
wire [31:0] down_niOverNt_1;
wire [31:0] down_niOverNt_2;
wire [31:0] down_niOverNt_3;
wire [31:0] down_niOverNt_4;
wire [31:0] down_niOverNt_5;
wire [31:0] up_niOverNt_1;
wire [31:0] up_niOverNt_2;
wire [31:0] up_niOverNt_3;
wire [31:0] up_niOverNt_4;
wire [31:0] up_niOverNt_5;
wire [63:0] down_niOverNt_2_1;
wire [63:0] down_niOverNt_2_2;
wire [63:0] down_niOverNt_2_3;
wire [63:0] down_niOverNt_2_4;
wire [63:0] down_niOverNt_2_5;
wire [63:0] up_niOverNt_2_1;
wire [63:0] up_niOverNt_2_2;
wire [63:0] up_niOverNt_2_3;
wire [63:0] up_niOverNt_2_4;
wire [63:0] up_niOverNt_2_5;
wire [31:0] downCritAngle_0;
wire [31:0] downCritAngle_1;
wire [31:0] downCritAngle_2;
wire [31:0] downCritAngle_3;
wire [31:0] downCritAngle_4;
wire [31:0] upCritAngle_0;
wire [31:0] upCritAngle_1;
wire [31:0] upCritAngle_2;
wire [31:0] upCritAngle_3;
wire [31:0] upCritAngle_4;
//Fresnels inputs
wire [31:0] rnd;
wire [31:0] up_rFresnel;
wire [31:0] down_rFresnel;
//Mathematics Results
wire [63:0] prod1_2;
wire [63:0] prod1_4;
wire [31:0] sqrtResult1_6;
wire [63:0] prod1_36;
wire [63:0] prod2_36;
//OUTPUTS
//Fresnels outputs
reg [9:0] fresIndex;
//Operands for shared resources
wire [31:0] op1_2_1;
wire [31:0] op1_2_2;
reg [31:0] op1_4_1;
wire [31:0] op1_4_2;
wire [63:0] sqrtOperand1_6;
wire [31:0] op1_36_1;
reg [31:0] op1_36_2;
wire [31:0] op2_36_1;
reg [31:0] op2_36_2;
//Final Calcu`LATed Results
reg [31:0] ux_reflector;
reg [31:0] uy_reflector;
reg [31:0] uz_reflector;
reg [2:0] layer_reflector;
reg dead_reflector;
//Need this to deal with 'unused' inputs for ODIN II
wire [63:0]bigOr;
assign bigOr = i_uz3|down_niOverNt_2_1|down_niOverNt_2_2|down_niOverNt_2_3|down_niOverNt_2_3|down_niOverNt_2_4|down_niOverNt_2_5|up_niOverNt_2_1|up_niOverNt_2_2|up_niOverNt_2_3|up_niOverNt_2_3|up_niOverNt_2_4|up_niOverNt_2_5|prod1_36|prod2_36|({32'hFFFFFFFF,32'hFFFFFFFF});
wire reset_new;
assign reset_new = reset & bigOr[63] & bigOr[62] & bigOr[61] & bigOr[60] & bigOr[59] & bigOr[58] & bigOr[57] & bigOr[56] & bigOr[55] & bigOr[54] & bigOr[53] & bigOr[52] & bigOr[51] & bigOr[50] & bigOr[49] & bigOr[48] & bigOr[47] & bigOr[46] & bigOr[45] & bigOr[44] & bigOr[43] & bigOr[42] & bigOr[41] & bigOr[40] & bigOr[39] & bigOr[38] & bigOr[37] & bigOr[36] & bigOr[35] & bigOr[34] & bigOr[33] & bigOr[32] & bigOr[31] & bigOr[30] & bigOr[29] & bigOr[28] & bigOr[27] & bigOr[26] & bigOr[25] & bigOr[24] & bigOr[23] & bigOr[22] & bigOr[21] & bigOr[20] & bigOr[19] & bigOr[18] & bigOr[17] & bigOr[16] & bigOr[15] & bigOr[14] & bigOr[13] & bigOr[12] & bigOr[11] & bigOr[10] & bigOr[9] & bigOr[8] & bigOr[7] & bigOr[6] & bigOr[5] & bigOr[4] & bigOr[3] & bigOr[2] & bigOr[1] & bigOr[0];
//-----------------------------END Pin Types-------------------------
//Overflow Wiring
wire overflow1_4;
wire toAnd1_36_1;
wire toAnd1_36_2;
wire overflow1_36;
wire negOverflow1_36;
wire toAnd2_36_1;
wire toAnd2_36_2;
wire overflow2_36;
wire negOverflow2_36;
//Wiring for calcu`LATing final Results
reg [31:0] new_ux;
reg [31:0] new_uy;
reg [31:0] new_uz;
reg [2:0] new_layer;
reg new_dead;
reg [31:0] downCritAngle;
reg [31:0] upCritAngle;
reg [31:0] negUz;
//Wires to Connect to Internal Registers
//wire [63:0] uz_2[`LAT:0];
//wire [31:0] uz2[`LAT:0];
//wire [63:0] oneMinusUz_2[`LAT:0];
//wire [63:0] sa2_2[`LAT:0];
//wire [63:0] uz2_2[`LAT:0];
//wire [31:0] ux_transmitted[`LAT:0];
//wire [31:0] uy_transmitted[`LAT:0];
wire [63:0] uz_2__0;
wire [63:0] uz_2__1;
wire [63:0] uz_2__2;
wire [63:0] uz_2__3;
wire [63:0] uz_2__4;
wire [63:0] uz_2__5;
wire [63:0] uz_2__6;
wire [63:0] uz_2__7;
wire [63:0] uz_2__8;
wire [63:0] uz_2__9;
wire [63:0] uz_2__10;
wire [63:0] uz_2__11;
wire [63:0] uz_2__12;
wire [63:0] uz_2__13;
wire [63:0] uz_2__14;
wire [63:0] uz_2__15;
wire [63:0] uz_2__16;
wire [63:0] uz_2__17;
wire [63:0] uz_2__18;
wire [63:0] uz_2__19;
wire [63:0] uz_2__20;
wire [63:0] uz_2__21;
wire [63:0] uz_2__22;
wire [63:0] uz_2__23;
wire [63:0] uz_2__24;
wire [63:0] uz_2__25;
wire [63:0] uz_2__26;
wire [63:0] uz_2__27;
wire [63:0] uz_2__28;
wire [63:0] uz_2__29;
wire [63:0] uz_2__30;
wire [63:0] uz_2__31;
wire [63:0] uz_2__32;
wire [63:0] uz_2__33;
wire [63:0] uz_2__34;
wire [63:0] uz_2__35;
wire [63:0] uz_2__36;
wire [63:0] uz_2__37;
//wire [31:0] uz2[37:0];
wire [32-1:0] uz2__0;
wire [32-1:0] uz2__1;
wire [32-1:0] uz2__2;
wire [32-1:0] uz2__3;
wire [32-1:0] uz2__4;
wire [32-1:0] uz2__5;
wire [32-1:0] uz2__6;
wire [32-1:0] uz2__7;
wire [32-1:0] uz2__8;
wire [32-1:0] uz2__9;
wire [32-1:0] uz2__10;
wire [32-1:0] uz2__11;
wire [32-1:0] uz2__12;
wire [32-1:0] uz2__13;
wire [32-1:0] uz2__14;
wire [32-1:0] uz2__15;
wire [32-1:0] uz2__16;
wire [32-1:0] uz2__17;
wire [32-1:0] uz2__18;
wire [32-1:0] uz2__19;
wire [32-1:0] uz2__20;
wire [32-1:0] uz2__21;
wire [32-1:0] uz2__22;
wire [32-1:0] uz2__23;
wire [32-1:0] uz2__24;
wire [32-1:0] uz2__25;
wire [32-1:0] uz2__26;
wire [32-1:0] uz2__27;
wire [32-1:0] uz2__28;
wire [32-1:0] uz2__29;
wire [32-1:0] uz2__30;
wire [32-1:0] uz2__31;
wire [32-1:0] uz2__32;
wire [32-1:0] uz2__33;
wire [32-1:0] uz2__34;
wire [32-1:0] uz2__35;
wire [32-1:0] uz2__36;
wire [32-1:0] uz2__37;
//wire [63:0] oneMinusUz_2[37:0];
wire [63:0] oneMinusUz_2__0;
wire [63:0] oneMinusUz_2__1;
wire [63:0] oneMinusUz_2__2;
wire [63:0] oneMinusUz_2__3;
wire [63:0] oneMinusUz_2__4;
wire [63:0] oneMinusUz_2__5;
wire [63:0] oneMinusUz_2__6;
wire [63:0] oneMinusUz_2__7;
wire [63:0] oneMinusUz_2__8;
wire [63:0] oneMinusUz_2__9;
wire [63:0] oneMinusUz_2__10;
wire [63:0] oneMinusUz_2__11;
wire [63:0] oneMinusUz_2__12;
wire [63:0] oneMinusUz_2__13;
wire [63:0] oneMinusUz_2__14;
wire [63:0] oneMinusUz_2__15;
wire [63:0] oneMinusUz_2__16;
wire [63:0] oneMinusUz_2__17;
wire [63:0] oneMinusUz_2__18;
wire [63:0] oneMinusUz_2__19;
wire [63:0] oneMinusUz_2__20;
wire [63:0] oneMinusUz_2__21;
wire [63:0] oneMinusUz_2__22;
wire [63:0] oneMinusUz_2__23;
wire [63:0] oneMinusUz_2__24;
wire [63:0] oneMinusUz_2__25;
wire [63:0] oneMinusUz_2__26;
wire [63:0] oneMinusUz_2__27;
wire [63:0] oneMinusUz_2__28;
wire [63:0] oneMinusUz_2__29;
wire [63:0] oneMinusUz_2__30;
wire [63:0] oneMinusUz_2__31;
wire [63:0] oneMinusUz_2__32;
wire [63:0] oneMinusUz_2__33;
wire [63:0] oneMinusUz_2__34;
wire [63:0] oneMinusUz_2__35;
wire [63:0] oneMinusUz_2__36;
wire [63:0] oneMinusUz_2__37;
//wire [63:0] sa2_2[37:0];
wire [63:0] sa2_2__0;
wire [63:0] sa2_2__1;
wire [63:0] sa2_2__2;
wire [63:0] sa2_2__3;
wire [63:0] sa2_2__4;
wire [63:0] sa2_2__5;
wire [63:0] sa2_2__6;
wire [63:0] sa2_2__7;
wire [63:0] sa2_2__8;
wire [63:0] sa2_2__9;
wire [63:0] sa2_2__10;
wire [63:0] sa2_2__11;
wire [63:0] sa2_2__12;
wire [63:0] sa2_2__13;
wire [63:0] sa2_2__14;
wire [63:0] sa2_2__15;
wire [63:0] sa2_2__16;
wire [63:0] sa2_2__17;
wire [63:0] sa2_2__18;
wire [63:0] sa2_2__19;
wire [63:0] sa2_2__20;
wire [63:0] sa2_2__21;
wire [63:0] sa2_2__22;
wire [63:0] sa2_2__23;
wire [63:0] sa2_2__24;
wire [63:0] sa2_2__25;
wire [63:0] sa2_2__26;
wire [63:0] sa2_2__27;
wire [63:0] sa2_2__28;
wire [63:0] sa2_2__29;
wire [63:0] sa2_2__30;
wire [63:0] sa2_2__31;
wire [63:0] sa2_2__32;
wire [63:0] sa2_2__33;
wire [63:0] sa2_2__34;
wire [63:0] sa2_2__35;
wire [63:0] sa2_2__36;
wire [63:0] sa2_2__37;
//wire [63:0] uz2_2[37:0];
wire [63:0] uz2_2__0;
wire [63:0] uz2_2__1;
wire [63:0] uz2_2__2;
wire [63:0] uz2_2__3;
wire [63:0] uz2_2__4;
wire [63:0] uz2_2__5;
wire [63:0] uz2_2__6;
wire [63:0] uz2_2__7;
wire [63:0] uz2_2__8;
wire [63:0] uz2_2__9;
wire [63:0] uz2_2__10;
wire [63:0] uz2_2__11;
wire [63:0] uz2_2__12;
wire [63:0] uz2_2__13;
wire [63:0] uz2_2__14;
wire [63:0] uz2_2__15;
wire [63:0] uz2_2__16;
wire [63:0] uz2_2__17;
wire [63:0] uz2_2__18;
wire [63:0] uz2_2__19;
wire [63:0] uz2_2__20;
wire [63:0] uz2_2__21;
wire [63:0] uz2_2__22;
wire [63:0] uz2_2__23;
wire [63:0] uz2_2__24;
wire [63:0] uz2_2__25;
wire [63:0] uz2_2__26;
wire [63:0] uz2_2__27;
wire [63:0] uz2_2__28;
wire [63:0] uz2_2__29;
wire [63:0] uz2_2__30;
wire [63:0] uz2_2__31;
wire [63:0] uz2_2__32;
wire [63:0] uz2_2__33;
wire [63:0] uz2_2__34;
wire [63:0] uz2_2__35;
wire [63:0] uz2_2__36;
wire [63:0] uz2_2__37;
//wire [31:0] ux_transmitted[37:0];
wire [32-1:0] ux_transmitted__0;
wire [32-1:0] ux_transmitted__1;
wire [32-1:0] ux_transmitted__2;
wire [32-1:0] ux_transmitted__3;
wire [32-1:0] ux_transmitted__4;
wire [32-1:0] ux_transmitted__5;
wire [32-1:0] ux_transmitted__6;
wire [32-1:0] ux_transmitted__7;
wire [32-1:0] ux_transmitted__8;
wire [32-1:0] ux_transmitted__9;
wire [32-1:0] ux_transmitted__10;
wire [32-1:0] ux_transmitted__11;
wire [32-1:0] ux_transmitted__12;
wire [32-1:0] ux_transmitted__13;
wire [32-1:0] ux_transmitted__14;
wire [32-1:0] ux_transmitted__15;
wire [32-1:0] ux_transmitted__16;
wire [32-1:0] ux_transmitted__17;
wire [32-1:0] ux_transmitted__18;
wire [32-1:0] ux_transmitted__19;
wire [32-1:0] ux_transmitted__20;
wire [32-1:0] ux_transmitted__21;
wire [32-1:0] ux_transmitted__22;
wire [32-1:0] ux_transmitted__23;
wire [32-1:0] ux_transmitted__24;
wire [32-1:0] ux_transmitted__25;
wire [32-1:0] ux_transmitted__26;
wire [32-1:0] ux_transmitted__27;
wire [32-1:0] ux_transmitted__28;
wire [32-1:0] ux_transmitted__29;
wire [32-1:0] ux_transmitted__30;
wire [32-1:0] ux_transmitted__31;
wire [32-1:0] ux_transmitted__32;
wire [32-1:0] ux_transmitted__33;
wire [32-1:0] ux_transmitted__34;
wire [32-1:0] ux_transmitted__35;
wire [32-1:0] ux_transmitted__36;
wire [32-1:0] ux_transmitted__37;
//wire [31:0] uy_transmitted[37:0];
wire [32-1:0] uy_transmitted__0;
wire [32-1:0] uy_transmitted__1;
wire [32-1:0] uy_transmitted__2;
wire [32-1:0] uy_transmitted__3;
wire [32-1:0] uy_transmitted__4;
wire [32-1:0] uy_transmitted__5;
wire [32-1:0] uy_transmitted__6;
wire [32-1:0] uy_transmitted__7;
wire [32-1:0] uy_transmitted__8;
wire [32-1:0] uy_transmitted__9;
wire [32-1:0] uy_transmitted__10;
wire [32-1:0] uy_transmitted__11;
wire [32-1:0] uy_transmitted__12;
wire [32-1:0] uy_transmitted__13;
wire [32-1:0] uy_transmitted__14;
wire [32-1:0] uy_transmitted__15;
wire [32-1:0] uy_transmitted__16;
wire [32-1:0] uy_transmitted__17;
wire [32-1:0] uy_transmitted__18;
wire [32-1:0] uy_transmitted__19;
wire [32-1:0] uy_transmitted__20;
wire [32-1:0] uy_transmitted__21;
wire [32-1:0] uy_transmitted__22;
wire [32-1:0] uy_transmitted__23;
wire [32-1:0] uy_transmitted__24;
wire [32-1:0] uy_transmitted__25;
wire [32-1:0] uy_transmitted__26;
wire [32-1:0] uy_transmitted__27;
wire [32-1:0] uy_transmitted__28;
wire [32-1:0] uy_transmitted__29;
wire [32-1:0] uy_transmitted__30;
wire [32-1:0] uy_transmitted__31;
wire [32-1:0] uy_transmitted__32;
wire [32-1:0] uy_transmitted__33;
wire [32-1:0] uy_transmitted__34;
wire [32-1:0] uy_transmitted__35;
wire [32-1:0] uy_transmitted__36;
wire [32-1:0] uy_transmitted__37;
wire [63:0] new_uz_2;
wire [31:0] new_uz2;
wire [63:0] new_oneMinusUz_2;
wire [63:0] new_sa2_2;
wire [63:0] new_uz2_2;
reg [31:0] new_ux_transmitted;
reg [31:0] new_uy_transmitted;
//------------------Register Pipeline-----------------
//Generation Methodology: Standard block, called InternalsBlock_Reflector,
//is repeated multiple times, based on the `LATency of the reflector and
//scatterer. This block contains the list of all internal variables
//that need to be registered and passed along in the pipeline.
//
//Previous values in the pipeline are passed to the next register on each
//clock tick. The exception comes when an internal variable gets
//calcu`LATed. Each time a new internal variable is calcu`LATed, a new
//case is added to the case statement, and instead of hooking previous
//values of that variable to next, the new, calcu`LATed values are hooked up.
//
//This method will generate many more registers than what are required, but
//it is expected that the synthesis tool will synthesize these away.
//
//
//Commenting Convention: Whenever a new value is injected into the pipe, the
//comment //Changed Value is added directly above the variable in question.
//When multiple values are calcu`LATed in a single clock cycle, multiple such
//comments are placed. Wires connected to "Changed Values" always start with
//the prefix new_.
//
//GENERATE PIPELINE
//genvar i;
//generate
// for(i=`LAT; i>0; i=i-1) begin: internalPipe_Reflector
// case(i)
//
// 2:
// InternalsBlock_Reflector pipeReg(
// Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// Changed Value
// .i_uz_2(new_uz_2), //uz^2
// .i_uz2(uz2[i-1]), //new uz, should the photon transmit to new layer
// .i_oneMinusUz_2(oneMinusUz_2[i-1]), //(1-uz)^2
// .i_sa2_2(sa2_2[i-1]), //(sine of angle 2)^2 (uz2 = cosine of angle 2).
// .i_uz2_2(uz2_2[i-1]), //(uz2)^2, new uz squared.
// .i_ux_transmitted(ux_transmitted[i-1]), //New value for ux, if photon moves to next layer
// .i_uy_transmitted(uy_transmitted[i-1]), //New value for uy, if photon moves to next layer
//
// Outputs
// .o_uz_2(uz_2[i]),
// .o_uz2(uz2[i]),
// .o_oneMinusUz_2(oneMinusUz_2[i]),
// .o_sa2_2(sa2_2[i]),
// .o_uz2_2(uz2_2[i]),
// .o_ux_transmitted(ux_transmitted[i]),
// .o_uy_transmitted(uy_transmitted[i])
// );
//
// 3:
// InternalsBlock_Reflector pipeReg(
// Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_uz_2(uz_2[i-1]), //uz^2
// .i_uz2(uz2[i-1]), //new uz, should the photon transmit to new layer
// // Changed Value
// .i_oneMinusUz_2(new_oneMinusUz_2), //(1-uz)^2
// .i_sa2_2(sa2_2[i-1]), //(sine of angle 2)^2 (uz2 = cosine of angle 2).
// .i_uz2_2(uz2_2[i-1]), //(uz2)^2, new uz squared.
// .i_ux_transmitted(ux_transmitted[i-1]), //New value for ux, if photon moves to next layer
// .i_uy_transmitted(uy_transmitted[i-1]), //New value for uy, if photon moves to next layer
//
// Outputs
// .o_uz_2(uz_2[i]),
// .o_uz2(uz2[i]),
// .o_oneMinusUz_2(oneMinusUz_2[i]),
// .o_sa2_2(sa2_2[i]),
// .o_uz2_2(uz2_2[i]),
// .o_ux_transmitted(ux_transmitted[i]),
// .o_uy_transmitted(uy_transmitted[i])
// );
// 4:
// InternalsBlock_Reflector pipeReg(
// Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_uz_2(uz_2[i-1]), //uz^2
// .i_uz2(uz2[i-1]), //new uz, should the photon transmit to new layer
// .i_oneMinusUz_2(oneMinusUz_2[i-1]), //(1-uz)^2
// Changed Value
// .i_sa2_2(new_sa2_2), //(sine of angle 2)^2 (uz2 = cosine of angle 2).
// .i_uz2_2(uz2_2[i-1]), //(uz2)^2, new uz squared.
// .i_ux_transmitted(ux_transmitted[i-1]), //New value for ux, if photon moves to next layer
// .i_uy_transmitted(uy_transmitted[i-1]), //New value for uy, if photon moves to next layer
//
// Outputs
// .o_uz_2(uz_2[i]),
// .o_uz2(uz2[i]),
// .o_oneMinusUz_2(oneMinusUz_2[i]),
// .o_sa2_2(sa2_2[i]),
// .o_uz2_2(uz2_2[i]),
// .o_ux_transmitted(ux_transmitted[i]),
// .o_uy_transmitted(uy_transmitted[i])
// );
//
// 5:
// InternalsBlock_Reflector pipeReg(
// Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_uz_2(uz_2[i-1]), //uz^2
// .i_uz2(uz2[i-1]), //new uz, should the photon transmit to new layer
// .i_oneMinusUz_2(oneMinusUz_2[i-1]), //(1-uz)^2
// .i_sa2_2(sa2_2[i-1]), //(sine of angle 2)^2 (uz2 = cosine of angle 2).
// Changed Value
// .i_uz2_2(new_uz2_2), //(uz2)^2, new uz squared.
// .i_ux_transmitted(ux_transmitted[i-1]), //New value for ux, if photon moves to next layer
// .i_uy_transmitted(uy_transmitted[i-1]), //New value for uy, if photon moves to next layer
//
// Outputs
// .o_uz_2(uz_2[i]),
// .o_uz2(uz2[i]),
// .o_oneMinusUz_2(oneMinusUz_2[i]),
// .o_sa2_2(sa2_2[i]),
// .o_uz2_2(uz2_2[i]),
// .o_ux_transmitted(ux_transmitted[i]),
// .o_uy_transmitted(uy_transmitted[i])
// );
//
// (`SQRT+6):
// InternalsBlock_Reflector pipeReg(
// Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_uz_2(uz_2[i-1]), //uz^2
// Changed Value
// .i_uz2(new_uz2), //new uz, should the photon transmit to new layer
// .i_oneMinusUz_2(oneMinusUz_2[i-1]), //(1-uz)^2
// .i_sa2_2(sa2_2[i-1]), //(sine of angle 2)^2 (uz2 = cosine of angle 2).
// .i_uz2_2(uz2_2[i-1]), //(uz2)^2, new uz squared.
// .i_ux_transmitted(ux_transmitted[i-1]), //New value for ux, if photon moves to next layer
// .i_uy_transmitted(uy_transmitted[i-1]), //New value for uy, if photon moves to next layer
//
// Outputs
// .o_uz_2(uz_2[i]),
// .o_uz2(uz2[i]),
// .o_oneMinusUz_2(oneMinusUz_2[i]),
// .o_sa2_2(sa2_2[i]),
// .o_uz2_2(uz2_2[i]),
// .o_ux_transmitted(ux_transmitted[i]),
// .o_uy_transmitted(uy_transmitted[i])
// );
//
// (`SQRT+`DIV+6):
// InternalsBlock_Reflector pipeReg(
// Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_uz_2(uz_2[i-1]), //uz^2
// .i_uz2(uz2[i-1]), //new uz, should the photon transmit to new layer
// .i_oneMinusUz_2(oneMinusUz_2[i-1]), //(1-uz)^2
// .i_sa2_2(sa2_2[i-1]), //(sine of angle 2)^2 (uz2 = cosine of angle 2).
// .i_uz2_2(uz2_2[i-1]), //(uz2)^2, new uz squared.
// Changed Value
// .i_ux_transmitted(new_ux_transmitted), //New value for ux, if photon moves to next layer
// Changed Value
// .i_uy_transmitted(new_uy_transmitted), //New value for uy, if photon moves to next layer
//
// Outputs
// .o_uz_2(uz_2[i]),
// .o_uz2(uz2[i]),
// .o_oneMinusUz_2(oneMinusUz_2[i]),
// .o_sa2_2(sa2_2[i]),
// .o_uz2_2(uz2_2[i]),
// .o_ux_transmitted(ux_transmitted[i]),
// .o_uy_transmitted(uy_transmitted[i])
// );
// default:
// InternalsBlock_Reflector pipeReg(
// Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_uz_2(uz_2[i-1]), //uz^2
// .i_uz2(uz2[i-1]), //new uz, should the photon transmit to new layer
// .i_oneMinusUz_2(oneMinusUz_2[i-1]), //(1-uz)^2
// .i_sa2_2(sa2_2[i-1]), //(sine of angle 2)^2 (uz2 = cosine of angle 2).
// .i_uz2_2(uz2_2[i-1]), //(uz2)^2, new uz squared.
// .i_ux_transmitted(ux_transmitted[i-1]), //New value for ux, if photon moves to next layer
// .i_uy_transmitted(uy_transmitted[i-1]), //New value for uy, if photon moves to next layer
//
// Outputs
// .o_uz_2(uz_2[i]),
// .o_uz2(uz2[i]),
// .o_oneMinusUz_2(oneMinusUz_2[i]),
// .o_sa2_2(sa2_2[i]),
// .o_uz2_2(uz2_2[i]),
// .o_ux_transmitted(ux_transmitted[i]),
// .o_uy_transmitted(uy_transmitted[i])
// );
// endcase
// end
//endgenerate
// special cases first
// forloop2
InternalsBlock_Reflector pipeReg2(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
//Changed Value
.i_uz_2(new_uz_2), //uz^2
.i_uz2(uz2__1), //new uz, should the photon transmit to new layer
.i_oneMinusUz_2(oneMinusUz_2__1), //(1-uz)^2
.i_sa2_2(sa2_2__1), //(sine of angle 2)^2 (uz2 = cosine of angle 2).
.i_uz2_2(uz2_2__1), //(uz2)^2, new uz squared.
.i_ux_transmitted(ux_transmitted__1), //New value for ux, if photon moves to next layer
.i_uy_transmitted(uy_transmitted__1), //New value for uy, if photon moves to next layer
//Outputs
.o_uz_2(uz_2__2),
.o_uz2(uz2__2),
.o_oneMinusUz_2(oneMinusUz_2__2),
.o_sa2_2(sa2_2__2),
.o_uz2_2(uz2_2__2),
.o_ux_transmitted(ux_transmitted__2),
.o_uy_transmitted(uy_transmitted__2)
);
// for loop3:
InternalsBlock_Reflector pipeReg3(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__2), //uz^2
.i_uz2(uz2__2), //new uz, should the photon transmit to new layer
//Changed Value
.i_oneMinusUz_2(new_oneMinusUz_2), //(1-uz)^2
.i_sa2_2(sa2_2__2), //(sine of angle 2)^2 (uz2 = cosine of angle 2).
.i_uz2_2(uz2_2__2), //(uz2)^2, new uz squared.
.i_ux_transmitted(ux_transmitted__2), //New value for ux, if photon moves to next layer
.i_uy_transmitted(uy_transmitted__2), //New value for uy, if photon moves to next layer
//Outputs
.o_uz_2(uz_2__3),
.o_uz2(uz2__3),
.o_oneMinusUz_2(oneMinusUz_2__3),
.o_sa2_2(sa2_2__3),
.o_uz2_2(uz2_2__3),
.o_ux_transmitted(ux_transmitted__3),
.o_uy_transmitted(uy_transmitted__3)
);
// for loop4
InternalsBlock_Reflector pipeReg4(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__3), //uz^2
.i_uz2(uz2__3), //new uz, should the photon transmit to new layer
.i_oneMinusUz_2(oneMinusUz_2__3), //(1-uz)^2
//Changed Value
.i_sa2_2(new_sa2_2), //(sine of angle 2)^2 (uz2 = cosine of angle 2).
.i_uz2_2(uz2_2__3), //(uz2)^2, new uz squared.
.i_ux_transmitted(ux_transmitted__3), //New value for ux, if photon moves to next layer
.i_uy_transmitted(uy_transmitted__3), //New value for uy, if photon moves to next layer
//Outputs
.o_uz_2(uz_2__4),
.o_uz2(uz2__4),
.o_oneMinusUz_2(oneMinusUz_2__4),
.o_sa2_2(sa2_2__4),
.o_uz2_2(uz2_2__4),
.o_ux_transmitted(ux_transmitted__4),
.o_uy_transmitted(uy_transmitted__4)
);
//for loop5
InternalsBlock_Reflector pipeReg5(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__4), //uz^2
.i_uz2(uz2__4), //new uz, should the photon transmit to new layer
.i_oneMinusUz_2(oneMinusUz_2__4), //(1-uz)^2
.i_sa2_2(sa2_2__4), //(sine of angle 2)^2 (uz2 = cosine of angle 2).
//Changed Value
.i_uz2_2(new_uz2_2), //(uz2)^2, new uz squared.
.i_ux_transmitted(ux_transmitted__4), //New value for ux, if photon moves to next layer
.i_uy_transmitted(uy_transmitted__4), //New value for uy, if photon moves to next layer
//Outputs
.o_uz_2(uz_2__5),
.o_uz2(uz2__5),
.o_oneMinusUz_2(oneMinusUz_2__5),
.o_sa2_2(sa2_2__5),
.o_uz2_2(uz2_2__5),
.o_ux_transmitted(ux_transmitted__5),
.o_uy_transmitted(uy_transmitted__5)
);
//for loop(10+6):
InternalsBlock_Reflector pipeReg16(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__15), //uz^2
//Changed Value
.i_uz2(new_uz2), //new uz, should the photon transmit to new layer
.i_oneMinusUz_2(oneMinusUz_2__15), //(1-uz)^2
.i_sa2_2(sa2_2__15), //(sine of angle 2)^2 (uz2 = cosine of angle 2).
.i_uz2_2(uz2_2__15), //(uz2)^2, new uz squared.
.i_ux_transmitted(ux_transmitted__15), //New value for ux, if photon moves to next layer
.i_uy_transmitted(uy_transmitted__15), //New value for uy, if photon moves to next layer
//Outputs
.o_uz_2(uz_2__16),
.o_uz2(uz2__16),
.o_oneMinusUz_2(oneMinusUz_2__16),
.o_sa2_2(sa2_2__16),
.o_uz2_2(uz2_2__16),
.o_ux_transmitted(ux_transmitted__16),
.o_uy_transmitted(uy_transmitted__16)
);
//for loop (10+20+6):
InternalsBlock_Reflector pipeReg36(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__35), //uz^2
.i_uz2(uz2__35), //new uz, should the photon transmit to new layer
.i_oneMinusUz_2(oneMinusUz_2__35), //(1-uz)^2
.i_sa2_2(sa2_2__35), //(sine of angle 2)^2 (uz2 = cosine of angle 2).
.i_uz2_2(uz2_2__35), //(uz2)^2, new uz squared.
//Changed Value
.i_ux_transmitted(new_ux_transmitted), //New value for ux, if photon moves to next layer
//Changed Value
.i_uy_transmitted(new_uy_transmitted), //New value for uy, if photon moves to next layer
//Outputs
.o_uz_2(uz_2__36),
.o_uz2(uz2__36),
.o_oneMinusUz_2(oneMinusUz_2__36),
.o_sa2_2(sa2_2__36),
.o_uz2_2(uz2_2__36),
.o_ux_transmitted(ux_transmitted__36),
.o_uy_transmitted(uy_transmitted__36)
);
//rest of loop
InternalsBlock_Reflector pipeReg37(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__36),
.i_uz2(uz2__36),
.i_oneMinusUz_2(oneMinusUz_2__36),
.i_sa2_2(sa2_2__36),
.i_uz2_2(uz2_2__36),
.i_ux_transmitted(ux_transmitted__36),
.i_uy_transmitted(uy_transmitted__36),
//outputs
.o_uz_2(uz_2__37),
.o_uz2(uz2__37),
.o_oneMinusUz_2(oneMinusUz_2__37),
.o_sa2_2(sa2_2__37),
.o_uz2_2(uz2_2__37),
.o_ux_transmitted(ux_transmitted__37),
.o_uy_transmitted(uy_transmitted__37)
);
//removed 36
InternalsBlock_Reflector pipeReg35(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__34),
.i_uz2(uz2__34),
.i_oneMinusUz_2(oneMinusUz_2__34),
.i_sa2_2(sa2_2__34),
.i_uz2_2(uz2_2__34),
.i_ux_transmitted(ux_transmitted__34),
.i_uy_transmitted(uy_transmitted__34),
//outputs
.o_uz_2(uz_2__35),
.o_uz2(uz2__35),
.o_oneMinusUz_2(oneMinusUz_2__35),
.o_sa2_2(sa2_2__35),
.o_uz2_2(uz2_2__35),
.o_ux_transmitted(ux_transmitted__35),
.o_uy_transmitted(uy_transmitted__35)
);
InternalsBlock_Reflector pipeReg34(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__33),
.i_uz2(uz2__33),
.i_oneMinusUz_2(oneMinusUz_2__33),
.i_sa2_2(sa2_2__33),
.i_uz2_2(uz2_2__33),
.i_ux_transmitted(ux_transmitted__33),
.i_uy_transmitted(uy_transmitted__33),
//outputs
.o_uz_2(uz_2__34),
.o_uz2(uz2__34),
.o_oneMinusUz_2(oneMinusUz_2__34),
.o_sa2_2(sa2_2__34),
.o_uz2_2(uz2_2__34),
.o_ux_transmitted(ux_transmitted__34),
.o_uy_transmitted(uy_transmitted__34)
);
InternalsBlock_Reflector pipeReg33(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__32),
.i_uz2(uz2__32),
.i_oneMinusUz_2(oneMinusUz_2__32),
.i_sa2_2(sa2_2__32),
.i_uz2_2(uz2_2__32),
.i_ux_transmitted(ux_transmitted__32),
.i_uy_transmitted(uy_transmitted__32),
//outputs
.o_uz_2(uz_2__33),
.o_uz2(uz2__33),
.o_oneMinusUz_2(oneMinusUz_2__33),
.o_sa2_2(sa2_2__33),
.o_uz2_2(uz2_2__33),
.o_ux_transmitted(ux_transmitted__33),
.o_uy_transmitted(uy_transmitted__33)
);
InternalsBlock_Reflector pipeReg32(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__31),
.i_uz2(uz2__31),
.i_oneMinusUz_2(oneMinusUz_2__31),
.i_sa2_2(sa2_2__31),
.i_uz2_2(uz2_2__31),
.i_ux_transmitted(ux_transmitted__31),
.i_uy_transmitted(uy_transmitted__31),
//outputs
.o_uz_2(uz_2__32),
.o_uz2(uz2__32),
.o_oneMinusUz_2(oneMinusUz_2__32),
.o_sa2_2(sa2_2__32),
.o_uz2_2(uz2_2__32),
.o_ux_transmitted(ux_transmitted__32),
.o_uy_transmitted(uy_transmitted__32)
);
InternalsBlock_Reflector pipeReg31(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__30),
.i_uz2(uz2__30),
.i_oneMinusUz_2(oneMinusUz_2__30),
.i_sa2_2(sa2_2__30),
.i_uz2_2(uz2_2__30),
.i_ux_transmitted(ux_transmitted__30),
.i_uy_transmitted(uy_transmitted__30),
//outputs
.o_uz_2(uz_2__31),
.o_uz2(uz2__31),
.o_oneMinusUz_2(oneMinusUz_2__31),
.o_sa2_2(sa2_2__31),
.o_uz2_2(uz2_2__31),
.o_ux_transmitted(ux_transmitted__31),
.o_uy_transmitted(uy_transmitted__31)
);
InternalsBlock_Reflector pipeReg30(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__29),
.i_uz2(uz2__29),
.i_oneMinusUz_2(oneMinusUz_2__29),
.i_sa2_2(sa2_2__29),
.i_uz2_2(uz2_2__29),
.i_ux_transmitted(ux_transmitted__29),
.i_uy_transmitted(uy_transmitted__29),
//outputs
.o_uz_2(uz_2__30),
.o_uz2(uz2__30),
.o_oneMinusUz_2(oneMinusUz_2__30),
.o_sa2_2(sa2_2__30),
.o_uz2_2(uz2_2__30),
.o_ux_transmitted(ux_transmitted__30),
.o_uy_transmitted(uy_transmitted__30)
);
InternalsBlock_Reflector pipeReg29(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__28),
.i_uz2(uz2__28),
.i_oneMinusUz_2(oneMinusUz_2__28),
.i_sa2_2(sa2_2__28),
.i_uz2_2(uz2_2__28),
.i_ux_transmitted(ux_transmitted__28),
.i_uy_transmitted(uy_transmitted__28),
//outputs
.o_uz_2(uz_2__29),
.o_uz2(uz2__29),
.o_oneMinusUz_2(oneMinusUz_2__29),
.o_sa2_2(sa2_2__29),
.o_uz2_2(uz2_2__29),
.o_ux_transmitted(ux_transmitted__29),
.o_uy_transmitted(uy_transmitted__29)
);
InternalsBlock_Reflector pipeReg28(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__27),
.i_uz2(uz2__27),
.i_oneMinusUz_2(oneMinusUz_2__27),
.i_sa2_2(sa2_2__27),
.i_uz2_2(uz2_2__27),
.i_ux_transmitted(ux_transmitted__27),
.i_uy_transmitted(uy_transmitted__27),
//outputs
.o_uz_2(uz_2__28),
.o_uz2(uz2__28),
.o_oneMinusUz_2(oneMinusUz_2__28),
.o_sa2_2(sa2_2__28),
.o_uz2_2(uz2_2__28),
.o_ux_transmitted(ux_transmitted__28),
.o_uy_transmitted(uy_transmitted__28)
);
InternalsBlock_Reflector pipeReg27(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__26),
.i_uz2(uz2__26),
.i_oneMinusUz_2(oneMinusUz_2__26),
.i_sa2_2(sa2_2__26),
.i_uz2_2(uz2_2__26),
.i_ux_transmitted(ux_transmitted__26),
.i_uy_transmitted(uy_transmitted__26),
//outputs
.o_uz_2(uz_2__27),
.o_uz2(uz2__27),
.o_oneMinusUz_2(oneMinusUz_2__27),
.o_sa2_2(sa2_2__27),
.o_uz2_2(uz2_2__27),
.o_ux_transmitted(ux_transmitted__27),
.o_uy_transmitted(uy_transmitted__27)
);
InternalsBlock_Reflector pipeReg26(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__25),
.i_uz2(uz2__25),
.i_oneMinusUz_2(oneMinusUz_2__25),
.i_sa2_2(sa2_2__25),
.i_uz2_2(uz2_2__25),
.i_ux_transmitted(ux_transmitted__25),
.i_uy_transmitted(uy_transmitted__25),
//outputs
.o_uz_2(uz_2__26),
.o_uz2(uz2__26),
.o_oneMinusUz_2(oneMinusUz_2__26),
.o_sa2_2(sa2_2__26),
.o_uz2_2(uz2_2__26),
.o_ux_transmitted(ux_transmitted__26),
.o_uy_transmitted(uy_transmitted__26)
);
InternalsBlock_Reflector pipeReg25(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__24),
.i_uz2(uz2__24),
.i_oneMinusUz_2(oneMinusUz_2__24),
.i_sa2_2(sa2_2__24),
.i_uz2_2(uz2_2__24),
.i_ux_transmitted(ux_transmitted__24),
.i_uy_transmitted(uy_transmitted__24),
//outputs
.o_uz_2(uz_2__25),
.o_uz2(uz2__25),
.o_oneMinusUz_2(oneMinusUz_2__25),
.o_sa2_2(sa2_2__25),
.o_uz2_2(uz2_2__25),
.o_ux_transmitted(ux_transmitted__25),
.o_uy_transmitted(uy_transmitted__25)
);
InternalsBlock_Reflector pipeReg24(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__23),
.i_uz2(uz2__23),
.i_oneMinusUz_2(oneMinusUz_2__23),
.i_sa2_2(sa2_2__23),
.i_uz2_2(uz2_2__23),
.i_ux_transmitted(ux_transmitted__23),
.i_uy_transmitted(uy_transmitted__23),
//outputs
.o_uz_2(uz_2__24),
.o_uz2(uz2__24),
.o_oneMinusUz_2(oneMinusUz_2__24),
.o_sa2_2(sa2_2__24),
.o_uz2_2(uz2_2__24),
.o_ux_transmitted(ux_transmitted__24),
.o_uy_transmitted(uy_transmitted__24)
);
InternalsBlock_Reflector pipeReg23(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__22),
.i_uz2(uz2__22),
.i_oneMinusUz_2(oneMinusUz_2__22),
.i_sa2_2(sa2_2__22),
.i_uz2_2(uz2_2__22),
.i_ux_transmitted(ux_transmitted__22),
.i_uy_transmitted(uy_transmitted__22),
//outputs
.o_uz_2(uz_2__23),
.o_uz2(uz2__23),
.o_oneMinusUz_2(oneMinusUz_2__23),
.o_sa2_2(sa2_2__23),
.o_uz2_2(uz2_2__23),
.o_ux_transmitted(ux_transmitted__23),
.o_uy_transmitted(uy_transmitted__23)
);
InternalsBlock_Reflector pipeReg22(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__21),
.i_uz2(uz2__21),
.i_oneMinusUz_2(oneMinusUz_2__21),
.i_sa2_2(sa2_2__21),
.i_uz2_2(uz2_2__21),
.i_ux_transmitted(ux_transmitted__21),
.i_uy_transmitted(uy_transmitted__21),
//outputs
.o_uz_2(uz_2__22),
.o_uz2(uz2__22),
.o_oneMinusUz_2(oneMinusUz_2__22),
.o_sa2_2(sa2_2__22),
.o_uz2_2(uz2_2__22),
.o_ux_transmitted(ux_transmitted__22),
.o_uy_transmitted(uy_transmitted__22)
);
InternalsBlock_Reflector pipeReg21(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__20),
.i_uz2(uz2__20),
.i_oneMinusUz_2(oneMinusUz_2__20),
.i_sa2_2(sa2_2__20),
.i_uz2_2(uz2_2__20),
.i_ux_transmitted(ux_transmitted__20),
.i_uy_transmitted(uy_transmitted__20),
//outputs
.o_uz_2(uz_2__21),
.o_uz2(uz2__21),
.o_oneMinusUz_2(oneMinusUz_2__21),
.o_sa2_2(sa2_2__21),
.o_uz2_2(uz2_2__21),
.o_ux_transmitted(ux_transmitted__21),
.o_uy_transmitted(uy_transmitted__21)
);
InternalsBlock_Reflector pipeReg20(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__19),
.i_uz2(uz2__19),
.i_oneMinusUz_2(oneMinusUz_2__19),
.i_sa2_2(sa2_2__19),
.i_uz2_2(uz2_2__19),
.i_ux_transmitted(ux_transmitted__19),
.i_uy_transmitted(uy_transmitted__19),
//outputs
.o_uz_2(uz_2__20),
.o_uz2(uz2__20),
.o_oneMinusUz_2(oneMinusUz_2__20),
.o_sa2_2(sa2_2__20),
.o_uz2_2(uz2_2__20),
.o_ux_transmitted(ux_transmitted__20),
.o_uy_transmitted(uy_transmitted__20)
);
InternalsBlock_Reflector pipeReg19(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__18),
.i_uz2(uz2__18),
.i_oneMinusUz_2(oneMinusUz_2__18),
.i_sa2_2(sa2_2__18),
.i_uz2_2(uz2_2__18),
.i_ux_transmitted(ux_transmitted__18),
.i_uy_transmitted(uy_transmitted__18),
//outputs
.o_uz_2(uz_2__19),
.o_uz2(uz2__19),
.o_oneMinusUz_2(oneMinusUz_2__19),
.o_sa2_2(sa2_2__19),
.o_uz2_2(uz2_2__19),
.o_ux_transmitted(ux_transmitted__19),
.o_uy_transmitted(uy_transmitted__19)
);
InternalsBlock_Reflector pipeReg18(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__17),
.i_uz2(uz2__17),
.i_oneMinusUz_2(oneMinusUz_2__17),
.i_sa2_2(sa2_2__17),
.i_uz2_2(uz2_2__17),
.i_ux_transmitted(ux_transmitted__17),
.i_uy_transmitted(uy_transmitted__17),
//outputs
.o_uz_2(uz_2__18),
.o_uz2(uz2__18),
.o_oneMinusUz_2(oneMinusUz_2__18),
.o_sa2_2(sa2_2__18),
.o_uz2_2(uz2_2__18),
.o_ux_transmitted(ux_transmitted__18),
.o_uy_transmitted(uy_transmitted__18)
);
InternalsBlock_Reflector pipeReg17(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__16),
.i_uz2(uz2__16),
.i_oneMinusUz_2(oneMinusUz_2__16),
.i_sa2_2(sa2_2__16),
.i_uz2_2(uz2_2__16),
.i_ux_transmitted(ux_transmitted__16),
.i_uy_transmitted(uy_transmitted__16),
//outputs
.o_uz_2(uz_2__17),
.o_uz2(uz2__17),
.o_oneMinusUz_2(oneMinusUz_2__17),
.o_sa2_2(sa2_2__17),
.o_uz2_2(uz2_2__17),
.o_ux_transmitted(ux_transmitted__17),
.o_uy_transmitted(uy_transmitted__17)
);
//removed 16
InternalsBlock_Reflector pipeReg15(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__14),
.i_uz2(uz2__14),
.i_oneMinusUz_2(oneMinusUz_2__14),
.i_sa2_2(sa2_2__14),
.i_uz2_2(uz2_2__14),
.i_ux_transmitted(ux_transmitted__14),
.i_uy_transmitted(uy_transmitted__14),
//outputs
.o_uz_2(uz_2__15),
.o_uz2(uz2__15),
.o_oneMinusUz_2(oneMinusUz_2__15),
.o_sa2_2(sa2_2__15),
.o_uz2_2(uz2_2__15),
.o_ux_transmitted(ux_transmitted__15),
.o_uy_transmitted(uy_transmitted__15)
);
InternalsBlock_Reflector pipeReg14(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__13),
.i_uz2(uz2__13),
.i_oneMinusUz_2(oneMinusUz_2__13),
.i_sa2_2(sa2_2__13),
.i_uz2_2(uz2_2__13),
.i_ux_transmitted(ux_transmitted__13),
.i_uy_transmitted(uy_transmitted__13),
//outputs
.o_uz_2(uz_2__14),
.o_uz2(uz2__14),
.o_oneMinusUz_2(oneMinusUz_2__14),
.o_sa2_2(sa2_2__14),
.o_uz2_2(uz2_2__14),
.o_ux_transmitted(ux_transmitted__14),
.o_uy_transmitted(uy_transmitted__14)
);
InternalsBlock_Reflector pipeReg13(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__12),
.i_uz2(uz2__12),
.i_oneMinusUz_2(oneMinusUz_2__12),
.i_sa2_2(sa2_2__12),
.i_uz2_2(uz2_2__12),
.i_ux_transmitted(ux_transmitted__12),
.i_uy_transmitted(uy_transmitted__12),
//outputs
.o_uz_2(uz_2__13),
.o_uz2(uz2__13),
.o_oneMinusUz_2(oneMinusUz_2__13),
.o_sa2_2(sa2_2__13),
.o_uz2_2(uz2_2__13),
.o_ux_transmitted(ux_transmitted__13),
.o_uy_transmitted(uy_transmitted__13)
);
InternalsBlock_Reflector pipeReg12(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__11),
.i_uz2(uz2__11),
.i_oneMinusUz_2(oneMinusUz_2__11),
.i_sa2_2(sa2_2__11),
.i_uz2_2(uz2_2__11),
.i_ux_transmitted(ux_transmitted__11),
.i_uy_transmitted(uy_transmitted__11),
//outputs
.o_uz_2(uz_2__12),
.o_uz2(uz2__12),
.o_oneMinusUz_2(oneMinusUz_2__12),
.o_sa2_2(sa2_2__12),
.o_uz2_2(uz2_2__12),
.o_ux_transmitted(ux_transmitted__12),
.o_uy_transmitted(uy_transmitted__12)
);
InternalsBlock_Reflector pipeReg11(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__10),
.i_uz2(uz2__10),
.i_oneMinusUz_2(oneMinusUz_2__10),
.i_sa2_2(sa2_2__10),
.i_uz2_2(uz2_2__10),
.i_ux_transmitted(ux_transmitted__10),
.i_uy_transmitted(uy_transmitted__10),
//outputs
.o_uz_2(uz_2__11),
.o_uz2(uz2__11),
.o_oneMinusUz_2(oneMinusUz_2__11),
.o_sa2_2(sa2_2__11),
.o_uz2_2(uz2_2__11),
.o_ux_transmitted(ux_transmitted__11),
.o_uy_transmitted(uy_transmitted__11)
);
InternalsBlock_Reflector pipeReg10(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__9),
.i_uz2(uz2__9),
.i_oneMinusUz_2(oneMinusUz_2__9),
.i_sa2_2(sa2_2__9),
.i_uz2_2(uz2_2__9),
.i_ux_transmitted(ux_transmitted__9),
.i_uy_transmitted(uy_transmitted__9),
//outputs
.o_uz_2(uz_2__10),
.o_uz2(uz2__10),
.o_oneMinusUz_2(oneMinusUz_2__10),
.o_sa2_2(sa2_2__10),
.o_uz2_2(uz2_2__10),
.o_ux_transmitted(ux_transmitted__10),
.o_uy_transmitted(uy_transmitted__10)
);
InternalsBlock_Reflector pipeReg9(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__8),
.i_uz2(uz2__8),
.i_oneMinusUz_2(oneMinusUz_2__8),
.i_sa2_2(sa2_2__8),
.i_uz2_2(uz2_2__8),
.i_ux_transmitted(ux_transmitted__8),
.i_uy_transmitted(uy_transmitted__8),
//outputs
.o_uz_2(uz_2__9),
.o_uz2(uz2__9),
.o_oneMinusUz_2(oneMinusUz_2__9),
.o_sa2_2(sa2_2__9),
.o_uz2_2(uz2_2__9),
.o_ux_transmitted(ux_transmitted__9),
.o_uy_transmitted(uy_transmitted__9)
);
InternalsBlock_Reflector pipeReg8(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__7),
.i_uz2(uz2__7),
.i_oneMinusUz_2(oneMinusUz_2__7),
.i_sa2_2(sa2_2__7),
.i_uz2_2(uz2_2__7),
.i_ux_transmitted(ux_transmitted__7),
.i_uy_transmitted(uy_transmitted__7),
//outputs
.o_uz_2(uz_2__8),
.o_uz2(uz2__8),
.o_oneMinusUz_2(oneMinusUz_2__8),
.o_sa2_2(sa2_2__8),
.o_uz2_2(uz2_2__8),
.o_ux_transmitted(ux_transmitted__8),
.o_uy_transmitted(uy_transmitted__8)
);
InternalsBlock_Reflector pipeReg7(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__6),
.i_uz2(uz2__6),
.i_oneMinusUz_2(oneMinusUz_2__6),
.i_sa2_2(sa2_2__6),
.i_uz2_2(uz2_2__6),
.i_ux_transmitted(ux_transmitted__6),
.i_uy_transmitted(uy_transmitted__6),
//outputs
.o_uz_2(uz_2__7),
.o_uz2(uz2__7),
.o_oneMinusUz_2(oneMinusUz_2__7),
.o_sa2_2(sa2_2__7),
.o_uz2_2(uz2_2__7),
.o_ux_transmitted(ux_transmitted__7),
.o_uy_transmitted(uy_transmitted__7)
);
InternalsBlock_Reflector pipeReg6(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__5),
.i_uz2(uz2__5),
.i_oneMinusUz_2(oneMinusUz_2__5),
.i_sa2_2(sa2_2__5),
.i_uz2_2(uz2_2__5),
.i_ux_transmitted(ux_transmitted__5),
.i_uy_transmitted(uy_transmitted__5),
//outputs
.o_uz_2(uz_2__6),
.o_uz2(uz2__6),
.o_oneMinusUz_2(oneMinusUz_2__6),
.o_sa2_2(sa2_2__6),
.o_uz2_2(uz2_2__6),
.o_ux_transmitted(ux_transmitted__6),
.o_uy_transmitted(uy_transmitted__6)
);
//removed 2,3,4,5
//peter m
// no driver
assign uz_2__0 = 64'b0;
assign uz2__0 = 32'b0;
assign oneMinusUz_2__0 = 0;
assign sa2_2__0 = 0;
assign uz2_2__0 = 64'b0;
assign ux_transmitted__0 = 32'b00000000000000000000000000000000;
assign uy_transmitted__0 = 32'b00000000000000000000000000000000;
InternalsBlock_Reflector pipeReg1(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_uz_2(uz_2__0),
.i_uz2(uz2__0),
.i_oneMinusUz_2(oneMinusUz_2__0),
.i_sa2_2(sa2_2__0),
.i_uz2_2(uz2_2__0),
.i_ux_transmitted(ux_transmitted__0),
.i_uy_transmitted(uy_transmitted__0),
//outputs
.o_uz_2(uz_2__1),
.o_uz2(uz2__1),
.o_oneMinusUz_2(oneMinusUz_2__1),
.o_sa2_2(sa2_2__1),
.o_uz2_2(uz2_2__1),
.o_ux_transmitted(ux_transmitted__1),
.o_uy_transmitted(uy_transmitted__1)
);
//-------------SYNCHRONOUS LOGIC----------------------
//
//
//
//
//
//
//
//
//
//
//
//
//This is the end of the generate statement, and the beginning of the
//synchronous logic. On the clock event, the outputs calcu`LATed from
//this block are put on the output pins for reading (registered
//outputs, as per the convention).
//Assign outputs from block on positive clock edge.
always @ (posedge clock) begin
if(reset_new) begin
//Reset internal non-pipelined registers here.
ux_reflector <= 32'h00000000;
uy_reflector <= 32'h00000000;
uz_reflector <= 32'h7FFFFFFF;
layer_reflector <= 3'b001;
dead_reflector <= 1'b1;
end else if (enable) begin
ux_reflector <= new_ux;
uy_reflector <= new_uy;
uz_reflector <= new_uz;
layer_reflector <= new_layer;
dead_reflector <= new_dead;
end
end
//-------------ASYNCHRONOUS LOGIC----------------------
//
//
//
//
//
//
//
//
//
//
//
//
//This is where the asynchronous logic takes place. Things that
//occur here include setting up wiring to send to the multipliers,
//and square root unit. Also, products brought in from the wrapper
//are placed on the appropriate wires for placement in the pipeline.
//-------------MUXES for SYNCHRONOUS LOGIC--------
always @ (i_layer36 or downCritAngle_0 or upCritAngle_0 or
downCritAngle_1 or upCritAngle_1 or
downCritAngle_2 or upCritAngle_2 or
downCritAngle_3 or upCritAngle_3 or
downCritAngle_4 or upCritAngle_4) begin
case (i_layer36)
1:begin
downCritAngle = downCritAngle_0;
upCritAngle = upCritAngle_0;
end
2:begin
downCritAngle = downCritAngle_1;
upCritAngle = upCritAngle_1;
end
3:begin
downCritAngle = downCritAngle_2;
upCritAngle = upCritAngle_2;
end
4:begin
downCritAngle = downCritAngle_3;
upCritAngle = upCritAngle_3;
end
5:begin
downCritAngle = downCritAngle_4;
upCritAngle = upCritAngle_4;
end
//Should never occur
default:begin
downCritAngle = downCritAngle_0;
upCritAngle = upCritAngle_0;
end
endcase
end
always @ (i_uz35 or i_layer35) begin
negUz = -i_uz35;
case (i_uz35[31])
0: begin
case (i_layer35)
1: fresIndex = {3'b000, i_uz35[30:24]};
2: fresIndex = {3'b001, i_uz35[30:24]};
3: fresIndex = {3'b010, i_uz35[30:24]};
4: fresIndex = {3'b011, i_uz35[30:24]};
5: fresIndex = {3'b100, i_uz35[30:24]};
//Should never occur
default: fresIndex = {3'b000, i_uz35[30:24]};
endcase
end
1: begin
case (i_layer35)
1: fresIndex = {3'b000, negUz[30:24]};
2: fresIndex = {3'b001, negUz[30:24]};
3: fresIndex = {3'b010, negUz[30:24]};
4: fresIndex = {3'b011, negUz[30:24]};
5: fresIndex = {3'b100, negUz[30:24]};
//Should never occur
default: fresIndex = {3'b000, negUz[30:24]};
endcase
end
endcase
end
//-------------OPERAND SETUP----------------------
//NAMING CONVENTION:
//opX_Y_Z, op stands for operand, X stands for the multiplication number for
//that clock cycle, Y stands for the clock cycle, Z is either 1 or 2 for the
//first or second operand for this multiply
//
//COMMENTING CONVENTIONS:
//CC X means that the values being calcu`LATed will be ready for the Xth register
//location, where 0 is the register prior to any calcu`LATions being done, 1 is
//after the 1st clock cycle of calcu`LATion, etc.
//CC 2
assign op1_2_1 = i_uz1;
assign op1_2_2 = i_uz1;
//CC 3
//SUBTRACTION, see math results
//CC 4
always @ (i_uz3 or i_layer3 or down_niOverNt_2_1 or up_niOverNt_2_1 or
down_niOverNt_2_2 or up_niOverNt_2_2 or
down_niOverNt_2_3 or up_niOverNt_2_3 or
down_niOverNt_2_4 or up_niOverNt_2_4 or
down_niOverNt_2_5 or up_niOverNt_2_5) begin
case (i_uz3[31])
//uz >= 0
0:begin
case (i_layer3)
1: op1_4_1 = {down_niOverNt_2_1[63], down_niOverNt_2_1[61:31]};
2: op1_4_1 = {down_niOverNt_2_2[63], down_niOverNt_2_2[61:31]};
3: op1_4_1 = {down_niOverNt_2_3[63], down_niOverNt_2_3[61:31]};
4: op1_4_1 = {down_niOverNt_2_4[63], down_niOverNt_2_4[61:31]};
5: op1_4_1 = {down_niOverNt_2_5[63], down_niOverNt_2_5[61:31]};
default: op1_4_1 = {down_niOverNt_2_1[63], down_niOverNt_2_1[61:31]};
endcase
end
//uz < 0
1:begin
case (i_layer3)
1: op1_4_1 = {up_niOverNt_2_1[63], up_niOverNt_2_1[61:31]};
2: op1_4_1 = {up_niOverNt_2_2[63], up_niOverNt_2_2[61:31]};
3: op1_4_1 = {up_niOverNt_2_3[63], up_niOverNt_2_3[61:31]};
4: op1_4_1 = {up_niOverNt_2_4[63], up_niOverNt_2_4[61:31]};
5: op1_4_1 = {up_niOverNt_2_5[63], up_niOverNt_2_5[61:31]};
default: op1_4_1 = {up_niOverNt_2_1[63], up_niOverNt_2_1[61:31]};
endcase
end
endcase
end
assign op1_4_2 = {oneMinusUz_2__3[63], oneMinusUz_2__3[61:31]};
//CC 5
//SUBTRACTION, see math results
//CC `SQRT+5 -- Started in CC 6
assign sqrtOperand1_6 = uz2_2__5;
//CC `SQRT+`DIV+6 -- Line up with Scatterer.
assign op1_36_1 = i_ux35;
always @ (i_uz35 or i_layer35 or down_niOverNt_1 or up_niOverNt_1 or
down_niOverNt_2 or up_niOverNt_2 or
down_niOverNt_3 or up_niOverNt_3 or
down_niOverNt_4 or up_niOverNt_4 or
down_niOverNt_5 or up_niOverNt_5) begin
case (i_uz35[31])
0: begin//uz >= 0
case (i_layer35)
1:begin
op1_36_2 = down_niOverNt_1;
op2_36_2 = down_niOverNt_1;
end
2:begin
op1_36_2 = down_niOverNt_2;
op2_36_2 = down_niOverNt_2;
end
3:begin
op1_36_2 = down_niOverNt_3;
op2_36_2 = down_niOverNt_3;
end
4:begin
op1_36_2 = down_niOverNt_4;
op2_36_2 = down_niOverNt_4;
end
5:begin
op1_36_2 = down_niOverNt_5;
op2_36_2 = down_niOverNt_5;
end
default:begin
op1_36_2 = down_niOverNt_1;
op2_36_2 = down_niOverNt_1;
end
endcase
end
1: begin//uz < 0
case (i_layer35)
1:begin
op1_36_2 = up_niOverNt_1;
op2_36_2 = up_niOverNt_1;
end
2:begin
op1_36_2 = up_niOverNt_2;
op2_36_2 = up_niOverNt_2;
end
3:begin
op1_36_2 = up_niOverNt_3;
op2_36_2 = up_niOverNt_3;
end
4:begin
op1_36_2 = up_niOverNt_4;
op2_36_2 = up_niOverNt_4;
end
5:begin
op1_36_2 = up_niOverNt_5;
op2_36_2 = up_niOverNt_5;
end
default:begin
op1_36_2 = up_niOverNt_1;
op2_36_2 = up_niOverNt_1;
end
endcase
end
endcase
end
assign op2_36_1 = i_uy35;
//-------------MATH RESULTS----------------------
//NAMING CONVENTION:
//new_VAR means that the variable named VAR will be stored into the register
//pipeline at the clock cycle indicated by the comments above it.
//
//prod stands for product, quot stands for quotient, `SQRT stands for square root
//prodX_Y means the Xth product which started calcu`LATion at the Yth clock cycle
//Similarly for quot and `SQRTResult.
//
//
//COMMENTING CONVENTIONS:
//CC X means that the values being calcu`LATed will be ready for the Xth register
//location, where 0 is the register prior to any calcu`LATions being done, 1 is
//after the 1st clock cycle of calcu`LATion, etc.
//CC 2
assign new_uz_2 = prod1_2;
//CC 3
sub_64b oneMinusUz2_sub(
.dataa(`INTMAX_2_ref),
.datab(uz_2__2),
.result(new_oneMinusUz_2)
);
//CC 4
//Used to determine whether or not the multiply operation overflowed.
//or U1(overflow1_4, prod1_4[62], prod1_4[61], prod1_4[60], prod1_4[59], prod1_4[58]);
assign overflow1_4 = prod1_4[62]|prod1_4[61]|prod1_4[60]|prod1_4[59]|prod1_4[58];
//Cannot take `SQRT of negative number, that is why prod1_4[58] must be 0.
//sign //data //padding
assign new_sa2_2 = (overflow1_4 == 1)? `INTMAX_2_ref : {prod1_4[63], prod1_4[58:0], 4'h0};
//5th CC
sub_64b uz2_2_sub(
.dataa(`INTMAX_2_ref),
.datab(sa2_2__4),
.result(new_uz2_2)
);
//CC `SQRT+5
assign new_uz2 = sqrtResult1_6;
//CC `SQRT+`DIV+6 -- Line up with Scatterer.
//Used to determine whether or not the multiply operation overflowed.
//or U2(toAnd1_36_1, prod1_36[62], prod1_36[61], prod1_36[60]);
assign toAnd1_36_1 = prod1_36[62]|prod1_36[61]|prod1_36[60];
//Used to determine whether or not the multiply operation overflowed in the negative direction.
//or U3(toAnd1_36_2, ~prod1_36[62], ~prod1_36[61], ~prod1_36[60]);
assign toAnd1_36_2 = ~prod1_36[62]|~prod1_36[61]|~prod1_36[60];
//and U4(overflow1_36, ~prod1_36[63], toAnd1_36_1);
assign overflow1_36 = ~prod1_36[63] & toAnd1_36_1;
//and U5(negOverflow1_36, prod1_36[63], toAnd1_36_2);
assign negOverflow1_36 = prod1_36[63] & toAnd1_36_2;
//Used to determine whether or not the multiply operation overflowed.
//or U6(toAnd2_36_1, prod2_36[62], prod2_36[61], prod2_36[60]);
assign toAnd2_36_1 = prod2_36[62]|prod2_36[61]|prod2_36[60];
//Used to determine whether or not the multiply operation overflowed in the negative direction.
//or U7(toAnd2_36_2, ~prod2_36[62], ~prod2_36[61], ~prod2_36[60]);
assign toAnd2_36_2 = ~prod2_36[62]|~prod2_36[61]|~prod2_36[60];
//and U8(overflow2_36, ~prod2_36[63], toAnd2_36_1);
assign overflow2_36 = ~prod2_36[63] & toAnd2_36_1;
//and U9(negOverflow2_36, prod2_36[63], toAnd2_36_2);
assign negOverflow2_36 = prod2_36[63] & toAnd2_36_2;
always @ (overflow1_36 or negOverflow1_36 or prod1_36 or
overflow2_36 or negOverflow2_36 or prod2_36) begin
case ({overflow1_36, negOverflow1_36})
0: new_ux_transmitted = {prod1_36[63:63], prod1_36[59:29]};
1: new_ux_transmitted = `INTMIN;
2: new_ux_transmitted = `INTMAX;
//Should never occur
3: new_ux_transmitted = {prod1_36[63:63], prod1_36[59:29]};
endcase
case ({overflow2_36, negOverflow2_36})
0: new_uy_transmitted = {prod2_36[63:63], prod2_36[59:29]};
1: new_uy_transmitted = `INTMIN;
2: new_uy_transmitted = `INTMAX;
//Should never occur
3: new_uy_transmitted = {prod2_36[63:63], prod2_36[59:29]};
endcase
end
//-------------FINAL CALCU`LATED VALUES----------------------
//
//
//
//
//
//
//
//
//
//
//
//
//
//
always @ (i_uz36 or downCritAngle or upCritAngle or down_rFresnel or i_ux36 or
i_uy36 or i_layer36 or i_dead36 or rnd or up_rFresnel or ux_transmitted__37 or
uy_transmitted__37 or uz2__37) begin
//REFLECTED -- Due to total internal reflection while moving down
if (~i_uz36[31] && i_uz36 <= downCritAngle) begin
new_ux = i_ux36;
new_uy = i_uy36;
new_uz = -i_uz36;
new_layer = i_layer36;
new_dead = i_dead36;
//REFLECTED -- Due to total internal reflection while moving up
end else if (i_uz36[31] && -i_uz36 <= upCritAngle) begin
new_ux = i_ux36;
new_uy = i_uy36;
new_uz = -i_uz36;
new_layer = i_layer36;
new_dead = i_dead36;
//REFLECTED -- Due to random number being too small while moving down
end else if (~i_uz36[31] && rnd <= down_rFresnel) begin
new_ux = i_ux36;
new_uy = i_uy36;
new_uz = -i_uz36;
new_layer = i_layer36;
new_dead = i_dead36;
//REFLECTED -- Due to random number being too small while moving up
end else if (i_uz36[31] && rnd <= up_rFresnel) begin
new_ux = i_ux36;
new_uy = i_uy36;
new_uz = -i_uz36;
new_layer = i_layer36;
new_dead = i_dead36;
//TRANSMITTED
end else begin
new_ux = ux_transmitted__37;
new_uy = uy_transmitted__37;
case (i_uz36[31])
0:begin//uz >= 0
if (i_layer36 == 5) begin
new_layer = 3'h5;
new_dead = 1'b1;
end else begin
new_layer = i_layer36+3'h1;
new_dead = i_dead36;
end
new_uz = uz2__37;
end
1:begin//uz < 0
if (i_layer36 == 1) begin
new_layer = 3'h1;
new_dead = 1'b1;
end else begin
new_layer = i_layer36-3'h1;
new_dead = i_dead36;
end
new_uz = -uz2__37;
end
endcase
end
end
endmodule
module Memory_Wrapper (
//Inputs
clock,
// reset, //This is unused in the module. ODIN II complains.
pindex,
//Outputs
sinp,
cosp
);
input clock;
//input reset;
input [9:0] pindex;
output [31:0] sinp;
output [31:0] cosp;
//sinp_ROM sinp_MEM (.address(pindex), .clock(clock), .q(sinp));
//cosp_ROM cosp_MEM (.address(pindex), .clock(clock), .q(cosp));
//Instantiate a single port ram for odin
wire [31:0]blank;
assign blank = 32'b000000000000000000000000000000;
single_port_ram_1024x32 sinp_replace(.clk (clock), .addr (pindex), .data (blank), .we (1'b0), .out (sinp));
single_port_ram_1024x32 cosp_replace(.clk (clock), .addr (pindex), .data (blank), .we (1'b0), .out (cosp));
endmodule
module InternalsBlock(
//Inputs
clock,
reset,
enable,
i_sint,
i_cost,
i_sinp,
i_cosp,
i_sintCosp,
i_sintSinp,
i_uz2,
i_uxUz,
i_uyUz,
i_uySintSinp,
i_oneMinusUz2,
i_uyUzSintCosp,
i_uxUzSintCosp,
i_uxSintSinp,
i_sqrtOneMinusUz2,
i_sintCospSqrtOneMinusUz2,
i_uxCost,
i_uzCost,
i_sqrtOneMinusUz2_inv,
i_uxNumerator,
i_uyNumerator,
i_uyCost,
i_uxQuotient,
i_uyQuotient,
//Outputs
o_sint,
o_cost,
o_sinp,
o_cosp,
o_sintCosp,
o_sintSinp,
o_uz2,
o_uxUz,
o_uyUz,
o_uySintSinp,
o_oneMinusUz2,
o_uyUzSintCosp,
o_uxUzSintCosp,
o_uxSintSinp,
o_sqrtOneMinusUz2,
o_sintCospSqrtOneMinusUz2,
o_uxCost,
o_uzCost,
o_sqrtOneMinusUz2_inv,
o_uxNumerator,
o_uyNumerator,
o_uyCost,
o_uxQuotient,
o_uyQuotient
);
input clock;
input reset;
input enable;
input [31:0] i_sint;
input [31:0] i_cost;
input [31:0] i_sinp;
input [31:0] i_cosp;
input [31:0] i_sintCosp;
input [31:0] i_sintSinp;
input [63:0] i_uz2;
input [31:0] i_uxUz;
input [31:0] i_uyUz;
input [31:0] i_uySintSinp;
input [63:0] i_oneMinusUz2;
input [31:0] i_uyUzSintCosp;
input [31:0] i_uxUzSintCosp;
input [31:0] i_uxSintSinp;
input [31:0] i_sqrtOneMinusUz2;
input [31:0] i_sintCospSqrtOneMinusUz2;
input [31:0] i_uxCost;
input [31:0] i_uzCost;
input [31:0] i_sqrtOneMinusUz2_inv;
input [31:0] i_uxNumerator;
input [31:0] i_uyNumerator;
input [31:0] i_uyCost;
input [31:0] i_uxQuotient;
input [31:0] i_uyQuotient;
output [31:0] o_sint;
output [31:0] o_cost;
output [31:0] o_sinp;
output [31:0] o_cosp;
output [31:0] o_sintCosp;
output [31:0] o_sintSinp;
output [63:0] o_uz2;
output [31:0] o_uxUz;
output [31:0] o_uyUz;
output [31:0] o_uySintSinp;
output [63:0] o_oneMinusUz2;
output [31:0] o_uyUzSintCosp;
output [31:0] o_uxUzSintCosp;
output [31:0] o_uxSintSinp;
output [31:0] o_sqrtOneMinusUz2;
output [31:0] o_sintCospSqrtOneMinusUz2;
output [31:0] o_uxCost;
output [31:0] o_uzCost;
output [31:0] o_sqrtOneMinusUz2_inv;
output [31:0] o_uxNumerator;
output [31:0] o_uyNumerator;
output [31:0] o_uyCost;
output [31:0] o_uxQuotient;
output [31:0] o_uyQuotient;
wire clock;
wire reset;
wire enable;
wire [31:0] i_sint;
wire [31:0] i_cost;
wire [31:0] i_sinp;
wire [31:0] i_cosp;
wire [31:0] i_sintCosp;
wire [31:0] i_sintSinp;
wire [63:0] i_uz2;
wire [31:0] i_uxUz;
wire [31:0] i_uyUz;
wire [31:0] i_uySintSinp;
wire [63:0] i_oneMinusUz2;
wire [31:0] i_uyUzSintCosp;
wire [31:0] i_uxUzSintCosp;
wire [31:0] i_uxSintSinp;
wire [31:0] i_sqrtOneMinusUz2;
wire [31:0] i_sintCospSqrtOneMinusUz2;
wire [31:0] i_uxCost;
wire [31:0] i_uzCost;
wire [31:0] i_sqrtOneMinusUz2_inv;
wire [31:0] i_uxNumerator;
wire [31:0] i_uyNumerator;
wire [31:0] i_uyCost;
wire [31:0] i_uxQuotient;
wire [31:0] i_uyQuotient;
reg [31:0] o_sint;
reg [31:0] o_cost;
reg [31:0] o_sinp;
reg [31:0] o_cosp;
reg [31:0] o_sintCosp;
reg [31:0] o_sintSinp;
reg [63:0] o_uz2;
reg [31:0] o_uxUz;
reg [31:0] o_uyUz;
reg [31:0] o_uySintSinp;
reg [63:0] o_oneMinusUz2;
reg [31:0] o_uyUzSintCosp;
reg [31:0] o_uxUzSintCosp;
reg [31:0] o_uxSintSinp;
reg [31:0] o_sqrtOneMinusUz2;
reg [31:0] o_sintCospSqrtOneMinusUz2;
reg [31:0] o_uxCost;
reg [31:0] o_uzCost;
reg [31:0] o_sqrtOneMinusUz2_inv;
reg [31:0] o_uxNumerator;
reg [31:0] o_uyNumerator;
reg [31:0] o_uyCost;
reg [31:0] o_uxQuotient;
reg [31:0] o_uyQuotient;
always @ (posedge clock)
if(reset) begin
o_sint <= 32'h00000000;
o_cost <= 32'h00000000;
o_sinp <= 32'h00000000;
o_cosp <= 32'h00000000;
o_sintCosp <= 32'h00000000;
o_sintSinp <= 32'h00000000;
o_uz2 <= 64'h0000000000000000;
o_uxUz <= 32'h00000000;
o_uyUz <= 32'h00000000;
o_uySintSinp <= 32'h00000000;
o_oneMinusUz2 <= 64'h0000000000000000;
o_uyUzSintCosp <= 32'h00000000;
o_uxUzSintCosp <= 32'h00000000;
o_uxSintSinp <= 32'h00000000;
o_sqrtOneMinusUz2 <= 32'h00000000;
o_sintCospSqrtOneMinusUz2 <= 32'h00000000;
o_uxCost <= 32'h00000000;
o_uzCost <= 32'h00000000;
o_sqrtOneMinusUz2_inv <= 32'h00000000;
o_uxNumerator <= 32'h00000000;
o_uyNumerator <= 32'h00000000;
o_uyCost <= 32'h00000000;
o_uxQuotient <= 32'h00000000;
o_uyQuotient <= 32'h00000000;
end else if(enable) begin
o_sint <= i_sint;
o_cost <= i_cost;
o_sinp <= i_sinp;
o_cosp <= i_cosp;
o_sintCosp <= i_sintCosp;
o_sintSinp <= i_sintSinp;
o_uz2 <= i_uz2;
o_uxUz <= i_uxUz;
o_uyUz <= i_uyUz;
o_uySintSinp <= i_uySintSinp;
o_oneMinusUz2 <= i_oneMinusUz2;
o_uyUzSintCosp <= i_uyUzSintCosp;
o_uxUzSintCosp <= i_uxUzSintCosp;
o_uxSintSinp <= i_uxSintSinp;
o_sqrtOneMinusUz2 <= i_sqrtOneMinusUz2;
o_sintCospSqrtOneMinusUz2 <= i_sintCospSqrtOneMinusUz2;
o_uxCost <= i_uxCost;
o_uzCost <= i_uzCost;
o_sqrtOneMinusUz2_inv <= i_sqrtOneMinusUz2_inv;
o_uxNumerator <= i_uxNumerator;
o_uyNumerator <= i_uyNumerator;
o_uyCost <= i_uyCost;
o_uxQuotient <= i_uxQuotient;
o_uyQuotient <= i_uyQuotient;
end
endmodule
module Scatterer (
//INPUTS
clock,
reset,
enable,
//Values from Photon Pipeline
i_uz1,
i_ux3,
i_uz3,
i_uy32,
i_uz32,
i_ux33,
i_uy33,
i_ux35,
i_uy35,
i_uz35,
i_uz36,
//Mathematics Results
prod1_2,
prod1_4,
sqrtResult1_6,
prod1_33,
prod2_33,
prod3_33,
prod1_34,
prod2_34,
prod3_34,
prod4_34,
quot1_16,
prod1_36,
prod2_36,
prod3_36,
prod4_36,
prod5_36,
prod6_36,
//Trig from Memory
sint_Mem,
cost_Mem,
sinp_Mem,
cosp_Mem,
//OUTPUTS
op1_2_1,
op1_2_2,
op1_4_1,
op1_4_2,
sqrtOperand1_6,
divNumerator1_16,
divDenominator1_16,
op1_33_1,
op1_33_2,
op2_33_1,
op2_33_2,
op3_33_1,
op3_33_2,
op1_34_1,
op1_34_2,
op2_34_1,
op2_34_2,
op3_34_1,
op3_34_2,
op4_34_1,
op4_34_2,
op1_36_1,
op1_36_2,
op2_36_1,
op2_36_2,
op3_36_1,
op3_36_2,
op4_36_1,
op4_36_2,
op5_36_1,
op5_36_2,
op6_36_1,
op6_36_2,
//Final calculated values
ux_scatterer,
uy_scatterer,
uz_scatterer
);
//-------------------PARAMETER DEFINITION----------------------
//
//
//
//
//
//
//Assign values to parameters used later in the program.
//parameter DIV = 20;
//parameter SQRT = 10;
//parameter LAT = DIV + SQRT + 7;
//parameter `INTMAX_2 = 64'h3FFFFFFF00000001;
//parameter `INTMAX = 2147483647;
//parameter `INTMIN = -2147483647;
//parameter `INTMAXMinus3 = 2147483644;
//parameter neg`INTMAXPlus3 = -2147483644;
//-----------------------------PIN DECLARATION----------------------
//
//
//
//
//
//
//
//
//Assign appropriate types to pins (input or output).
input clock;
input reset;
input enable;
//Values from Photon Pipeline
input [31:0] i_uz1;
input [31:0] i_ux3;
input [31:0] i_uz3;
input [31:0] i_uy32;
input [31:0] i_uz32;
input [31:0] i_ux33;
input [31:0] i_uy33;
input [31:0] i_ux35;
input [31:0] i_uy35;
input [31:0] i_uz35;
input [31:0] i_uz36;
//Multiplication Results
input [63:0] prod1_2;
input [31:0] prod1_4;
input [31:0] sqrtResult1_6;
input [31:0] prod1_33;
input [31:0] prod2_33;
input [31:0] prod3_33;
input [31:0] prod1_34;
input [31:0] prod2_34;
input [31:0] prod3_34;
input [31:0] prod4_34;
input [63:0] quot1_16;
//Need all 64-bits for these two to detect overflows
input [63:0] prod1_36;
input [63:0] prod2_36;
input [31:0] prod3_36;
input [31:0] prod4_36;
input [31:0] prod5_36;
input [31:0] prod6_36;
//Trig Values from Memory
input [31:0] sint_Mem;
input [31:0] cost_Mem;
input [31:0] sinp_Mem;
input [31:0] cosp_Mem;
output [31:0] op1_2_1;
output [31:0] op1_2_2;
output [31:0] op1_4_1;
output [31:0] op1_4_2;
output [63:0] sqrtOperand1_6;
output [63:0] divNumerator1_16;
output [31:0] divDenominator1_16;
output [31:0] op1_33_1;
output [31:0] op1_33_2;
output [31:0] op2_33_1;
output [31:0] op2_33_2;
output [31:0] op3_33_1;
output [31:0] op3_33_2;
output [31:0] op1_34_1;
output [31:0] op1_34_2;
output [31:0] op2_34_1;
output [31:0] op2_34_2;
output [31:0] op3_34_1;
output [31:0] op3_34_2;
output [31:0] op4_34_1;
output [31:0] op4_34_2;
output [31:0] op1_36_1;
output [31:0] op1_36_2;
output [31:0] op2_36_1;
output [31:0] op2_36_2;
output [31:0] op3_36_1;
output [31:0] op3_36_2;
output [31:0] op4_36_1;
output [31:0] op4_36_2;
output [31:0] op5_36_1;
output [31:0] op5_36_2;
output [31:0] op6_36_1;
output [31:0] op6_36_2;
//Final Calculated Results
output [31:0] ux_scatterer;
output [31:0] uy_scatterer;
output [31:0] uz_scatterer;
//-----------------------------PIN TYPES-----------------------------
//
//
//
//
//
//
//
//
//Assign pins to be wires or regs.
wire clock;
wire reset;
wire enable;
//Values from Photon Pipeline
wire [31:0] i_uz1;
wire [31:0] i_ux3;
wire [31:0] i_uz3;
wire [31:0] i_uy32;
wire [31:0] i_uz32;
wire [31:0] i_ux33;
wire [31:0] i_uy33;
wire [31:0] i_ux35;
wire [31:0] i_uy35;
wire [31:0] i_uz35;
wire [31:0] i_uz36;
//Multiplication Results
wire [63:0] prod1_2;
wire [31:0] prod1_4;
wire [31:0] sqrtResult1_6;
wire [31:0] prod1_33;
wire [31:0] prod2_33;
wire [31:0] prod3_33;
wire [31:0] prod1_34;
wire [31:0] prod2_34;
wire [31:0] prod3_34;
wire [31:0] prod4_34;
wire [63:0] quot1_16;
wire [63:0] prod1_36;
wire [63:0] prod2_36;
wire [31:0] prod3_36;
wire [31:0] prod4_36;
wire [31:0] prod5_36;
wire [31:0] prod6_36;
//Trig Values from Memory
wire [31:0] sint_Mem;
wire [31:0] cost_Mem;
wire [31:0] sinp_Mem;
wire [31:0] cosp_Mem;
//Operands for shared resources
wire [31:0] op1_2_1;
wire [31:0] op1_2_2;
wire [31:0] op1_4_1;
wire [31:0] op1_4_2;
wire [63:0] sqrtOperand1_6;
wire [63:0] divNumerator1_16;
wire [31:0] divDenominator1_16;
wire [31:0] op1_33_1;
wire [31:0] op1_33_2;
wire [31:0] op2_33_1;
wire [31:0] op2_33_2;
wire [31:0] op3_33_1;
wire [31:0] op3_33_2;
wire [31:0] op1_34_1;
wire [31:0] op1_34_2;
wire [31:0] op2_34_1;
wire [31:0] op2_34_2;
wire [31:0] op3_34_1;
wire [31:0] op3_34_2;
wire [31:0] op4_34_1;
wire [31:0] op4_34_2;
wire [31:0] op1_36_1;
wire [31:0] op1_36_2;
wire [31:0] op2_36_1;
wire [31:0] op2_36_2;
wire [31:0] op3_36_1;
wire [31:0] op3_36_2;
wire [31:0] op4_36_1;
wire [31:0] op4_36_2;
wire [31:0] op5_36_1;
wire [31:0] op5_36_2;
wire [31:0] op6_36_1;
wire [31:0] op6_36_2;
//Final outputs
reg [31:0] ux_scatterer;
reg [31:0] uy_scatterer;
reg [31:0] uz_scatterer;
//Need this to deal with 'unused' inputs for ODIN II
wire [63:0]bigOr;
assign bigOr = quot1_16|prod1_36|prod2_36|({32'hFFFFFFFF,32'hFFFFFFFF});
wire reset_new;
assign reset_new = reset & bigOr[63] & bigOr[62] & bigOr[61] & bigOr[60] & bigOr[59] & bigOr[58] & bigOr[57] & bigOr[56] & bigOr[55] & bigOr[54] & bigOr[53] & bigOr[52] & bigOr[51] & bigOr[50] & bigOr[49] & bigOr[48] & bigOr[47] & bigOr[46] & bigOr[45] & bigOr[44] & bigOr[43] & bigOr[42] & bigOr[41] & bigOr[40] & bigOr[39] & bigOr[38] & bigOr[37] & bigOr[36] & bigOr[35] & bigOr[34] & bigOr[33] & bigOr[32] & bigOr[31] & bigOr[30] & bigOr[29] & bigOr[28] & bigOr[27] & bigOr[26] & bigOr[25] & bigOr[24] & bigOr[23] & bigOr[22] & bigOr[21] & bigOr[20] & bigOr[19] & bigOr[18] & bigOr[17] & bigOr[16] & bigOr[15] & bigOr[14] & bigOr[13] & bigOr[12] & bigOr[11] & bigOr[10] & bigOr[9] & bigOr[8] & bigOr[7] & bigOr[6] & bigOr[5] & bigOr[4] & bigOr[3] & bigOr[2] & bigOr[1] & bigOr[0];
//-----------------------------END Pin Types-------------------------
//Wires to Connect to Internal Registers
//wire [31:0] sint[`LAT:0];
//wire [31:0] cost[`LAT:0];
//wire [31:0] sinp[`LAT:0];
//wire [31:0] cosp[`LAT:0];
//wire [31:0] sintCosp[`LAT:0];
//wire [31:0] sintSinp[`LAT:0];
//wire [63:0] uz2[`LAT:0];
//wire [31:0] uxUz[`LAT:0];
//wire [31:0] uyUz[`LAT:0];
//wire [31:0] uySintSinp[`LAT:0];
//wire [63:0] oneMinusUz2[`LAT:0];
//wire [31:0] uyUzSintCosp[`LAT:0];
//wire [31:0] uxUzSintCosp[`LAT:0];
//wire [31:0] uxSintSinp[`LAT:0];
//wire [31:0] sqrtOneMinusUz2[`LAT:0];
//wire [31:0] sintCospSqrtOneMinusUz2[`LAT:0];
//wire [31:0] uxCost[`LAT:0];
//wire [31:0] uzCost[`LAT:0];
//wire [31:0] sqrtOneMinusUz2_inv[`LAT:0];
//wire [31:0] uxNumerator[`LAT:0];
//wire [31:0] uyNumerator[`LAT:0];
//wire [31:0] uyCost[`LAT:0];
//wire [31:0] uxQuotient[`LAT:0];
//wire [31:0] uyQuotient[`LAT:0];
//wire [31:0] sint[37:0];
wire [32-1:0] sint__0;
wire [32-1:0] sint__1;
wire [32-1:0] sint__2;
wire [32-1:0] sint__3;
wire [32-1:0] sint__4;
wire [32-1:0] sint__5;
wire [32-1:0] sint__6;
wire [32-1:0] sint__7;
wire [32-1:0] sint__8;
wire [32-1:0] sint__9;
wire [32-1:0] sint__10;
wire [32-1:0] sint__11;
wire [32-1:0] sint__12;
wire [32-1:0] sint__13;
wire [32-1:0] sint__14;
wire [32-1:0] sint__15;
wire [32-1:0] sint__16;
wire [32-1:0] sint__17;
wire [32-1:0] sint__18;
wire [32-1:0] sint__19;
wire [32-1:0] sint__20;
wire [32-1:0] sint__21;
wire [32-1:0] sint__22;
wire [32-1:0] sint__23;
wire [32-1:0] sint__24;
wire [32-1:0] sint__25;
wire [32-1:0] sint__26;
wire [32-1:0] sint__27;
wire [32-1:0] sint__28;
wire [32-1:0] sint__29;
wire [32-1:0] sint__30;
wire [32-1:0] sint__31;
wire [32-1:0] sint__32;
wire [32-1:0] sint__33;
wire [32-1:0] sint__34;
wire [32-1:0] sint__35;
wire [32-1:0] sint__36;
wire [32-1:0] sint__37;
//wire [31:0] cost[37:0];
wire [32-1:0] cost__0;
wire [32-1:0] cost__1;
wire [32-1:0] cost__2;
wire [32-1:0] cost__3;
wire [32-1:0] cost__4;
wire [32-1:0] cost__5;
wire [32-1:0] cost__6;
wire [32-1:0] cost__7;
wire [32-1:0] cost__8;
wire [32-1:0] cost__9;
wire [32-1:0] cost__10;
wire [32-1:0] cost__11;
wire [32-1:0] cost__12;
wire [32-1:0] cost__13;
wire [32-1:0] cost__14;
wire [32-1:0] cost__15;
wire [32-1:0] cost__16;
wire [32-1:0] cost__17;
wire [32-1:0] cost__18;
wire [32-1:0] cost__19;
wire [32-1:0] cost__20;
wire [32-1:0] cost__21;
wire [32-1:0] cost__22;
wire [32-1:0] cost__23;
wire [32-1:0] cost__24;
wire [32-1:0] cost__25;
wire [32-1:0] cost__26;
wire [32-1:0] cost__27;
wire [32-1:0] cost__28;
wire [32-1:0] cost__29;
wire [32-1:0] cost__30;
wire [32-1:0] cost__31;
wire [32-1:0] cost__32;
wire [32-1:0] cost__33;
wire [32-1:0] cost__34;
wire [32-1:0] cost__35;
wire [32-1:0] cost__36;
wire [32-1:0] cost__37;
//wire [31:0] sinp[37:0];
wire [32-1:0] sinp__0;
wire [32-1:0] sinp__1;
wire [32-1:0] sinp__2;
wire [32-1:0] sinp__3;
wire [32-1:0] sinp__4;
wire [32-1:0] sinp__5;
wire [32-1:0] sinp__6;
wire [32-1:0] sinp__7;
wire [32-1:0] sinp__8;
wire [32-1:0] sinp__9;
wire [32-1:0] sinp__10;
wire [32-1:0] sinp__11;
wire [32-1:0] sinp__12;
wire [32-1:0] sinp__13;
wire [32-1:0] sinp__14;
wire [32-1:0] sinp__15;
wire [32-1:0] sinp__16;
wire [32-1:0] sinp__17;
wire [32-1:0] sinp__18;
wire [32-1:0] sinp__19;
wire [32-1:0] sinp__20;
wire [32-1:0] sinp__21;
wire [32-1:0] sinp__22;
wire [32-1:0] sinp__23;
wire [32-1:0] sinp__24;
wire [32-1:0] sinp__25;
wire [32-1:0] sinp__26;
wire [32-1:0] sinp__27;
wire [32-1:0] sinp__28;
wire [32-1:0] sinp__29;
wire [32-1:0] sinp__30;
wire [32-1:0] sinp__31;
wire [32-1:0] sinp__32;
wire [32-1:0] sinp__33;
wire [32-1:0] sinp__34;
wire [32-1:0] sinp__35;
wire [32-1:0] sinp__36;
wire [32-1:0] sinp__37;
//wire [31:0] cosp[37:0];
wire [32-1:0] cosp__0;
wire [32-1:0] cosp__1;
wire [32-1:0] cosp__2;
wire [32-1:0] cosp__3;
wire [32-1:0] cosp__4;
wire [32-1:0] cosp__5;
wire [32-1:0] cosp__6;
wire [32-1:0] cosp__7;
wire [32-1:0] cosp__8;
wire [32-1:0] cosp__9;
wire [32-1:0] cosp__10;
wire [32-1:0] cosp__11;
wire [32-1:0] cosp__12;
wire [32-1:0] cosp__13;
wire [32-1:0] cosp__14;
wire [32-1:0] cosp__15;
wire [32-1:0] cosp__16;
wire [32-1:0] cosp__17;
wire [32-1:0] cosp__18;
wire [32-1:0] cosp__19;
wire [32-1:0] cosp__20;
wire [32-1:0] cosp__21;
wire [32-1:0] cosp__22;
wire [32-1:0] cosp__23;
wire [32-1:0] cosp__24;
wire [32-1:0] cosp__25;
wire [32-1:0] cosp__26;
wire [32-1:0] cosp__27;
wire [32-1:0] cosp__28;
wire [32-1:0] cosp__29;
wire [32-1:0] cosp__30;
wire [32-1:0] cosp__31;
wire [32-1:0] cosp__32;
wire [32-1:0] cosp__33;
wire [32-1:0] cosp__34;
wire [32-1:0] cosp__35;
wire [32-1:0] cosp__36;
wire [32-1:0] cosp__37;
//wire [31:0] sintCosp[37:0];
wire [32-1:0] sintCosp__0;
wire [32-1:0] sintCosp__1;
wire [32-1:0] sintCosp__2;
wire [32-1:0] sintCosp__3;
wire [32-1:0] sintCosp__4;
wire [32-1:0] sintCosp__5;
wire [32-1:0] sintCosp__6;
wire [32-1:0] sintCosp__7;
wire [32-1:0] sintCosp__8;
wire [32-1:0] sintCosp__9;
wire [32-1:0] sintCosp__10;
wire [32-1:0] sintCosp__11;
wire [32-1:0] sintCosp__12;
wire [32-1:0] sintCosp__13;
wire [32-1:0] sintCosp__14;
wire [32-1:0] sintCosp__15;
wire [32-1:0] sintCosp__16;
wire [32-1:0] sintCosp__17;
wire [32-1:0] sintCosp__18;
wire [32-1:0] sintCosp__19;
wire [32-1:0] sintCosp__20;
wire [32-1:0] sintCosp__21;
wire [32-1:0] sintCosp__22;
wire [32-1:0] sintCosp__23;
wire [32-1:0] sintCosp__24;
wire [32-1:0] sintCosp__25;
wire [32-1:0] sintCosp__26;
wire [32-1:0] sintCosp__27;
wire [32-1:0] sintCosp__28;
wire [32-1:0] sintCosp__29;
wire [32-1:0] sintCosp__30;
wire [32-1:0] sintCosp__31;
wire [32-1:0] sintCosp__32;
wire [32-1:0] sintCosp__33;
wire [32-1:0] sintCosp__34;
wire [32-1:0] sintCosp__35;
wire [32-1:0] sintCosp__36;
wire [32-1:0] sintCosp__37;
//wire [31:0] sintSinp[37:0];
wire [32-1:0] sintSinp__0;
wire [32-1:0] sintSinp__1;
wire [32-1:0] sintSinp__2;
wire [32-1:0] sintSinp__3;
wire [32-1:0] sintSinp__4;
wire [32-1:0] sintSinp__5;
wire [32-1:0] sintSinp__6;
wire [32-1:0] sintSinp__7;
wire [32-1:0] sintSinp__8;
wire [32-1:0] sintSinp__9;
wire [32-1:0] sintSinp__10;
wire [32-1:0] sintSinp__11;
wire [32-1:0] sintSinp__12;
wire [32-1:0] sintSinp__13;
wire [32-1:0] sintSinp__14;
wire [32-1:0] sintSinp__15;
wire [32-1:0] sintSinp__16;
wire [32-1:0] sintSinp__17;
wire [32-1:0] sintSinp__18;
wire [32-1:0] sintSinp__19;
wire [32-1:0] sintSinp__20;
wire [32-1:0] sintSinp__21;
wire [32-1:0] sintSinp__22;
wire [32-1:0] sintSinp__23;
wire [32-1:0] sintSinp__24;
wire [32-1:0] sintSinp__25;
wire [32-1:0] sintSinp__26;
wire [32-1:0] sintSinp__27;
wire [32-1:0] sintSinp__28;
wire [32-1:0] sintSinp__29;
wire [32-1:0] sintSinp__30;
wire [32-1:0] sintSinp__31;
wire [32-1:0] sintSinp__32;
wire [32-1:0] sintSinp__33;
wire [32-1:0] sintSinp__34;
wire [32-1:0] sintSinp__35;
wire [32-1:0] sintSinp__36;
wire [32-1:0] sintSinp__37;
//wire [63:0] uz2[37:0];
wire [63:0] uz2__0;
wire [63:0] uz2__1;
wire [63:0] uz2__2;
wire [63:0] uz2__3;
wire [63:0] uz2__4;
wire [63:0] uz2__5;
wire [63:0] uz2__6;
wire [63:0] uz2__7;
wire [63:0] uz2__8;
wire [63:0] uz2__9;
wire [63:0] uz2__10;
wire [63:0] uz2__11;
wire [63:0] uz2__12;
wire [63:0] uz2__13;
wire [63:0] uz2__14;
wire [63:0] uz2__15;
wire [63:0] uz2__16;
wire [63:0] uz2__17;
wire [63:0] uz2__18;
wire [63:0] uz2__19;
wire [63:0] uz2__20;
wire [63:0] uz2__21;
wire [63:0] uz2__22;
wire [63:0] uz2__23;
wire [63:0] uz2__24;
wire [63:0] uz2__25;
wire [63:0] uz2__26;
wire [63:0] uz2__27;
wire [63:0] uz2__28;
wire [63:0] uz2__29;
wire [63:0] uz2__30;
wire [63:0] uz2__31;
wire [63:0] uz2__32;
wire [63:0] uz2__33;
wire [63:0] uz2__34;
wire [63:0] uz2__35;
wire [63:0] uz2__36;
wire [63:0] uz2__37;
//wire [31:0] uxUz[37:0];
wire [32-1:0] uxUz__0;
wire [32-1:0] uxUz__1;
wire [32-1:0] uxUz__2;
wire [32-1:0] uxUz__3;
wire [32-1:0] uxUz__4;
wire [32-1:0] uxUz__5;
wire [32-1:0] uxUz__6;
wire [32-1:0] uxUz__7;
wire [32-1:0] uxUz__8;
wire [32-1:0] uxUz__9;
wire [32-1:0] uxUz__10;
wire [32-1:0] uxUz__11;
wire [32-1:0] uxUz__12;
wire [32-1:0] uxUz__13;
wire [32-1:0] uxUz__14;
wire [32-1:0] uxUz__15;
wire [32-1:0] uxUz__16;
wire [32-1:0] uxUz__17;
wire [32-1:0] uxUz__18;
wire [32-1:0] uxUz__19;
wire [32-1:0] uxUz__20;
wire [32-1:0] uxUz__21;
wire [32-1:0] uxUz__22;
wire [32-1:0] uxUz__23;
wire [32-1:0] uxUz__24;
wire [32-1:0] uxUz__25;
wire [32-1:0] uxUz__26;
wire [32-1:0] uxUz__27;
wire [32-1:0] uxUz__28;
wire [32-1:0] uxUz__29;
wire [32-1:0] uxUz__30;
wire [32-1:0] uxUz__31;
wire [32-1:0] uxUz__32;
wire [32-1:0] uxUz__33;
wire [32-1:0] uxUz__34;
wire [32-1:0] uxUz__35;
wire [32-1:0] uxUz__36;
wire [32-1:0] uxUz__37;
//wire [31:0] uyUz[37:0];
wire [32-1:0] uyUz__0;
wire [32-1:0] uyUz__1;
wire [32-1:0] uyUz__2;
wire [32-1:0] uyUz__3;
wire [32-1:0] uyUz__4;
wire [32-1:0] uyUz__5;
wire [32-1:0] uyUz__6;
wire [32-1:0] uyUz__7;
wire [32-1:0] uyUz__8;
wire [32-1:0] uyUz__9;
wire [32-1:0] uyUz__10;
wire [32-1:0] uyUz__11;
wire [32-1:0] uyUz__12;
wire [32-1:0] uyUz__13;
wire [32-1:0] uyUz__14;
wire [32-1:0] uyUz__15;
wire [32-1:0] uyUz__16;
wire [32-1:0] uyUz__17;
wire [32-1:0] uyUz__18;
wire [32-1:0] uyUz__19;
wire [32-1:0] uyUz__20;
wire [32-1:0] uyUz__21;
wire [32-1:0] uyUz__22;
wire [32-1:0] uyUz__23;
wire [32-1:0] uyUz__24;
wire [32-1:0] uyUz__25;
wire [32-1:0] uyUz__26;
wire [32-1:0] uyUz__27;
wire [32-1:0] uyUz__28;
wire [32-1:0] uyUz__29;
wire [32-1:0] uyUz__30;
wire [32-1:0] uyUz__31;
wire [32-1:0] uyUz__32;
wire [32-1:0] uyUz__33;
wire [32-1:0] uyUz__34;
wire [32-1:0] uyUz__35;
wire [32-1:0] uyUz__36;
wire [32-1:0] uyUz__37;
//wire [31:0] uySintSinp[37:0];
wire [32-1:0] uySintSinp__0;
wire [32-1:0] uySintSinp__1;
wire [32-1:0] uySintSinp__2;
wire [32-1:0] uySintSinp__3;
wire [32-1:0] uySintSinp__4;
wire [32-1:0] uySintSinp__5;
wire [32-1:0] uySintSinp__6;
wire [32-1:0] uySintSinp__7;
wire [32-1:0] uySintSinp__8;
wire [32-1:0] uySintSinp__9;
wire [32-1:0] uySintSinp__10;
wire [32-1:0] uySintSinp__11;
wire [32-1:0] uySintSinp__12;
wire [32-1:0] uySintSinp__13;
wire [32-1:0] uySintSinp__14;
wire [32-1:0] uySintSinp__15;
wire [32-1:0] uySintSinp__16;
wire [32-1:0] uySintSinp__17;
wire [32-1:0] uySintSinp__18;
wire [32-1:0] uySintSinp__19;
wire [32-1:0] uySintSinp__20;
wire [32-1:0] uySintSinp__21;
wire [32-1:0] uySintSinp__22;
wire [32-1:0] uySintSinp__23;
wire [32-1:0] uySintSinp__24;
wire [32-1:0] uySintSinp__25;
wire [32-1:0] uySintSinp__26;
wire [32-1:0] uySintSinp__27;
wire [32-1:0] uySintSinp__28;
wire [32-1:0] uySintSinp__29;
wire [32-1:0] uySintSinp__30;
wire [32-1:0] uySintSinp__31;
wire [32-1:0] uySintSinp__32;
wire [32-1:0] uySintSinp__33;
wire [32-1:0] uySintSinp__34;
wire [32-1:0] uySintSinp__35;
wire [32-1:0] uySintSinp__36;
wire [32-1:0] uySintSinp__37;
//wire [63:0] oneMinusUz2[37:0];
wire [63:0] oneMinusUz2__0;
wire [63:0] oneMinusUz2__1;
wire [63:0] oneMinusUz2__2;
wire [63:0] oneMinusUz2__3;
wire [63:0] oneMinusUz2__4;
wire [63:0] oneMinusUz2__5;
wire [63:0] oneMinusUz2__6;
wire [63:0] oneMinusUz2__7;
wire [63:0] oneMinusUz2__8;
wire [63:0] oneMinusUz2__9;
wire [63:0] oneMinusUz2__10;
wire [63:0] oneMinusUz2__11;
wire [63:0] oneMinusUz2__12;
wire [63:0] oneMinusUz2__13;
wire [63:0] oneMinusUz2__14;
wire [63:0] oneMinusUz2__15;
wire [63:0] oneMinusUz2__16;
wire [63:0] oneMinusUz2__17;
wire [63:0] oneMinusUz2__18;
wire [63:0] oneMinusUz2__19;
wire [63:0] oneMinusUz2__20;
wire [63:0] oneMinusUz2__21;
wire [63:0] oneMinusUz2__22;
wire [63:0] oneMinusUz2__23;
wire [63:0] oneMinusUz2__24;
wire [63:0] oneMinusUz2__25;
wire [63:0] oneMinusUz2__26;
wire [63:0] oneMinusUz2__27;
wire [63:0] oneMinusUz2__28;
wire [63:0] oneMinusUz2__29;
wire [63:0] oneMinusUz2__30;
wire [63:0] oneMinusUz2__31;
wire [63:0] oneMinusUz2__32;
wire [63:0] oneMinusUz2__33;
wire [63:0] oneMinusUz2__34;
wire [63:0] oneMinusUz2__35;
wire [63:0] oneMinusUz2__36;
wire [63:0] oneMinusUz2__37;
//wire [31:0] uyUzSintCosp[37:0];
wire [32-1:0] uyUzSintCosp__0;
wire [32-1:0] uyUzSintCosp__1;
wire [32-1:0] uyUzSintCosp__2;
wire [32-1:0] uyUzSintCosp__3;
wire [32-1:0] uyUzSintCosp__4;
wire [32-1:0] uyUzSintCosp__5;
wire [32-1:0] uyUzSintCosp__6;
wire [32-1:0] uyUzSintCosp__7;
wire [32-1:0] uyUzSintCosp__8;
wire [32-1:0] uyUzSintCosp__9;
wire [32-1:0] uyUzSintCosp__10;
wire [32-1:0] uyUzSintCosp__11;
wire [32-1:0] uyUzSintCosp__12;
wire [32-1:0] uyUzSintCosp__13;
wire [32-1:0] uyUzSintCosp__14;
wire [32-1:0] uyUzSintCosp__15;
wire [32-1:0] uyUzSintCosp__16;
wire [32-1:0] uyUzSintCosp__17;
wire [32-1:0] uyUzSintCosp__18;
wire [32-1:0] uyUzSintCosp__19;
wire [32-1:0] uyUzSintCosp__20;
wire [32-1:0] uyUzSintCosp__21;
wire [32-1:0] uyUzSintCosp__22;
wire [32-1:0] uyUzSintCosp__23;
wire [32-1:0] uyUzSintCosp__24;
wire [32-1:0] uyUzSintCosp__25;
wire [32-1:0] uyUzSintCosp__26;
wire [32-1:0] uyUzSintCosp__27;
wire [32-1:0] uyUzSintCosp__28;
wire [32-1:0] uyUzSintCosp__29;
wire [32-1:0] uyUzSintCosp__30;
wire [32-1:0] uyUzSintCosp__31;
wire [32-1:0] uyUzSintCosp__32;
wire [32-1:0] uyUzSintCosp__33;
wire [32-1:0] uyUzSintCosp__34;
wire [32-1:0] uyUzSintCosp__35;
wire [32-1:0] uyUzSintCosp__36;
wire [32-1:0] uyUzSintCosp__37;
//wire [31:0] uxUzSintCosp[37:0];
wire [32-1:0] uxUzSintCosp__0;
wire [32-1:0] uxUzSintCosp__1;
wire [32-1:0] uxUzSintCosp__2;
wire [32-1:0] uxUzSintCosp__3;
wire [32-1:0] uxUzSintCosp__4;
wire [32-1:0] uxUzSintCosp__5;
wire [32-1:0] uxUzSintCosp__6;
wire [32-1:0] uxUzSintCosp__7;
wire [32-1:0] uxUzSintCosp__8;
wire [32-1:0] uxUzSintCosp__9;
wire [32-1:0] uxUzSintCosp__10;
wire [32-1:0] uxUzSintCosp__11;
wire [32-1:0] uxUzSintCosp__12;
wire [32-1:0] uxUzSintCosp__13;
wire [32-1:0] uxUzSintCosp__14;
wire [32-1:0] uxUzSintCosp__15;
wire [32-1:0] uxUzSintCosp__16;
wire [32-1:0] uxUzSintCosp__17;
wire [32-1:0] uxUzSintCosp__18;
wire [32-1:0] uxUzSintCosp__19;
wire [32-1:0] uxUzSintCosp__20;
wire [32-1:0] uxUzSintCosp__21;
wire [32-1:0] uxUzSintCosp__22;
wire [32-1:0] uxUzSintCosp__23;
wire [32-1:0] uxUzSintCosp__24;
wire [32-1:0] uxUzSintCosp__25;
wire [32-1:0] uxUzSintCosp__26;
wire [32-1:0] uxUzSintCosp__27;
wire [32-1:0] uxUzSintCosp__28;
wire [32-1:0] uxUzSintCosp__29;
wire [32-1:0] uxUzSintCosp__30;
wire [32-1:0] uxUzSintCosp__31;
wire [32-1:0] uxUzSintCosp__32;
wire [32-1:0] uxUzSintCosp__33;
wire [32-1:0] uxUzSintCosp__34;
wire [32-1:0] uxUzSintCosp__35;
wire [32-1:0] uxUzSintCosp__36;
wire [32-1:0] uxUzSintCosp__37;
//wire [31:0] uxSintSinp[37:0];
wire [32-1:0] uxSintSinp__0;
wire [32-1:0] uxSintSinp__1;
wire [32-1:0] uxSintSinp__2;
wire [32-1:0] uxSintSinp__3;
wire [32-1:0] uxSintSinp__4;
wire [32-1:0] uxSintSinp__5;
wire [32-1:0] uxSintSinp__6;
wire [32-1:0] uxSintSinp__7;
wire [32-1:0] uxSintSinp__8;
wire [32-1:0] uxSintSinp__9;
wire [32-1:0] uxSintSinp__10;
wire [32-1:0] uxSintSinp__11;
wire [32-1:0] uxSintSinp__12;
wire [32-1:0] uxSintSinp__13;
wire [32-1:0] uxSintSinp__14;
wire [32-1:0] uxSintSinp__15;
wire [32-1:0] uxSintSinp__16;
wire [32-1:0] uxSintSinp__17;
wire [32-1:0] uxSintSinp__18;
wire [32-1:0] uxSintSinp__19;
wire [32-1:0] uxSintSinp__20;
wire [32-1:0] uxSintSinp__21;
wire [32-1:0] uxSintSinp__22;
wire [32-1:0] uxSintSinp__23;
wire [32-1:0] uxSintSinp__24;
wire [32-1:0] uxSintSinp__25;
wire [32-1:0] uxSintSinp__26;
wire [32-1:0] uxSintSinp__27;
wire [32-1:0] uxSintSinp__28;
wire [32-1:0] uxSintSinp__29;
wire [32-1:0] uxSintSinp__30;
wire [32-1:0] uxSintSinp__31;
wire [32-1:0] uxSintSinp__32;
wire [32-1:0] uxSintSinp__33;
wire [32-1:0] uxSintSinp__34;
wire [32-1:0] uxSintSinp__35;
wire [32-1:0] uxSintSinp__36;
wire [32-1:0] uxSintSinp__37;
//wire [31:0] sqrtOneMinusUz2[37:0];
wire [32-1:0] sqrtOneMinusUz2__0;
wire [32-1:0] sqrtOneMinusUz2__1;
wire [32-1:0] sqrtOneMinusUz2__2;
wire [32-1:0] sqrtOneMinusUz2__3;
wire [32-1:0] sqrtOneMinusUz2__4;
wire [32-1:0] sqrtOneMinusUz2__5;
wire [32-1:0] sqrtOneMinusUz2__6;
wire [32-1:0] sqrtOneMinusUz2__7;
wire [32-1:0] sqrtOneMinusUz2__8;
wire [32-1:0] sqrtOneMinusUz2__9;
wire [32-1:0] sqrtOneMinusUz2__10;
wire [32-1:0] sqrtOneMinusUz2__11;
wire [32-1:0] sqrtOneMinusUz2__12;
wire [32-1:0] sqrtOneMinusUz2__13;
wire [32-1:0] sqrtOneMinusUz2__14;
wire [32-1:0] sqrtOneMinusUz2__15;
wire [32-1:0] sqrtOneMinusUz2__16;
wire [32-1:0] sqrtOneMinusUz2__17;
wire [32-1:0] sqrtOneMinusUz2__18;
wire [32-1:0] sqrtOneMinusUz2__19;
wire [32-1:0] sqrtOneMinusUz2__20;
wire [32-1:0] sqrtOneMinusUz2__21;
wire [32-1:0] sqrtOneMinusUz2__22;
wire [32-1:0] sqrtOneMinusUz2__23;
wire [32-1:0] sqrtOneMinusUz2__24;
wire [32-1:0] sqrtOneMinusUz2__25;
wire [32-1:0] sqrtOneMinusUz2__26;
wire [32-1:0] sqrtOneMinusUz2__27;
wire [32-1:0] sqrtOneMinusUz2__28;
wire [32-1:0] sqrtOneMinusUz2__29;
wire [32-1:0] sqrtOneMinusUz2__30;
wire [32-1:0] sqrtOneMinusUz2__31;
wire [32-1:0] sqrtOneMinusUz2__32;
wire [32-1:0] sqrtOneMinusUz2__33;
wire [32-1:0] sqrtOneMinusUz2__34;
wire [32-1:0] sqrtOneMinusUz2__35;
wire [32-1:0] sqrtOneMinusUz2__36;
wire [32-1:0] sqrtOneMinusUz2__37;
//wire [31:0] sintCospSqrtOneMinusUz2[37:0];
wire [32-1:0] sintCospSqrtOneMinusUz2__0;
wire [32-1:0] sintCospSqrtOneMinusUz2__1;
wire [32-1:0] sintCospSqrtOneMinusUz2__2;
wire [32-1:0] sintCospSqrtOneMinusUz2__3;
wire [32-1:0] sintCospSqrtOneMinusUz2__4;
wire [32-1:0] sintCospSqrtOneMinusUz2__5;
wire [32-1:0] sintCospSqrtOneMinusUz2__6;
wire [32-1:0] sintCospSqrtOneMinusUz2__7;
wire [32-1:0] sintCospSqrtOneMinusUz2__8;
wire [32-1:0] sintCospSqrtOneMinusUz2__9;
wire [32-1:0] sintCospSqrtOneMinusUz2__10;
wire [32-1:0] sintCospSqrtOneMinusUz2__11;
wire [32-1:0] sintCospSqrtOneMinusUz2__12;
wire [32-1:0] sintCospSqrtOneMinusUz2__13;
wire [32-1:0] sintCospSqrtOneMinusUz2__14;
wire [32-1:0] sintCospSqrtOneMinusUz2__15;
wire [32-1:0] sintCospSqrtOneMinusUz2__16;
wire [32-1:0] sintCospSqrtOneMinusUz2__17;
wire [32-1:0] sintCospSqrtOneMinusUz2__18;
wire [32-1:0] sintCospSqrtOneMinusUz2__19;
wire [32-1:0] sintCospSqrtOneMinusUz2__20;
wire [32-1:0] sintCospSqrtOneMinusUz2__21;
wire [32-1:0] sintCospSqrtOneMinusUz2__22;
wire [32-1:0] sintCospSqrtOneMinusUz2__23;
wire [32-1:0] sintCospSqrtOneMinusUz2__24;
wire [32-1:0] sintCospSqrtOneMinusUz2__25;
wire [32-1:0] sintCospSqrtOneMinusUz2__26;
wire [32-1:0] sintCospSqrtOneMinusUz2__27;
wire [32-1:0] sintCospSqrtOneMinusUz2__28;
wire [32-1:0] sintCospSqrtOneMinusUz2__29;
wire [32-1:0] sintCospSqrtOneMinusUz2__30;
wire [32-1:0] sintCospSqrtOneMinusUz2__31;
wire [32-1:0] sintCospSqrtOneMinusUz2__32;
wire [32-1:0] sintCospSqrtOneMinusUz2__33;
wire [32-1:0] sintCospSqrtOneMinusUz2__34;
wire [32-1:0] sintCospSqrtOneMinusUz2__35;
wire [32-1:0] sintCospSqrtOneMinusUz2__36;
wire [32-1:0] sintCospSqrtOneMinusUz2__37;
//wire [31:0] uxCost[37:0];
wire [32-1:0] uxCost__0;
wire [32-1:0] uxCost__1;
wire [32-1:0] uxCost__2;
wire [32-1:0] uxCost__3;
wire [32-1:0] uxCost__4;
wire [32-1:0] uxCost__5;
wire [32-1:0] uxCost__6;
wire [32-1:0] uxCost__7;
wire [32-1:0] uxCost__8;
wire [32-1:0] uxCost__9;
wire [32-1:0] uxCost__10;
wire [32-1:0] uxCost__11;
wire [32-1:0] uxCost__12;
wire [32-1:0] uxCost__13;
wire [32-1:0] uxCost__14;
wire [32-1:0] uxCost__15;
wire [32-1:0] uxCost__16;
wire [32-1:0] uxCost__17;
wire [32-1:0] uxCost__18;
wire [32-1:0] uxCost__19;
wire [32-1:0] uxCost__20;
wire [32-1:0] uxCost__21;
wire [32-1:0] uxCost__22;
wire [32-1:0] uxCost__23;
wire [32-1:0] uxCost__24;
wire [32-1:0] uxCost__25;
wire [32-1:0] uxCost__26;
wire [32-1:0] uxCost__27;
wire [32-1:0] uxCost__28;
wire [32-1:0] uxCost__29;
wire [32-1:0] uxCost__30;
wire [32-1:0] uxCost__31;
wire [32-1:0] uxCost__32;
wire [32-1:0] uxCost__33;
wire [32-1:0] uxCost__34;
wire [32-1:0] uxCost__35;
wire [32-1:0] uxCost__36;
wire [32-1:0] uxCost__37;
//wire [31:0] uzCost[37:0];
wire [32-1:0] uzCost__0;
wire [32-1:0] uzCost__1;
wire [32-1:0] uzCost__2;
wire [32-1:0] uzCost__3;
wire [32-1:0] uzCost__4;
wire [32-1:0] uzCost__5;
wire [32-1:0] uzCost__6;
wire [32-1:0] uzCost__7;
wire [32-1:0] uzCost__8;
wire [32-1:0] uzCost__9;
wire [32-1:0] uzCost__10;
wire [32-1:0] uzCost__11;
wire [32-1:0] uzCost__12;
wire [32-1:0] uzCost__13;
wire [32-1:0] uzCost__14;
wire [32-1:0] uzCost__15;
wire [32-1:0] uzCost__16;
wire [32-1:0] uzCost__17;
wire [32-1:0] uzCost__18;
wire [32-1:0] uzCost__19;
wire [32-1:0] uzCost__20;
wire [32-1:0] uzCost__21;
wire [32-1:0] uzCost__22;
wire [32-1:0] uzCost__23;
wire [32-1:0] uzCost__24;
wire [32-1:0] uzCost__25;
wire [32-1:0] uzCost__26;
wire [32-1:0] uzCost__27;
wire [32-1:0] uzCost__28;
wire [32-1:0] uzCost__29;
wire [32-1:0] uzCost__30;
wire [32-1:0] uzCost__31;
wire [32-1:0] uzCost__32;
wire [32-1:0] uzCost__33;
wire [32-1:0] uzCost__34;
wire [32-1:0] uzCost__35;
wire [32-1:0] uzCost__36;
wire [32-1:0] uzCost__37;
//wire [31:0] sqrtOneMinusUz2_inv[37:0];
wire [32-1:0] sqrtOneMinusUz2_inv__0;
wire [32-1:0] sqrtOneMinusUz2_inv__1;
wire [32-1:0] sqrtOneMinusUz2_inv__2;
wire [32-1:0] sqrtOneMinusUz2_inv__3;
wire [32-1:0] sqrtOneMinusUz2_inv__4;
wire [32-1:0] sqrtOneMinusUz2_inv__5;
wire [32-1:0] sqrtOneMinusUz2_inv__6;
wire [32-1:0] sqrtOneMinusUz2_inv__7;
wire [32-1:0] sqrtOneMinusUz2_inv__8;
wire [32-1:0] sqrtOneMinusUz2_inv__9;
wire [32-1:0] sqrtOneMinusUz2_inv__10;
wire [32-1:0] sqrtOneMinusUz2_inv__11;
wire [32-1:0] sqrtOneMinusUz2_inv__12;
wire [32-1:0] sqrtOneMinusUz2_inv__13;
wire [32-1:0] sqrtOneMinusUz2_inv__14;
wire [32-1:0] sqrtOneMinusUz2_inv__15;
wire [32-1:0] sqrtOneMinusUz2_inv__16;
wire [32-1:0] sqrtOneMinusUz2_inv__17;
wire [32-1:0] sqrtOneMinusUz2_inv__18;
wire [32-1:0] sqrtOneMinusUz2_inv__19;
wire [32-1:0] sqrtOneMinusUz2_inv__20;
wire [32-1:0] sqrtOneMinusUz2_inv__21;
wire [32-1:0] sqrtOneMinusUz2_inv__22;
wire [32-1:0] sqrtOneMinusUz2_inv__23;
wire [32-1:0] sqrtOneMinusUz2_inv__24;
wire [32-1:0] sqrtOneMinusUz2_inv__25;
wire [32-1:0] sqrtOneMinusUz2_inv__26;
wire [32-1:0] sqrtOneMinusUz2_inv__27;
wire [32-1:0] sqrtOneMinusUz2_inv__28;
wire [32-1:0] sqrtOneMinusUz2_inv__29;
wire [32-1:0] sqrtOneMinusUz2_inv__30;
wire [32-1:0] sqrtOneMinusUz2_inv__31;
wire [32-1:0] sqrtOneMinusUz2_inv__32;
wire [32-1:0] sqrtOneMinusUz2_inv__33;
wire [32-1:0] sqrtOneMinusUz2_inv__34;
wire [32-1:0] sqrtOneMinusUz2_inv__35;
wire [32-1:0] sqrtOneMinusUz2_inv__36;
wire [32-1:0] sqrtOneMinusUz2_inv__37;
//wire [31:0] uxNumerator[37:0];
wire [32-1:0] uxNumerator__0;
wire [32-1:0] uxNumerator__1;
wire [32-1:0] uxNumerator__2;
wire [32-1:0] uxNumerator__3;
wire [32-1:0] uxNumerator__4;
wire [32-1:0] uxNumerator__5;
wire [32-1:0] uxNumerator__6;
wire [32-1:0] uxNumerator__7;
wire [32-1:0] uxNumerator__8;
wire [32-1:0] uxNumerator__9;
wire [32-1:0] uxNumerator__10;
wire [32-1:0] uxNumerator__11;
wire [32-1:0] uxNumerator__12;
wire [32-1:0] uxNumerator__13;
wire [32-1:0] uxNumerator__14;
wire [32-1:0] uxNumerator__15;
wire [32-1:0] uxNumerator__16;
wire [32-1:0] uxNumerator__17;
wire [32-1:0] uxNumerator__18;
wire [32-1:0] uxNumerator__19;
wire [32-1:0] uxNumerator__20;
wire [32-1:0] uxNumerator__21;
wire [32-1:0] uxNumerator__22;
wire [32-1:0] uxNumerator__23;
wire [32-1:0] uxNumerator__24;
wire [32-1:0] uxNumerator__25;
wire [32-1:0] uxNumerator__26;
wire [32-1:0] uxNumerator__27;
wire [32-1:0] uxNumerator__28;
wire [32-1:0] uxNumerator__29;
wire [32-1:0] uxNumerator__30;
wire [32-1:0] uxNumerator__31;
wire [32-1:0] uxNumerator__32;
wire [32-1:0] uxNumerator__33;
wire [32-1:0] uxNumerator__34;
wire [32-1:0] uxNumerator__35;
wire [32-1:0] uxNumerator__36;
wire [32-1:0] uxNumerator__37;
//wire [31:0] uyNumerator[37:0];
wire [32-1:0] uyNumerator__0;
wire [32-1:0] uyNumerator__1;
wire [32-1:0] uyNumerator__2;
wire [32-1:0] uyNumerator__3;
wire [32-1:0] uyNumerator__4;
wire [32-1:0] uyNumerator__5;
wire [32-1:0] uyNumerator__6;
wire [32-1:0] uyNumerator__7;
wire [32-1:0] uyNumerator__8;
wire [32-1:0] uyNumerator__9;
wire [32-1:0] uyNumerator__10;
wire [32-1:0] uyNumerator__11;
wire [32-1:0] uyNumerator__12;
wire [32-1:0] uyNumerator__13;
wire [32-1:0] uyNumerator__14;
wire [32-1:0] uyNumerator__15;
wire [32-1:0] uyNumerator__16;
wire [32-1:0] uyNumerator__17;
wire [32-1:0] uyNumerator__18;
wire [32-1:0] uyNumerator__19;
wire [32-1:0] uyNumerator__20;
wire [32-1:0] uyNumerator__21;
wire [32-1:0] uyNumerator__22;
wire [32-1:0] uyNumerator__23;
wire [32-1:0] uyNumerator__24;
wire [32-1:0] uyNumerator__25;
wire [32-1:0] uyNumerator__26;
wire [32-1:0] uyNumerator__27;
wire [32-1:0] uyNumerator__28;
wire [32-1:0] uyNumerator__29;
wire [32-1:0] uyNumerator__30;
wire [32-1:0] uyNumerator__31;
wire [32-1:0] uyNumerator__32;
wire [32-1:0] uyNumerator__33;
wire [32-1:0] uyNumerator__34;
wire [32-1:0] uyNumerator__35;
wire [32-1:0] uyNumerator__36;
wire [32-1:0] uyNumerator__37;
//wire [31:0] uyCost[37:0];
wire [32-1:0] uyCost__0;
wire [32-1:0] uyCost__1;
wire [32-1:0] uyCost__2;
wire [32-1:0] uyCost__3;
wire [32-1:0] uyCost__4;
wire [32-1:0] uyCost__5;
wire [32-1:0] uyCost__6;
wire [32-1:0] uyCost__7;
wire [32-1:0] uyCost__8;
wire [32-1:0] uyCost__9;
wire [32-1:0] uyCost__10;
wire [32-1:0] uyCost__11;
wire [32-1:0] uyCost__12;
wire [32-1:0] uyCost__13;
wire [32-1:0] uyCost__14;
wire [32-1:0] uyCost__15;
wire [32-1:0] uyCost__16;
wire [32-1:0] uyCost__17;
wire [32-1:0] uyCost__18;
wire [32-1:0] uyCost__19;
wire [32-1:0] uyCost__20;
wire [32-1:0] uyCost__21;
wire [32-1:0] uyCost__22;
wire [32-1:0] uyCost__23;
wire [32-1:0] uyCost__24;
wire [32-1:0] uyCost__25;
wire [32-1:0] uyCost__26;
wire [32-1:0] uyCost__27;
wire [32-1:0] uyCost__28;
wire [32-1:0] uyCost__29;
wire [32-1:0] uyCost__30;
wire [32-1:0] uyCost__31;
wire [32-1:0] uyCost__32;
wire [32-1:0] uyCost__33;
wire [32-1:0] uyCost__34;
wire [32-1:0] uyCost__35;
wire [32-1:0] uyCost__36;
wire [32-1:0] uyCost__37;
//wire [31:0] uxQuotient[37:0];
wire [32-1:0] uxQuotient__0;
wire [32-1:0] uxQuotient__1;
wire [32-1:0] uxQuotient__2;
wire [32-1:0] uxQuotient__3;
wire [32-1:0] uxQuotient__4;
wire [32-1:0] uxQuotient__5;
wire [32-1:0] uxQuotient__6;
wire [32-1:0] uxQuotient__7;
wire [32-1:0] uxQuotient__8;
wire [32-1:0] uxQuotient__9;
wire [32-1:0] uxQuotient__10;
wire [32-1:0] uxQuotient__11;
wire [32-1:0] uxQuotient__12;
wire [32-1:0] uxQuotient__13;
wire [32-1:0] uxQuotient__14;
wire [32-1:0] uxQuotient__15;
wire [32-1:0] uxQuotient__16;
wire [32-1:0] uxQuotient__17;
wire [32-1:0] uxQuotient__18;
wire [32-1:0] uxQuotient__19;
wire [32-1:0] uxQuotient__20;
wire [32-1:0] uxQuotient__21;
wire [32-1:0] uxQuotient__22;
wire [32-1:0] uxQuotient__23;
wire [32-1:0] uxQuotient__24;
wire [32-1:0] uxQuotient__25;
wire [32-1:0] uxQuotient__26;
wire [32-1:0] uxQuotient__27;
wire [32-1:0] uxQuotient__28;
wire [32-1:0] uxQuotient__29;
wire [32-1:0] uxQuotient__30;
wire [32-1:0] uxQuotient__31;
wire [32-1:0] uxQuotient__32;
wire [32-1:0] uxQuotient__33;
wire [32-1:0] uxQuotient__34;
wire [32-1:0] uxQuotient__35;
wire [32-1:0] uxQuotient__36;
wire [32-1:0] uxQuotient__37;
//wire [31:0] uyQuotient[37:0];
wire [32-1:0] uyQuotient__0;
wire [32-1:0] uyQuotient__1;
wire [32-1:0] uyQuotient__2;
wire [32-1:0] uyQuotient__3;
wire [32-1:0] uyQuotient__4;
wire [32-1:0] uyQuotient__5;
wire [32-1:0] uyQuotient__6;
wire [32-1:0] uyQuotient__7;
wire [32-1:0] uyQuotient__8;
wire [32-1:0] uyQuotient__9;
wire [32-1:0] uyQuotient__10;
wire [32-1:0] uyQuotient__11;
wire [32-1:0] uyQuotient__12;
wire [32-1:0] uyQuotient__13;
wire [32-1:0] uyQuotient__14;
wire [32-1:0] uyQuotient__15;
wire [32-1:0] uyQuotient__16;
wire [32-1:0] uyQuotient__17;
wire [32-1:0] uyQuotient__18;
wire [32-1:0] uyQuotient__19;
wire [32-1:0] uyQuotient__20;
wire [32-1:0] uyQuotient__21;
wire [32-1:0] uyQuotient__22;
wire [32-1:0] uyQuotient__23;
wire [32-1:0] uyQuotient__24;
wire [32-1:0] uyQuotient__25;
wire [32-1:0] uyQuotient__26;
wire [32-1:0] uyQuotient__27;
wire [32-1:0] uyQuotient__28;
wire [32-1:0] uyQuotient__29;
wire [32-1:0] uyQuotient__30;
wire [32-1:0] uyQuotient__31;
wire [32-1:0] uyQuotient__32;
wire [32-1:0] uyQuotient__33;
wire [32-1:0] uyQuotient__34;
wire [32-1:0] uyQuotient__35;
wire [32-1:0] uyQuotient__36;
wire [32-1:0] uyQuotient__37;
wire [31:0] new_sint;
wire [31:0] new_cost;
wire [31:0] new_sinp;
wire [31:0] new_cosp;
wire [31:0] new_sintCosp;
wire [31:0] new_sintSinp;
wire [63:0] new_uz2;
wire [31:0] new_uxUz;
wire [31:0] new_uyUz;
wire [31:0] new_uySintSinp;
wire [63:0] new_oneMinusUz2;
wire [31:0] new_uyUzSintCosp;
wire [31:0] new_uxUzSintCosp;
wire [31:0] new_uxSintSinp;
wire [31:0] new_sqrtOneMinusUz2;
wire [31:0] new_sintCospSqrtOneMinusUz2;
wire [31:0] new_uxCost;
wire [31:0] new_uzCost;
wire [31:0] new_sqrtOneMinusUz2_inv;
wire [31:0] new_uxNumerator;
wire [31:0] new_uyNumerator;
wire [31:0] new_uyCost;
reg [31:0] new_uxQuotient;
reg [31:0] new_uyQuotient;
//Wiring for calculating final values
wire uxNumerOverflow;
wire uyNumerOverflow;
reg normalIncident;
wire [31:0] ux_add_1;
wire [31:0] ux_add_2;
wire uxOverflow;
wire [31:0] uy_add_1;
wire [31:0] uy_add_2;
wire uyOverflow;
wire [31:0] normalUz;
wire [31:0] uz_sub_1;
wire [31:0] uz_sub_2;
wire uzOverflow;
wire [31:0] new_ux;
wire [31:0] new_uy;
wire [31:0] new_uz;
wire div_overflow;
wire toAnd1_36_1;
wire toAnd1_36_2;
wire overflow1_36;
wire negOverflow1_36;
wire toAnd2_36_1;
wire toAnd2_36_2;
wire overflow2_36;
wire negOverflow2_36;
//------------------Register Pipeline-----------------
//Generation Methodology: Standard block, called InternalsBlock, is
//repeated multiple times, based on the latency of the reflector and
//scatterer. This block contains the list of all internal variables
//that need to be registered and passed along in the pipeline.
//
//Previous values in the pipeline are passed to the next register on each
//clock tick. The exception comes when an internal variable gets
//calculated. Each time a new internal variable is calculated, a new
//case is added to the case statement, and instead of hooking previous
//values of that variable to next, the new, calculated values are hooked up.
//
//This method will generate many more registers than what are required, but
//it is expected that the synthesis tool will synthesize these away.
//
//
//Commenting Convention: Whenever a new value is injected into the pipe, the
//comment //Changed Value is added directly above the variable in question.
//When multiple values are calculated in a single clock cycle, multiple such
//comments are placed. Wires connected to "Changed Values" always start with
//the prefix new_.
//
//GENERATE PIPELINE
//genvar i;
//generate
// for(i=`LAT; i>0; i=i-1) begin: internalPipe
// case(i)
//
// 2:
// InternalsBlock pipeReg(
// //Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_sint(sint[i-1]),
// .i_cost(cost[i-1]),
// .i_sinp(sinp[i-1]),
// .i_cosp(cosp[i-1]),
// .i_sintCosp(sintCosp[i-1]),
// .i_sintSinp(sintSinp[i-1]),
// //Changed Value
// .i_uz2(new_uz2),
// .i_uxUz(uxUz[i-1]),
// .i_uyUz(uyUz[i-1]),
// .i_uySintSinp(uySintSinp[i-1]),
// .i_oneMinusUz2(oneMinusUz2[i-1]),
// .i_uyUzSintCosp(uyUzSintCosp[i-1]),
// .i_uxUzSintCosp(uxUzSintCosp[i-1]),
// .i_uxSintSinp(uxSintSinp[i-1]),
// .i_sqrtOneMinusUz2(sqrtOneMinusUz2[i-1]),
// .i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i-1]),
// .i_uxCost(uxCost[i-1]),
// .i_uzCost(uzCost[i-1]),
// .i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i-1]),
// .i_uxNumerator(uxNumerator[i-1]),
// .i_uyNumerator(uyNumerator[i-1]),
// .i_uyCost(uyCost[i-1]),
// .i_uxQuotient(uxQuotient[i-1]),
// .i_uyQuotient(uyQuotient[i-1]),
//
// //Outputs
// .o_sint(sint[i]),
// .o_cost(cost[i]),
// .o_sinp(sinp[i]),
// .o_cosp(cosp[i]),
// .o_sintCosp(sintCosp[i]),
// .o_sintSinp(sintSinp[i]),
// .o_uz2(uz2[i]),
// .o_uxUz(uxUz[i]),
// .o_uyUz(uyUz[i]),
// .o_uySintSinp(uySintSinp[i]),
// .o_oneMinusUz2(oneMinusUz2[i]),
// .o_uyUzSintCosp(uyUzSintCosp[i]),
// .o_uxUzSintCosp(uxUzSintCosp[i]),
// .o_uxSintSinp(uxSintSinp[i]),
// .o_sqrtOneMinusUz2(sqrtOneMinusUz2[i]),
// .o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i]),
// .o_uxCost(uxCost[i]),
// .o_uzCost(uzCost[i]),
// .o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i]),
// .o_uxNumerator(uxNumerator[i]),
// .o_uyNumerator(uyNumerator[i]),
// .o_uyCost(uyCost[i]),
// .o_uxQuotient(uxQuotient[i]),
// .o_uyQuotient(uyQuotient[i])
// );
// 3:
// InternalsBlock pipeReg(
// //Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_sint(sint[i-1]),
// .i_cost(cost[i-1]),
// .i_sinp(sinp[i-1]),
// .i_cosp(cosp[i-1]),
// .i_sintCosp(sintCosp[i-1]),
// .i_sintSinp(sintSinp[i-1]),
// .i_uz2(uz2[i-1]),
// .i_uxUz(uxUz[i-1]),
// .i_uyUz(uyUz[i-1]),
// .i_uySintSinp(uySintSinp[i-1]),
// //Changed Value
// .i_oneMinusUz2(new_oneMinusUz2),
// .i_uyUzSintCosp(uyUzSintCosp[i-1]),
// .i_uxUzSintCosp(uxUzSintCosp[i-1]),
// .i_uxSintSinp(uxSintSinp[i-1]),
// .i_sqrtOneMinusUz2(sqrtOneMinusUz2[i-1]),
// .i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i-1]),
// .i_uxCost(uxCost[i-1]),
// .i_uzCost(uzCost[i-1]),
// .i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i-1]),
// .i_uxNumerator(uxNumerator[i-1]),
// .i_uyNumerator(uyNumerator[i-1]),
// .i_uyCost(uyCost[i-1]),
// .i_uxQuotient(uxQuotient[i-1]),
// .i_uyQuotient(uyQuotient[i-1]),
//
// //Outputs
// .o_sint(sint[i]),
// .o_cost(cost[i]),
// .o_sinp(sinp[i]),
// .o_cosp(cosp[i]),
// .o_sintCosp(sintCosp[i]),
// .o_sintSinp(sintSinp[i]),
// .o_uz2(uz2[i]),
// .o_uxUz(uxUz[i]),
// .o_uyUz(uyUz[i]),
// .o_uySintSinp(uySintSinp[i]),
// .o_oneMinusUz2(oneMinusUz2[i]),
// .o_uyUzSintCosp(uyUzSintCosp[i]),
// .o_uxUzSintCosp(uxUzSintCosp[i]),
// .o_uxSintSinp(uxSintSinp[i]),
// .o_sqrtOneMinusUz2(sqrtOneMinusUz2[i]),
// .o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i]),
// .o_uxCost(uxCost[i]),
// .o_uzCost(uzCost[i]),
// .o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i]),
// .o_uxNumerator(uxNumerator[i]),
// .o_uyNumerator(uyNumerator[i]),
// .o_uyCost(uyCost[i]),
// .o_uxQuotient(uxQuotient[i]),
// .o_uyQuotient(uyQuotient[i])
// );
// 4:
// InternalsBlock pipeReg(
// //Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_sint(sint[i-1]),
// .i_cost(cost[i-1]),
// .i_sinp(sinp[i-1]),
// .i_cosp(cosp[i-1]),
// .i_sintCosp(sintCosp[i-1]),
// .i_sintSinp(sintSinp[i-1]),
// .i_uz2(uz2[i-1]),
// //Changed Value
// .i_uxUz(new_uxUz),
// .i_uyUz(uyUz[i-1]),
// .i_uySintSinp(uySintSinp[i-1]),
// .i_oneMinusUz2(oneMinusUz2[i-1]),
// .i_uyUzSintCosp(uyUzSintCosp[i-1]),
// .i_uxUzSintCosp(uxUzSintCosp[i-1]),
// .i_uxSintSinp(uxSintSinp[i-1]),
// .i_sqrtOneMinusUz2(sqrtOneMinusUz2[i-1]),
// .i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i-1]),
// .i_uxCost(uxCost[i-1]),
// .i_uzCost(uzCost[i-1]),
// .i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i-1]),
// .i_uxNumerator(uxNumerator[i-1]),
// .i_uyNumerator(uyNumerator[i-1]),
// .i_uyCost(uyCost[i-1]),
// .i_uxQuotient(uxQuotient[i-1]),
// .i_uyQuotient(uyQuotient[i-1]),
//
// //Outputs
// .o_sint(sint[i]),
// .o_cost(cost[i]),
// .o_sinp(sinp[i]),
// .o_cosp(cosp[i]),
// .o_sintCosp(sintCosp[i]),
// .o_sintSinp(sintSinp[i]),
// .o_uz2(uz2[i]),
// .o_uxUz(uxUz[i]),
// .o_uyUz(uyUz[i]),
// .o_uySintSinp(uySintSinp[i]),
// .o_oneMinusUz2(oneMinusUz2[i]),
// .o_uyUzSintCosp(uyUzSintCosp[i]),
// .o_uxUzSintCosp(uxUzSintCosp[i]),
// .o_uxSintSinp(uxSintSinp[i]),
// .o_sqrtOneMinusUz2(sqrtOneMinusUz2[i]),
// .o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i]),
// .o_uxCost(uxCost[i]),
// .o_uzCost(uzCost[i]),
// .o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i]),
// .o_uxNumerator(uxNumerator[i]),
// .o_uyNumerator(uyNumerator[i]),
// .o_uyCost(uyCost[i]),
// .o_uxQuotient(uxQuotient[i]),
// .o_uyQuotient(uyQuotient[i])
// );
// (`SQRT+6):
// InternalsBlock pipeReg(
// //Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_sint(sint[i-1]),
// .i_cost(cost[i-1]),
// .i_sinp(sinp[i-1]),
// .i_cosp(cosp[i-1]),
// .i_sintCosp(sintCosp[i-1]),
// .i_sintSinp(sintSinp[i-1]),
// .i_uz2(uz2[i-1]),
// .i_uxUz(uxUz[i-1]),
// .i_uyUz(uyUz[i-1]),
// .i_uySintSinp(uySintSinp[i-1]),
// .i_oneMinusUz2(oneMinusUz2[i-1]),
// .i_uyUzSintCosp(uyUzSintCosp[i-1]),
// .i_uxUzSintCosp(uxUzSintCosp[i-1]),
// .i_uxSintSinp(uxSintSinp[i-1]),
// //Changed Value
// .i_sqrtOneMinusUz2(new_sqrtOneMinusUz2),
// .i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i-1]),
// .i_uxCost(uxCost[i-1]),
// .i_uzCost(uzCost[i-1]),
// .i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i-1]),
// .i_uxNumerator(uxNumerator[i-1]),
// .i_uyNumerator(uyNumerator[i-1]),
// .i_uyCost(uyCost[i-1]),
// .i_uxQuotient(uxQuotient[i-1]),
// .i_uyQuotient(uyQuotient[i-1]),
//
// //Outputs
// .o_sint(sint[i]),
// .o_cost(cost[i]),
// .o_sinp(sinp[i]),
// .o_cosp(cosp[i]),
// .o_sintCosp(sintCosp[i]),
// .o_sintSinp(sintSinp[i]),
// .o_uz2(uz2[i]),
// .o_uxUz(uxUz[i]),
// .o_uyUz(uyUz[i]),
// .o_uySintSinp(uySintSinp[i]),
// .o_oneMinusUz2(oneMinusUz2[i]),
// .o_uyUzSintCosp(uyUzSintCosp[i]),
// .o_uxUzSintCosp(uxUzSintCosp[i]),
// .o_uxSintSinp(uxSintSinp[i]),
// .o_sqrtOneMinusUz2(sqrtOneMinusUz2[i]),
// .o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i]),
// .o_uxCost(uxCost[i]),
// .o_uzCost(uzCost[i]),
// .o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i]),
// .o_uxNumerator(uxNumerator[i]),
// .o_uyNumerator(uyNumerator[i]),
// .o_uyCost(uyCost[i]),
// .o_uxQuotient(uxQuotient[i]),
// .o_uyQuotient(uyQuotient[i])
// );
//
// (`SQRT+`DIV+3):
// InternalsBlock pipeReg(
// //Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// //Changed Value
// .i_sint(new_sint),
// //Changed Value
// .i_cost(new_cost),
// //Changed Value
// .i_sinp(new_sinp),
// //Changed Value
// .i_cosp(new_cosp),
// //Changed Value
// .i_sintCosp(new_sintCosp),
// //Changed Value
// .i_sintSinp(new_sintSinp),
// .i_uz2(uz2[i-1]),
// .i_uxUz(uxUz[i-1]),
// //Changed Value
// .i_uyUz(new_uyUz),
// .i_uySintSinp(uySintSinp[i-1]),
// .i_oneMinusUz2(oneMinusUz2[i-1]),
// .i_uyUzSintCosp(uyUzSintCosp[i-1]),
// .i_uxUzSintCosp(uxUzSintCosp[i-1]),
// .i_uxSintSinp(uxSintSinp[i-1]),
// .i_sqrtOneMinusUz2(sqrtOneMinusUz2[i-1]),
// .i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i-1]),
// .i_uxCost(uxCost[i-1]),
// .i_uzCost(uzCost[i-1]),
// .i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i-1]),
// .i_uxNumerator(uxNumerator[i-1]),
// .i_uyNumerator(uyNumerator[i-1]),
// .i_uyCost(uyCost[i-1]),
// .i_uxQuotient(uxQuotient[i-1]),
// .i_uyQuotient(uyQuotient[i-1]),
//
// //Outputs
// .o_sint(sint[i]),
// .o_cost(cost[i]),
// .o_sinp(sinp[i]),
// .o_cosp(cosp[i]),
// .o_sintCosp(sintCosp[i]),
// .o_sintSinp(sintSinp[i]),
// .o_uz2(uz2[i]),
// .o_uxUz(uxUz[i]),
// .o_uyUz(uyUz[i]),
// .o_uySintSinp(uySintSinp[i]),
// .o_oneMinusUz2(oneMinusUz2[i]),
// .o_uyUzSintCosp(uyUzSintCosp[i]),
// .o_uxUzSintCosp(uxUzSintCosp[i]),
// .o_uxSintSinp(uxSintSinp[i]),
// .o_sqrtOneMinusUz2(sqrtOneMinusUz2[i]),
// .o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i]),
// .o_uxCost(uxCost[i]),
// .o_uzCost(uzCost[i]),
// .o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i]),
// .o_uxNumerator(uxNumerator[i]),
// .o_uyNumerator(uyNumerator[i]),
// .o_uyCost(uyCost[i]),
// .o_uxQuotient(uxQuotient[i]),
// .o_uyQuotient(uyQuotient[i])
// );
//
// (`SQRT+`DIV+4):
// InternalsBlock pipeReg(
// //Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_sint(sint[i-1]),
// .i_cost(cost[i-1]),
// .i_sinp(sinp[i-1]),
// .i_cosp(cosp[i-1]),
// .i_sintCosp(sintCosp[i-1]),
// .i_sintSinp(sintSinp[i-1]),
// .i_uz2(uz2[i-1]),
// .i_uxUz(uxUz[i-1]),
// .i_uyUz(uyUz[i-1]),
// //Changed Value
// .i_uySintSinp(new_uySintSinp),
// .i_oneMinusUz2(oneMinusUz2[i-1]),
// //Changed Value
// .i_uyUzSintCosp(new_uyUzSintCosp),
// //Changed Value
// .i_uxUzSintCosp(new_uxUzSintCosp),
// //Changed Value
// .i_uxSintSinp(new_uxSintSinp),
// .i_sqrtOneMinusUz2(sqrtOneMinusUz2[i-1]),
// .i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i-1]),
// .i_uxCost(uxCost[i-1]),
// .i_uzCost(uzCost[i-1]),
// .i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i-1]),
// .i_uxNumerator(uxNumerator[i-1]),
// .i_uyNumerator(uyNumerator[i-1]),
// .i_uyCost(uyCost[i-1]),
// .i_uxQuotient(uxQuotient[i-1]),
// .i_uyQuotient(uyQuotient[i-1]),
//
// //Outputs
// .o_sint(sint[i]),
// .o_cost(cost[i]),
// .o_sinp(sinp[i]),
// .o_cosp(cosp[i]),
// .o_sintCosp(sintCosp[i]),
// .o_sintSinp(sintSinp[i]),
// .o_uz2(uz2[i]),
// .o_uxUz(uxUz[i]),
// .o_uyUz(uyUz[i]),
// .o_uySintSinp(uySintSinp[i]),
// .o_oneMinusUz2(oneMinusUz2[i]),
// .o_uyUzSintCosp(uyUzSintCosp[i]),
// .o_uxUzSintCosp(uxUzSintCosp[i]),
// .o_uxSintSinp(uxSintSinp[i]),
// .o_sqrtOneMinusUz2(sqrtOneMinusUz2[i]),
// .o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i]),
// .o_uxCost(uxCost[i]),
// .o_uzCost(uzCost[i]),
// .o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i]),
// .o_uxNumerator(uxNumerator[i]),
// .o_uyNumerator(uyNumerator[i]),
// .o_uyCost(uyCost[i]),
// .o_uxQuotient(uxQuotient[i]),
// .o_uyQuotient(uyQuotient[i])
// );
//
// (`SQRT+`DIV+5):
// InternalsBlock pipeReg(
// //Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_sint(sint[i-1]),
// .i_cost(cost[i-1]),
// .i_sinp(sinp[i-1]),
// .i_cosp(cosp[i-1]),
// .i_sintCosp(sintCosp[i-1]),
// .i_sintSinp(sintSinp[i-1]),
// .i_uz2(uz2[i-1]),
// .i_uxUz(uxUz[i-1]),
// .i_uyUz(uyUz[i-1]),
// .i_uySintSinp(uySintSinp[i-1]),
// .i_oneMinusUz2(oneMinusUz2[i-1]),
// .i_uyUzSintCosp(uyUzSintCosp[i-1]),
// .i_uxUzSintCosp(uxUzSintCosp[i-1]),
// .i_uxSintSinp(uxSintSinp[i-1]),
// .i_sqrtOneMinusUz2(sqrtOneMinusUz2[i-1]),
// .i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i-1]),
// .i_uxCost(uxCost[i-1]),
// .i_uzCost(uzCost[i-1]),
// //Changed Value
// .i_sqrtOneMinusUz2_inv(new_sqrtOneMinusUz2_inv),
// //Changed Value
// .i_uxNumerator(new_uxNumerator),
// //Changed Value
// .i_uyNumerator(new_uyNumerator),
// .i_uyCost(uyCost[i-1]),
// .i_uxQuotient(uxQuotient[i-1]),
// .i_uyQuotient(uyQuotient[i-1]),
//
// //Outputs
// .o_sint(sint[i]),
// .o_cost(cost[i]),
// .o_sinp(sinp[i]),
// .o_cosp(cosp[i]),
// .o_sintCosp(sintCosp[i]),
// .o_sintSinp(sintSinp[i]),
// .o_uz2(uz2[i]),
// .o_uxUz(uxUz[i]),
// .o_uyUz(uyUz[i]),
// .o_uySintSinp(uySintSinp[i]),
// .o_oneMinusUz2(oneMinusUz2[i]),
// .o_uyUzSintCosp(uyUzSintCosp[i]),
// .o_uxUzSintCosp(uxUzSintCosp[i]),
// .o_uxSintSinp(uxSintSinp[i]),
// .o_sqrtOneMinusUz2(sqrtOneMinusUz2[i]),
// .o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i]),
// .o_uxCost(uxCost[i]),
// .o_uzCost(uzCost[i]),
// .o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i]),
// .o_uxNumerator(uxNumerator[i]),
// .o_uyNumerator(uyNumerator[i]),
// .o_uyCost(uyCost[i]),
// .o_uxQuotient(uxQuotient[i]),
// .o_uyQuotient(uyQuotient[i])
// );
//
// (`SQRT+`DIV+6):
// InternalsBlock pipeReg(
// //Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_sint(sint[i-1]),
// .i_cost(cost[i-1]),
// .i_sinp(sinp[i-1]),
// .i_cosp(cosp[i-1]),
// .i_sintCosp(sintCosp[i-1]),
// .i_sintSinp(sintSinp[i-1]),
// .i_uz2(uz2[i-1]),
// .i_uxUz(uxUz[i-1]),
// .i_uyUz(uyUz[i-1]),
// .i_uySintSinp(uySintSinp[i-1]),
// .i_oneMinusUz2(oneMinusUz2[i-1]),
// .i_uyUzSintCosp(uyUzSintCosp[i-1]),
// .i_uxUzSintCosp(uxUzSintCosp[i-1]),
// .i_uxSintSinp(uxSintSinp[i-1]),
// .i_sqrtOneMinusUz2(sqrtOneMinusUz2[i-1]),
// //Changed Value
// .i_sintCospSqrtOneMinusUz2(new_sintCospSqrtOneMinusUz2),
// //Changed Value
// .i_uxCost(new_uxCost),
// //Changed Value
// .i_uzCost(new_uzCost),
// .i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i-1]),
// .i_uxNumerator(uxNumerator[i-1]),
// .i_uyNumerator(uyNumerator[i-1]),
// //Changed Value
// .i_uyCost(new_uyCost),
// //Changed Value
// .i_uxQuotient(new_uxQuotient),
// //Changed Value
// .i_uyQuotient(new_uyQuotient),
//
// //Outputs
// .o_sint(sint[i]),
// .o_cost(cost[i]),
// .o_sinp(sinp[i]),
// .o_cosp(cosp[i]),
// .o_sintCosp(sintCosp[i]),
// .o_sintSinp(sintSinp[i]),
// .o_uz2(uz2[i]),
// .o_uxUz(uxUz[i]),
// .o_uyUz(uyUz[i]),
// .o_uySintSinp(uySintSinp[i]),
// .o_oneMinusUz2(oneMinusUz2[i]),
// .o_uyUzSintCosp(uyUzSintCosp[i]),
// .o_uxUzSintCosp(uxUzSintCosp[i]),
// .o_uxSintSinp(uxSintSinp[i]),
// .o_sqrtOneMinusUz2(sqrtOneMinusUz2[i]),
// .o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i]),
// .o_uxCost(uxCost[i]),
// .o_uzCost(uzCost[i]),
// .o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i]),
// .o_uxNumerator(uxNumerator[i]),
// .o_uyNumerator(uyNumerator[i]),
// .o_uyCost(uyCost[i]),
// .o_uxQuotient(uxQuotient[i]),
// .o_uyQuotient(uyQuotient[i])
// );
//
// default:
// InternalsBlock pipeReg(
// //Inputs
// .clock(clock),
// .reset(reset),
// .enable(enable),
//
// .i_sint(sint[i-1]),
// .i_cost(cost[i-1]),
// .i_sinp(sinp[i-1]),
// .i_cosp(cosp[i-1]),
// .i_sintCosp(sintCosp[i-1]),
// .i_sintSinp(sintSinp[i-1]),
// .i_uz2(uz2[i-1]),
// .i_uxUz(uxUz[i-1]),
// .i_uyUz(uyUz[i-1]),
// .i_uySintSinp(uySintSinp[i-1]),
// .i_oneMinusUz2(oneMinusUz2[i-1]),
// .i_uyUzSintCosp(uyUzSintCosp[i-1]),
// .i_uxUzSintCosp(uxUzSintCosp[i-1]),
// .i_uxSintSinp(uxSintSinp[i-1]),
// .i_sqrtOneMinusUz2(sqrtOneMinusUz2[i-1]),
// .i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i-1]),
// .i_uxCost(uxCost[i-1]),
// .i_uzCost(uzCost[i-1]),
// .i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i-1]),
// .i_uxNumerator(uxNumerator[i-1]),
// .i_uyNumerator(uyNumerator[i-1]),
// .i_uyCost(uyCost[i-1]),
// .i_uxQuotient(uxQuotient[i-1]),
// .i_uyQuotient(uyQuotient[i-1]),
//
// //Outputs
// .o_sint(sint[i]),
// .o_cost(cost[i]),
// .o_sinp(sinp[i]),
// .o_cosp(cosp[i]),
// .o_sintCosp(sintCosp[i]),
// .o_sintSinp(sintSinp[i]),
// .o_uz2(uz2[i]),
// .o_uxUz(uxUz[i]),
// .o_uyUz(uyUz[i]),
// .o_uySintSinp(uySintSinp[i]),
// .o_oneMinusUz2(oneMinusUz2[i]),
// .o_uyUzSintCosp(uyUzSintCosp[i]),
// .o_uxUzSintCosp(uxUzSintCosp[i]),
// .o_uxSintSinp(uxSintSinp[i]),
// .o_sqrtOneMinusUz2(sqrtOneMinusUz2[i]),
// .o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2[i]),
// .o_uxCost(uxCost[i]),
// .o_uzCost(uzCost[i]),
// .o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv[i]),
// .o_uxNumerator(uxNumerator[i]),
// .o_uyNumerator(uyNumerator[i]),
// .o_uyCost(uyCost[i]),
// .o_uxQuotient(uxQuotient[i]),
// .o_uyQuotient(uyQuotient[i])
// );
// endcase
// end
//endgenerate
//Expanded generate loop:
//special cases first
//forloop2
InternalsBlock pipeReg2(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__1),
.i_cost(cost__1),
.i_sinp(sinp__1),
.i_cosp(cosp__1),
.i_sintCosp(sintCosp__1),
.i_sintSinp(sintSinp__1),
//Changed Value
.i_uz2(new_uz2),
.i_uxUz(uxUz__1),
.i_uyUz(uyUz__1),
.i_uySintSinp(uySintSinp__1),
.i_oneMinusUz2(oneMinusUz2__1),
.i_uyUzSintCosp(uyUzSintCosp__1),
.i_uxUzSintCosp(uxUzSintCosp__1),
.i_uxSintSinp(uxSintSinp__1),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__1),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__1),
.i_uxCost(uxCost__1),
.i_uzCost(uzCost__1),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__1),
.i_uxNumerator(uxNumerator__1),
.i_uyNumerator(uyNumerator__1),
.i_uyCost(uyCost__1),
.i_uxQuotient(uxQuotient__1),
.i_uyQuotient(uyQuotient__1),
//Outputs
.o_sint(sint__2),
.o_cost(cost__2),
.o_sinp(sinp__2),
.o_cosp(cosp__2),
.o_sintCosp(sintCosp__2),
.o_sintSinp(sintSinp__2),
.o_uz2(uz2__2),
.o_uxUz(uxUz__2),
.o_uyUz(uyUz__2),
.o_uySintSinp(uySintSinp__2),
.o_oneMinusUz2(oneMinusUz2__2),
.o_uyUzSintCosp(uyUzSintCosp__2),
.o_uxUzSintCosp(uxUzSintCosp__2),
.o_uxSintSinp(uxSintSinp__2),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__2),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__2),
.o_uxCost(uxCost__2),
.o_uzCost(uzCost__2),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__2),
.o_uxNumerator(uxNumerator__2),
.o_uyNumerator(uyNumerator__2),
.o_uyCost(uyCost__2),
.o_uxQuotient(uxQuotient__2),
.o_uyQuotient(uyQuotient__2)
);
// forloop3
InternalsBlock pipeReg3(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__2),
.i_cost(cost__2),
.i_sinp(sinp__2),
.i_cosp(cosp__2),
.i_sintCosp(sintCosp__2),
.i_sintSinp(sintSinp__2),
.i_uz2(uz2__2),
.i_uxUz(uxUz__2),
.i_uyUz(uyUz__2),
.i_uySintSinp(uySintSinp__2),
//changed
.i_oneMinusUz2(new_oneMinusUz2),
.i_uyUzSintCosp(uyUzSintCosp__2),
.i_uxUzSintCosp(uxUzSintCosp__2),
.i_uxSintSinp(uxSintSinp__2),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__2),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__2),
.i_uxCost(uxCost__2),
.i_uzCost(uzCost__2),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__2),
.i_uxNumerator(uxNumerator__2),
.i_uyNumerator(uyNumerator__2),
.i_uyCost(uyCost__2),
.i_uxQuotient(uxQuotient__2),
.i_uyQuotient(uyQuotient__2),
//Outputs
.o_sint(sint__3),
.o_cost(cost__3),
.o_sinp(sinp__3),
.o_cosp(cosp__3),
.o_sintCosp(sintCosp__3),
.o_sintSinp(sintSinp__3),
.o_uz2(uz2__3),
.o_uxUz(uxUz__3),
.o_uyUz(uyUz__3),
.o_uySintSinp(uySintSinp__3),
.o_oneMinusUz2(oneMinusUz2__3),
.o_uyUzSintCosp(uyUzSintCosp__3),
.o_uxUzSintCosp(uxUzSintCosp__3),
.o_uxSintSinp(uxSintSinp__3),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__3),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__3),
.o_uxCost(uxCost__3),
.o_uzCost(uzCost__3),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__3),
.o_uxNumerator(uxNumerator__3),
.o_uyNumerator(uyNumerator__3),
.o_uyCost(uyCost__3),
.o_uxQuotient(uxQuotient__3),
.o_uyQuotient(uyQuotient__3)
);
//forloop4:
InternalsBlock pipeReg4(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__3),
.i_cost(cost__3),
.i_sinp(sinp__3),
.i_cosp(cosp__3),
.i_sintCosp(sintCosp__3),
.i_sintSinp(sintSinp__3),
.i_uz2(uz2__3),
//changed
.i_uxUz(new_uxUz),
.i_uyUz(uyUz__3),
.i_uySintSinp(uySintSinp__3),
.i_oneMinusUz2(oneMinusUz2__3),
.i_uyUzSintCosp(uyUzSintCosp__3),
.i_uxUzSintCosp(uxUzSintCosp__3),
.i_uxSintSinp(uxSintSinp__3),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__3),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__3),
.i_uxCost(uxCost__3),
.i_uzCost(uzCost__3),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__3),
.i_uxNumerator(uxNumerator__3),
.i_uyNumerator(uyNumerator__3),
.i_uyCost(uyCost__3),
.i_uxQuotient(uxQuotient__3),
.i_uyQuotient(uyQuotient__3),
//Outputs
.o_sint(sint__4),
.o_cost(cost__4),
.o_sinp(sinp__4),
.o_cosp(cosp__4),
.o_sintCosp(sintCosp__4),
.o_sintSinp(sintSinp__4),
.o_uz2(uz2__4),
.o_uxUz(uxUz__4),
.o_uyUz(uyUz__4),
.o_uySintSinp(uySintSinp__4),
.o_oneMinusUz2(oneMinusUz2__4),
.o_uyUzSintCosp(uyUzSintCosp__4),
.o_uxUzSintCosp(uxUzSintCosp__4),
.o_uxSintSinp(uxSintSinp__4),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__4),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__4),
.o_uxCost(uxCost__4),
.o_uzCost(uzCost__4),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__4),
.o_uxNumerator(uxNumerator__4),
.o_uyNumerator(uyNumerator__4),
.o_uyCost(uyCost__4),
.o_uxQuotient(uxQuotient__4),
.o_uyQuotient(uyQuotient__4)
);
InternalsBlock pipeReg16(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__15),
.i_cost(cost__15),
.i_sinp(sinp__15),
.i_cosp(cosp__15),
.i_sintCosp(sintCosp__15),
.i_sintSinp(sintSinp__15),
.i_uz2(uz2__15),
.i_uxUz(uxUz__15),
.i_uyUz(uyUz__15),
.i_uySintSinp(uySintSinp__15),
.i_oneMinusUz2(oneMinusUz2__15),
.i_uyUzSintCosp(uyUzSintCosp__15),
.i_uxUzSintCosp(uxUzSintCosp__15),
.i_uxSintSinp(uxSintSinp__15),
//changed
.i_sqrtOneMinusUz2(new_sqrtOneMinusUz2),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__15),
.i_uxCost(uxCost__15),
.i_uzCost(uzCost__15),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__15),
.i_uxNumerator(uxNumerator__15),
.i_uyNumerator(uyNumerator__15),
.i_uyCost(uyCost__15),
.i_uxQuotient(uxQuotient__15),
.i_uyQuotient(uyQuotient__15),
//Outputs
.o_sint(sint__16),
.o_cost(cost__16),
.o_sinp(sinp__16),
.o_cosp(cosp__16),
.o_sintCosp(sintCosp__16),
.o_sintSinp(sintSinp__16),
.o_uz2(uz2__16),
.o_uxUz(uxUz__16),
.o_uyUz(uyUz__16),
.o_uySintSinp(uySintSinp__16),
.o_oneMinusUz2(oneMinusUz2__16),
.o_uyUzSintCosp(uyUzSintCosp__16),
.o_uxUzSintCosp(uxUzSintCosp__16),
.o_uxSintSinp(uxSintSinp__16),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__16),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__16),
.o_uxCost(uxCost__16),
.o_uzCost(uzCost__16),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__16),
.o_uxNumerator(uxNumerator__16),
.o_uyNumerator(uyNumerator__16),
.o_uyCost(uyCost__16),
.o_uxQuotient(uxQuotient__16),
.o_uyQuotient(uyQuotient__16)
);
//forloop 33 (10+20+3):
InternalsBlock pipeReg33(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
//changed
.i_sint(new_sint),
//changed
.i_cost(new_cost),
//changed
.i_sinp(new_sinp),
//changed
.i_cosp(new_cosp),
//changed
.i_sintCosp(new_sintCosp),
//changed
.i_sintSinp(new_sintSinp),
.i_uz2(uz2__32),
.i_uxUz(uxUz__32),
//changed
.i_uyUz(new_uyUz),
.i_uySintSinp(uySintSinp__32),
.i_oneMinusUz2(oneMinusUz2__32),
.i_uyUzSintCosp(uyUzSintCosp__32),
.i_uxUzSintCosp(uxUzSintCosp__32),
.i_uxSintSinp(uxSintSinp__32),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__32),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__32),
.i_uxCost(uxCost__32),
.i_uzCost(uzCost__32),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__32),
.i_uxNumerator(uxNumerator__32),
.i_uyNumerator(uyNumerator__32),
.i_uyCost(uyCost__32),
.i_uxQuotient(uxQuotient__32),
.i_uyQuotient(uyQuotient__32),
//Outputs
.o_sint(sint__33),
.o_cost(cost__33),
.o_sinp(sinp__33),
.o_cosp(cosp__33),
.o_sintCosp(sintCosp__33),
.o_sintSinp(sintSinp__33),
.o_uz2(uz2__33),
.o_uxUz(uxUz__33),
.o_uyUz(uyUz__33),
.o_uySintSinp(uySintSinp__33),
.o_oneMinusUz2(oneMinusUz2__33),
.o_uyUzSintCosp(uyUzSintCosp__33),
.o_uxUzSintCosp(uxUzSintCosp__33),
.o_uxSintSinp(uxSintSinp__33),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__33),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__33),
.o_uxCost(uxCost__33),
.o_uzCost(uzCost__33),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__33),
.o_uxNumerator(uxNumerator__33),
.o_uyNumerator(uyNumerator__33),
.o_uyCost(uyCost__33),
.o_uxQuotient(uxQuotient__33),
.o_uyQuotient(uyQuotient__33)
);
//forloop34 (10+20+4):
InternalsBlock pipeReg34(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__33),
.i_cost(cost__33),
.i_sinp(sinp__33),
.i_cosp(cosp__33),
.i_sintCosp(sintCosp__33),
.i_sintSinp(sintSinp__33),
.i_uz2(uz2__33),
.i_uxUz(uxUz__33),
.i_uyUz(uyUz__33),
//changed
.i_uySintSinp(new_uySintSinp),
.i_oneMinusUz2(oneMinusUz2__33),
//changed
.i_uyUzSintCosp(new_uyUzSintCosp),
//changed
.i_uxUzSintCosp(new_uxUzSintCosp),
//changed
.i_uxSintSinp(new_uxSintSinp),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__33),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__33),
.i_uxCost(uxCost__33),
.i_uzCost(uzCost__33),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__33),
.i_uxNumerator(uxNumerator__33),
.i_uyNumerator(uyNumerator__33),
.i_uyCost(uyCost__33),
.i_uxQuotient(uxQuotient__33),
.i_uyQuotient(uyQuotient__33),
//Outputs
.o_sint(sint__34),
.o_cost(cost__34),
.o_sinp(sinp__34),
.o_cosp(cosp__34),
.o_sintCosp(sintCosp__34),
.o_sintSinp(sintSinp__34),
.o_uz2(uz2__34),
.o_uxUz(uxUz__34),
.o_uyUz(uyUz__34),
.o_uySintSinp(uySintSinp__34),
.o_oneMinusUz2(oneMinusUz2__34),
.o_uyUzSintCosp(uyUzSintCosp__34),
.o_uxUzSintCosp(uxUzSintCosp__34),
.o_uxSintSinp(uxSintSinp__34),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__34),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__34),
.o_uxCost(uxCost__34),
.o_uzCost(uzCost__34),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__34),
.o_uxNumerator(uxNumerator__34),
.o_uyNumerator(uyNumerator__34),
.o_uyCost(uyCost__34),
.o_uxQuotient(uxQuotient__34),
.o_uyQuotient(uyQuotient__34)
);
//forloop35(10+20+5):
InternalsBlock pipeReg35(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__34),
.i_cost(cost__34),
.i_sinp(sinp__34),
.i_cosp(cosp__34),
.i_sintCosp(sintCosp__34),
.i_sintSinp(sintSinp__34),
.i_uz2(uz2__34),
.i_uxUz(uxUz__34),
.i_uyUz(uyUz__34),
.i_uySintSinp(uySintSinp__34),
.i_oneMinusUz2(oneMinusUz2__34),
.i_uyUzSintCosp(uyUzSintCosp__34),
.i_uxUzSintCosp(uxUzSintCosp__34),
.i_uxSintSinp(uxSintSinp__34),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__34),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__34),
.i_uxCost(uxCost__34),
.i_uzCost(uzCost__34),
//changedval
.i_sqrtOneMinusUz2_inv(new_sqrtOneMinusUz2_inv),
//changed
.i_uxNumerator(new_uxNumerator),
//changed
.i_uyNumerator(new_uyNumerator),
.i_uyCost(uyCost__34),
.i_uxQuotient(uxQuotient__34),
.i_uyQuotient(uyQuotient__34),
//Outputs
.o_sint(sint__35),
.o_cost(cost__35),
.o_sinp(sinp__35),
.o_cosp(cosp__35),
.o_sintCosp(sintCosp__35),
.o_sintSinp(sintSinp__35),
.o_uz2(uz2__35),
.o_uxUz(uxUz__35),
.o_uyUz(uyUz__35),
.o_uySintSinp(uySintSinp__35),
.o_oneMinusUz2(oneMinusUz2__35),
.o_uyUzSintCosp(uyUzSintCosp__35),
.o_uxUzSintCosp(uxUzSintCosp__35),
.o_uxSintSinp(uxSintSinp__35),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__35),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__35),
.o_uxCost(uxCost__35),
.o_uzCost(uzCost__35),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__35),
.o_uxNumerator(uxNumerator__35),
.o_uyNumerator(uyNumerator__35),
.o_uyCost(uyCost__35),
.o_uxQuotient(uxQuotient__35),
.o_uyQuotient(uyQuotient__35)
);
//forloop36 (10+20+6):
InternalsBlock pipeReg36(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__35),
.i_cost(cost__35),
.i_sinp(sinp__35),
.i_cosp(cosp__35),
.i_sintCosp(sintCosp__35),
.i_sintSinp(sintSinp__35),
.i_uz2(uz2__35),
.i_uxUz(uxUz__35),
.i_uyUz(uyUz__35),
.i_uySintSinp(uySintSinp__35),
.i_oneMinusUz2(oneMinusUz2__35),
.i_uyUzSintCosp(uyUzSintCosp__35),
.i_uxUzSintCosp(uxUzSintCosp__35),
.i_uxSintSinp(uxSintSinp__35),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__35),
//changed
.i_sintCospSqrtOneMinusUz2(new_sintCospSqrtOneMinusUz2),
//changed
.i_uxCost(new_uxCost),
//changed
.i_uzCost(new_uzCost),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__35),
.i_uxNumerator(uxNumerator__35),
.i_uyNumerator(uyNumerator__35),
//changed
.i_uyCost(new_uyCost),
//changed),
.i_uxQuotient(new_uxQuotient),
//cahgned
.i_uyQuotient(new_uyQuotient),
//Outputs
.o_sint(sint__36),
.o_cost(cost__36),
.o_sinp(sinp__36),
.o_cosp(cosp__36),
.o_sintCosp(sintCosp__36),
.o_sintSinp(sintSinp__36),
.o_uz2(uz2__36),
.o_uxUz(uxUz__36),
.o_uyUz(uyUz__36),
.o_uySintSinp(uySintSinp__36),
.o_oneMinusUz2(oneMinusUz2__36),
.o_uyUzSintCosp(uyUzSintCosp__36),
.o_uxUzSintCosp(uxUzSintCosp__36),
.o_uxSintSinp(uxSintSinp__36),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__36),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__36),
.o_uxCost(uxCost__36),
.o_uzCost(uzCost__36),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__36),
.o_uxNumerator(uxNumerator__36),
.o_uyNumerator(uyNumerator__36),
.o_uyCost(uyCost__36),
.o_uxQuotient(uxQuotient__36),
.o_uyQuotient(uyQuotient__36)
);
InternalsBlock pipeReg37(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__36),
.i_cost(cost__36),
.i_sinp(sinp__36),
.i_cosp(cosp__36),
.i_sintCosp(sintCosp__36),
.i_sintSinp(sintSinp__36),
.i_uz2(uz2__36),
.i_uxUz(uxUz__36),
.i_uyUz(uyUz__36),
.i_uySintSinp(uySintSinp__36),
.i_oneMinusUz2(oneMinusUz2__36),
.i_uyUzSintCosp(uyUzSintCosp__36),
.i_uxUzSintCosp(uxUzSintCosp__36),
.i_uxSintSinp(uxSintSinp__36),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__36),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__36),
.i_uxCost(uxCost__36),
.i_uzCost(uzCost__36),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__36),
.i_uxNumerator(uxNumerator__36),
.i_uyNumerator(uyNumerator__36),
.i_uyCost(uyCost__36),
.i_uxQuotient(uxQuotient__36),
.i_uyQuotient(uyQuotient__36),
//Outputs
.o_sint(sint__37),
.o_cost(cost__37),
.o_sinp(sinp__37),
.o_cosp(cosp__37),
.o_sintCosp(sintCosp__37),
.o_sintSinp(sintSinp__37),
.o_uz2(uz2__37),
.o_uxUz(uxUz__37),
.o_uyUz(uyUz__37),
.o_uySintSinp(uySintSinp__37),
.o_oneMinusUz2(oneMinusUz2__37),
.o_uyUzSintCosp(uyUzSintCosp__37),
.o_uxUzSintCosp(uxUzSintCosp__37),
.o_uxSintSinp(uxSintSinp__37),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__37),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__37),
.o_uxCost(uxCost__37),
.o_uzCost(uzCost__37),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__37),
.o_uxNumerator(uxNumerator__37),
.o_uyNumerator(uyNumerator__37),
.o_uyCost(uyCost__37),
.o_uxQuotient(uxQuotient__37),
.o_uyQuotient(uyQuotient__37)
);
InternalsBlock pipeReg32(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__31),
.i_cost(cost__31),
.i_sinp(sinp__31),
.i_cosp(cosp__31),
.i_sintCosp(sintCosp__31),
.i_sintSinp(sintSinp__31),
.i_uz2(uz2__31),
.i_uxUz(uxUz__31),
.i_uyUz(uyUz__31),
.i_uySintSinp(uySintSinp__31),
.i_oneMinusUz2(oneMinusUz2__31),
.i_uyUzSintCosp(uyUzSintCosp__31),
.i_uxUzSintCosp(uxUzSintCosp__31),
.i_uxSintSinp(uxSintSinp__31),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__31),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__31),
.i_uxCost(uxCost__31),
.i_uzCost(uzCost__31),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__31),
.i_uxNumerator(uxNumerator__31),
.i_uyNumerator(uyNumerator__31),
.i_uyCost(uyCost__31),
.i_uxQuotient(uxQuotient__31),
.i_uyQuotient(uyQuotient__31),
//Outputs
.o_sint(sint__32),
.o_cost(cost__32),
.o_sinp(sinp__32),
.o_cosp(cosp__32),
.o_sintCosp(sintCosp__32),
.o_sintSinp(sintSinp__32),
.o_uz2(uz2__32),
.o_uxUz(uxUz__32),
.o_uyUz(uyUz__32),
.o_uySintSinp(uySintSinp__32),
.o_oneMinusUz2(oneMinusUz2__32),
.o_uyUzSintCosp(uyUzSintCosp__32),
.o_uxUzSintCosp(uxUzSintCosp__32),
.o_uxSintSinp(uxSintSinp__32),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__32),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__32),
.o_uxCost(uxCost__32),
.o_uzCost(uzCost__32),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__32),
.o_uxNumerator(uxNumerator__32),
.o_uyNumerator(uyNumerator__32),
.o_uyCost(uyCost__32),
.o_uxQuotient(uxQuotient__32),
.o_uyQuotient(uyQuotient__32)
);
InternalsBlock pipeReg31(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__30),
.i_cost(cost__30),
.i_sinp(sinp__30),
.i_cosp(cosp__30),
.i_sintCosp(sintCosp__30),
.i_sintSinp(sintSinp__30),
.i_uz2(uz2__30),
.i_uxUz(uxUz__30),
.i_uyUz(uyUz__30),
.i_uySintSinp(uySintSinp__30),
.i_oneMinusUz2(oneMinusUz2__30),
.i_uyUzSintCosp(uyUzSintCosp__30),
.i_uxUzSintCosp(uxUzSintCosp__30),
.i_uxSintSinp(uxSintSinp__30),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__30),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__30),
.i_uxCost(uxCost__30),
.i_uzCost(uzCost__30),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__30),
.i_uxNumerator(uxNumerator__30),
.i_uyNumerator(uyNumerator__30),
.i_uyCost(uyCost__30),
.i_uxQuotient(uxQuotient__30),
.i_uyQuotient(uyQuotient__30),
//Outputs
.o_sint(sint__31),
.o_cost(cost__31),
.o_sinp(sinp__31),
.o_cosp(cosp__31),
.o_sintCosp(sintCosp__31),
.o_sintSinp(sintSinp__31),
.o_uz2(uz2__31),
.o_uxUz(uxUz__31),
.o_uyUz(uyUz__31),
.o_uySintSinp(uySintSinp__31),
.o_oneMinusUz2(oneMinusUz2__31),
.o_uyUzSintCosp(uyUzSintCosp__31),
.o_uxUzSintCosp(uxUzSintCosp__31),
.o_uxSintSinp(uxSintSinp__31),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__31),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__31),
.o_uxCost(uxCost__31),
.o_uzCost(uzCost__31),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__31),
.o_uxNumerator(uxNumerator__31),
.o_uyNumerator(uyNumerator__31),
.o_uyCost(uyCost__31),
.o_uxQuotient(uxQuotient__31),
.o_uyQuotient(uyQuotient__31)
);
InternalsBlock pipeReg30(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__29),
.i_cost(cost__29),
.i_sinp(sinp__29),
.i_cosp(cosp__29),
.i_sintCosp(sintCosp__29),
.i_sintSinp(sintSinp__29),
.i_uz2(uz2__29),
.i_uxUz(uxUz__29),
.i_uyUz(uyUz__29),
.i_uySintSinp(uySintSinp__29),
.i_oneMinusUz2(oneMinusUz2__29),
.i_uyUzSintCosp(uyUzSintCosp__29),
.i_uxUzSintCosp(uxUzSintCosp__29),
.i_uxSintSinp(uxSintSinp__29),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__29),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__29),
.i_uxCost(uxCost__29),
.i_uzCost(uzCost__29),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__29),
.i_uxNumerator(uxNumerator__29),
.i_uyNumerator(uyNumerator__29),
.i_uyCost(uyCost__29),
.i_uxQuotient(uxQuotient__29),
.i_uyQuotient(uyQuotient__29),
//Outputs
.o_sint(sint__30),
.o_cost(cost__30),
.o_sinp(sinp__30),
.o_cosp(cosp__30),
.o_sintCosp(sintCosp__30),
.o_sintSinp(sintSinp__30),
.o_uz2(uz2__30),
.o_uxUz(uxUz__30),
.o_uyUz(uyUz__30),
.o_uySintSinp(uySintSinp__30),
.o_oneMinusUz2(oneMinusUz2__30),
.o_uyUzSintCosp(uyUzSintCosp__30),
.o_uxUzSintCosp(uxUzSintCosp__30),
.o_uxSintSinp(uxSintSinp__30),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__30),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__30),
.o_uxCost(uxCost__30),
.o_uzCost(uzCost__30),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__30),
.o_uxNumerator(uxNumerator__30),
.o_uyNumerator(uyNumerator__30),
.o_uyCost(uyCost__30),
.o_uxQuotient(uxQuotient__30),
.o_uyQuotient(uyQuotient__30)
);
InternalsBlock pipeReg29(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__28),
.i_cost(cost__28),
.i_sinp(sinp__28),
.i_cosp(cosp__28),
.i_sintCosp(sintCosp__28),
.i_sintSinp(sintSinp__28),
.i_uz2(uz2__28),
.i_uxUz(uxUz__28),
.i_uyUz(uyUz__28),
.i_uySintSinp(uySintSinp__28),
.i_oneMinusUz2(oneMinusUz2__28),
.i_uyUzSintCosp(uyUzSintCosp__28),
.i_uxUzSintCosp(uxUzSintCosp__28),
.i_uxSintSinp(uxSintSinp__28),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__28),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__28),
.i_uxCost(uxCost__28),
.i_uzCost(uzCost__28),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__28),
.i_uxNumerator(uxNumerator__28),
.i_uyNumerator(uyNumerator__28),
.i_uyCost(uyCost__28),
.i_uxQuotient(uxQuotient__28),
.i_uyQuotient(uyQuotient__28),
//Outputs
.o_sint(sint__29),
.o_cost(cost__29),
.o_sinp(sinp__29),
.o_cosp(cosp__29),
.o_sintCosp(sintCosp__29),
.o_sintSinp(sintSinp__29),
.o_uz2(uz2__29),
.o_uxUz(uxUz__29),
.o_uyUz(uyUz__29),
.o_uySintSinp(uySintSinp__29),
.o_oneMinusUz2(oneMinusUz2__29),
.o_uyUzSintCosp(uyUzSintCosp__29),
.o_uxUzSintCosp(uxUzSintCosp__29),
.o_uxSintSinp(uxSintSinp__29),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__29),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__29),
.o_uxCost(uxCost__29),
.o_uzCost(uzCost__29),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__29),
.o_uxNumerator(uxNumerator__29),
.o_uyNumerator(uyNumerator__29),
.o_uyCost(uyCost__29),
.o_uxQuotient(uxQuotient__29),
.o_uyQuotient(uyQuotient__29)
);
InternalsBlock pipeReg28(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__27),
.i_cost(cost__27),
.i_sinp(sinp__27),
.i_cosp(cosp__27),
.i_sintCosp(sintCosp__27),
.i_sintSinp(sintSinp__27),
.i_uz2(uz2__27),
.i_uxUz(uxUz__27),
.i_uyUz(uyUz__27),
.i_uySintSinp(uySintSinp__27),
.i_oneMinusUz2(oneMinusUz2__27),
.i_uyUzSintCosp(uyUzSintCosp__27),
.i_uxUzSintCosp(uxUzSintCosp__27),
.i_uxSintSinp(uxSintSinp__27),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__27),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__27),
.i_uxCost(uxCost__27),
.i_uzCost(uzCost__27),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__27),
.i_uxNumerator(uxNumerator__27),
.i_uyNumerator(uyNumerator__27),
.i_uyCost(uyCost__27),
.i_uxQuotient(uxQuotient__27),
.i_uyQuotient(uyQuotient__27),
//Outputs
.o_sint(sint__28),
.o_cost(cost__28),
.o_sinp(sinp__28),
.o_cosp(cosp__28),
.o_sintCosp(sintCosp__28),
.o_sintSinp(sintSinp__28),
.o_uz2(uz2__28),
.o_uxUz(uxUz__28),
.o_uyUz(uyUz__28),
.o_uySintSinp(uySintSinp__28),
.o_oneMinusUz2(oneMinusUz2__28),
.o_uyUzSintCosp(uyUzSintCosp__28),
.o_uxUzSintCosp(uxUzSintCosp__28),
.o_uxSintSinp(uxSintSinp__28),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__28),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__28),
.o_uxCost(uxCost__28),
.o_uzCost(uzCost__28),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__28),
.o_uxNumerator(uxNumerator__28),
.o_uyNumerator(uyNumerator__28),
.o_uyCost(uyCost__28),
.o_uxQuotient(uxQuotient__28),
.o_uyQuotient(uyQuotient__28)
);
InternalsBlock pipeReg27(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__26),
.i_cost(cost__26),
.i_sinp(sinp__26),
.i_cosp(cosp__26),
.i_sintCosp(sintCosp__26),
.i_sintSinp(sintSinp__26),
.i_uz2(uz2__26),
.i_uxUz(uxUz__26),
.i_uyUz(uyUz__26),
.i_uySintSinp(uySintSinp__26),
.i_oneMinusUz2(oneMinusUz2__26),
.i_uyUzSintCosp(uyUzSintCosp__26),
.i_uxUzSintCosp(uxUzSintCosp__26),
.i_uxSintSinp(uxSintSinp__26),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__26),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__26),
.i_uxCost(uxCost__26),
.i_uzCost(uzCost__26),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__26),
.i_uxNumerator(uxNumerator__26),
.i_uyNumerator(uyNumerator__26),
.i_uyCost(uyCost__26),
.i_uxQuotient(uxQuotient__26),
.i_uyQuotient(uyQuotient__26),
//Outputs
.o_sint(sint__27),
.o_cost(cost__27),
.o_sinp(sinp__27),
.o_cosp(cosp__27),
.o_sintCosp(sintCosp__27),
.o_sintSinp(sintSinp__27),
.o_uz2(uz2__27),
.o_uxUz(uxUz__27),
.o_uyUz(uyUz__27),
.o_uySintSinp(uySintSinp__27),
.o_oneMinusUz2(oneMinusUz2__27),
.o_uyUzSintCosp(uyUzSintCosp__27),
.o_uxUzSintCosp(uxUzSintCosp__27),
.o_uxSintSinp(uxSintSinp__27),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__27),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__27),
.o_uxCost(uxCost__27),
.o_uzCost(uzCost__27),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__27),
.o_uxNumerator(uxNumerator__27),
.o_uyNumerator(uyNumerator__27),
.o_uyCost(uyCost__27),
.o_uxQuotient(uxQuotient__27),
.o_uyQuotient(uyQuotient__27)
);
InternalsBlock pipeReg26(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__25),
.i_cost(cost__25),
.i_sinp(sinp__25),
.i_cosp(cosp__25),
.i_sintCosp(sintCosp__25),
.i_sintSinp(sintSinp__25),
.i_uz2(uz2__25),
.i_uxUz(uxUz__25),
.i_uyUz(uyUz__25),
.i_uySintSinp(uySintSinp__25),
.i_oneMinusUz2(oneMinusUz2__25),
.i_uyUzSintCosp(uyUzSintCosp__25),
.i_uxUzSintCosp(uxUzSintCosp__25),
.i_uxSintSinp(uxSintSinp__25),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__25),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__25),
.i_uxCost(uxCost__25),
.i_uzCost(uzCost__25),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__25),
.i_uxNumerator(uxNumerator__25),
.i_uyNumerator(uyNumerator__25),
.i_uyCost(uyCost__25),
.i_uxQuotient(uxQuotient__25),
.i_uyQuotient(uyQuotient__25),
//Outputs
.o_sint(sint__26),
.o_cost(cost__26),
.o_sinp(sinp__26),
.o_cosp(cosp__26),
.o_sintCosp(sintCosp__26),
.o_sintSinp(sintSinp__26),
.o_uz2(uz2__26),
.o_uxUz(uxUz__26),
.o_uyUz(uyUz__26),
.o_uySintSinp(uySintSinp__26),
.o_oneMinusUz2(oneMinusUz2__26),
.o_uyUzSintCosp(uyUzSintCosp__26),
.o_uxUzSintCosp(uxUzSintCosp__26),
.o_uxSintSinp(uxSintSinp__26),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__26),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__26),
.o_uxCost(uxCost__26),
.o_uzCost(uzCost__26),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__26),
.o_uxNumerator(uxNumerator__26),
.o_uyNumerator(uyNumerator__26),
.o_uyCost(uyCost__26),
.o_uxQuotient(uxQuotient__26),
.o_uyQuotient(uyQuotient__26)
);
InternalsBlock pipeReg25(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__24),
.i_cost(cost__24),
.i_sinp(sinp__24),
.i_cosp(cosp__24),
.i_sintCosp(sintCosp__24),
.i_sintSinp(sintSinp__24),
.i_uz2(uz2__24),
.i_uxUz(uxUz__24),
.i_uyUz(uyUz__24),
.i_uySintSinp(uySintSinp__24),
.i_oneMinusUz2(oneMinusUz2__24),
.i_uyUzSintCosp(uyUzSintCosp__24),
.i_uxUzSintCosp(uxUzSintCosp__24),
.i_uxSintSinp(uxSintSinp__24),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__24),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__24),
.i_uxCost(uxCost__24),
.i_uzCost(uzCost__24),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__24),
.i_uxNumerator(uxNumerator__24),
.i_uyNumerator(uyNumerator__24),
.i_uyCost(uyCost__24),
.i_uxQuotient(uxQuotient__24),
.i_uyQuotient(uyQuotient__24),
//Outputs
.o_sint(sint__25),
.o_cost(cost__25),
.o_sinp(sinp__25),
.o_cosp(cosp__25),
.o_sintCosp(sintCosp__25),
.o_sintSinp(sintSinp__25),
.o_uz2(uz2__25),
.o_uxUz(uxUz__25),
.o_uyUz(uyUz__25),
.o_uySintSinp(uySintSinp__25),
.o_oneMinusUz2(oneMinusUz2__25),
.o_uyUzSintCosp(uyUzSintCosp__25),
.o_uxUzSintCosp(uxUzSintCosp__25),
.o_uxSintSinp(uxSintSinp__25),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__25),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__25),
.o_uxCost(uxCost__25),
.o_uzCost(uzCost__25),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__25),
.o_uxNumerator(uxNumerator__25),
.o_uyNumerator(uyNumerator__25),
.o_uyCost(uyCost__25),
.o_uxQuotient(uxQuotient__25),
.o_uyQuotient(uyQuotient__25)
);
InternalsBlock pipeReg24(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__23),
.i_cost(cost__23),
.i_sinp(sinp__23),
.i_cosp(cosp__23),
.i_sintCosp(sintCosp__23),
.i_sintSinp(sintSinp__23),
.i_uz2(uz2__23),
.i_uxUz(uxUz__23),
.i_uyUz(uyUz__23),
.i_uySintSinp(uySintSinp__23),
.i_oneMinusUz2(oneMinusUz2__23),
.i_uyUzSintCosp(uyUzSintCosp__23),
.i_uxUzSintCosp(uxUzSintCosp__23),
.i_uxSintSinp(uxSintSinp__23),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__23),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__23),
.i_uxCost(uxCost__23),
.i_uzCost(uzCost__23),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__23),
.i_uxNumerator(uxNumerator__23),
.i_uyNumerator(uyNumerator__23),
.i_uyCost(uyCost__23),
.i_uxQuotient(uxQuotient__23),
.i_uyQuotient(uyQuotient__23),
//Outputs
.o_sint(sint__24),
.o_cost(cost__24),
.o_sinp(sinp__24),
.o_cosp(cosp__24),
.o_sintCosp(sintCosp__24),
.o_sintSinp(sintSinp__24),
.o_uz2(uz2__24),
.o_uxUz(uxUz__24),
.o_uyUz(uyUz__24),
.o_uySintSinp(uySintSinp__24),
.o_oneMinusUz2(oneMinusUz2__24),
.o_uyUzSintCosp(uyUzSintCosp__24),
.o_uxUzSintCosp(uxUzSintCosp__24),
.o_uxSintSinp(uxSintSinp__24),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__24),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__24),
.o_uxCost(uxCost__24),
.o_uzCost(uzCost__24),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__24),
.o_uxNumerator(uxNumerator__24),
.o_uyNumerator(uyNumerator__24),
.o_uyCost(uyCost__24),
.o_uxQuotient(uxQuotient__24),
.o_uyQuotient(uyQuotient__24)
);
InternalsBlock pipeReg23(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__22),
.i_cost(cost__22),
.i_sinp(sinp__22),
.i_cosp(cosp__22),
.i_sintCosp(sintCosp__22),
.i_sintSinp(sintSinp__22),
.i_uz2(uz2__22),
.i_uxUz(uxUz__22),
.i_uyUz(uyUz__22),
.i_uySintSinp(uySintSinp__22),
.i_oneMinusUz2(oneMinusUz2__22),
.i_uyUzSintCosp(uyUzSintCosp__22),
.i_uxUzSintCosp(uxUzSintCosp__22),
.i_uxSintSinp(uxSintSinp__22),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__22),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__22),
.i_uxCost(uxCost__22),
.i_uzCost(uzCost__22),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__22),
.i_uxNumerator(uxNumerator__22),
.i_uyNumerator(uyNumerator__22),
.i_uyCost(uyCost__22),
.i_uxQuotient(uxQuotient__22),
.i_uyQuotient(uyQuotient__22),
//Outputs
.o_sint(sint__23),
.o_cost(cost__23),
.o_sinp(sinp__23),
.o_cosp(cosp__23),
.o_sintCosp(sintCosp__23),
.o_sintSinp(sintSinp__23),
.o_uz2(uz2__23),
.o_uxUz(uxUz__23),
.o_uyUz(uyUz__23),
.o_uySintSinp(uySintSinp__23),
.o_oneMinusUz2(oneMinusUz2__23),
.o_uyUzSintCosp(uyUzSintCosp__23),
.o_uxUzSintCosp(uxUzSintCosp__23),
.o_uxSintSinp(uxSintSinp__23),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__23),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__23),
.o_uxCost(uxCost__23),
.o_uzCost(uzCost__23),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__23),
.o_uxNumerator(uxNumerator__23),
.o_uyNumerator(uyNumerator__23),
.o_uyCost(uyCost__23),
.o_uxQuotient(uxQuotient__23),
.o_uyQuotient(uyQuotient__23)
);
InternalsBlock pipeReg22(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__21),
.i_cost(cost__21),
.i_sinp(sinp__21),
.i_cosp(cosp__21),
.i_sintCosp(sintCosp__21),
.i_sintSinp(sintSinp__21),
.i_uz2(uz2__21),
.i_uxUz(uxUz__21),
.i_uyUz(uyUz__21),
.i_uySintSinp(uySintSinp__21),
.i_oneMinusUz2(oneMinusUz2__21),
.i_uyUzSintCosp(uyUzSintCosp__21),
.i_uxUzSintCosp(uxUzSintCosp__21),
.i_uxSintSinp(uxSintSinp__21),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__21),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__21),
.i_uxCost(uxCost__21),
.i_uzCost(uzCost__21),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__21),
.i_uxNumerator(uxNumerator__21),
.i_uyNumerator(uyNumerator__21),
.i_uyCost(uyCost__21),
.i_uxQuotient(uxQuotient__21),
.i_uyQuotient(uyQuotient__21),
//Outputs
.o_sint(sint__22),
.o_cost(cost__22),
.o_sinp(sinp__22),
.o_cosp(cosp__22),
.o_sintCosp(sintCosp__22),
.o_sintSinp(sintSinp__22),
.o_uz2(uz2__22),
.o_uxUz(uxUz__22),
.o_uyUz(uyUz__22),
.o_uySintSinp(uySintSinp__22),
.o_oneMinusUz2(oneMinusUz2__22),
.o_uyUzSintCosp(uyUzSintCosp__22),
.o_uxUzSintCosp(uxUzSintCosp__22),
.o_uxSintSinp(uxSintSinp__22),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__22),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__22),
.o_uxCost(uxCost__22),
.o_uzCost(uzCost__22),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__22),
.o_uxNumerator(uxNumerator__22),
.o_uyNumerator(uyNumerator__22),
.o_uyCost(uyCost__22),
.o_uxQuotient(uxQuotient__22),
.o_uyQuotient(uyQuotient__22)
);
InternalsBlock pipeReg21(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__20),
.i_cost(cost__20),
.i_sinp(sinp__20),
.i_cosp(cosp__20),
.i_sintCosp(sintCosp__20),
.i_sintSinp(sintSinp__20),
.i_uz2(uz2__20),
.i_uxUz(uxUz__20),
.i_uyUz(uyUz__20),
.i_uySintSinp(uySintSinp__20),
.i_oneMinusUz2(oneMinusUz2__20),
.i_uyUzSintCosp(uyUzSintCosp__20),
.i_uxUzSintCosp(uxUzSintCosp__20),
.i_uxSintSinp(uxSintSinp__20),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__20),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__20),
.i_uxCost(uxCost__20),
.i_uzCost(uzCost__20),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__20),
.i_uxNumerator(uxNumerator__20),
.i_uyNumerator(uyNumerator__20),
.i_uyCost(uyCost__20),
.i_uxQuotient(uxQuotient__20),
.i_uyQuotient(uyQuotient__20),
//Outputs
.o_sint(sint__21),
.o_cost(cost__21),
.o_sinp(sinp__21),
.o_cosp(cosp__21),
.o_sintCosp(sintCosp__21),
.o_sintSinp(sintSinp__21),
.o_uz2(uz2__21),
.o_uxUz(uxUz__21),
.o_uyUz(uyUz__21),
.o_uySintSinp(uySintSinp__21),
.o_oneMinusUz2(oneMinusUz2__21),
.o_uyUzSintCosp(uyUzSintCosp__21),
.o_uxUzSintCosp(uxUzSintCosp__21),
.o_uxSintSinp(uxSintSinp__21),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__21),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__21),
.o_uxCost(uxCost__21),
.o_uzCost(uzCost__21),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__21),
.o_uxNumerator(uxNumerator__21),
.o_uyNumerator(uyNumerator__21),
.o_uyCost(uyCost__21),
.o_uxQuotient(uxQuotient__21),
.o_uyQuotient(uyQuotient__21)
);
InternalsBlock pipeReg20(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__19),
.i_cost(cost__19),
.i_sinp(sinp__19),
.i_cosp(cosp__19),
.i_sintCosp(sintCosp__19),
.i_sintSinp(sintSinp__19),
.i_uz2(uz2__19),
.i_uxUz(uxUz__19),
.i_uyUz(uyUz__19),
.i_uySintSinp(uySintSinp__19),
.i_oneMinusUz2(oneMinusUz2__19),
.i_uyUzSintCosp(uyUzSintCosp__19),
.i_uxUzSintCosp(uxUzSintCosp__19),
.i_uxSintSinp(uxSintSinp__19),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__19),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__19),
.i_uxCost(uxCost__19),
.i_uzCost(uzCost__19),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__19),
.i_uxNumerator(uxNumerator__19),
.i_uyNumerator(uyNumerator__19),
.i_uyCost(uyCost__19),
.i_uxQuotient(uxQuotient__19),
.i_uyQuotient(uyQuotient__19),
//Outputs
.o_sint(sint__20),
.o_cost(cost__20),
.o_sinp(sinp__20),
.o_cosp(cosp__20),
.o_sintCosp(sintCosp__20),
.o_sintSinp(sintSinp__20),
.o_uz2(uz2__20),
.o_uxUz(uxUz__20),
.o_uyUz(uyUz__20),
.o_uySintSinp(uySintSinp__20),
.o_oneMinusUz2(oneMinusUz2__20),
.o_uyUzSintCosp(uyUzSintCosp__20),
.o_uxUzSintCosp(uxUzSintCosp__20),
.o_uxSintSinp(uxSintSinp__20),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__20),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__20),
.o_uxCost(uxCost__20),
.o_uzCost(uzCost__20),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__20),
.o_uxNumerator(uxNumerator__20),
.o_uyNumerator(uyNumerator__20),
.o_uyCost(uyCost__20),
.o_uxQuotient(uxQuotient__20),
.o_uyQuotient(uyQuotient__20)
);
InternalsBlock pipeReg19(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__18),
.i_cost(cost__18),
.i_sinp(sinp__18),
.i_cosp(cosp__18),
.i_sintCosp(sintCosp__18),
.i_sintSinp(sintSinp__18),
.i_uz2(uz2__18),
.i_uxUz(uxUz__18),
.i_uyUz(uyUz__18),
.i_uySintSinp(uySintSinp__18),
.i_oneMinusUz2(oneMinusUz2__18),
.i_uyUzSintCosp(uyUzSintCosp__18),
.i_uxUzSintCosp(uxUzSintCosp__18),
.i_uxSintSinp(uxSintSinp__18),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__18),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__18),
.i_uxCost(uxCost__18),
.i_uzCost(uzCost__18),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__18),
.i_uxNumerator(uxNumerator__18),
.i_uyNumerator(uyNumerator__18),
.i_uyCost(uyCost__18),
.i_uxQuotient(uxQuotient__18),
.i_uyQuotient(uyQuotient__18),
//Outputs
.o_sint(sint__19),
.o_cost(cost__19),
.o_sinp(sinp__19),
.o_cosp(cosp__19),
.o_sintCosp(sintCosp__19),
.o_sintSinp(sintSinp__19),
.o_uz2(uz2__19),
.o_uxUz(uxUz__19),
.o_uyUz(uyUz__19),
.o_uySintSinp(uySintSinp__19),
.o_oneMinusUz2(oneMinusUz2__19),
.o_uyUzSintCosp(uyUzSintCosp__19),
.o_uxUzSintCosp(uxUzSintCosp__19),
.o_uxSintSinp(uxSintSinp__19),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__19),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__19),
.o_uxCost(uxCost__19),
.o_uzCost(uzCost__19),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__19),
.o_uxNumerator(uxNumerator__19),
.o_uyNumerator(uyNumerator__19),
.o_uyCost(uyCost__19),
.o_uxQuotient(uxQuotient__19),
.o_uyQuotient(uyQuotient__19)
);
InternalsBlock pipeReg18(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__17),
.i_cost(cost__17),
.i_sinp(sinp__17),
.i_cosp(cosp__17),
.i_sintCosp(sintCosp__17),
.i_sintSinp(sintSinp__17),
.i_uz2(uz2__17),
.i_uxUz(uxUz__17),
.i_uyUz(uyUz__17),
.i_uySintSinp(uySintSinp__17),
.i_oneMinusUz2(oneMinusUz2__17),
.i_uyUzSintCosp(uyUzSintCosp__17),
.i_uxUzSintCosp(uxUzSintCosp__17),
.i_uxSintSinp(uxSintSinp__17),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__17),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__17),
.i_uxCost(uxCost__17),
.i_uzCost(uzCost__17),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__17),
.i_uxNumerator(uxNumerator__17),
.i_uyNumerator(uyNumerator__17),
.i_uyCost(uyCost__17),
.i_uxQuotient(uxQuotient__17),
.i_uyQuotient(uyQuotient__17),
//Outputs
.o_sint(sint__18),
.o_cost(cost__18),
.o_sinp(sinp__18),
.o_cosp(cosp__18),
.o_sintCosp(sintCosp__18),
.o_sintSinp(sintSinp__18),
.o_uz2(uz2__18),
.o_uxUz(uxUz__18),
.o_uyUz(uyUz__18),
.o_uySintSinp(uySintSinp__18),
.o_oneMinusUz2(oneMinusUz2__18),
.o_uyUzSintCosp(uyUzSintCosp__18),
.o_uxUzSintCosp(uxUzSintCosp__18),
.o_uxSintSinp(uxSintSinp__18),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__18),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__18),
.o_uxCost(uxCost__18),
.o_uzCost(uzCost__18),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__18),
.o_uxNumerator(uxNumerator__18),
.o_uyNumerator(uyNumerator__18),
.o_uyCost(uyCost__18),
.o_uxQuotient(uxQuotient__18),
.o_uyQuotient(uyQuotient__18)
);
InternalsBlock pipeReg17(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__16),
.i_cost(cost__16),
.i_sinp(sinp__16),
.i_cosp(cosp__16),
.i_sintCosp(sintCosp__16),
.i_sintSinp(sintSinp__16),
.i_uz2(uz2__16),
.i_uxUz(uxUz__16),
.i_uyUz(uyUz__16),
.i_uySintSinp(uySintSinp__16),
.i_oneMinusUz2(oneMinusUz2__16),
.i_uyUzSintCosp(uyUzSintCosp__16),
.i_uxUzSintCosp(uxUzSintCosp__16),
.i_uxSintSinp(uxSintSinp__16),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__16),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__16),
.i_uxCost(uxCost__16),
.i_uzCost(uzCost__16),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__16),
.i_uxNumerator(uxNumerator__16),
.i_uyNumerator(uyNumerator__16),
.i_uyCost(uyCost__16),
.i_uxQuotient(uxQuotient__16),
.i_uyQuotient(uyQuotient__16),
//Outputs
.o_sint(sint__17),
.o_cost(cost__17),
.o_sinp(sinp__17),
.o_cosp(cosp__17),
.o_sintCosp(sintCosp__17),
.o_sintSinp(sintSinp__17),
.o_uz2(uz2__17),
.o_uxUz(uxUz__17),
.o_uyUz(uyUz__17),
.o_uySintSinp(uySintSinp__17),
.o_oneMinusUz2(oneMinusUz2__17),
.o_uyUzSintCosp(uyUzSintCosp__17),
.o_uxUzSintCosp(uxUzSintCosp__17),
.o_uxSintSinp(uxSintSinp__17),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__17),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__17),
.o_uxCost(uxCost__17),
.o_uzCost(uzCost__17),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__17),
.o_uxNumerator(uxNumerator__17),
.o_uyNumerator(uyNumerator__17),
.o_uyCost(uyCost__17),
.o_uxQuotient(uxQuotient__17),
.o_uyQuotient(uyQuotient__17)
);
InternalsBlock pipeReg15(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__14),
.i_cost(cost__14),
.i_sinp(sinp__14),
.i_cosp(cosp__14),
.i_sintCosp(sintCosp__14),
.i_sintSinp(sintSinp__14),
.i_uz2(uz2__14),
.i_uxUz(uxUz__14),
.i_uyUz(uyUz__14),
.i_uySintSinp(uySintSinp__14),
.i_oneMinusUz2(oneMinusUz2__14),
.i_uyUzSintCosp(uyUzSintCosp__14),
.i_uxUzSintCosp(uxUzSintCosp__14),
.i_uxSintSinp(uxSintSinp__14),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__14),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__14),
.i_uxCost(uxCost__14),
.i_uzCost(uzCost__14),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__14),
.i_uxNumerator(uxNumerator__14),
.i_uyNumerator(uyNumerator__14),
.i_uyCost(uyCost__14),
.i_uxQuotient(uxQuotient__14),
.i_uyQuotient(uyQuotient__14),
//Outputs
.o_sint(sint__15),
.o_cost(cost__15),
.o_sinp(sinp__15),
.o_cosp(cosp__15),
.o_sintCosp(sintCosp__15),
.o_sintSinp(sintSinp__15),
.o_uz2(uz2__15),
.o_uxUz(uxUz__15),
.o_uyUz(uyUz__15),
.o_uySintSinp(uySintSinp__15),
.o_oneMinusUz2(oneMinusUz2__15),
.o_uyUzSintCosp(uyUzSintCosp__15),
.o_uxUzSintCosp(uxUzSintCosp__15),
.o_uxSintSinp(uxSintSinp__15),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__15),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__15),
.o_uxCost(uxCost__15),
.o_uzCost(uzCost__15),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__15),
.o_uxNumerator(uxNumerator__15),
.o_uyNumerator(uyNumerator__15),
.o_uyCost(uyCost__15),
.o_uxQuotient(uxQuotient__15),
.o_uyQuotient(uyQuotient__15)
);
InternalsBlock pipeReg14(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__13),
.i_cost(cost__13),
.i_sinp(sinp__13),
.i_cosp(cosp__13),
.i_sintCosp(sintCosp__13),
.i_sintSinp(sintSinp__13),
.i_uz2(uz2__13),
.i_uxUz(uxUz__13),
.i_uyUz(uyUz__13),
.i_uySintSinp(uySintSinp__13),
.i_oneMinusUz2(oneMinusUz2__13),
.i_uyUzSintCosp(uyUzSintCosp__13),
.i_uxUzSintCosp(uxUzSintCosp__13),
.i_uxSintSinp(uxSintSinp__13),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__13),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__13),
.i_uxCost(uxCost__13),
.i_uzCost(uzCost__13),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__13),
.i_uxNumerator(uxNumerator__13),
.i_uyNumerator(uyNumerator__13),
.i_uyCost(uyCost__13),
.i_uxQuotient(uxQuotient__13),
.i_uyQuotient(uyQuotient__13),
//Outputs
.o_sint(sint__14),
.o_cost(cost__14),
.o_sinp(sinp__14),
.o_cosp(cosp__14),
.o_sintCosp(sintCosp__14),
.o_sintSinp(sintSinp__14),
.o_uz2(uz2__14),
.o_uxUz(uxUz__14),
.o_uyUz(uyUz__14),
.o_uySintSinp(uySintSinp__14),
.o_oneMinusUz2(oneMinusUz2__14),
.o_uyUzSintCosp(uyUzSintCosp__14),
.o_uxUzSintCosp(uxUzSintCosp__14),
.o_uxSintSinp(uxSintSinp__14),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__14),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__14),
.o_uxCost(uxCost__14),
.o_uzCost(uzCost__14),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__14),
.o_uxNumerator(uxNumerator__14),
.o_uyNumerator(uyNumerator__14),
.o_uyCost(uyCost__14),
.o_uxQuotient(uxQuotient__14),
.o_uyQuotient(uyQuotient__14)
);
InternalsBlock pipeReg13(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__12),
.i_cost(cost__12),
.i_sinp(sinp__12),
.i_cosp(cosp__12),
.i_sintCosp(sintCosp__12),
.i_sintSinp(sintSinp__12),
.i_uz2(uz2__12),
.i_uxUz(uxUz__12),
.i_uyUz(uyUz__12),
.i_uySintSinp(uySintSinp__12),
.i_oneMinusUz2(oneMinusUz2__12),
.i_uyUzSintCosp(uyUzSintCosp__12),
.i_uxUzSintCosp(uxUzSintCosp__12),
.i_uxSintSinp(uxSintSinp__12),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__12),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__12),
.i_uxCost(uxCost__12),
.i_uzCost(uzCost__12),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__12),
.i_uxNumerator(uxNumerator__12),
.i_uyNumerator(uyNumerator__12),
.i_uyCost(uyCost__12),
.i_uxQuotient(uxQuotient__12),
.i_uyQuotient(uyQuotient__12),
//Outputs
.o_sint(sint__13),
.o_cost(cost__13),
.o_sinp(sinp__13),
.o_cosp(cosp__13),
.o_sintCosp(sintCosp__13),
.o_sintSinp(sintSinp__13),
.o_uz2(uz2__13),
.o_uxUz(uxUz__13),
.o_uyUz(uyUz__13),
.o_uySintSinp(uySintSinp__13),
.o_oneMinusUz2(oneMinusUz2__13),
.o_uyUzSintCosp(uyUzSintCosp__13),
.o_uxUzSintCosp(uxUzSintCosp__13),
.o_uxSintSinp(uxSintSinp__13),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__13),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__13),
.o_uxCost(uxCost__13),
.o_uzCost(uzCost__13),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__13),
.o_uxNumerator(uxNumerator__13),
.o_uyNumerator(uyNumerator__13),
.o_uyCost(uyCost__13),
.o_uxQuotient(uxQuotient__13),
.o_uyQuotient(uyQuotient__13)
);
InternalsBlock pipeReg12(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__11),
.i_cost(cost__11),
.i_sinp(sinp__11),
.i_cosp(cosp__11),
.i_sintCosp(sintCosp__11),
.i_sintSinp(sintSinp__11),
.i_uz2(uz2__11),
.i_uxUz(uxUz__11),
.i_uyUz(uyUz__11),
.i_uySintSinp(uySintSinp__11),
.i_oneMinusUz2(oneMinusUz2__11),
.i_uyUzSintCosp(uyUzSintCosp__11),
.i_uxUzSintCosp(uxUzSintCosp__11),
.i_uxSintSinp(uxSintSinp__11),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__11),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__11),
.i_uxCost(uxCost__11),
.i_uzCost(uzCost__11),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__11),
.i_uxNumerator(uxNumerator__11),
.i_uyNumerator(uyNumerator__11),
.i_uyCost(uyCost__11),
.i_uxQuotient(uxQuotient__11),
.i_uyQuotient(uyQuotient__11),
//Outputs
.o_sint(sint__12),
.o_cost(cost__12),
.o_sinp(sinp__12),
.o_cosp(cosp__12),
.o_sintCosp(sintCosp__12),
.o_sintSinp(sintSinp__12),
.o_uz2(uz2__12),
.o_uxUz(uxUz__12),
.o_uyUz(uyUz__12),
.o_uySintSinp(uySintSinp__12),
.o_oneMinusUz2(oneMinusUz2__12),
.o_uyUzSintCosp(uyUzSintCosp__12),
.o_uxUzSintCosp(uxUzSintCosp__12),
.o_uxSintSinp(uxSintSinp__12),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__12),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__12),
.o_uxCost(uxCost__12),
.o_uzCost(uzCost__12),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__12),
.o_uxNumerator(uxNumerator__12),
.o_uyNumerator(uyNumerator__12),
.o_uyCost(uyCost__12),
.o_uxQuotient(uxQuotient__12),
.o_uyQuotient(uyQuotient__12)
);
InternalsBlock pipeReg11(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__10),
.i_cost(cost__10),
.i_sinp(sinp__10),
.i_cosp(cosp__10),
.i_sintCosp(sintCosp__10),
.i_sintSinp(sintSinp__10),
.i_uz2(uz2__10),
.i_uxUz(uxUz__10),
.i_uyUz(uyUz__10),
.i_uySintSinp(uySintSinp__10),
.i_oneMinusUz2(oneMinusUz2__10),
.i_uyUzSintCosp(uyUzSintCosp__10),
.i_uxUzSintCosp(uxUzSintCosp__10),
.i_uxSintSinp(uxSintSinp__10),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__10),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__10),
.i_uxCost(uxCost__10),
.i_uzCost(uzCost__10),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__10),
.i_uxNumerator(uxNumerator__10),
.i_uyNumerator(uyNumerator__10),
.i_uyCost(uyCost__10),
.i_uxQuotient(uxQuotient__10),
.i_uyQuotient(uyQuotient__10),
//Outputs
.o_sint(sint__11),
.o_cost(cost__11),
.o_sinp(sinp__11),
.o_cosp(cosp__11),
.o_sintCosp(sintCosp__11),
.o_sintSinp(sintSinp__11),
.o_uz2(uz2__11),
.o_uxUz(uxUz__11),
.o_uyUz(uyUz__11),
.o_uySintSinp(uySintSinp__11),
.o_oneMinusUz2(oneMinusUz2__11),
.o_uyUzSintCosp(uyUzSintCosp__11),
.o_uxUzSintCosp(uxUzSintCosp__11),
.o_uxSintSinp(uxSintSinp__11),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__11),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__11),
.o_uxCost(uxCost__11),
.o_uzCost(uzCost__11),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__11),
.o_uxNumerator(uxNumerator__11),
.o_uyNumerator(uyNumerator__11),
.o_uyCost(uyCost__11),
.o_uxQuotient(uxQuotient__11),
.o_uyQuotient(uyQuotient__11)
);
InternalsBlock pipeReg10(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__9),
.i_cost(cost__9),
.i_sinp(sinp__9),
.i_cosp(cosp__9),
.i_sintCosp(sintCosp__9),
.i_sintSinp(sintSinp__9),
.i_uz2(uz2__9),
.i_uxUz(uxUz__9),
.i_uyUz(uyUz__9),
.i_uySintSinp(uySintSinp__9),
.i_oneMinusUz2(oneMinusUz2__9),
.i_uyUzSintCosp(uyUzSintCosp__9),
.i_uxUzSintCosp(uxUzSintCosp__9),
.i_uxSintSinp(uxSintSinp__9),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__9),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__9),
.i_uxCost(uxCost__9),
.i_uzCost(uzCost__9),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__9),
.i_uxNumerator(uxNumerator__9),
.i_uyNumerator(uyNumerator__9),
.i_uyCost(uyCost__9),
.i_uxQuotient(uxQuotient__9),
.i_uyQuotient(uyQuotient__9),
//Outputs
.o_sint(sint__10),
.o_cost(cost__10),
.o_sinp(sinp__10),
.o_cosp(cosp__10),
.o_sintCosp(sintCosp__10),
.o_sintSinp(sintSinp__10),
.o_uz2(uz2__10),
.o_uxUz(uxUz__10),
.o_uyUz(uyUz__10),
.o_uySintSinp(uySintSinp__10),
.o_oneMinusUz2(oneMinusUz2__10),
.o_uyUzSintCosp(uyUzSintCosp__10),
.o_uxUzSintCosp(uxUzSintCosp__10),
.o_uxSintSinp(uxSintSinp__10),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__10),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__10),
.o_uxCost(uxCost__10),
.o_uzCost(uzCost__10),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__10),
.o_uxNumerator(uxNumerator__10),
.o_uyNumerator(uyNumerator__10),
.o_uyCost(uyCost__10),
.o_uxQuotient(uxQuotient__10),
.o_uyQuotient(uyQuotient__10)
);
InternalsBlock pipeReg9(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__8),
.i_cost(cost__8),
.i_sinp(sinp__8),
.i_cosp(cosp__8),
.i_sintCosp(sintCosp__8),
.i_sintSinp(sintSinp__8),
.i_uz2(uz2__8),
.i_uxUz(uxUz__8),
.i_uyUz(uyUz__8),
.i_uySintSinp(uySintSinp__8),
.i_oneMinusUz2(oneMinusUz2__8),
.i_uyUzSintCosp(uyUzSintCosp__8),
.i_uxUzSintCosp(uxUzSintCosp__8),
.i_uxSintSinp(uxSintSinp__8),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__8),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__8),
.i_uxCost(uxCost__8),
.i_uzCost(uzCost__8),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__8),
.i_uxNumerator(uxNumerator__8),
.i_uyNumerator(uyNumerator__8),
.i_uyCost(uyCost__8),
.i_uxQuotient(uxQuotient__8),
.i_uyQuotient(uyQuotient__8),
//Outputs
.o_sint(sint__9),
.o_cost(cost__9),
.o_sinp(sinp__9),
.o_cosp(cosp__9),
.o_sintCosp(sintCosp__9),
.o_sintSinp(sintSinp__9),
.o_uz2(uz2__9),
.o_uxUz(uxUz__9),
.o_uyUz(uyUz__9),
.o_uySintSinp(uySintSinp__9),
.o_oneMinusUz2(oneMinusUz2__9),
.o_uyUzSintCosp(uyUzSintCosp__9),
.o_uxUzSintCosp(uxUzSintCosp__9),
.o_uxSintSinp(uxSintSinp__9),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__9),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__9),
.o_uxCost(uxCost__9),
.o_uzCost(uzCost__9),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__9),
.o_uxNumerator(uxNumerator__9),
.o_uyNumerator(uyNumerator__9),
.o_uyCost(uyCost__9),
.o_uxQuotient(uxQuotient__9),
.o_uyQuotient(uyQuotient__9)
);
InternalsBlock pipeReg8(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__7),
.i_cost(cost__7),
.i_sinp(sinp__7),
.i_cosp(cosp__7),
.i_sintCosp(sintCosp__7),
.i_sintSinp(sintSinp__7),
.i_uz2(uz2__7),
.i_uxUz(uxUz__7),
.i_uyUz(uyUz__7),
.i_uySintSinp(uySintSinp__7),
.i_oneMinusUz2(oneMinusUz2__7),
.i_uyUzSintCosp(uyUzSintCosp__7),
.i_uxUzSintCosp(uxUzSintCosp__7),
.i_uxSintSinp(uxSintSinp__7),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__7),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__7),
.i_uxCost(uxCost__7),
.i_uzCost(uzCost__7),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__7),
.i_uxNumerator(uxNumerator__7),
.i_uyNumerator(uyNumerator__7),
.i_uyCost(uyCost__7),
.i_uxQuotient(uxQuotient__7),
.i_uyQuotient(uyQuotient__7),
//Outputs
.o_sint(sint__8),
.o_cost(cost__8),
.o_sinp(sinp__8),
.o_cosp(cosp__8),
.o_sintCosp(sintCosp__8),
.o_sintSinp(sintSinp__8),
.o_uz2(uz2__8),
.o_uxUz(uxUz__8),
.o_uyUz(uyUz__8),
.o_uySintSinp(uySintSinp__8),
.o_oneMinusUz2(oneMinusUz2__8),
.o_uyUzSintCosp(uyUzSintCosp__8),
.o_uxUzSintCosp(uxUzSintCosp__8),
.o_uxSintSinp(uxSintSinp__8),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__8),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__8),
.o_uxCost(uxCost__8),
.o_uzCost(uzCost__8),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__8),
.o_uxNumerator(uxNumerator__8),
.o_uyNumerator(uyNumerator__8),
.o_uyCost(uyCost__8),
.o_uxQuotient(uxQuotient__8),
.o_uyQuotient(uyQuotient__8)
);
InternalsBlock pipeReg7(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__6),
.i_cost(cost__6),
.i_sinp(sinp__6),
.i_cosp(cosp__6),
.i_sintCosp(sintCosp__6),
.i_sintSinp(sintSinp__6),
.i_uz2(uz2__6),
.i_uxUz(uxUz__6),
.i_uyUz(uyUz__6),
.i_uySintSinp(uySintSinp__6),
.i_oneMinusUz2(oneMinusUz2__6),
.i_uyUzSintCosp(uyUzSintCosp__6),
.i_uxUzSintCosp(uxUzSintCosp__6),
.i_uxSintSinp(uxSintSinp__6),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__6),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__6),
.i_uxCost(uxCost__6),
.i_uzCost(uzCost__6),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__6),
.i_uxNumerator(uxNumerator__6),
.i_uyNumerator(uyNumerator__6),
.i_uyCost(uyCost__6),
.i_uxQuotient(uxQuotient__6),
.i_uyQuotient(uyQuotient__6),
//Outputs
.o_sint(sint__7),
.o_cost(cost__7),
.o_sinp(sinp__7),
.o_cosp(cosp__7),
.o_sintCosp(sintCosp__7),
.o_sintSinp(sintSinp__7),
.o_uz2(uz2__7),
.o_uxUz(uxUz__7),
.o_uyUz(uyUz__7),
.o_uySintSinp(uySintSinp__7),
.o_oneMinusUz2(oneMinusUz2__7),
.o_uyUzSintCosp(uyUzSintCosp__7),
.o_uxUzSintCosp(uxUzSintCosp__7),
.o_uxSintSinp(uxSintSinp__7),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__7),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__7),
.o_uxCost(uxCost__7),
.o_uzCost(uzCost__7),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__7),
.o_uxNumerator(uxNumerator__7),
.o_uyNumerator(uyNumerator__7),
.o_uyCost(uyCost__7),
.o_uxQuotient(uxQuotient__7),
.o_uyQuotient(uyQuotient__7)
);
InternalsBlock pipeReg6(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__5),
.i_cost(cost__5),
.i_sinp(sinp__5),
.i_cosp(cosp__5),
.i_sintCosp(sintCosp__5),
.i_sintSinp(sintSinp__5),
.i_uz2(uz2__5),
.i_uxUz(uxUz__5),
.i_uyUz(uyUz__5),
.i_uySintSinp(uySintSinp__5),
.i_oneMinusUz2(oneMinusUz2__5),
.i_uyUzSintCosp(uyUzSintCosp__5),
.i_uxUzSintCosp(uxUzSintCosp__5),
.i_uxSintSinp(uxSintSinp__5),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__5),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__5),
.i_uxCost(uxCost__5),
.i_uzCost(uzCost__5),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__5),
.i_uxNumerator(uxNumerator__5),
.i_uyNumerator(uyNumerator__5),
.i_uyCost(uyCost__5),
.i_uxQuotient(uxQuotient__5),
.i_uyQuotient(uyQuotient__5),
//Outputs
.o_sint(sint__6),
.o_cost(cost__6),
.o_sinp(sinp__6),
.o_cosp(cosp__6),
.o_sintCosp(sintCosp__6),
.o_sintSinp(sintSinp__6),
.o_uz2(uz2__6),
.o_uxUz(uxUz__6),
.o_uyUz(uyUz__6),
.o_uySintSinp(uySintSinp__6),
.o_oneMinusUz2(oneMinusUz2__6),
.o_uyUzSintCosp(uyUzSintCosp__6),
.o_uxUzSintCosp(uxUzSintCosp__6),
.o_uxSintSinp(uxSintSinp__6),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__6),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__6),
.o_uxCost(uxCost__6),
.o_uzCost(uzCost__6),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__6),
.o_uxNumerator(uxNumerator__6),
.o_uyNumerator(uyNumerator__6),
.o_uyCost(uyCost__6),
.o_uxQuotient(uxQuotient__6),
.o_uyQuotient(uyQuotient__6)
);
InternalsBlock pipeReg5(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__4),
.i_cost(cost__4),
.i_sinp(sinp__4),
.i_cosp(cosp__4),
.i_sintCosp(sintCosp__4),
.i_sintSinp(sintSinp__4),
.i_uz2(uz2__4),
.i_uxUz(uxUz__4),
.i_uyUz(uyUz__4),
.i_uySintSinp(uySintSinp__4),
.i_oneMinusUz2(oneMinusUz2__4),
.i_uyUzSintCosp(uyUzSintCosp__4),
.i_uxUzSintCosp(uxUzSintCosp__4),
.i_uxSintSinp(uxSintSinp__4),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__4),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__4),
.i_uxCost(uxCost__4),
.i_uzCost(uzCost__4),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__4),
.i_uxNumerator(uxNumerator__4),
.i_uyNumerator(uyNumerator__4),
.i_uyCost(uyCost__4),
.i_uxQuotient(uxQuotient__4),
.i_uyQuotient(uyQuotient__4),
//Outputs
.o_sint(sint__5),
.o_cost(cost__5),
.o_sinp(sinp__5),
.o_cosp(cosp__5),
.o_sintCosp(sintCosp__5),
.o_sintSinp(sintSinp__5),
.o_uz2(uz2__5),
.o_uxUz(uxUz__5),
.o_uyUz(uyUz__5),
.o_uySintSinp(uySintSinp__5),
.o_oneMinusUz2(oneMinusUz2__5),
.o_uyUzSintCosp(uyUzSintCosp__5),
.o_uxUzSintCosp(uxUzSintCosp__5),
.o_uxSintSinp(uxSintSinp__5),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__5),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__5),
.o_uxCost(uxCost__5),
.o_uzCost(uzCost__5),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__5),
.o_uxNumerator(uxNumerator__5),
.o_uyNumerator(uyNumerator__5),
.o_uyCost(uyCost__5),
.o_uxQuotient(uxQuotient__5),
.o_uyQuotient(uyQuotient__5)
);
//since these will be replaced later
assign sint__0 = 32'b00000000000000000000000000000000;
assign cost__0 = 32'b00000000000000000000000000000000;
assign sinp__0 = 32'b00000000000000000000000000000000;
assign cosp__0 = 32'b00000000000000000000000000000000;
assign sintCosp__0 = 32'b00000000000000000000000000000000;
assign sintSinp__0 = 32'b00000000000000000000000000000000;
assign uz2__0 = 0;
assign uxUz__0 = 32'b00000000000000000000000000000000;
assign uyUz__0 = 32'b00000000000000000000000000000000;
assign uySintSinp__0 = 32'b00000000000000000000000000000000;
assign oneMinusUz2__0 = 0;
assign uyUzSintCosp__0 = 32'b00000000000000000000000000000000;
assign uxUzSintCosp__0 = 32'b00000000000000000000000000000000;
assign uxSintSinp__0 = 32'b00000000000000000000000000000000;
assign sqrtOneMinusUz2__0 = 32'b00000000000000000000000000000000;
assign sintCospSqrtOneMinusUz2__0 = 32'b00000000000000000000000000000000;
assign uxCost__0 = 32'b00000000000000000000000000000000;
assign uzCost__0 = 32'b00000000000000000000000000000000;
assign sqrtOneMinusUz2_inv__0 = 32'b00000000000000000000000000000000;
assign uxNumerator__0 = 32'b00000000000000000000000000000000;
assign uyNumerator__0 = 32'b00000000000000000000000000000000;
assign uyCost__0 = 32'b00000000000000000000000000000000;
assign uxQuotient__0 = 32'b00000000000000000000000000000000;
assign uyQuotient__0 = 32'b00000000000000000000000000000000;
InternalsBlock pipeReg1(
//Inputs
.clock(clock),
.reset(reset),
.enable(enable),
.i_sint(sint__0),
.i_cost(cost__0),
.i_sinp(sinp__0),
.i_cosp(cosp__0),
.i_sintCosp(sintCosp__0),
.i_sintSinp(sintSinp__0),
.i_uz2(uz2__0),
.i_uxUz(uxUz__0),
.i_uyUz(uyUz__0),
.i_uySintSinp(uySintSinp__0),
.i_oneMinusUz2(oneMinusUz2__0),
.i_uyUzSintCosp(uyUzSintCosp__0),
.i_uxUzSintCosp(uxUzSintCosp__0),
.i_uxSintSinp(uxSintSinp__0),
.i_sqrtOneMinusUz2(sqrtOneMinusUz2__0),
.i_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__0),
.i_uxCost(uxCost__0),
.i_uzCost(uzCost__0),
.i_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__0),
.i_uxNumerator(uxNumerator__0),
.i_uyNumerator(uyNumerator__0),
.i_uyCost(uyCost__0),
.i_uxQuotient(uxQuotient__0),
.i_uyQuotient(uyQuotient__0),
//Outputs
.o_sint(sint__1),
.o_cost(cost__1),
.o_sinp(sinp__1),
.o_cosp(cosp__1),
.o_sintCosp(sintCosp__1),
.o_sintSinp(sintSinp__1),
.o_uz2(uz2__1),
.o_uxUz(uxUz__1),
.o_uyUz(uyUz__1),
.o_uySintSinp(uySintSinp__1),
.o_oneMinusUz2(oneMinusUz2__1),
.o_uyUzSintCosp(uyUzSintCosp__1),
.o_uxUzSintCosp(uxUzSintCosp__1),
.o_uxSintSinp(uxSintSinp__1),
.o_sqrtOneMinusUz2(sqrtOneMinusUz2__1),
.o_sintCospSqrtOneMinusUz2(sintCospSqrtOneMinusUz2__1),
.o_uxCost(uxCost__1),
.o_uzCost(uzCost__1),
.o_sqrtOneMinusUz2_inv(sqrtOneMinusUz2_inv__1),
.o_uxNumerator(uxNumerator__1),
.o_uyNumerator(uyNumerator__1),
.o_uyCost(uyCost__1),
.o_uxQuotient(uxQuotient__1),
.o_uyQuotient(uyQuotient__1)
);
//-------------SYNCHRONOUS LOGIC----------------------
//
//
//
//
//
//
//
//
//
//
//
//
//This is the end of the generate statement, and the beginning of the
//synchronous logic. On the clock event, the outputs calculated from
//this block are put on the output pins for reading (registered
//outputs, as per the convention).
//Assign outputs from block on positive clock edge.
always @ (posedge clock) begin
if(reset_new) begin
//Reset internal non-pipelined registers here.
ux_scatterer <= 32'h00000000;
uy_scatterer <= 32'h00000000;
uz_scatterer <= 32'h7FFFFFFF;
end else if (enable) begin
ux_scatterer <= new_ux;
uy_scatterer <= new_uy;
uz_scatterer <= new_uz;
end
end
//-------------ASYNCHRONOUS LOGIC----------------------
//
//
//
//
//
//
//
//
//
//
//
//
//This is where the asynchronous logic takes place. Things that
//occur here include setting up wiring to send to the multipliers,
//divide unit, and square root unit. Also, products brought in
//from the wrapper are placed on the appropriate wires for placement
//in the pipeline.
//-------------OPERAND SETUP----------------------
//NAMING CONVENTION:
//opX_Y_Z, op stands for operand, X stands for the multiplication number for
//that clock cycle, Y stands for the clock cycle, Z is either 1 or 2 for the
//first or second operand for this multiply
//
//COMMENTING CONVENTIONS:
//CC X means that the values being calculated will be ready for the Xth register
//location, where 0 is the register prior to any calculations being done, 1 is
//after the 1st clock cycle of calculation, etc.
//CC 2
assign op1_2_1 = i_uz1;
assign op1_2_2 = i_uz1;
//CC 3
//SUBTRACTION, see math results
//CC 4
assign op1_4_1 = i_ux3;
assign op1_4_2 = i_uz3;
//CC 5 -- NOOP, line up with reflector
//CC `SQRT+5 -- Started in CC 6
assign sqrtOperand1_6 = oneMinusUz2__5;
//CC `SQRT+`DIV+6 -- Started in CC `SQRT+5
assign divNumerator1_16 = `INTMAX_2;
//assign divDenominator1_16 = sqrtOneMinusUz2[`SQRT+5];
assign divDenominator1_16 = new_sqrtOneMinusUz2;
//CC `SQRT+`DIV+3
assign op1_33_1 = sint_Mem;
assign op1_33_2 = cosp_Mem;
assign op2_33_1 = sint_Mem;
assign op2_33_2 = sinp_Mem;
assign op3_33_1 = i_uy32;
assign op3_33_2 = i_uz32;
//CC `SQRT+`DIV+4
assign op1_34_1 = i_ux33;
assign op1_34_2 = sintSinp__33;
assign op2_34_1 = i_uy33;
assign op2_34_2 = sintSinp__33;
assign op3_34_1 = uxUz__33;
assign op3_34_2 = sintCosp__33;
assign op4_34_1 = uyUz__33;
assign op4_34_2 = sintCosp__33;
//CC `SQRT+`DIV+5
//2 SUBS (see math results)
//`DIVISION COMPLETE (see math results)
//CC `SQRT+`DIV+6 -- Division is now complete and can be read.
assign op1_36_1 = uxNumerator__35;
assign op1_36_2 = new_sqrtOneMinusUz2_inv;
assign op2_36_1 = uyNumerator__35;
assign op2_36_2 = new_sqrtOneMinusUz2_inv;
assign op3_36_1 = sintCosp__35;
assign op3_36_2 = sqrtOneMinusUz2__35;
assign op4_36_1 = i_ux35;
assign op4_36_2 = cost__35;
assign op5_36_1 = i_uy35;
assign op5_36_2 = cost__35;
assign op6_36_1 = i_uz35;
assign op6_36_2 = cost__35;
//-------------MATH RESULTS----------------------
//NAMING CONVENTION:
//new_VAR means that the variable named VAR will be stored into the register
//pipeline at the clock cycle indicated by the comments above it.
//
//prod stands for product, quot stands for quotient, sqrt stands for square root
//prodX_Y means the Xth product which started calculation at the Yth clock cycle
//Similarly for quot and sqrtResult.
//
//
//COMMENTING CONVENTIONS:
//CC X means that the values being calculated will be ready for the Xth register
//location, where 0 is the register prior to any calculations being done, 1 is
//after the 1st clock cycle of calculation, etc.
//Used to determine whether or not the divide operation overflowed.
//or U1(div_overflow, quot1_16[62], quot1_16[61], quot1_16[60], quot1_16[59], quot1_16[58], quot1_16[57], quot1_16[56], quot1_16[55], quot1_16[54], quot1_16[53], quot1_16[52], quot1_16[51], quot1_16[50], quot1_16[49], quot1_16[48], quot1_16[47]);
assign div_overflow = quot1_16[62]| quot1_16[61]| quot1_16[60]| quot1_16[59]| quot1_16[58]| quot1_16[57]| quot1_16[56]| quot1_16[55]| quot1_16[54]| quot1_16[53]| quot1_16[52]| quot1_16[51]| quot1_16[50]| quot1_16[49]| quot1_16[48]| quot1_16[47];
//Used to determine whether or not the multiply operation overflowed.
//or U2(toAnd1_36_1, prod1_36[62], prod1_36[61], prod1_36[60], prod1_36[59], prod1_36[58], prod1_36[57], prod1_36[56], prod1_36[55], prod1_36[54], prod1_36[53], prod1_36[52], prod1_36[51], prod1_36[50], prod1_36[49], prod1_36[48], prod1_36[47], prod1_36[46]);
assign toAnd1_36_1 = prod1_36[62]| prod1_36[61]| prod1_36[60]| prod1_36[59]| prod1_36[58]| prod1_36[57]| prod1_36[56]| prod1_36[55]| prod1_36[54]| prod1_36[53]| prod1_36[52]| prod1_36[51]| prod1_36[50]| prod1_36[49]| prod1_36[48]| prod1_36[47]| prod1_36[46];
//Used to determine whether or not the multiply operation overflowed in the negative direction.
//or U3(toAnd1_36_2, ~prod1_36[62], ~prod1_36[61], ~prod1_36[60], ~prod1_36[59], ~prod1_36[58], ~prod1_36[57], ~prod1_36[56], ~prod1_36[55], ~prod1_36[54], ~prod1_36[53], ~prod1_36[52], ~prod1_36[51], ~prod1_36[50], ~prod1_36[49], ~prod1_36[48], ~prod1_36[47], ~prod1_36[46]);
assign toAnd1_36_2 = ~prod1_36[62]| ~prod1_36[61]| ~prod1_36[60]| ~prod1_36[59]| ~prod1_36[58]| ~prod1_36[57]| ~prod1_36[56]| ~prod1_36[55]| ~prod1_36[54]| ~prod1_36[53]| ~prod1_36[52]| ~prod1_36[51]| ~prod1_36[50]| ~prod1_36[49]| ~prod1_36[48]| ~prod1_36[47]| ~prod1_36[46];
//and U4(overflow1_36, ~prod1_36[63], toAnd1_36_1);
assign overflow1_36 = ~prod1_36[63]| toAnd1_36_1;
//and U5(negOverflow1_36, prod1_36[63], toAnd1_36_2);
assign negOverflow1_36 = prod1_36[63]| toAnd1_36_2;
//Used to determine whether or not the multiply operation overflowed.
//or U6(toAnd2_36_1, prod2_36[62], prod2_36[61], prod2_36[60], prod2_36[59], prod2_36[58], prod2_36[57], prod2_36[56], prod2_36[55], prod2_36[54], prod2_36[53], prod2_36[52], prod2_36[51], prod2_36[50], prod2_36[49], prod2_36[48], prod2_36[47], prod2_36[46]);
assign toAnd2_36_1 = prod2_36[62]| prod2_36[61]| prod2_36[60]| prod2_36[59]| prod2_36[58]| prod2_36[57]| prod2_36[56]| prod2_36[55]| prod2_36[54]| prod2_36[53]| prod2_36[52]| prod2_36[51]| prod2_36[50]| prod2_36[49]| prod2_36[48]| prod2_36[47]| prod2_36[46];
//Used to determine whether or not the multiply operation overflowed in the negative direction.
//or U7(toAnd2_36_2, ~prod2_36[62], ~prod2_36[61], ~prod2_36[60], ~prod2_36[59], ~prod2_36[58], ~prod2_36[57], ~prod2_36[56], ~prod2_36[55], ~prod2_36[54], ~prod2_36[53], ~prod2_36[52], ~prod2_36[51], ~prod2_36[50], ~prod2_36[49], ~prod2_36[48], ~prod2_36[47], ~prod2_36[46]);
assign toAnd2_36_2 = ~prod2_36[62]| ~prod2_36[61]| ~prod2_36[60]| ~prod2_36[59]| ~prod2_36[58]| ~prod2_36[57]| ~prod2_36[56]| ~prod2_36[55]| ~prod2_36[54]| ~prod2_36[53]| ~prod2_36[52]| ~prod2_36[51]| ~prod2_36[50]| ~prod2_36[49]| ~prod2_36[48]| ~prod2_36[47]| ~prod2_36[46];
//and U8(overflow2_36, ~prod2_36[63], toAnd2_36_1);
assign overflow2_36 = ~prod2_36[63]|toAnd2_36_1;
//and U9(negOverflow2_36, prod2_36[63], toAnd2_36_2);
assign negOverflow2_36 = prod2_36[63]|toAnd2_36_2;
//CC 2
assign new_uz2 = prod1_2;
//CC 3
sub_64b oneMinusUz2_sub(
.dataa(`INTMAX_2),
.datab(uz2__2),
.result(new_oneMinusUz2)
);
//CC 4
assign new_uxUz = prod1_4;
//CC `SQRT+5
assign new_sqrtOneMinusUz2 = sqrtResult1_6;
//CC `SQRT+`DIV+3
assign new_sintCosp = prod1_33;
assign new_sintSinp = prod2_33;
assign new_uyUz = prod3_33;
//CC `SQRT+`DIV+4
assign new_sint = sint_Mem;
assign new_cost = cost_Mem;
assign new_sinp = sinp_Mem;
assign new_cosp = cosp_Mem;
assign new_uxSintSinp = prod1_34;
assign new_uySintSinp = prod2_34;
assign new_uxUzSintCosp = prod3_34;
assign new_uyUzSintCosp = prod4_34;
//CC `SQRT+`DIV+5
sub_32b uxNumer_sub(
.dataa(uxUzSintCosp__34),
.datab(uySintSinp__34),
.overflow(uxNumerOverflow),
.result(new_uxNumerator)
);
add_32b uyNumer_add(
.dataa(uyUzSintCosp__34),
.datab(uxSintSinp__34),
.overflow(uyNumerOverflow),
.result(new_uyNumerator)
);
//Possibility for division overflow (whereby the inverse is too large). Data storage for this
//value is 15 bits left of the decimal, and 16 bits to the right.
assign new_sqrtOneMinusUz2_inv = (div_overflow) ? `INTMAX : {quot1_16[63:63], quot1_16[46:16]};
//CC `SQRT+`DIV+6
always @ (overflow1_36 or negOverflow1_36 or prod1_36 or overflow2_36 or negOverflow2_36 or prod2_36) begin
case ({overflow1_36, negOverflow1_36})
0: new_uxQuotient = {prod1_36[63:63], prod1_36[45:15]};
1: new_uxQuotient = `INTMIN;
2: new_uxQuotient = `INTMAX;
//Should never occur
3: new_uxQuotient = {prod1_36[63:63], prod1_36[45:15]};
endcase
case ({overflow2_36, negOverflow2_36})
0: new_uyQuotient = {prod2_36[63:63], prod2_36[45:15]};
1: new_uyQuotient = `INTMIN;
2: new_uyQuotient = `INTMAX;
//Should never occur
3: new_uyQuotient = {prod2_36[63:63], prod2_36[45:15]};
endcase
end
//always @* begin
// new_uxQuotient = {prod1_36[63:63], prod1_36[47:16]};
// new_uyQuotient = {prod2_36[63:63], prod2_36[47:16]};
//end
assign new_sintCospSqrtOneMinusUz2 = prod3_36;
assign new_uxCost = prod4_36;
assign new_uyCost = prod5_36;
assign new_uzCost = prod6_36;
//-----------------------FINAL RESULT CALCULATIONS--------------
//
//
//
//
//
//
//
//At this point, all calculations have been completed, save the
//final results. This part of the code decides whether or not the
//current calculation involved a normal (orthogonal) incident or not,
//and uses this information to determine how to calculate the
//final results. Final results are put on wires new_ux, new_uy, and
//new_uz, where they are output to registers ux_scatterer,
//uy_scatterer, and uz_scatterer on the clock event for synchronization
//(registered outputs, as per the convention).
//Determine whether or not the photon calculation was done on a photon that
//was normal (orthogonal) to the plane of interest. This is to avoid divide
//by zero errors
always @ (i_uz36) begin
//If uz >= `INTMAX-3 || uz <= -`INTMAX+3, normal incident
if(i_uz36 == 32'h7FFFFFFF || i_uz36 == 32'h7FFFFFFE || i_uz36 == 32'h7FFFFFFD || i_uz36 == 32'h7FFFFFFC || i_uz36 == 32'h80000000 || i_uz36 == 32'h80000001 || i_uz36 == 32'h80000002 || i_uz36 == 32'h80000003 || i_uz36 == 32'h80000004) begin
normalIncident = 1'b1;
end else begin
normalIncident = 1'b0;
end
end
//Assign calculation values for final ux result
assign ux_add_1 = (normalIncident) ? sintCosp__36 : uxQuotient__36;
assign ux_add_2 = (normalIncident) ? 32'b0 : uxCost__36;
add_32b ux_add(
.dataa(ux_add_1),
.datab(ux_add_2),
.overflow(uxOverflow),
.result(new_ux)
);
//Assign calculation values for final uy result
assign uy_add_1 = (normalIncident) ? sintSinp__36 : uyQuotient__36;
assign uy_add_2 = (normalIncident) ? 32'b0 : uyCost__36;
add_32b uy_add(
.dataa(uy_add_1),
.datab(uy_add_2),
.overflow(uyOverflow),
.result(new_uy)
);
//Assign calculation values for final uz result.
//First MUX implements SIGN(uz) function.
assign normalUz = (i_uz36 >=0) ? cost__36 : -cost__36;
assign uz_sub_1 = (normalIncident) ? normalUz : uzCost__36;
assign uz_sub_2 = (normalIncident) ? 32'b0 : sintCospSqrtOneMinusUz2__36;
sub_32b uz_sub(
.dataa(uz_sub_1),
.datab(uz_sub_2),
.overflow(uzOverflow),
.result(new_uz)
);
endmodule
//***********************************
//Mathematical modules
//***********************************
module sub_64b (dataa, datab, result);
input [63:0] dataa;
input [63:0] datab;
output [63:0] result;
assign result = dataa - datab;
endmodule
module add_32b (dataa, datab, overflow, result);
input [31:0] dataa;
input [31:0] datab;
output overflow;
output [31:0] result;
wire [32:0]computation; //one extra bit to account for overflow
assign computation = dataa + datab;
assign overflow = computation[32];
assign result = computation[31:0];
endmodule
module sub_32b (dataa, datab, overflow, result);
input [31:0] dataa;
input [31:0] datab;
output overflow;
output [31:0] result;
wire [32:0]computation; //one extra bit to account for overflow
assign computation = dataa - datab;
assign overflow = computation[32];
assign result = computation[31:0];
endmodule
module Mult_32b (dataa, datab, result); //now signed version!
input [31:0]dataa;
input [31:0]datab;
output [63:0]result;
// assign result = dataa * datab;
wire [31:0]a;
wire [31:0]b;
assign a = dataa;
assign b = datab;
reg [63:0]c;
assign result = c;
reg is_neg_a;
reg is_neg_b;
reg [31:0]a_tmp;
reg [31:0]b_tmp;
reg [63:0]mult_tmp;
reg [63:0]c_tmp;
always@(a or b or is_neg_a or is_neg_b or a_tmp or b_tmp or c)
begin
if(a[31] == 1) begin
a_tmp = -a;
is_neg_a = 1;
end else
begin
a_tmp = a;
is_neg_a = 0;
end
if(b[31] == 1) begin
b_tmp = -b;
is_neg_b = 1;
end else
begin
b_tmp = b;
is_neg_b = 0;
end
mult_tmp = a_tmp * b_tmp;
if( is_neg_a != is_neg_b) begin
c_tmp = -mult_tmp;
end else
begin
c_tmp = mult_tmp;
end
end
always@(c_tmp)
begin
c = c_tmp;
end
endmodule
module Div_64b (clock, denom, numer, quotient, remain);
input clock;
input [63:0]numer;
input [31:0]denom;
output [63:0]quotient;
reg [63:0]quotient;
output [31:0]remain;
reg [31:0]remain;
wire [63:0]quotient_temp;
wire [31:0]remain_temp;
Div_64b_unsigned div_temp(.clock(clock), .denom_(denom), .numer_(numer), .quotient(quotient_temp), .remain(remain_temp));
always @ (numer or denom or quotient_temp or remain_temp) begin
if ( numer[63]^denom[31] ) begin // only one is negative
quotient = -quotient_temp;
remain = -remain_temp;
end else begin
quotient = quotient_temp;
remain = remain_temp;
end
end
endmodule
/*module Div_64b (clock, denom, numer, quotient, remain);
input clock;
input [63:0]numer;
input [31:0]denom;
output [63:0]quotient;
reg [63:0]quotient;
output [31:0]remain;
reg [31:0]remain; */
module Div_64b_unsigned (clock, denom_, numer_, quotient, remain);
input clock;
input [63:0]numer_;
input [31:0]denom_;
output [63:0]quotient;
output [31:0]remain;
reg [63:0]numer;
reg [31:0]denom0;
always @ (posedge clock)
begin
numer <= numer_;
denom0 <= denom_;
end
///////////////////////////////////////////////////Unchanged starts here
reg [94:0]numer_temp_63; //need to add bits
reg [94:0]numer_temp_62;
reg [94:0]numer_temp_61;
reg [94:0]numer_temp_60_d, numer_temp_60_q;
reg [94:0]numer_temp_59;
reg [94:0]numer_temp_58;
reg [94:0]numer_temp_57_d, numer_temp_57_q;
reg [94:0]numer_temp_56;
reg [94:0]numer_temp_55;
reg [94:0]numer_temp_54_d, numer_temp_54_q;
reg [94:0]numer_temp_53;
reg [94:0]numer_temp_52;
reg [94:0]numer_temp_51_d, numer_temp_51_q;
reg [94:0]numer_temp_50;
reg [94:0]numer_temp_49;
reg [94:0]numer_temp_48_d, numer_temp_48_q;
reg [94:0]numer_temp_47;
reg [94:0]numer_temp_46;
reg [94:0]numer_temp_45_d, numer_temp_45_q;
reg [94:0]numer_temp_44;
reg [94:0]numer_temp_43;
reg [94:0]numer_temp_42_d, numer_temp_42_q;
reg [94:0]numer_temp_41;
reg [94:0]numer_temp_40;
reg [94:0]numer_temp_39_d, numer_temp_39_q;
reg [94:0]numer_temp_38;
reg [94:0]numer_temp_37;
reg [94:0]numer_temp_36_d, numer_temp_36_q;
reg [94:0]numer_temp_35;
reg [94:0]numer_temp_34;
reg [94:0]numer_temp_33_d, numer_temp_33_q;
reg [94:0]numer_temp_32;
reg [94:0]numer_temp_31;
reg [94:0]numer_temp_30_d, numer_temp_30_q;
reg [94:0]numer_temp_29;
reg [94:0]numer_temp_28;
reg [94:0]numer_temp_27_d, numer_temp_27_q;
reg [94:0]numer_temp_26;
reg [94:0]numer_temp_25;
reg [94:0]numer_temp_24;
reg [94:0]numer_temp_23_d, numer_temp_23_q;
reg [94:0]numer_temp_22;
reg [94:0]numer_temp_21;
reg [94:0]numer_temp_20;
reg [94:0]numer_temp_19_d, numer_temp_19_q;
reg [94:0]numer_temp_18;
reg [94:0]numer_temp_17;
reg [94:0]numer_temp_16;
reg [94:0]numer_temp_15_d, numer_temp_15_q;
reg [94:0]numer_temp_14;
reg [94:0]numer_temp_13;
reg [94:0]numer_temp_12;
reg [94:0]numer_temp_11_d, numer_temp_11_q;
reg [94:0]numer_temp_10;
reg [94:0]numer_temp_9;
reg [94:0]numer_temp_8;
reg [94:0]numer_temp_7_d, numer_temp_7_q;
reg [94:0]numer_temp_6;
reg [94:0]numer_temp_5;
reg [94:0]numer_temp_4;
reg [94:0]numer_temp_3_d, numer_temp_3_q;
reg [94:0]numer_temp_2;
reg [94:0]numer_temp_1_d, numer_temp_1_q;
reg [94:0]numer_temp_0;
reg [94:0]numer_temp;
//The dummy pipeline (20 clock cycles)
reg [63:0]quo0_d;
reg [63:0]quo1_d;
reg [63:0]quo2_d;
reg [63:0]quo3_d;
reg [63:0]quo4_d;
reg [63:0]quo5_d;
reg [63:0]quo6_d;
reg [63:0]quo7_d;
reg [63:0]quo8_d;
reg [63:0]quo9_d;
reg [63:0]quo10_d;
reg [63:0]quo11_d;
reg [63:0]quo12_d;
reg [63:0]quo13_d;
reg [63:0]quo14_d;
reg [63:0]quo15_d;
reg [63:0]quo16_d;
reg [63:0]quo17_d;
reg [63:0]quo18_d;
reg [63:0]quo19_d;
reg [63:0]quo0_q;
reg [63:0]quo1_q;
reg [63:0]quo2_q;
reg [63:0]quo3_q;
reg [63:0]quo4_q;
reg [63:0]quo5_q;
reg [63:0]quo6_q;
reg [63:0]quo7_q;
reg [63:0]quo8_q;
reg [63:0]quo9_q;
reg [63:0]quo10_q;
reg [63:0]quo11_q;
reg [63:0]quo12_q;
reg [63:0]quo13_q;
reg [63:0]quo14_q;
reg [63:0]quo15_q;
reg [63:0]quo16_q;
reg [63:0]quo17_q;
reg [63:0]quo18_q;
reg [31:0]denom1;
reg [31:0]denom2;
reg [31:0]denom3;
reg [31:0]denom4;
reg [31:0]denom5;
reg [31:0]denom6;
reg [31:0]denom7;
reg [31:0]denom8;
reg [31:0]denom9;
reg [31:0]denom10;
reg [31:0]denom11;
reg [31:0]denom12;
reg [31:0]denom13;
reg [31:0]denom14;
reg [31:0]denom15;
reg [31:0]denom16;
reg [31:0]denom17;
reg [31:0]denom18;
reg [31:0]denom19;
always @(numer or denom0) begin
numer_temp_63 = {31'b0, numer};
//quo0[63]
if (numer_temp_63[94:63] >= denom0 ) begin
quo0_d[63] = 1'b1;
numer_temp_62 = {numer_temp_63[94:63] - denom0, numer_temp_63[62:0]};
end else begin
quo0_d[63] = 1'b0;
numer_temp_62 = numer_temp_63;
end
//quo0[62]
if (numer_temp_62[94:62] >= denom0 ) begin
quo0_d[62] = 1'b1;
numer_temp_61 = {numer_temp_62[94:62] - denom0, numer_temp_62[61:0]};
end else begin
quo0_d[62] = 1'b0;
numer_temp_61 = numer_temp_62;
end
//quo0[61]
if (numer_temp_61[94:61] >= denom0 ) begin
quo0_d[61] = 1'b1;
numer_temp_60_d = {numer_temp_61[94:61] - denom0, numer_temp_61[60:0]};
end else begin
quo0_d[61] = 1'b0;
numer_temp_60_d = numer_temp_61;
end
quo0_d[60:0] = 61'b0;
end
always @ (posedge clock) begin
quo0_q <= quo0_d;
numer_temp_60_q <= numer_temp_60_d;
denom1 <= denom0;
end
always @(numer_temp_60_q or denom1 or quo0_q) begin
quo1_d[63:61] = quo0_q[63:61];
//quo1_d[60]
if (numer_temp_60_q[94:60] >= denom1 ) begin
quo1_d[60] = 1'b1;
numer_temp_59 = {numer_temp_60_q[94:60] - denom1, numer_temp_60_q[59:0]};
end else begin
quo1_d[60] = 1'b0;
numer_temp_59 = numer_temp_60_q;
end
//quo1_d[59]
if (numer_temp_59[94:59] >= denom1 ) begin
quo1_d[59] = 1'b1;
numer_temp_58 = {numer_temp_59[94:59] - denom1, numer_temp_59[58:0]};
end else begin
quo1_d[59] = 1'b0;
numer_temp_58 = numer_temp_59;
end
//quo1_d[58]
if (numer_temp_58[94:58] >= denom1 ) begin
quo1_d[58] = 1'b1;
numer_temp_57_d = {numer_temp_58[94:58] - denom1, numer_temp_58[57:0]};
end else begin
quo1_d[58] = 1'b0;
numer_temp_57_d = numer_temp_58;
end
quo1_d[57:0] = 58'b0;
end
always @ (posedge clock) begin
quo1_q <= quo1_d;
numer_temp_57_q <= numer_temp_57_d;
denom2 <= denom1;
end
always @ (numer_temp_57_q or denom2 or quo1_q) begin
quo2_d[63:58] = quo1_q[63:58];
//quo2_d[57]
if (numer_temp_57_q[94:57] >= denom2 ) begin
quo2_d[57] = 1'b1;
numer_temp_56 = {numer_temp_57_q[94:57] - denom2, numer_temp_57_q[56:0]};
end else begin
quo2_d[57] = 1'b0;
numer_temp_56 = numer_temp_57_q;
end
//quo2_d[56]
if (numer_temp_56[94:56] >= denom2 ) begin
quo2_d[56] = 1'b1;
numer_temp_55 = {numer_temp_56[94:56] - denom2, numer_temp_56[55:0]};
end else begin
quo2_d[56] = 1'b0;
numer_temp_55 = numer_temp_56;
end
//quo2_d[55]
if (numer_temp_55[94:55] >= denom2 ) begin
quo2_d[55] = 1'b1;
numer_temp_54_d = {numer_temp_55[94:55] - denom2, numer_temp_55[54:0]};
end else begin
quo2_d[55] = 1'b0;
numer_temp_54_d = numer_temp_55;
end
quo2_d[54:0] = 55'b0;
end
always @ (posedge clock) begin
quo2_q <= quo2_d;
numer_temp_54_q <= numer_temp_54_d;
denom3 <= denom2;
end
always @ (numer_temp_54_q or denom3 or quo2_q) begin
quo3_d[63:55] = quo2_q[63:55];
//quo3_d[54]
if (numer_temp_54_q[94:54] >= denom3 ) begin
quo3_d[54] = 1'b1;
numer_temp_53 = {numer_temp_54_q[94:54] - denom3, numer_temp_54_q[53:0]};
end else begin
quo3_d[54] = 1'b0;
numer_temp_53 = numer_temp_54_q;
end
//quo3_d[53]
if (numer_temp_53[94:53] >= denom3 ) begin
quo3_d[53] = 1'b1;
numer_temp_52 = {numer_temp_53[94:53] - denom3, numer_temp_53[52:0]};
end else begin
quo3_d[53] = 1'b0;
numer_temp_52 = numer_temp_53;
end
//quo3_d[52]
if (numer_temp_52[94:52] >= denom3 ) begin
quo3_d[52] = 1'b1;
numer_temp_51_d = {numer_temp_52[94:52] - denom3, numer_temp_52[51:0]};
end else begin
quo3_d[52] = 1'b0;
numer_temp_51_d = numer_temp_52;
end
quo3_d[51:0] = 52'b0;
end
always @ (posedge clock) begin
quo3_q <= quo3_d;
numer_temp_51_q <= numer_temp_51_d;
denom4 <= denom3;
end
always @ (numer_temp_51_q or denom4 or quo3_q) begin
quo4_d[63:52] = quo3_q[63:52];
//quo4[51]
if (numer_temp_51_q[94:51] >= denom4 ) begin
quo4_d[51] = 1'b1;
numer_temp_50 = {numer_temp_51_q[94:51] - denom4, numer_temp_51_q[50:0]};
end else begin
quo4_d[51] = 1'b0;
numer_temp_50 = numer_temp_51_q;
end
//quo4_d[50]
if (numer_temp_50[94:50] >= denom4 ) begin
quo4_d[50] = 1'b1;
numer_temp_49 = {numer_temp_50[94:50] - denom4, numer_temp_50[49:0]};
end else begin
quo4_d[50] = 1'b0;
numer_temp_49 = numer_temp_50;
end
//quo4_d[49]
if (numer_temp_49[94:49] >= denom4 ) begin
quo4_d[49] = 1'b1;
numer_temp_48_d = {numer_temp_49[94:49] - denom4, numer_temp_49[48:0]};
end else begin
quo4_d[49] = 1'b0;
numer_temp_48_d = numer_temp_49;
end
quo4_d[48:0] = 49'b0;
end
always @ (posedge clock) begin
quo4_q <= quo4_d;
numer_temp_48_q <= numer_temp_48_d;
denom5 <= denom4;
end
always @ (numer_temp_48_q or denom5 or quo4_q) begin
quo5_d[63:49] = quo4_q[63:49];
//quo5_d[48]
if (numer_temp_48_q[94:48] >= denom5 ) begin
quo5_d[48] = 1'b1;
numer_temp_47 = {numer_temp_48_q[94:48] - denom5, numer_temp_48_q[47:0]};
end else begin
quo5_d[48] = 1'b0;
numer_temp_47 = numer_temp_48_q;
end
//quo5_d[47]
if (numer_temp_47[94:47] >= denom5 ) begin
quo5_d[47] = 1'b1;
numer_temp_46 = {numer_temp_47[94:47] - denom5, numer_temp_47[46:0]};
end else begin
quo5_d[47] = 1'b0;
numer_temp_46 = numer_temp_47;
end
//quo5_d[46]
if (numer_temp_46[94:46] >= denom5 ) begin
quo5_d[46] = 1'b1;
numer_temp_45_d = {numer_temp_46[94:46] - denom5, numer_temp_46[45:0]};
end else begin
quo5_d[46] = 1'b0;
numer_temp_45_d = numer_temp_46;
end
quo5_d[45:0] = 46'b0;
end
always @ (posedge clock) begin
quo5_q <= quo5_d;
numer_temp_45_q <= numer_temp_45_d;
denom6 <= denom5;
end
always @ (numer_temp_45_q or denom6 or quo5_q) begin
quo6_d[63:46] = quo5_q[63:46];
//quo6_d[45]
if (numer_temp_45_q[94:45] >= denom6 ) begin
quo6_d[45] = 1'b1;
numer_temp_44 = {numer_temp_45_q[94:45] - denom6, numer_temp_45_q[44:0]};
end else begin
quo6_d[45] = 1'b0;
numer_temp_44 = numer_temp_45_q;
end
//quo6_d[44]
if (numer_temp_44[94:44] >= denom6 ) begin
quo6_d[44] = 1'b1;
numer_temp_43 = {numer_temp_44[94:44] - denom6, numer_temp_44[43:0]};
end else begin
quo6_d[44] = 1'b0;
numer_temp_43 = numer_temp_44;
end
//quo6_d[43]
if (numer_temp_43[94:43] >= denom6 ) begin
quo6_d[43] = 1'b1;
numer_temp_42_d = {numer_temp_43[94:43] - denom6, numer_temp_43[42:0]};
end else begin
quo6_d[43] = 1'b0;
numer_temp_42_d = numer_temp_43;
end
quo6_d[42:0] = 43'b0;
end
always @ (posedge clock) begin
quo6_q<= quo6_d;
numer_temp_42_q <= numer_temp_42_d;
denom7 <= denom6;
end
always @ (numer_temp_42_q or denom7 or quo6_q) begin
quo7_d[63:43] = quo6_q[63:43];
//quo7_d[42]
if (numer_temp_42_q[94:42] >= denom7 ) begin
quo7_d[42] = 1'b1;
numer_temp_41 = {numer_temp_42_q[94:42] - denom7, numer_temp_42_q[41:0]};
end else begin
quo7_d[42] = 1'b0;
numer_temp_41 = numer_temp_42_q;
end
//quo7_d[41]
if (numer_temp_41[94:41] >= denom7 ) begin
quo7_d[41] = 1'b1;
numer_temp_40 = {numer_temp_41[94:41] - denom7, numer_temp_41[40:0]};
end else begin
quo7_d[41] = 1'b0;
numer_temp_40 = numer_temp_41;
end
//quo7_d[40]
if (numer_temp_40[94:40] >= denom7 ) begin
quo7_d[40] = 1'b1;
numer_temp_39_d = {numer_temp_40[94:40] - denom7, numer_temp_40[39:0]};
end else begin
quo7_d[40] = 1'b0;
numer_temp_39_d = numer_temp_40;
end
quo7_d[39:0] = 40'b0;
end
always @ (posedge clock) begin
quo7_q <= quo7_d;
numer_temp_39_q <= numer_temp_39_d;
denom8 <= denom7;
end
always @ (numer_temp_39_q or denom8 or quo7_q) begin
quo8_d[63:40] = quo7_q[63:40];
//quo8[39]
if (numer_temp_39_q[94:39] >= denom8 ) begin
quo8_d[39] = 1'b1;
numer_temp_38 = {numer_temp_39_q[94:39] - denom8, numer_temp_39_q[38:0]};
end else begin
quo8_d[39] = 1'b0;
numer_temp_38 = numer_temp_39_q;
end
//quo8_d[38]
if (numer_temp_38[94:38] >= denom8 ) begin
quo8_d[38] = 1'b1;
numer_temp_37 = {numer_temp_38[94:38] - denom8, numer_temp_38[37:0]};
end else begin
quo8_d[38] = 1'b0;
numer_temp_37 = numer_temp_38;
end
//quo8_d[37]
if (numer_temp_37[94:37] >= denom8 ) begin
quo8_d[37] = 1'b1;
numer_temp_36_d = {numer_temp_37[94:37] - denom8, numer_temp_37[36:0]};
end else begin
quo8_d[37] = 1'b0;
numer_temp_36_d = numer_temp_37;
end
quo8_d[36:0] = 37'b0;
end
always @ (posedge clock) begin
quo8_q <= quo8_d;
numer_temp_36_q <= numer_temp_36_d;
denom9 <= denom8;
end
always @ (numer_temp_36_q or denom9 or quo8_q) begin
quo9_d[63:37] = quo8_q[63:37];
//quo9[36]
if (numer_temp_36_q[94:36] >= denom9 ) begin
quo9_d[36] = 1'b1;
numer_temp_35 = {numer_temp_36_q[94:36] - denom9, numer_temp_36_q[35:0]};
end else begin
quo9_d[36] = 1'b0;
numer_temp_35 = numer_temp_36_q;
end
//quo9_d[35]
if (numer_temp_35[94:35] >= denom9 ) begin
quo9_d[35] = 1'b1;
numer_temp_34 = {numer_temp_35[94:35] - denom9, numer_temp_35[34:0]};
end else begin
quo9_d[35] = 1'b0;
numer_temp_34 = numer_temp_35;
end
//quo9_d[34]
if (numer_temp_34[94:34] >= denom9 ) begin
quo9_d[34] = 1'b1;
numer_temp_33_d = {numer_temp_34[94:34] - denom9, numer_temp_34[33:0]};
end else begin
quo9_d[34] = 1'b0;
numer_temp_33_d = numer_temp_34;
end
quo9_d[33:0] = 34'b0;
end
always @ (posedge clock) begin
quo9_q <= quo9_d;
numer_temp_33_q <= numer_temp_33_d;
denom10 <= denom9;
end
always @ (numer_temp_33_q or denom10 or quo9_q) begin
quo10_d[63:34] = quo9_q[63:34];
//quo10_d[33]
if (numer_temp_33_q[94:33] >= denom10 ) begin
quo10_d[33] = 1'b1;
numer_temp_32 = {numer_temp_33_q[94:33] - denom10, numer_temp_33_q[32:0]};
end else begin
quo10_d[33] = 1'b0;
numer_temp_32 = numer_temp_33_q;
end
//quo10_d[32]
if (numer_temp_32[94:32] >= denom10 ) begin
quo10_d[32] = 1'b1;
numer_temp_31 = {numer_temp_32[94:32] - denom10, numer_temp_32[31:0]};
end else begin
quo10_d[32] = 1'b0;
numer_temp_31 = numer_temp_32;
end
//quo10_d[31]
if (numer_temp_31[94:31] >= denom10 ) begin
quo10_d[31] = 1'b1;
numer_temp_30_d = {numer_temp_31[94:31] - denom10, numer_temp_31[30:0]};
end else begin
quo10_d[31] = 1'b0;
numer_temp_30_d = numer_temp_31;
end
quo10_d[30:0] = 31'b0;
end
always @ (posedge clock) begin
quo10_q <= quo10_d;
numer_temp_30_q <= numer_temp_30_d;
denom11 <= denom10;
end
always @ (numer_temp_30_q or denom11 or quo10_q) begin
quo11_d[63:31] = quo10_q[63:31];
//quo11[30]
if (numer_temp_30_q[94:30] >= denom11 ) begin
quo11_d[30] = 1'b1;
numer_temp_29 = {numer_temp_30_q[94:30] - denom11, numer_temp_30_q[29:0]};
end else begin
quo11_d[30] = 1'b0;
numer_temp_29 = numer_temp_30_q;
end
//quo11_d[29]
if (numer_temp_29[94:29] >= denom11 ) begin
quo11_d[29] = 1'b1;
numer_temp_28 = {numer_temp_29[94:29] - denom11, numer_temp_29[28:0]};
end else begin
quo11_d[29] = 1'b0;
numer_temp_28 = numer_temp_29;
end
//quo11_d[28]
if (numer_temp_28[94:28] >= denom11 ) begin
quo11_d[28] = 1'b1;
numer_temp_27_d = {numer_temp_28[94:28] - denom11, numer_temp_28[27:0]};
end else begin
quo11_d[28] = 1'b0;
numer_temp_27_d = numer_temp_28;
end
quo11_d[27:0] = 28'b0;
end
always @ (posedge clock) begin
quo11_q <= quo11_d;
numer_temp_27_q <= numer_temp_27_d;
denom12 <= denom11;
end
always @ (numer_temp_27_q or denom12 or quo11_q) begin
quo12_d[63:28] = quo11_q[63:28];
//quo12[27]
if (numer_temp_27_q[94:27] >= denom12 ) begin
quo12_d[27] = 1'b1;
numer_temp_26 = {numer_temp_27_q[94:27] - denom12, numer_temp_27_q[26:0]};
end else begin
quo12_d[27] = 1'b0;
numer_temp_26 = numer_temp_27_q;
end
//quo12_d[26]
if (numer_temp_26[94:26] >= denom12 ) begin
quo12_d[26] = 1'b1;
numer_temp_25 = {numer_temp_26[94:26] - denom12, numer_temp_26[25:0]};
end else begin
quo12_d[26] = 1'b0;
numer_temp_25 = numer_temp_26;
end
//quo12_d[25]
if (numer_temp_25[94:25] >= denom12 ) begin
quo12_d[25] = 1'b1;
numer_temp_24 = {numer_temp_25[94:25] - denom12, numer_temp_25[24:0]};
end else begin
quo12_d[25] = 1'b0;
numer_temp_24 = numer_temp_25;
end
//quo12_d[24]
if (numer_temp_24[94:24] >= denom12 ) begin
quo12_d[24] = 1'b1;
numer_temp_23_d = {numer_temp_24[94:24] - denom12, numer_temp_24[23:0]};
end else begin
quo12_d[24] = 1'b0;
numer_temp_23_d = numer_temp_24;
end
quo12_d[23:0] = 24'b0;
end
always @ (posedge clock) begin
quo12_q <= quo12_d;
numer_temp_23_q <= numer_temp_23_d;
denom13 <= denom12;
end
always @ (numer_temp_23_q or denom13 or quo12_q) begin
quo13_d[63:24] = quo12_q[63:24];
//quo13_d[23]
if (numer_temp_23_q[94:23] >= denom13 ) begin
quo13_d[23] = 1'b1;
numer_temp_22 = {numer_temp_23_q[94:23] - denom13, numer_temp_23_q[22:0]};
end else begin
quo13_d[23] = 1'b0;
numer_temp_22 = numer_temp_23_q;
end
//quo13_d[22]
if (numer_temp_22[94:22] >= denom13 ) begin
quo13_d[22] = 1'b1;
numer_temp_21 = {numer_temp_22[94:22] - denom13, numer_temp_22[21:0]};
end else begin
quo13_d[22] = 1'b0;
numer_temp_21 = numer_temp_22;
end
//quo13_d[21]
if (numer_temp_21[94:21] >= denom13 ) begin
quo13_d[21] = 1'b1;
numer_temp_20 = {numer_temp_21[94:21] - denom13, numer_temp_21[20:0]};
end else begin
quo13_d[21] = 1'b0;
numer_temp_20 = numer_temp_21;
end
//quo13_d[20]
if (numer_temp_20[94:20] >= denom13 ) begin
quo13_d[20] = 1'b1;
numer_temp_19_d = {numer_temp_20[94:20] - denom13, numer_temp_20[19:0]};
end else begin
quo13_d[20] = 1'b0;
numer_temp_19_d = numer_temp_20;
end
quo13_d[19:0] = 20'b0;
end
always @ (posedge clock) begin
quo13_q <= quo13_d;
numer_temp_19_q <= numer_temp_19_d;
denom14 <= denom13;
end
always @ (numer_temp_19_q or denom14 or quo13_q) begin
quo14_d[63:20] = quo13_q[63:20];
//quo14_d[19]
if (numer_temp_19_q[94:19] >= denom14 ) begin
quo14_d[19] = 1'b1;
numer_temp_18 = {numer_temp_19_q[94:19] - denom14, numer_temp_19_q[18:0]};
end else begin
quo14_d[19] = 1'b0;
numer_temp_18 = numer_temp_19_q;
end
//quo14_d[18]
if (numer_temp_18[94:18] >= denom14 ) begin
quo14_d[18] = 1'b1;
numer_temp_17 = {numer_temp_18[94:18] - denom14, numer_temp_18[17:0]};
end else begin
quo14_d[18] = 1'b0;
numer_temp_17 = numer_temp_18;
end
//quo14_d[17]
if (numer_temp_17[94:17] >= denom14 ) begin
quo14_d[17] = 1'b1;
numer_temp_16 = {numer_temp_17[94:17] - denom14, numer_temp_17[16:0]};
end else begin
quo14_d[17] = 1'b0;
numer_temp_16 = numer_temp_17;
end
//quo14_d[16]
if (numer_temp_16[94:16] >= denom14 ) begin
quo14_d[16] = 1'b1;
numer_temp_15_d = {numer_temp_16[94:16] - denom14, numer_temp_16[15:0]};
end else begin
quo14_d[16] = 1'b0;
numer_temp_15_d = numer_temp_16;
end
quo14_d[15:0] = 16'b0;
end
always @ (posedge clock) begin
quo14_q <= quo14_d;
numer_temp_15_q <= numer_temp_15_d;
denom15 <= denom14;
end
always @ (numer_temp_15_q or denom15 or quo14_q) begin
quo15_d[63:16] = quo14_q[63:16];
//quo15_d[15]
if (numer_temp_15_q[94:15] >= denom15 ) begin
quo15_d[15] = 1'b1;
numer_temp_14 = {numer_temp_15_q[94:15] - denom15, numer_temp_15_q[14:0]};
end else begin
quo15_d[15] = 1'b0;
numer_temp_14 = numer_temp_15_q;
end
//quo15_d[14]
if (numer_temp_14[94:14] >= denom15 ) begin
quo15_d[14] = 1'b1;
numer_temp_13 = {numer_temp_14[94:14] - denom15, numer_temp_14[13:0]};
end else begin
quo15_d[14] = 1'b0;
numer_temp_13 = numer_temp_14;
end
//quo15_d[13]
if (numer_temp_13[94:13] >= denom15 ) begin
quo15_d[13] = 1'b1;
numer_temp_12 = {numer_temp_13[94:13] - denom15, numer_temp_13[12:0]};
end else begin
quo15_d[13] = 1'b0;
numer_temp_12 = numer_temp_13;
end
//quo15_d[12]
if (numer_temp_12[94:12] >= denom15 ) begin
quo15_d[12] = 1'b1;
numer_temp_11_d = {numer_temp_12[94:12] - denom15, numer_temp_12[11:0]};
end else begin
quo15_d[12] = 1'b0;
numer_temp_11_d = numer_temp_12;
end
quo15_d[11:0] = 12'b0;
end
always @ (posedge clock) begin
quo15_q <= quo15_d;
numer_temp_11_q <= numer_temp_11_d;
denom16 <= denom15;
end
always @ (numer_temp_11_q or denom16 or quo15_q) begin
quo16_d[63:12] = quo15_q[63:12];
//quo16_d[11]
if (numer_temp_11_q[94:11] >= denom16 ) begin
quo16_d[11] = 1'b1;
numer_temp_10 = {numer_temp_11_q[94:11] - denom16, numer_temp_11_q[10:0]};
end else begin
quo16_d[11] = 1'b0;
numer_temp_10 = numer_temp_11_q;
end
//quo16_d[10]
if (numer_temp_10[94:10] >= denom16 ) begin
quo16_d[10] = 1'b1;
numer_temp_9 = {numer_temp_10[94:10] - denom16, numer_temp_10[9:0]};
end else begin
quo16_d[10] = 1'b0;
numer_temp_9 = numer_temp_10;
end
//quo16_d[9]
if (numer_temp_9[94:9] >= denom16 ) begin
quo16_d[9] = 1'b1;
numer_temp_8 = {numer_temp_9[94:9] - denom16, numer_temp_9[8:0]};
end else begin
quo16_d[9] = 1'b0;
numer_temp_8 = numer_temp_9;
end
//quo16_d[8]
if (numer_temp_8[94:8] >= denom16 ) begin
quo16_d[8] = 1'b1;
numer_temp_7_d = {numer_temp_8[94:8] - denom16, numer_temp_8[7:0]};
end else begin
quo16_d[8] = 1'b0;
numer_temp_7_d = numer_temp_8;
end
quo16_d[7:0] = 8'b0;
end
always @ (posedge clock) begin
quo16_q <= quo16_d;
numer_temp_7_q <= numer_temp_7_d;
denom17 <= denom16;
end
always @ (numer_temp_7_q or denom17 or quo16_q) begin
quo17_d[63:8] = quo16_q[63:8];
//quo17_d[7]
if (numer_temp_7_q[94:7] >= denom17 ) begin
quo17_d[7] = 1'b1;
numer_temp_6 = {numer_temp_7_q[94:7] - denom17, numer_temp_7_q[6:0]};
end else begin
quo17_d[7] = 1'b0;
numer_temp_6 = numer_temp_7_q;
end
//quo17_d[6]
if (numer_temp_6[94:6] >= denom17 ) begin
quo17_d[6] = 1'b1;
numer_temp_5 = {numer_temp_6[94:6] - denom17, numer_temp_6[5:0]};
end else begin
quo17_d[6] = 1'b0;
numer_temp_5 = numer_temp_6;
end
//quo17_d[5]
if (numer_temp_5[94:5] >= denom17 ) begin
quo17_d[5] = 1'b1;
numer_temp_4 = {numer_temp_5[94:5] - denom17, numer_temp_5[4:0]};
end else begin
quo17_d[5] = 1'b0;
numer_temp_4 = numer_temp_5;
end
//quo17_d[4]
if (numer_temp_4[94:4] >= denom17 ) begin
quo17_d[4] = 1'b1;
numer_temp_3_d = {numer_temp_4[94:4] - denom17, numer_temp_4[3:0]};
end else begin
quo17_d[4] = 1'b0;
numer_temp_3_d = numer_temp_4;
end
quo17_d[3:0] = 4'b0;
end
always @ (posedge clock) begin
quo17_q <= quo17_d;
numer_temp_3_q <= numer_temp_3_d;
denom18 <= denom17;
end
always @ (numer_temp_3_q or denom18 or quo17_q) begin
quo18_d[63:4] = quo17_q[63:4];
//quo18_d[3]
if (numer_temp_3_q[94:3] >= denom18 ) begin
quo18_d[3] = 1'b1;
numer_temp_2 = {numer_temp_3_q[94:3] - denom18, numer_temp_3_q[2:0]};
end else begin
quo18_d[3] = 1'b0;
numer_temp_2 = numer_temp_3_q;
end
//quo18_d[2]
if (numer_temp_2[94:2] >= denom18 ) begin
quo18_d[2] = 1'b1;
numer_temp_1_d = {numer_temp_2[94:2] - denom18, numer_temp_2[1:0]};
end else begin
quo18_d[2] = 1'b0;
numer_temp_1_d = numer_temp_2;
end
quo18_d[1:0] = 2'b0;
end
always @ (posedge clock) begin
quo18_q <= quo18_d;
numer_temp_1_q <= numer_temp_1_d;
denom19 <= denom18;
end
always @ (numer_temp_1_q or denom19 or quo18_q) begin
quo19_d[63:2] = quo18_q[63:2];
//quo19_d[1]
if (numer_temp_1_q[94:1] >= denom19 ) begin
quo19_d[1] = 1'b1;
numer_temp_0 = {numer_temp_1_q[94:1] - denom19, numer_temp_1_q[0:0]};
end else begin
quo19_d[1] = 1'b0;
numer_temp_0 = numer_temp_1_q;
end
//quo19_d[0]
if (numer_temp_0[94:0] >= denom19 ) begin
quo19_d[0] = 1'b1;
numer_temp = numer_temp_0[94:0] - denom19;
end else begin
quo19_d[0] = 1'b0;
numer_temp = numer_temp_0;
end
end
assign quotient = quo19_d;
assign remain = numer_temp[31:0];
endmodule
/*module sqrt_64b (clk, num, res);
input clk;
input [63:0]num;
output [31:0]res;
reg [31:0]res;*/
//`timescale 1 ns / 1 ps
module Sqrt_64b (clk, num_, res);
input clk;
input [63:0]num_;
output [31:0]res;
reg [31:0]res;
reg [63:0]num;
always @ (posedge clk)
begin
num <= num_;
end
///////////////////////////////////////////////////Unchanged starts here
// reg [63:0] one_[32:0];
// reg [63:0] res_[32:0];
// reg [63:0] op_[32:0];
wire [63:0]one__0;
reg [63:0]one__1;
reg [63:0]one__2;
reg [63:0]one__3_d, one__3_q;
reg [63:0]one__4;
reg [63:0]one__5;
reg [63:0]one__6;
reg [63:0]one__7_d, one__7_q;
reg [63:0]one__8;
reg [63:0]one__9;
reg [63:0]one__10;
reg [63:0]one__11_d, one__11_q;
reg [63:0]one__12;
reg [63:0]one__13;
reg [63:0]one__14;
reg [63:0]one__15_d, one__15_q;
reg [63:0]one__16;
reg [63:0]one__17;
reg [63:0]one__18_d, one__18_q;
reg [63:0]one__19;
reg [63:0]one__20;
reg [63:0]one__21_d, one__21_q;
reg [63:0]one__22;
reg [63:0]one__23;
reg [63:0]one__24_d, one__24_q;
reg [63:0]one__25;
reg [63:0]one__26;
reg [63:0]one__27_d, one__27_q;
reg [63:0]one__28;
reg [63:0]one__29;
reg [63:0]one__30_d, one__30_q;
reg [63:0]one__31;
reg [63:0]one__32;
wire [63:0]res__0;
reg [63:0]res__1;
reg [63:0]res__2;
reg [63:0]res__3_d, res__3_q;
reg [63:0]res__4;
reg [63:0]res__5;
reg [63:0]res__6;
reg [63:0]res__7_d, res__7_q;
reg [63:0]res__8;
reg [63:0]res__9;
reg [63:0]res__10;
reg [63:0]res__11_d, res__11_q;
reg [63:0]res__12;
reg [63:0]res__13;
reg [63:0]res__14;
reg [63:0]res__15_d, res__15_q;
reg [63:0]res__16;
reg [63:0]res__17;
reg [63:0]res__18_d, res__18_q;
reg [63:0]res__19;
reg [63:0]res__20;
reg [63:0]res__21_d, res__21_q;
reg [63:0]res__22;
reg [63:0]res__23;
reg [63:0]res__24_d, res__24_q;
reg [63:0]res__25;
reg [63:0]res__26;
reg [63:0]res__27_d, res__27_q;
reg [63:0]res__28;
reg [63:0]res__29;
reg [63:0]res__30_d, res__30_q;
reg [63:0]res__31;
reg [63:0]res__32;
wire [63:0]op__0;
reg [63:0]op__1;
reg [63:0]op__2;
reg [63:0]op__3_d, op__3_q;
reg [63:0]op__4;
reg [63:0]op__5;
reg [63:0]op__6;
reg [63:0]op__7_d, op__7_q;
reg [63:0]op__8;
reg [63:0]op__9;
reg [63:0]op__10;
reg [63:0]op__11_d, op__11_q;
reg [63:0]op__12;
reg [63:0]op__13;
reg [63:0]op__14;
reg [63:0]op__15_d, op__15_q;
reg [63:0]op__16;
reg [63:0]op__17;
reg [63:0]op__18_d, op__18_q;
reg [63:0]op__19;
reg [63:0]op__20;
reg [63:0]op__21_d, op__21_q;
reg [63:0]op__22;
reg [63:0]op__23;
reg [63:0]op__24_d, op__24_q;
reg [63:0]op__25;
reg [63:0]op__26;
reg [63:0]op__27_d, op__27_q;
reg [63:0]op__28;
reg [63:0]op__29;
reg [63:0]op__30_d, op__30_q;
reg [63:0]op__31;
reg [63:0]op__32;
reg [63:0]one; //This is the one that is selected in first expanded loop
reg [31:0]one_tmp;
always @ (num) begin
//The first for-loop:
//all of these will be zero no matter how 'one' is selected.
one[1] = 0;
one[3] = 0;
one[5] = 0;
one[7] = 0;
one[9] = 0;
one[11] = 0;
one[13] = 0;
one[15] = 0;
one[17] = 0;
one[19] = 0;
one[21] = 0;
one[23] = 0;
one[25] = 0;
one[27] = 0;
one[29] = 0;
one[31] = 0;
one[33] = 0;
one[35] = 0;
one[37] = 0;
one[39] = 0;
one[41] = 0;
one[43] = 0;
one[45] = 0;
one[47] = 0;
one[49] = 0;
one[51] = 0;
one[53] = 0;
one[55] = 0;
one[57] = 0;
one[59] = 0;
one[61] = 0;
one[63] = 0;
one_tmp[0] = num[0]|num[1];
one_tmp[1] = num[2]|num[3];
one_tmp[2] = num[4]|num[5];
one_tmp[3] = num[6]|num[7];
one_tmp[4] = num[8]|num[9];
one_tmp[5] = num[10]|num[11];
one_tmp[6] = num[12]|num[13];
one_tmp[7] = num[14]|num[15];
one_tmp[8] = num[16]|num[17];
one_tmp[9] = num[18]|num[19];
one_tmp[10] = num[20]|num[21];
one_tmp[11] = num[22]|num[23];
one_tmp[12] = num[24]|num[25];
one_tmp[13] = num[26]|num[27];
one_tmp[14] = num[28]|num[29];
one_tmp[15] = num[30]|num[31];
one_tmp[16] = num[32]|num[33];
one_tmp[17] = num[34]|num[35];
one_tmp[18] = num[36]|num[37];
one_tmp[19] = num[38]|num[39];
one_tmp[20] = num[40]|num[41];
one_tmp[21] = num[42]|num[43];
one_tmp[22] = num[44]|num[45];
one_tmp[23] = num[46]|num[47];
one_tmp[24] = num[48]|num[49];
one_tmp[25] = num[50]|num[51];
one_tmp[26] = num[52]|num[53];
one_tmp[27] = num[54]|num[55];
one_tmp[28] = num[56]|num[57];
one_tmp[29] = num[58]|num[59];
one_tmp[30] = num[60]|num[61];
one_tmp[31] = num[62]|num[63];
one[0] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&~one_tmp[16]&~one_tmp[15]&~one_tmp[14]&~one_tmp[13]&~one_tmp[12]&~one_tmp[11]&~one_tmp[10]&~one_tmp[9]&~one_tmp[8]&~one_tmp[7]&~one_tmp[6]&~one_tmp[5]&~one_tmp[4]&~one_tmp[3]&~one_tmp[2]&~one_tmp[1]&one_tmp[0];
one[2] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&~one_tmp[16]&~one_tmp[15]&~one_tmp[14]&~one_tmp[13]&~one_tmp[12]&~one_tmp[11]&~one_tmp[10]&~one_tmp[9]&~one_tmp[8]&~one_tmp[7]&~one_tmp[6]&~one_tmp[5]&~one_tmp[4]&~one_tmp[3]&~one_tmp[2]&one_tmp[1];
one[4] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&~one_tmp[16]&~one_tmp[15]&~one_tmp[14]&~one_tmp[13]&~one_tmp[12]&~one_tmp[11]&~one_tmp[10]&~one_tmp[9]&~one_tmp[8]&~one_tmp[7]&~one_tmp[6]&~one_tmp[5]&~one_tmp[4]&~one_tmp[3]&one_tmp[2];
one[6] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&~one_tmp[16]&~one_tmp[15]&~one_tmp[14]&~one_tmp[13]&~one_tmp[12]&~one_tmp[11]&~one_tmp[10]&~one_tmp[9]&~one_tmp[8]&~one_tmp[7]&~one_tmp[6]&~one_tmp[5]&~one_tmp[4]&one_tmp[3];
one[8] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&~one_tmp[16]&~one_tmp[15]&~one_tmp[14]&~one_tmp[13]&~one_tmp[12]&~one_tmp[11]&~one_tmp[10]&~one_tmp[9]&~one_tmp[8]&~one_tmp[7]&~one_tmp[6]&~one_tmp[5]&one_tmp[4];
one[10] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&~one_tmp[16]&~one_tmp[15]&~one_tmp[14]&~one_tmp[13]&~one_tmp[12]&~one_tmp[11]&~one_tmp[10]&~one_tmp[9]&~one_tmp[8]&~one_tmp[7]&~one_tmp[6]&one_tmp[5];
one[12] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&~one_tmp[16]&~one_tmp[15]&~one_tmp[14]&~one_tmp[13]&~one_tmp[12]&~one_tmp[11]&~one_tmp[10]&~one_tmp[9]&~one_tmp[8]&~one_tmp[7]&one_tmp[6];
one[14] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&~one_tmp[16]&~one_tmp[15]&~one_tmp[14]&~one_tmp[13]&~one_tmp[12]&~one_tmp[11]&~one_tmp[10]&~one_tmp[9]&~one_tmp[8]&one_tmp[7];
one[16] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&~one_tmp[16]&~one_tmp[15]&~one_tmp[14]&~one_tmp[13]&~one_tmp[12]&~one_tmp[11]&~one_tmp[10]&~one_tmp[9]&one_tmp[8];
one[18] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&~one_tmp[16]&~one_tmp[15]&~one_tmp[14]&~one_tmp[13]&~one_tmp[12]&~one_tmp[11]&~one_tmp[10]&one_tmp[9];
one[20] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&~one_tmp[16]&~one_tmp[15]&~one_tmp[14]&~one_tmp[13]&~one_tmp[12]&~one_tmp[11]&one_tmp[10];
one[22] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&~one_tmp[16]&~one_tmp[15]&~one_tmp[14]&~one_tmp[13]&~one_tmp[12]&one_tmp[11];
one[24] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&~one_tmp[16]&~one_tmp[15]&~one_tmp[14]&~one_tmp[13]&one_tmp[12];
one[26] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&~one_tmp[16]&~one_tmp[15]&~one_tmp[14]&one_tmp[13];
one[28] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&~one_tmp[16]&~one_tmp[15]&one_tmp[14];
one[30] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&~one_tmp[16]&one_tmp[15];
one[32] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&~one_tmp[17]&one_tmp[16];
one[34] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&~one_tmp[18]&one_tmp[17];
one[36] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&~one_tmp[19]&one_tmp[18];
one[38] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&~one_tmp[20]&one_tmp[19];
one[40] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&~one_tmp[21]&one_tmp[20];
one[42] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&~one_tmp[22]&one_tmp[21];
one[44] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&~one_tmp[23]&one_tmp[22];
one[46] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&~one_tmp[24]&one_tmp[23];
one[48] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&~one_tmp[25]&one_tmp[24];
one[50] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&~one_tmp[26]&one_tmp[25];
one[52] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&~one_tmp[27]&one_tmp[26];
one[54] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&~one_tmp[28]&one_tmp[27];
one[56] = ~one_tmp[31]&~one_tmp[30]&~one_tmp[29]&one_tmp[28];
one[58] = ~one_tmp[31]&~one_tmp[30]&one_tmp[29];
one[60] = ~one_tmp[31]&one_tmp[30];
one[62] = one_tmp[31];
end
// //2nd for-loop:
// integer i;
// always @* begin
// op_[0] = num;
// one_[0] = one;
// res_[0] = 64'b0;
// res = 63'b0;
// res_assigned = 1'b0;
//
// for (i = 0; i <= 31; i=i+1) begin
// if ((one_[i] == 0) & ~res_assigned) begin
// res = res_[i];
// res_assigned = 1'b1;
// end
//
// //Define the next stage:
// if (op_[i] >= res_[i] + one_[i]) begin
// op_[i+1] = op_[i] - res_[i] - one_[i];
// res_[i+1] = (res_[i]>>1) + one_[i];
// end else begin
// op_[i+1] = op_[i]; //this line had to be added for the verilog version.
// res_[i+1] = (res_[i]>>1);
// end
// one_[i+1] = (one_[i] >> 2);
// end
//
// //Add the part for really big numbers later:
// if (~res_assigned) begin
// res = res_[32];
// end
// end
//If-statement about defining the next stage:
assign op__0 = num;
assign res__0 = 64'b0;
assign one__0 = one;
always @ (res__0 or op__0 or one__0) begin
//i = 0
if (op__0 >= res__0 + one__0) begin
op__1 = op__0 - res__0 - one__0;
res__1 = (res__0>>1) + one__0;
end else begin
op__1 = op__0;
res__1 = (res__0>>1);
end
one__1 = (one__0 >> 2);
//i = 1
if (op__1 >= res__1 + one__1) begin
op__2 = op__1 - res__1 - one__1;
res__2 = (res__1>>1) + one__1;
end else begin
op__2 = op__1;
res__2 = (res__1>>1);
end
one__2 = (one__1 >> 2);
//i = 2
if (op__2 >= res__2 + one__2) begin
op__3_d = op__2 - res__2 - one__2;
res__3_d = (res__2>>1) + one__2;
end else begin
op__3_d = op__2;
res__3_d = (res__2>>1);
end
one__3_d = (one__2 >> 2);
end
always @ (posedge clk) begin
op__3_q <= op__3_d;
res__3_q <= res__3_d;
one__3_q <= one__3_d;
end
always @ (op__3_q or res__3_q or one__3_q) begin
//i = 3
if (op__3_q >= res__3_q + one__3_q) begin
op__4 = op__3_q - res__3_q - one__3_q;
res__4 = (res__3_q>>1) + one__3_q;
end else begin
op__4 = op__3_q;
res__4 = (res__3_q>>1);
end
one__4 = (one__3_q >> 2);
//i = 4
if (op__4 >= res__4 + one__4) begin
op__5 = op__4 - res__4 - one__4;
res__5 = (res__4>>1) + one__4;
end else begin
op__5 = op__4;
res__5 = (res__4>>1);
end
one__5 = (one__4 >> 2);
//i = 5
if (op__5 >= res__5 + one__5) begin
op__6 = op__5 - res__5 - one__5;
res__6 = (res__5>>1) + one__5;
end else begin
op__6 = op__5;
res__6 = (res__5>>1);
end
one__6 = (one__5 >> 2);
//i = 6
if (op__6 >= res__6 + one__6) begin
op__7_d = op__6 - res__6 - one__6;
res__7_d = (res__6>>1) + one__6;
end else begin
op__7_d = op__6;
res__7_d = (res__6>>1);
end
one__7_d = (one__6 >> 2);
end
always @ (posedge clk) begin
op__7_q <= op__7_d;
one__7_q <= one__7_d;
res__7_q <= res__7_d;
end
always @ (op__7_q or res__7_q or one__7_q) begin
//i = 7
if (op__7_q >= res__7_q + one__7_q) begin
op__8 = op__7_q - res__7_q - one__7_q;
res__8 = (res__7_q>>1) + one__7_q;
end else begin
op__8 = op__7_q;
res__8 = (res__7_q>>1);
end
one__8 = (one__7_q >> 2);
//i = 8
if (op__8 >= res__8 + one__8) begin
op__9 = op__8 - res__8 - one__8;
res__9 = (res__8>>1) + one__8;
end else begin
op__9 = op__8;
res__9 = (res__8>>1);
end
one__9 = (one__8 >> 2);
//i = 9
if (op__9 >= res__9 + one__9) begin
op__10 = op__9 - res__9 - one__9;
res__10 = (res__9>>1) + one__9;
end else begin
op__10 = op__9;
res__10 = (res__9>>1);
end
one__10 = (one__9 >> 2);
//i = 10
if (op__10 >= res__10 + one__10) begin
op__11_d = op__10 - res__10 - one__10;
res__11_d = (res__10>>1) + one__10;
end else begin
op__11_d = op__10;
res__11_d = (res__10>>1);
end
one__11_d = (one__10 >> 2);
end
always @ (posedge clk) begin
op__11_q <= op__11_d;
one__11_q <= one__11_d;
res__11_q <= res__11_d;
end
always @ (op__11_q or res__11_q or one__11_q) begin
//i = 11
if (op__11_q >= res__11_q + one__11_q) begin
op__12 = op__11_q - res__11_q - one__11_q;
res__12 = (res__11_q>>1) + one__11_q;
end else begin
op__12 = op__11_q;
res__12 = (res__11_q>>1);
end
one__12 = (one__11_q >> 2);
//i = 12
if (op__12 >= res__12 + one__12) begin
op__13 = op__12 - res__12 - one__12;
res__13 = (res__12>>1) + one__12;
end else begin
op__13 = op__12;
res__13 = (res__12>>1);
end
one__13 = (one__12 >> 2);
//i = 13
if (op__13 >= res__13 + one__13) begin
op__14 = op__13 - res__13 - one__13;
res__14 = (res__13>>1) + one__13;
end else begin
op__14 = op__13;
res__14 = (res__13>>1);
end
one__14 = (one__13 >> 2);
//i = 14
if (op__14 >= res__14 + one__14) begin
op__15_d = op__14 - res__14 - one__14;
res__15_d = (res__14>>1) + one__14;
end else begin
op__15_d = op__14;
res__15_d = (res__14>>1);
end
one__15_d = (one__14 >> 2);
end
always @ (posedge clk) begin
op__15_q <= op__15_d;
one__15_q <= one__15_d;
res__15_q <= res__15_d;
end
always @ (op__15_q or res__15_q or one__15_q) begin
//i = 15
if (op__15_q >= res__15_q + one__15_q) begin
op__16 = op__15_q - res__15_q - one__15_q;
res__16 = (res__15_q>>1) + one__15_q;
end else begin
op__16 = op__15_q;
res__16 = (res__15_q>>1);
end
one__16 = (one__15_q >> 2);
//i = 16
if (op__16 >= res__16 + one__16) begin
op__17 = op__16 - res__16 - one__16;
res__17 = (res__16>>1) + one__16;
end else begin
op__17 = op__16;
res__17 = (res__16>>1);
end
one__17 = (one__16 >> 2);
//i = 17
if (op__17 >= res__17 + one__17) begin
op__18_d = op__17 - res__17 - one__17;
res__18_d = (res__17>>1) + one__17;
end else begin
op__18_d = op__17;
res__18_d = (res__17>>1);
end
one__18_d = (one__17 >> 2);
end
always @ (posedge clk) begin
op__18_q <= op__18_d;
one__18_q <= one__18_d;
res__18_q <= res__18_d;
end
always @ (op__18_q or res__18_q or one__18_q) begin
//i = 18
if (op__18_q >= res__18_q + one__18_q) begin
op__19 = op__18_q - res__18_q - one__18_q;
res__19 = (res__18_q>>1) + one__18_q;
end else begin
op__19 = op__18_q;
res__19 = (res__18_q>>1);
end
one__19 = (one__18_q >> 2);
//i = 19
if (op__19 >= res__19 + one__19) begin
op__20 = op__19 - res__19 - one__19;
res__20 = (res__19>>1) + one__19;
end else begin
op__20 = op__19;
res__20 = (res__19>>1);
end
one__20 = (one__19 >> 2);
//i = 20
if (op__20 >= res__20 + one__20) begin
op__21_d = op__20 - res__20 - one__20;
res__21_d = (res__20>>1) + one__20;
end else begin
op__21_d = op__20;
res__21_d = (res__20>>1);
end
one__21_d = (one__20 >> 2);
end
always @ (posedge clk) begin
op__21_q <= op__21_d;
one__21_q <= one__21_d;
res__21_q <= res__21_d;
end
always @ (op__21_q or res__21_q or one__21_q) begin
//i = 21
if (op__21_q >= res__21_q + one__21_q) begin
op__22 = op__21_q - res__21_q - one__21_q;
res__22 = (res__21_q>>1) + one__21_q;
end else begin
op__22 = op__21_q;
res__22 = (res__21_q>>1);
end
one__22 = (one__21_q >> 2);
//i = 22
if (op__22 >= res__22 + one__22) begin
op__23 = op__22 - res__22 - one__22;
res__23 = (res__22>>1) + one__22;
end else begin
op__23 = op__22;
res__23 = (res__22>>1);
end
one__23 = (one__22 >> 2);
//i = 23
if (op__23 >= res__23 + one__23) begin
op__24_d = op__23 - res__23 - one__23;
res__24_d = (res__23>>1) + one__23;
end else begin
op__24_d = op__23;
res__24_d = (res__23>>1);
end
one__24_d = (one__23 >> 2);
end
always @ (posedge clk) begin
op__24_q <= op__24_d;
one__24_q <= one__24_d;
res__24_q <= res__24_d;
end
always @ (op__24_q or res__24_q or one__24_q) begin
//i = 24
if (op__24_q >= res__24_q + one__24_q) begin
op__25 = op__24_q - res__24_q - one__24_q;
res__25 = (res__24_q>>1) + one__24_q;
end else begin
op__25 = op__24_q;
res__25 = (res__24_q>>1);
end
one__25 = (one__24_q >> 2);
//i = 25
if (op__25 >= res__25 + one__25) begin
op__26 = op__25 - res__25 - one__25;
res__26 = (res__25>>1) + one__25;
end else begin
op__26 = op__25;
res__26 = (res__25>>1);
end
one__26 = (one__25 >> 2);
//i = 26
if (op__26 >= res__26 + one__26) begin
op__27_d = op__26 - res__26 - one__26;
res__27_d = (res__26>>1) + one__26;
end else begin
op__27_d = op__26;
res__27_d = (res__26>>1);
end
one__27_d = (one__26 >> 2);
end
always @ (posedge clk) begin
op__27_q <= op__27_d;
one__27_q <= one__27_d;
res__27_q <= res__27_d;
end
always @ (op__27_q or res__27_q or one__27_q) begin
//i = 27
if (op__27_q >= res__27_q + one__27_q) begin
op__28 = op__27_q - res__27_q - one__27_q;
res__28 = (res__27_q>>1) + one__27_q;
end else begin
op__28 = op__27_q;
res__28 = (res__27_q>>1);
end
one__28 = (one__27_q >> 2);
//i = 28
if (op__28 >= res__28 + one__28) begin
op__29 = op__28 - res__28 - one__28;
res__29 = (res__28>>1) + one__28;
end else begin
op__29 = op__28;
res__29 = (res__28>>1);
end
one__29 = (one__28 >> 2);
//i = 29
if (op__29 >= res__29 + one__29) begin
op__30_d = op__29 - res__29 - one__29;
res__30_d = (res__29>>1) + one__29;
end else begin
op__30_d = op__29;
res__30_d = (res__29>>1);
end
one__30_d = (one__29 >> 2);
end
always @ (posedge clk) begin
op__30_q <= op__30_d;
one__30_q <= one__30_d;
res__30_q <= res__30_d;
end
always @* begin
//i = 30
if (op__30_q >= res__30_q + one__30_q) begin
op__31 = op__30_q - res__30_q - one__30_q;
res__31 = (res__30_q>>1) + one__30_q;
end else begin
op__31 = op__30_q;
res__31 = (res__30_q>>1);
end
one__31 = (one__30_q >> 2);
//i = 31
if (op__31 >= res__31 + one__31) begin
op__32 = op__31 - res__31 - one__31;
res__32 = (res__31>>1) + one__31;
end else begin
op__32 = op__31;
res__32 = (res__31>>1);
end
one__32 = (one__31 >> 2);
end
//If-statement about assigning res:
always @* begin
if(one__0 == 0) begin
res = res__0[31:0];
end else if (one__1 == 0) begin
res = res__1[31:0];
end else if (one__2 == 0) begin
res = res__2[31:0];
end else if (one__3_q == 0) begin
res = res__3_q[31:0];
end else if (one__4 == 0) begin
res = res__4[31:0];
end else if (one__5 == 0) begin
res = res__5[31:0];
end else if (one__6 == 0) begin
res = res__6[31:0];
end else if (one__7_q == 0) begin
res = res__7_q[31:0];
end else if (one__8 == 0) begin
res = res__8[31:0];
end else if (one__9 == 0) begin
res = res__9[31:0];
end else if (one__10 == 0) begin
res = res__10[31:0];
end else if (one__11_q == 0) begin
res = res__11_q[31:0];
end else if (one__12 == 0) begin
res = res__12[31:0];
end else if (one__13 == 0) begin
res = res__13[31:0];
end else if (one__14 == 0) begin
res = res__14[31:0];
end else if (one__15_q == 0) begin
res = res__15_q[31:0];
end else if (one__16 == 0) begin
res = res__16[31:0];
end else if (one__17 == 0) begin
res = res__17[31:0];
end else if (one__18_q == 0) begin
res = res__18_q[31:0];
end else if (one__19 == 0) begin
res = res__19[31:0];
end else if (one__20 == 0) begin
res = res__20[31:0];
end else if (one__21_q == 0) begin
res = res__21_q[31:0];
end else if (one__22 == 0) begin
res = res__22[31:0];
end else if (one__23 == 0) begin
res = res__23[31:0];
end else if (one__24_q == 0) begin
res = res__24_q[31:0];
end else if (one__25 == 0) begin
res = res__25[31:0];
end else if (one__26 == 0) begin
res = res__26[31:0];
end else if (one__27_q == 0) begin
res = res__27_q[31:0];
end else if (one__28 == 0) begin
res = res__28[31:0];
end else if (one__29 == 0) begin
res = res__29[31:0];
end else if (one__30_q == 0) begin
res = res__30_q[31:0];
end else if (one__31 == 0) begin
res = res__31[31:0];
end else begin
res = res__32[31:0];
end
end
endmodule
//---------------------------------------
// A dual-port RAM 8192x32
// This module is tuned for VTR's benchmarks
//---------------------------------------
module dual_port_ram_8192x32 (
input clk,
input we1,
input we2,
input [13 - 1 : 0] addr1,
input [32 - 1 : 0] data1,
output [32 - 1 : 0] out1,
input [13 - 1 : 0] addr2,
input [32 - 1 : 0] data2,
output [32 - 1 : 0] out2
);
reg [32 - 1 : 0] ram[2**13 - 1 : 0];
reg [32 - 1 : 0] data_out1;
reg [32 - 1 : 0] data_out2;
assign out1 = data_out1;
assign out2 = data_out2;
// If writen enable 1 is activated,
// data1 will be loaded through addr1
// Otherwise, data will be read out through addr1
always @(posedge clk) begin
if (we1) begin
ram[addr1] <= data1;
end else begin
data_out1 <= ram[addr1];
end
end
// If writen enable 2 is activated,
// data1 will be loaded through addr2
// Otherwise, data will be read out through addr2
always @(posedge clk) begin
if (we2) begin
ram[addr2] <= data2;
end else begin
data_out2 <= ram[addr2];
end
end
endmodule
//---------------------------------------
// A dual-port RAM 65536x36
// This module is tuned for VTR's benchmarks
//---------------------------------------
module dual_port_ram_65536x36 (
input clk,
input we1,
input we2,
input [16 - 1 : 0] addr1,
input [36 - 1 : 0] data1,
output [36 - 1 : 0] out1,
input [16 - 1 : 0] addr2,
input [36 - 1 : 0] data2,
output [36 - 1 : 0] out2
);
reg [36 - 1 : 0] ram[2**16 - 1 : 0];
reg [36 - 1 : 0] data_out1;
reg [36 - 1 : 0] data_out2;
assign out1 = data_out1;
assign out2 = data_out2;
// If writen enable 1 is activated,
// data1 will be loaded through addr1
// Otherwise, data will be read out through addr1
always @(posedge clk) begin
if (we1) begin
ram[addr1] <= data1;
end else begin
data_out1 <= ram[addr1];
end
end
// If writen enable 2 is activated,
// data1 will be loaded through addr2
// Otherwise, data will be read out through addr2
always @(posedge clk) begin
if (we2) begin
ram[addr2] <= data2;
end else begin
data_out2 <= ram[addr2];
end
end
endmodule
//---------------------------------------
// A dual-port RAM 65536x18
// This module is tuned for VTR's benchmarks
//---------------------------------------
module dual_port_ram_65536x18 (
input clk,
input we1,
input we2,
input [16 - 1 : 0] addr1,
input [18 - 1 : 0] data1,
output [18 - 1 : 0] out1,
input [16 - 1 : 0] addr2,
input [18 - 1 : 0] data2,
output [18 - 1 : 0] out2
);
reg [18 - 1 : 0] ram[2**16 - 1 : 0];
reg [18 - 1 : 0] data_out1;
reg [18 - 1 : 0] data_out2;
assign out1 = data_out1;
assign out2 = data_out2;
// If writen enable 1 is activated,
// data1 will be loaded through addr1
// Otherwise, data will be read out through addr1
always @(posedge clk) begin
if (we1) begin
ram[addr1] <= data1;
end else begin
data_out1 <= ram[addr1];
end
end
// If writen enable 2 is activated,
// data1 will be loaded through addr2
// Otherwise, data will be read out through addr2
always @(posedge clk) begin
if (we2) begin
ram[addr2] <= data2;
end else begin
data_out2 <= ram[addr2];
end
end
endmodule
//---------------------------------------
// A dual-port RAM 65536x8
// This module is tuned for VTR's benchmarks
//---------------------------------------
module dual_port_ram_65536x8 (
input clk,
input we1,
input we2,
input [16 - 1 : 0] addr1,
input [8 - 1 : 0] data1,
output [8 - 1 : 0] out1,
input [16 - 1 : 0] addr2,
input [8 - 1 : 0] data2,
output [8 - 1 : 0] out2
);
reg [8 - 1 : 0] ram[2**16 - 1 : 0];
reg [8 - 1 : 0] data_out1;
reg [8 - 1 : 0] data_out2;
assign out1 = data_out1;
assign out2 = data_out2;
// If writen enable 1 is activated,
// data1 will be loaded through addr1
// Otherwise, data will be read out through addr1
always @(posedge clk) begin
if (we1) begin
ram[addr1] <= data1;
end else begin
data_out1 <= ram[addr1];
end
end
// If writen enable 2 is activated,
// data1 will be loaded through addr2
// Otherwise, data will be read out through addr2
always @(posedge clk) begin
if (we2) begin
ram[addr2] <= data2;
end else begin
data_out2 <= ram[addr2];
end
end
endmodule
//---------------------------------------
// A single-port RAM
// This module is tuned for VTR's benchmarks
//---------------------------------------
module single_port_ram (
input clk,
input we,
input [`MANTISSA_PRECISION - 1 : 0] addr,
input [31:0] data,
output [31:0] out );
reg [31:0] ram[2**`MANTISSA_PRECISION - 1 : 0];
reg [31:0] internal;
assign out = internal;
always @(posedge clk) begin
if(wen) begin
ram[addr] <= data;
end
if(ren) begin
internal <= ram[addr];
end
end
endmodule
//---------------------------------------
// A single-port 1024x32bit RAM
// This module is tuned for VTR's benchmarks
//---------------------------------------
module single_port_ram_1024x32 (
input clk,
input we,
input [9:0] addr,
input [31:0] data,
output [31:0] out );
reg [31:0] ram[1023:0];
reg [31:0] internal;
assign out = internal;
always @(posedge clk) begin
if(wen) begin
ram[addr] <= data;
end
if(ren) begin
internal <= ram[addr];
end
end
endmodule