diff --git a/vtr_flow/benchmarks/verilog/LU32PEEng.v b/vtr_flow/benchmarks/verilog/LU32PEEng.v index 25d12149554..b0e604dcd2d 100644 --- a/vtr_flow/benchmarks/verilog/LU32PEEng.v +++ b/vtr_flow/benchmarks/verilog/LU32PEEng.v @@ -508,7 +508,7 @@ begin end end -always @ (cur_state) +always @ (*) begin case (cur_state) `MODE1: @@ -1064,7 +1064,7 @@ begin end // connections to top block memory ports -always @ (topSourceSel or topWriteSel or curReadDataLU or addResult31 or addResult30 or addResult29 or addResult28 or addResult27 or addResult26 or addResult25 or addResult24 or addResult23 or addResult22 or addResult21 or addResult20 or addResult19 or addResult18 or addResult17 or addResult16 or addResult15 or addResult14 or addResult13 or addResult12 or addResult11 or addResult10 or addResult9 or addResult8 or addResult7 or addResult6 or addResult5 or addResult4 or addResult3 or addResult2 or addResult1 or addResult0) +always @ (*) begin if (topSourceSel == 1'b0) case (topWriteSel) @@ -1765,7 +1765,7 @@ else if (waitCycles >7'b0000000) end // determining next state of main FSM -always @ (currentState or start or mode or m or n or counter or mdivk or topIdxCounter or doneFetchRow or divCounter or j or stop2 or waitCycles or stop or i1) +always @ (*) begin case (currentState) `cSETUP: @@ -1957,7 +1957,7 @@ begin endcase end -always @ (currentRowState or currentState or nextState or i1 or topIdxCounter or mdivk or msIdxCounter or readRowCounter or j or n or mode) +always @ (*) begin if (currentRowState == `cDONE_FETCH_ROW) doneFetchRow = 1; @@ -1975,7 +1975,7 @@ begin end // second FSM that controls the control signals to temp_top block -always @ (currentRowState or nextTopIdxCounter or n or startFetchRow or loadRow or topIdx or mdivk or nextState) +always @ (*) begin case (currentRowState) `cFETCH_ROW: @@ -2606,9 +2606,9 @@ assign j = |byteena_a; assign q = subwire | dummy; assign dummy = value_out & 1024'b0; -defparam inst1.ADDR_WIDTH = `rRAMSIZEWIDTH; -defparam inst1.DATA_WIDTH = `RAMWIDTH; -dual_port_ram inst1( +dual_port_ram + # (.ADDR_WIDTH(`rRAMSIZEWIDTH), .DATA_WIDTH(`RAMWIDTH)) +inst1( .clk (clk), .we1(wren), .we2(1'b0), @@ -2650,9 +2650,9 @@ assign j = |byteena_a; assign q = subwire | dummy; assign dummy = value_out & 1024'b0; -defparam inst1.ADDR_WIDTH = `rRAMSIZEWIDTH; -defparam inst1.DATA_WIDTH = `RAMWIDTH; -dual_port_ram inst1( +dual_port_ram + # (.ADDR_WIDTH(`rRAMSIZEWIDTH), .DATA_WIDTH(`RAMWIDTH)) +inst1( .clk (clk), .we1(wren), .we2(1'b0), @@ -2694,9 +2694,9 @@ assign j = |byteena_a; assign q = subwire | dummy; assign dummy = value_out & 1024'b0; -defparam inst1.ADDR_WIDTH = `rRAMSIZEWIDTH; -defparam inst1.DATA_WIDTH = `RAMWIDTH; -dual_port_ram inst1( +dual_port_ram + # (.ADDR_WIDTH(`rRAMSIZEWIDTH), .DATA_WIDTH(`RAMWIDTH)) +inst1( .clk (clk), .we1(wren), .we2(1'b0), @@ -2737,9 +2737,9 @@ assign j = |byteena_a; assign q = subwire | dummy; assign dummy = value_out & 1024'b0; -defparam inst1.ADDR_WIDTH = `rRAMSIZEWIDTH; -defparam inst1.DATA_WIDTH = `RAMWIDTH; -dual_port_ram inst1( +dual_port_ram + # (.ADDR_WIDTH(`rRAMSIZEWIDTH), .DATA_WIDTH(`RAMWIDTH)) +inst1( .clk (clk), .we1(wren), .we2(1'b0), @@ -2779,9 +2779,9 @@ module top_ram ( assign q = sub_wire0 | dummy; assign dummy = junk_output & 32'b0; - defparam inst2.ADDR_WIDTH = 12; - defparam inst2.DATA_WIDTH = 32; - dual_port_ram inst2( +dual_port_ram + # (.ADDR_WIDTH(12), .DATA_WIDTH(32)) +inst2( .clk (clk), .we1(wren), .we2(1'b0), @@ -3324,9 +3324,10 @@ begin // : STATUS_COUNTER else if ((wrreq) && (!rdreq) && (status_cnt != 64 )) status_cnt <= status_cnt + 1'b1; end - defparam ram_addr.ADDR_WIDTH = `rFIFORSIZEWIDTH; - defparam ram_addr.DATA_WIDTH = `rFIFOINPUTWIDTH; - dual_port_ram ram_addr( + + dual_port_ram + # (.ADDR_WIDTH(`rFIFORSIZEWIDTH), .DATA_WIDTH(`rFIFOINPUTWIDTH)) +ram_addr( .we1 (wrreq) , // write enable .we2 (rdreq) , // Read enable .addr1 (wr_pointer) , // address_0 input @@ -3454,9 +3455,9 @@ begin // : STATUS_COUNTER end assign usedw = status_cnt[`wFIFOSIZEWIDTH-1:0]; - defparam ram_addr.ADDR_WIDTH = `wFIFOSIZEWIDTH; - defparam ram_addr.DATA_WIDTH = `wFIFOINPUTWIDTH; - dual_port_ram ram_addr( + dual_port_ram + # (.ADDR_WIDTH(`wFIFOSIZEWIDTH), .DATA_WIDTH(`wFIFOINPUTWIDTH)) +ram_addr( .we1 (wrreq) , // write enable .we2 (rdreq) , // Read enable .addr1 (wr_pointer) , // address_0 input @@ -3531,9 +3532,9 @@ begin // : STATUS_COUNTER status_cnt <= status_cnt + 1; end - defparam ram_addr.ADDR_WIDTH = `aFIFOSIZEWIDTH; - defparam ram_addr.DATA_WIDTH = `aFIFOWIDTH; - dual_port_ram ram_addr( + dual_port_ram + # (.ADDR_WIDTH(`aFIFOSIZEWIDTH), .DATA_WIDTH(`aFIFOWIDTH)) +ram_addr( .we1 (wrreq) , // write enable .we2 (rdreq) , // Read enable .addr1 (wr_pointer) , // address_0 input @@ -3603,9 +3604,10 @@ begin // : STATUS_COUNTER else if ((wrreq) && (!rdreq) && (status_cnt != 16 )) status_cnt <= status_cnt + 1'b1; end - defparam ram_addr.ADDR_WIDTH = `mFIFOSIZEWIDTH; - defparam ram_addr.DATA_WIDTH = `mFIFOWIDTH; - dual_port_ram ram_addr( + + dual_port_ram + # (.ADDR_WIDTH(`mFIFOSIZEWIDTH), .DATA_WIDTH(`mFIFOWIDTH)) + ram_addr( .we1 (wrreq) , // write enable .we2 (rdreq) , // Read enable .addr1 (wr_pointer) , // address_0 input @@ -3676,7 +3678,7 @@ module fpu_add (clock, a1, b1, sum); reg smaller; //smaller is 1 if a < b, 0 otherwise //Shift mantissa's to have the same exponent - always @ (a or b) begin + always @ (*) begin //a_exp = a[30:23]; //b_exp = b[30:23]; //a_man = {1'b1, a[22:0]}; @@ -3861,7 +3863,7 @@ module fpu_add (clock, a1, b1, sum); end //Perform the addition operation - always @ (a_man or b_man or a or b) begin + always @ (*) begin if (a_man < b_man) begin smaller = 1'b1; end else begin @@ -3906,7 +3908,7 @@ module fpu_add (clock, a1, b1, sum); //Store the number // we already have the sign. - always @ (sum_man or a_exp) begin + always @ (*) begin if (sum_man[24])begin //shif sum >> by 1, add 1 to the exponent. sum[22:0] = sum_man[23:1]; sum[30:23] = a_exp + 8'b00000001; @@ -4044,7 +4046,7 @@ module fpu_div(clock, n, d, div); end //Find the exponent, store in div_exp. - always @ (n_exp or d_exp) begin + always @ (*) begin if (n_exp >= d_exp) begin div_exp = 8'b01111111 + (n_exp - d_exp); end else begin @@ -4057,12 +4059,12 @@ module fpu_div(clock, n, d, div); //Store the result. Shift exponents appropriately. Store sign. //Sign - always @ (n_sign or d_sign) begin + always @ (*) begin div[31] = n_sign ^ d_sign; end //Mantissa and Exponent - always @ (div_man or div_exp) begin + always @ (*) begin if (div_man[23]) begin //do nothing div[22:0] = div_man[22:0]; div[30:23] = div_exp; @@ -4209,7 +4211,7 @@ module div_24b(numer, denom, res); // end //res[23] - always @ (denom_pad or numer23) begin + always @ (*) begin if (denom_pad[23:0] <= numer23[46:23]) begin res[23] = 1'b1; @@ -4854,7 +4856,7 @@ assign shiftb = b[23 - 1] ? 1 : // If number is denorm, shift the significand the appropriate amount // assign shifteda = a[`WSIG-1:0] << shifta; //Must have constant shifts for ODIN - always @ (shifta or a) begin + always @ (*) begin case (shifta) 5'b00001: begin shifteda = a[`WSIG-1:0] << 5'b00001; @@ -4957,7 +4959,7 @@ assign shiftb = b[23 - 1] ? 1 : assign norma = aisdenorm ? shifteda : {1'b1, a[`WSIG-1:0]}; // assign shiftedb = b[`WSIG-1:0] << shiftb; - always @ (shiftb or b) begin + always @ (*) begin case (shiftb) 5'b00001: begin shiftedb = b[`WSIG-1:0] << 5'b00001; @@ -5170,7 +5172,7 @@ module shift(normalized, selectedexp, shiftprod, shiftexp, shiftloss); // shift significand //assign postshift = preshift >> actualshiftamt; //We can only have constant shifts for ODIN: - always @ (actualshiftamt or preshift) begin + always @ (*) begin case (actualshiftamt) 5'b00001: begin postshift = preshift >> 5'b00001; diff --git a/vtr_flow/benchmarks/verilog/LU64PEEng.v b/vtr_flow/benchmarks/verilog/LU64PEEng.v index e561bb89369..860e433da58 100644 --- a/vtr_flow/benchmarks/verilog/LU64PEEng.v +++ b/vtr_flow/benchmarks/verilog/LU64PEEng.v @@ -508,7 +508,7 @@ begin end end -always @ (cur_state) +always @ (*) begin case (cur_state) `MODE1: @@ -1224,7 +1224,7 @@ begin end // connections to top block memory ports -always @ (topSourceSel or topWriteSel or curReadDataLU or addResult63 or addResult62 or addResult61 or addResult60 or addResult59 or addResult58 or addResult57 or addResult56 or addResult55 or addResult54 or addResult53 or addResult52 or addResult51 or addResult50 or addResult49 or addResult48 or addResult47 or addResult46 or addResult45 or addResult44 or addResult43 or addResult42 or addResult41 or addResult40 or addResult39 or addResult38 or addResult37 or addResult36 or addResult35 or addResult34 or addResult33 or addResult32 or addResult31 or addResult30 or addResult29 or addResult28 or addResult27 or addResult26 or addResult25 or addResult24 or addResult23 or addResult22 or addResult21 or addResult20 or addResult19 or addResult18 or addResult17 or addResult16 or addResult15 or addResult14 or addResult13 or addResult12 or addResult11 or addResult10 or addResult9 or addResult8 or addResult7 or addResult6 or addResult5 or addResult4 or addResult3 or addResult2 or addResult1 or addResult0) +always @ (*) begin if (topSourceSel == 1'b0) case (topWriteSel) @@ -2149,7 +2149,7 @@ else if (waitCycles >8'b00000000) end // determining next state of main FSM -always @ (currentState or start or mode or m or n or counter or mdivk or topIdxCounter or doneFetchRow or divCounter or j or stop2 or waitCycles or stop or i1) +always @ (*) begin case (currentState) `cSETUP: @@ -2341,7 +2341,7 @@ begin endcase end -always @ (currentRowState or currentState or nextState or i1 or topIdxCounter or mdivk or msIdxCounter or readRowCounter or j or n or mode) +always @ (*) begin if (currentRowState == `cDONE_FETCH_ROW) doneFetchRow = 1; @@ -2359,7 +2359,7 @@ begin end // second FSM that controls the control signals to temp_top block -always @ (currentRowState or nextTopIdxCounter or n or startFetchRow or loadRow or topIdx or mdivk or nextState) +always @ (*) begin case (currentRowState) `cFETCH_ROW: @@ -3077,17 +3077,20 @@ module ram ( output [`RAMWIDTH-1:0] q; wire [`RAMWIDTH-1:0] value_out; wire [`RAMWIDTH-1:0] subwire; - assign q = subwire | dummy; + wire [`RAMWIDTH-1:0] dummy; wire [`RAMWIDTH-1:0] uselessdata; - assign uselessdata = 2048'b0; -wire j; -assign j = |byteena_a; - wire [`RAMWIDTH-1:0]dummy; - assign dummy = value_out & 2048'b0; - -defparam inst1.ADDR_WIDTH = `rRAMSIZEWIDTH; -defparam inst1.DATA_WIDTH = `RAMWIDTH; -dual_port_ram inst1( + wire j; + assign q = subwire | dummy; + + assign uselessdata = 2048'b0; + + assign j = |byteena_a; + + assign dummy = value_out & 2048'b0; + +dual_port_ram + # (.ADDR_WIDTH(`rRAMSIZEWIDTH), .DATA_WIDTH(`RAMWIDTH)) +inst1( .clk (clk), .we1(wren), .we2(1'b0), @@ -3120,17 +3123,18 @@ module ram1 ( output [`RAMWIDTH-1:0] q; wire [`RAMWIDTH-1:0] value_out; wire [`RAMWIDTH-1:0] subwire; - assign q = subwire | dummy; wire [`RAMWIDTH-1:0] uselessdata; - assign uselessdata = 2048'b0; -wire j; -assign j = |byteena_a; - wire [`RAMWIDTH-1:0]dummy; - assign dummy = value_out & 2048'b0; - -defparam inst1.ADDR_WIDTH = `rRAMSIZEWIDTH; -defparam inst1.DATA_WIDTH = `RAMWIDTH; -dual_port_ram inst1( + wire j; + wire [`RAMWIDTH-1:0]dummy; + + assign q = subwire | dummy; + assign uselessdata = 2048'b0; + assign j = |byteena_a; + assign dummy = value_out & 2048'b0; + +dual_port_ram + # (.ADDR_WIDTH(`rRAMSIZEWIDTH), .DATA_WIDTH(`RAMWIDTH)) +inst1( .clk (clk), .we1(wren), .we2(1'b0), @@ -3163,17 +3167,18 @@ module ram2 ( output [`RAMWIDTH-1:0] q; wire [`RAMWIDTH-1:0] value_out; wire [`RAMWIDTH-1:0] subwire; - assign q = subwire | dummy; wire [`RAMWIDTH-1:0] uselessdata; - assign uselessdata = 2048'b0; -wire j; -assign j = |byteena_a; - wire [`RAMWIDTH-1:0]dummy; - assign dummy = value_out & 2048'b0; - -defparam inst1.ADDR_WIDTH = `rRAMSIZEWIDTH; -defparam inst1.DATA_WIDTH = `RAMWIDTH; -dual_port_ram inst1( + wire j; + wire [`RAMWIDTH-1:0] dummy; + + assign q = subwire | dummy; + assign uselessdata = 2048'b0; + assign j = |byteena_a; + assign dummy = value_out & 2048'b0; + +dual_port_ram + # (.ADDR_WIDTH(`rRAMSIZEWIDTH), .DATA_WIDTH(`RAMWIDTH)) +inst1( .clk (clk), .we1(wren), .we2(1'b0), @@ -3206,17 +3211,18 @@ module ram3 ( output [`RAMWIDTH-1:0] q; wire [`RAMWIDTH-1:0] value_out; wire [`RAMWIDTH-1:0] subwire; - assign q = subwire | dummy; wire [`RAMWIDTH-1:0] uselessdata; - assign uselessdata = 2048'b0; -wire j; -assign j = |byteena_a; - wire [`RAMWIDTH-1:0]dummy; - assign dummy = value_out & 2048'b0; - -defparam inst1.ADDR_WIDTH = `rRAMSIZEWIDTH; -defparam inst1.DATA_WIDTH = `RAMWIDTH; -dual_port_ram inst1( + wire j; + wire [`RAMWIDTH-1:0]dummy; + + assign q = subwire | dummy; + assign uselessdata = 2048'b0; + assign j = |byteena_a; + assign dummy = value_out & 2048'b0; + +dual_port_ram + # (.ADDR_WIDTH(`rRAMSIZEWIDTH), .DATA_WIDTH(`RAMWIDTH)) +inst1( .clk (clk), .we1(wren), .we2(1'b0), @@ -3252,13 +3258,14 @@ module top_ram ( wire [32-1:0] sub_wire0; wire [32-1:0] q; wire [32-1:0] junk_output; - assign q = sub_wire0 | dummy; wire[32-1:0] dummy; + assign q = sub_wire0 | dummy; assign dummy = junk_output & 32'b0; - defparam inst2.ADDR_WIDTH = 14; - defparam inst2.DATA_WIDTH = 32; - dual_port_ram inst2( + + dual_port_ram + # (.ADDR_WIDTH(14), .DATA_WIDTH(32)) +inst2( .clk (clk), .we1(wren), .we2(1'b0), @@ -3850,9 +3857,9 @@ begin // : STATUS_COUNTER status_cnt <= status_cnt + 1'b1; end - defparam ram_addr.ADDR_WIDTH = `rFIFORSIZEWIDTH; - defparam ram_addr.DATA_WIDTH = `rFIFOINPUTWIDTH; - dual_port_ram ram_addr( + dual_port_ram + # (.ADDR_WIDTH(`rFIFORSIZEWIDTH), .DATA_WIDTH(`rFIFOINPUTWIDTH)) +ram_addr( .we1 (wrreq) , // write enable .we2 (rdreq) , // Read enable .addr1 (wr_pointer) , // address_0 input @@ -3994,9 +4001,9 @@ begin // : STATUS_COUNTER end assign usedw = status_cnt[`wFIFOSIZEWIDTH-1:0]; - defparam ram_addr.ADDR_WIDTH = `wFIFOSIZEWIDTH; - defparam ram_addr.DATA_WIDTH = `wFIFOINPUTWIDTH; - dual_port_ram ram_addr( + dual_port_ram + # (.ADDR_WIDTH(`wFIFORSIZEWIDTH), .DATA_WIDTH(`wFIFOINPUTWIDTH)) +ram_addr( .we1 (wrreq) , // write enable .we2 (rdreq) , // Read enable .addr1 (wr_pointer) , // address_0 input @@ -4071,9 +4078,9 @@ begin // : STATUS_COUNTER status_cnt <= status_cnt + 1; end - defparam ram_addr.ADDR_WIDTH = `aFIFOSIZEWIDTH; - defparam ram_addr.DATA_WIDTH = `aFIFOWIDTH; - dual_port_ram ram_addr( + dual_port_ram + # (.ADDR_WIDTH(`aFIFOSIZEWIDTH), .DATA_WIDTH(`aFIFOWIDTH)) +ram_addr( .we1 (wrreq) , // write enable .we2 (rdreq) , // Read enable .addr1 (wr_pointer) , // address_0 input @@ -4143,9 +4150,10 @@ begin // : STATUS_COUNTER else if ((wrreq) && (!rdreq) && (status_cnt != 16 )) status_cnt <= status_cnt + 1'b1; end - defparam ram_addr.ADDR_WIDTH = `mFIFOSIZEWIDTH; - defparam ram_addr.DATA_WIDTH = `mFIFOWIDTH; - dual_port_ram ram_addr( + + dual_port_ram + # (.ADDR_WIDTH(`mFIFOSIZEWIDTH), .DATA_WIDTH(`mFIFOWIDTH)) + ram_addr( .we1 (wrreq) , // write enable .we2 (rdreq) , // Read enable .addr1 (wr_pointer) , // address_0 input @@ -4216,7 +4224,7 @@ module fpu_add (clock, a1, b1, sum); reg smaller; //smaller is 1 if a < b, 0 otherwise //Shift mantissa's to have the same exponent - always @ (a or b) begin + always @ (*) begin //a_exp = a[30:23]; //b_exp = b[30:23]; //a_man = {1'b1, a[22:0]}; @@ -4401,7 +4409,7 @@ module fpu_add (clock, a1, b1, sum); end //Perform the addition operation - always @ (a_man or b_man or a or b) begin + always @ (*) begin if (a_man < b_man) begin smaller = 1'b1; end else begin @@ -4446,7 +4454,7 @@ module fpu_add (clock, a1, b1, sum); //Store the number // we already have the sign. - always @ (sum_man or a_exp) begin + always @ (*) begin if (sum_man[24])begin //shif sum >> by 1, add 1 to the exponent. sum[22:0] = sum_man[23:1]; sum[30:23] = a_exp + 8'b00000001; @@ -4584,7 +4592,7 @@ module fpu_div(clock, n, d, div); end //Find the exponent, store in div_exp. - always @ (n_exp or d_exp) begin + always @ (*) begin if (n_exp >= d_exp) begin div_exp = 8'b01111111 + (n_exp - d_exp); end else begin @@ -4597,12 +4605,12 @@ module fpu_div(clock, n, d, div); //Store the result. Shift exponents appropriately. Store sign. //Sign - always @ (n_sign or d_sign) begin + always @ (*) begin div[31] = n_sign ^ d_sign; end //Mantissa and Exponent - always @ (div_man or div_exp) begin + always @ (*) begin if (div_man[23]) begin //do nothing div[22:0] = div_man[22:0]; div[30:23] = div_exp; @@ -4749,7 +4757,7 @@ module div_24b(numer, denom, res); // end //res[23] - always @ (denom_pad or numer23) begin + always @ (*) begin if (denom_pad[23:0] <= numer23[46:23]) begin res[23] = 1'b1; @@ -5394,7 +5402,7 @@ assign shiftb = b[23 - 1] ? 1 : // If number is denorm, shift the significand the appropriate amount // assign shifteda = a[`WSIG-1:0] << shifta; //Must have constant shifts for ODIN - always @ (shifta or a) begin + always @ (*) begin case (shifta) 5'b00001: begin shifteda = a[`WSIG-1:0] << 5'b00001; @@ -5497,7 +5505,7 @@ assign shiftb = b[23 - 1] ? 1 : assign norma = aisdenorm ? shifteda : {1'b1, a[`WSIG-1:0]}; // assign shiftedb = b[`WSIG-1:0] << shiftb; - always @ (shiftb or b) begin + always @ (*) begin case (shiftb) 5'b00001: begin shiftedb = b[`WSIG-1:0] << 5'b00001; @@ -5710,7 +5718,7 @@ module shift(normalized, selectedexp, shiftprod, shiftexp, shiftloss); // shift significand //assign postshift = preshift >> actualshiftamt; //We can only have constant shifts for ODIN: - always @ (actualshiftamt or preshift) begin + always @ (*) begin case (actualshiftamt) 5'b00001: begin postshift = preshift >> 5'b00001; diff --git a/vtr_flow/benchmarks/verilog/LU8PEEng.v b/vtr_flow/benchmarks/verilog/LU8PEEng.v index 9db3fd8dcf9..6283e42517a 100755 --- a/vtr_flow/benchmarks/verilog/LU8PEEng.v +++ b/vtr_flow/benchmarks/verilog/LU8PEEng.v @@ -508,7 +508,7 @@ begin end end -always @ (cur_state) +always @ (*) begin case (cur_state) `MODE1: @@ -944,7 +944,7 @@ begin end // connections to top block memory ports -always @ (topSourceSel or topWriteSel or curReadDataLU or addResult7 or addResult6 or addResult5 or addResult4 or addResult3 or addResult2 or addResult1 or addResult0) +always @ (*) begin if (topSourceSel == 1'b0) case (topWriteSel) @@ -1477,7 +1477,7 @@ else if (waitCycles >5'b00000) end // determining next state of main FSM -always @ (currentState or start or mode or m or n or counter or mdivk or topIdxCounter or doneFetchRow or divCounter or j or stop2 or waitCycles or stop or i1) +always @ (*) begin case (currentState) `cSETUP: @@ -1669,7 +1669,7 @@ begin endcase end -always @ (currentRowState or currentState or nextState or i1 or topIdxCounter or mdivk or msIdxCounter or readRowCounter or j or n or mode) +always @ (*) begin if (currentRowState == `cDONE_FETCH_ROW) doneFetchRow = 1; @@ -1687,7 +1687,7 @@ begin end // second FSM that controls the control signals to temp_top block -always @ (currentRowState or nextTopIdxCounter or n or startFetchRow or loadRow or topIdx or mdivk or nextState) +always @ (*) begin case (currentRowState) `cFETCH_ROW: @@ -2237,17 +2237,19 @@ module ram ( output [`RAMWIDTH-1:0] q; wire [`RAMWIDTH-1:0] value_out; wire [`RAMWIDTH-1:0] subwire; - assign q = subwire | dummy; wire [`RAMWIDTH-1:0] uselessdata; - assign uselessdata = 256'b0; -wire j; -assign j = |byteena_a; - wire [`RAMWIDTH-1:0]dummy; - assign dummy = value_out & 256'b0; - -defparam inst1.ADDR_WIDTH = `rRAMSIZEWIDTH; -defparam inst1.DATA_WIDTH = `RAMWIDTH; -dual_port_ram inst1( + + wire j; + wire [`RAMWIDTH-1:0]dummy; + + assign uselessdata = 256'b0; + assign q = subwire | dummy; + assign j = |byteena_a; + assign dummy = value_out & 256'b0; + +dual_port_ram + #( .ADDR_WIDTH(`rRAMSIZEWIDTH), .DATA_WIDTH(`RAMWIDTH)) +inst1( .clk (clk), .we1(wren), .we2(1'b0), @@ -2280,17 +2282,18 @@ module ram1 ( output [`RAMWIDTH-1:0] q; wire [`RAMWIDTH-1:0] value_out; wire [`RAMWIDTH-1:0] subwire; - assign q = subwire | dummy; wire [`RAMWIDTH-1:0] uselessdata; - assign uselessdata = 256'b0; -wire j; -assign j = |byteena_a; - wire [`RAMWIDTH-1:0]dummy; - assign dummy = value_out & 256'b0; - -defparam inst1.ADDR_WIDTH = `rRAMSIZEWIDTH; -defparam inst1.DATA_WIDTH = `RAMWIDTH; -dual_port_ram inst1( + wire j; + wire [`RAMWIDTH-1:0]dummy; + + assign q = subwire | dummy; + assign uselessdata = 256'b0; + assign j = |byteena_a; + assign dummy = value_out & 256'b0; + +dual_port_ram + #( .ADDR_WIDTH(`rRAMSIZEWIDTH), .DATA_WIDTH(`RAMWIDTH)) +inst1( .clk (clk), .we1(wren), .we2(1'b0), @@ -2323,17 +2326,18 @@ module ram2 ( output [`RAMWIDTH-1:0] q; wire [`RAMWIDTH-1:0] value_out; wire [`RAMWIDTH-1:0] subwire; - assign q = subwire | dummy; wire [`RAMWIDTH-1:0] uselessdata; - assign uselessdata = 256'b0; -wire j; -assign j = |byteena_a; - wire [`RAMWIDTH-1:0]dummy; - assign dummy = value_out & 256'b0; - -defparam inst1.ADDR_WIDTH = `rRAMSIZEWIDTH; -defparam inst1.DATA_WIDTH = `RAMWIDTH; -dual_port_ram inst1( + wire j; + wire [`RAMWIDTH-1:0] dummy; + + assign q = subwire | dummy; + assign uselessdata = 256'b0; + assign j = |byteena_a; + assign dummy = value_out & 256'b0; + +dual_port_ram + #( .ADDR_WIDTH(`rRAMSIZEWIDTH), .DATA_WIDTH(`RAMWIDTH)) +inst1( .clk (clk), .we1(wren), .we2(1'b0), @@ -2366,17 +2370,18 @@ module ram3 ( output [`RAMWIDTH-1:0] q; wire [`RAMWIDTH-1:0] value_out; wire [`RAMWIDTH-1:0] subwire; - assign q = subwire | dummy; wire [`RAMWIDTH-1:0] uselessdata; - assign uselessdata = 256'b0; -wire j; -assign j = |byteena_a; - wire [`RAMWIDTH-1:0]dummy; - assign dummy = value_out & 256'b0; - -defparam inst1.ADDR_WIDTH = `rRAMSIZEWIDTH; -defparam inst1.DATA_WIDTH = `RAMWIDTH; -dual_port_ram inst1( + wire j; + wire [`RAMWIDTH-1:0]dummy; + + assign q = subwire | dummy; + assign uselessdata = 256'b0; + assign j = |byteena_a; + assign dummy = value_out & 256'b0; + +dual_port_ram + #( .ADDR_WIDTH(`rRAMSIZEWIDTH), .DATA_WIDTH(`RAMWIDTH)) +inst1( .clk (clk), .we1(wren), .we2(1'b0), @@ -2412,13 +2417,13 @@ module top_ram ( wire [32-1:0] sub_wire0; wire [32-1:0] q; wire [32-1:0] junk_output; - assign q = sub_wire0 | dummy; wire[32-1:0] dummy; + assign q = sub_wire0 | dummy; assign dummy = junk_output & 32'b0; - defparam inst2.ADDR_WIDTH = 8; - defparam inst2.DATA_WIDTH = 32; - dual_port_ram inst2( + dual_port_ram + #( .ADDR_WIDTH(8), .DATA_WIDTH(32)) +inst2( .clk (clk), .we1(wren), .we2(1'b0), @@ -2898,9 +2903,9 @@ begin // : STATUS_COUNTER status_cnt <= status_cnt + 1'b1; end - defparam ram_addr.ADDR_WIDTH = `rFIFORSIZEWIDTH; - defparam ram_addr.DATA_WIDTH = `rFIFOINPUTWIDTH; - dual_port_ram ram_addr( + dual_port_ram + #( .ADDR_WIDTH(`rFIFORSIZEWIDTH), .DATA_WIDTH(`rFIFOINPUTWIDTH)) +ram_addr( .we1 (wrreq) , // write enable .we2 (rdreq) , // Read enable .addr1 (wr_pointer) , // address_0 input @@ -2986,9 +2991,9 @@ begin // : STATUS_COUNTER end assign usedw = status_cnt[`wFIFOSIZEWIDTH-1:0]; - defparam ram_addr.ADDR_WIDTH = `wFIFOSIZEWIDTH; - defparam ram_addr.DATA_WIDTH = `wFIFOINPUTWIDTH; - dual_port_ram ram_addr( + dual_port_ram + #( .ADDR_WIDTH(`wFIFORSIZEWIDTH), .DATA_WIDTH(`wFIFOINPUTWIDTH)) +ram_addr( .we1 (wrreq) , // write enable .we2 (rdreq) , // Read enable .addr1 (wr_pointer) , // address_0 input @@ -3063,9 +3068,9 @@ begin // : STATUS_COUNTER status_cnt <= status_cnt + 1; end - defparam ram_addr.ADDR_WIDTH = `aFIFOSIZEWIDTH; - defparam ram_addr.DATA_WIDTH = `aFIFOWIDTH; - dual_port_ram ram_addr( + dual_port_ram + #( .ADDR_WIDTH(`aFIFOSIZEWIDTH), .DATA_WIDTH(`aFIFOWIDTH)) +ram_addr( .we1 (wrreq) , // write enable .we2 (rdreq) , // Read enable .addr1 (wr_pointer) , // address_0 input @@ -3135,9 +3140,10 @@ begin // : STATUS_COUNTER else if ((wrreq) && (!rdreq) && (status_cnt != 16 )) status_cnt <= status_cnt + 1'b1; end - defparam ram_addr.ADDR_WIDTH = `mFIFOSIZEWIDTH; - defparam ram_addr.DATA_WIDTH = `mFIFOWIDTH; - dual_port_ram ram_addr( + + dual_port_ram + #( .ADDR_WIDTH(`mFIFOSIZEWIDTH), .DATA_WIDTH(`mFIFOWIDTH)) + ram_addr( .we1 (wrreq) , // write enable .we2 (rdreq) , // Read enable .addr1 (wr_pointer) , // address_0 input @@ -3208,7 +3214,7 @@ module fpu_add (clock, a1, b1, sum); reg smaller; //smaller is 1 if a < b, 0 otherwise //Shift mantissa's to have the same exponent - always @ (a or b) begin + always @ (*) begin //a_exp = a[30:23]; //b_exp = b[30:23]; //a_man = {1'b1, a[22:0]}; @@ -3393,7 +3399,7 @@ module fpu_add (clock, a1, b1, sum); end //Perform the addition operation - always @ (a_man or b_man or a or b) begin + always @ (*) begin if (a_man < b_man) begin smaller = 1'b1; end else begin @@ -3438,7 +3444,7 @@ module fpu_add (clock, a1, b1, sum); //Store the number // we already have the sign. - always @ (sum_man or a_exp) begin + always @ (*) begin if (sum_man[24])begin //shif sum >> by 1, add 1 to the exponent. sum[22:0] = sum_man[23:1]; sum[30:23] = a_exp + 8'b00000001; @@ -3576,7 +3582,7 @@ module fpu_div(clock, n, d, div); end //Find the exponent, store in div_exp. - always @ (n_exp or d_exp) begin + always @ (*) begin if (n_exp >= d_exp) begin div_exp = 8'b01111111 + (n_exp - d_exp); end else begin @@ -3589,12 +3595,12 @@ module fpu_div(clock, n, d, div); //Store the result. Shift exponents appropriately. Store sign. //Sign - always @ (n_sign or d_sign) begin + always @ (*) begin div[31] = n_sign ^ d_sign; end //Mantissa and Exponent - always @ (div_man or div_exp) begin + always @ (*) begin if (div_man[23]) begin //do nothing div[22:0] = div_man[22:0]; div[30:23] = div_exp; @@ -3741,7 +3747,7 @@ module div_24b(numer, denom, res); // end //res[23] - always @ (denom_pad or numer23) begin + always @ (*) begin if (denom_pad[23:0] <= numer23[46:23]) begin res[23] = 1'b1; @@ -4386,7 +4392,7 @@ assign shiftb = b[23 - 1] ? 1 : // If number is denorm, shift the significand the appropriate amount // assign shifteda = a[`WSIG-1:0] << shifta; //Must have constant shifts for ODIN - always @ (shifta or a) begin + always @ (*) begin case (shifta) 5'b00001: begin shifteda = a[`WSIG-1:0] << 5'b00001; @@ -4489,7 +4495,7 @@ assign shiftb = b[23 - 1] ? 1 : assign norma = aisdenorm ? shifteda : {1'b1, a[`WSIG-1:0]}; // assign shiftedb = b[`WSIG-1:0] << shiftb; - always @ (shiftb or b) begin + always @ (*) begin case (shiftb) 5'b00001: begin shiftedb = b[`WSIG-1:0] << 5'b00001; @@ -4702,7 +4708,7 @@ module shift(normalized, selectedexp, shiftprod, shiftexp, shiftloss); // shift significand //assign postshift = preshift >> actualshiftamt; //We can only have constant shifts for ODIN: - always @ (actualshiftamt or preshift) begin + always @ (*) begin case (actualshiftamt) 5'b00001: begin postshift = preshift >> 5'b00001; diff --git a/vtr_flow/benchmarks/verilog/and_latch.v b/vtr_flow/benchmarks/verilog/and_latch.v index 2c9ef7207fa..17f9c1e8865 100644 --- a/vtr_flow/benchmarks/verilog/and_latch.v +++ b/vtr_flow/benchmarks/verilog/and_latch.v @@ -10,7 +10,7 @@ module and_latch( input a_in; input b_in; - output out; + output reg out; // ASSIGN STATEMENTS always @(posedge clock) @@ -18,4 +18,4 @@ module and_latch( out <= a_in & b_in; end -endmodule \ No newline at end of file +endmodule diff --git a/vtr_flow/benchmarks/verilog/arm_core.v b/vtr_flow/benchmarks/verilog/arm_core.v index 907bc64202d..52dad585472 100644 --- a/vtr_flow/benchmarks/verilog/arm_core.v +++ b/vtr_flow/benchmarks/verilog/arm_core.v @@ -200,7 +200,7 @@ parameter WORD_SEL_LSB = 2; // = 2 input i_clk; input i_core_stall; -output o_stall; +output reg o_stall; // Read / Write requests from core input i_select; @@ -1197,7 +1197,7 @@ localparam [4:0] RST_WAIT1 = 5'd0, // Internal signals // ======================================================== wire [31:0] instruction; -wire [3:0] type; // regop, mem access etc. +wire [3:0] instruction_type; // regop, mem access etc. wire instruction_iabt; // abort flag, follows the instruction wire instruction_adex; // address exception flag, follows the instruction wire [31:0] instruction_address; // instruction virtual address, follows @@ -1429,7 +1429,7 @@ assign instruction = instruction_sel == 2'd0 ? fetch_instruction_r instruction_sel == 2'd3 ? hold_instruction : pre_fetch_instruction ; -assign type = instruction_sel == 2'd0 ? fetch_instruction_type_r : +assign instruction_type = instruction_sel == 2'd0 ? fetch_instruction_type_r : instruction_sel == 2'd1 ? saved_current_instruction_type : instruction_sel == 2'd3 ? hold_instruction_type : pre_fetch_instruction_type ; @@ -1467,16 +1467,16 @@ assign condition_nxt = instruction[31:28]; assign rm_sel_nxt = instruction[3:0]; assign rn_sel_nxt = branch ? 4'd15 : instruction[19:16]; // Use PC to calculate branch destination assign rs_sel_nxt = control_state == SWAP_WRITE ? instruction[3:0] : // Rm gets written out to memory - type == MTRANS ? mtrans_reg1 : + instruction_type == MTRANS ? mtrans_reg1 : branch ? 4'd15 : // Update the PC rds_use_rs ? instruction[11:8] : instruction[15:12] ; // Load from memory into registers -assign ldm_user_mode = type == MTRANS && {instruction[22:20],instruction[15]} == 4'b1010; -assign ldm_flags = type == MTRANS && rs_sel_nxt == 4'd15 && instruction[20] && instruction[22]; -assign ldm_status_bits = type == MTRANS && rs_sel_nxt == 4'd15 && instruction[20] && instruction[22] && i_execute_status_bits[1:0] != USR; -assign load_rd_byte = (type == TRANS || type == SWAP) && instruction[22]; +assign ldm_user_mode = instruction_type == MTRANS && {instruction[22:20],instruction[15]} == 4'b1010; +assign ldm_flags = instruction_type == MTRANS && rs_sel_nxt == 4'd15 && instruction[20] && instruction[22]; +assign ldm_status_bits = instruction_type == MTRANS && rs_sel_nxt == 4'd15 && instruction[20] && instruction[22] && i_execute_status_bits[1:0] != USR; +assign load_rd_byte = (instruction_type == TRANS || instruction_type == SWAP) && instruction[22]; assign load_rd_nxt = {ldm_flags, ldm_status_bits, ldm_user_mode, load_rd_byte, rs_sel_nxt}; @@ -1488,8 +1488,8 @@ assign offset24 = {{6{instruction[23]}}, instruction[23:0], 2'd0 }; assign imm8 = instruction[7:0]; assign immediate_shift_op = instruction[25]; -assign rds_use_rs = (type == REGOP && !instruction[25] && instruction[4]) || - (type == MULT && +assign rds_use_rs = (instruction_type == REGOP && !instruction[25] && instruction[4]) || + (instruction_type == MULT && (control_state == MULT_PROC1 || control_state == MULT_PROC2 || // instruction_valid && !interrupt )) ; @@ -1498,25 +1498,25 @@ assign rds_use_rs = (type == REGOP && !instruction[25] && instruction[ (instruction_valid && !interrupt_or_conflict))) ; -assign branch = type == BRANCH; +assign branch = instruction_type == BRANCH; assign opcode_compare = opcode == CMP || opcode == CMN || opcode == TEQ || opcode == TST ; -assign mem_op = type == TRANS; +assign mem_op = instruction_type == TRANS; assign load_op = mem_op && instruction[20]; assign store_op = mem_op && !instruction[20]; assign write_pc = (pc_wen_nxt && pc_sel_nxt != 3'd0) || load_pc_r || load_pc_nxt; assign current_write_pc = (pc_wen_nxt && pc_sel_nxt != 3'd0) || load_pc_nxt; -assign regop_set_flags = type == REGOP && instruction[20]; +assign regop_set_flags = instruction_type == REGOP && instruction[20]; assign mem_op_pre_indexed = instruction[24] && instruction[21]; assign mem_op_post_indexed = !instruction[24]; assign imm32_nxt = // add 0 to Rm - type == MULT ? { 32'd0 } : //MULT = 4'h1, + instruction_type == MULT ? { 32'd0 } : //MULT = 4'h1, // 4 x number of registers - type == MTRANS ? { mtrans_base_reg_change } : //MTRANS = 4'h4 - type == BRANCH ? { offset24 } : //BRANCH = 4'h5 - type == TRANS ? { offset12 } : //TRANS = 4'h3 + instruction_type == MTRANS ? { mtrans_base_reg_change } : //MTRANS = 4'h4 + instruction_type == BRANCH ? { offset24 } : //BRANCH = 4'h5 + instruction_type == TRANS ? { offset12 } : //TRANS = 4'h3 instruction[11:8] == 4'h0 ? { 24'd0, imm8[7:0] } : instruction[11:8] == 4'h1 ? { imm8[1:0], 24'd0, imm8[7:2] } : instruction[11:8] == 4'h2 ? { imm8[3:0], 24'd0, imm8[7:4] } : @@ -1551,11 +1551,11 @@ assign alu_function_nxt = { alu_swap_sel_nxt, // ======================================================== // Register Conflict Detection // ======================================================== -assign rn_valid = type == REGOP || type == MULT || type == SWAP || type == TRANS || type == MTRANS || type == CODTRANS; -assign rm_valid = type == REGOP || type == MULT || type == SWAP || (type == TRANS && immediate_shift_op); +assign rn_valid = instruction_type == REGOP || instruction_type == MULT || instruction_type == SWAP || instruction_type == TRANS || instruction_type == MTRANS || instruction_type == CODTRANS; +assign rm_valid = instruction_type == REGOP || instruction_type == MULT || instruction_type == SWAP || (instruction_type == TRANS && immediate_shift_op); assign rs_valid = rds_use_rs; -assign rd_valid = (type == TRANS && store_op) || (type == REGOP || type == SWAP); -assign stm_valid = type == MTRANS && !instruction[20]; // stm instruction +assign rd_valid = (instruction_type == TRANS && store_op) || (instruction_type == REGOP || instruction_type == SWAP); +assign stm_valid = instruction_type == MTRANS && !instruction[20]; // stm instruction assign rn_conflict1 = instruction_execute && rn_valid && ( load_rd_d1_nxt[4] && rn_sel_nxt == load_rd_d1_nxt[3:0] ); @@ -1771,15 +1771,15 @@ assign mtrans_base_reg_change = {25'd0, mtrans_num_registers, 2'd0}; assign firq_request = firq && !i_execute_status_bits[26]; assign irq_request = irq && !i_execute_status_bits[27]; -assign swi_request = type == SWI; +assign swi_request = instruction_type == SWI; assign dabt_request = dabt_reg; // copro15 and copro13 only supports reg trans opcodes // all other opcodes involving co-processors cause an // undefined instrution interrupt -assign und_request = type == CODTRANS || - type == COREGOP || - ( type == CORTRANS && instruction[11:8] != 4'd15 ); +assign und_request = instruction_type == CODTRANS || + instruction_type == COREGOP || + ( instruction_type == CORTRANS && instruction[11:8] != 4'd15 ); // in order of priority !! @@ -1832,7 +1832,7 @@ always @* begin if ( instruction_valid && !interrupt && !conflict ) begin - if ( type == SWI || und_request ) + if ( instruction_type == SWI || und_request ) status_bits_mode_nxt = interrupt_mode; else status_bits_mode_nxt = i_execute_status_bits[1:0]; @@ -1854,7 +1854,7 @@ always @* begin if ( instruction_valid && !interrupt && !conflict ) begin - if ( type == SWI || und_request ) + if ( instruction_type == SWI || und_request ) status_bits_irq_mask_nxt = 1'd1; else status_bits_irq_mask_nxt = o_status_bits_irq_mask; @@ -1881,7 +1881,7 @@ always @* always @* begin - if ( instruction_valid && !interrupt && !conflict &&(type == SWAP)) + if ( instruction_valid && !interrupt && !conflict &&(instruction_type == SWAP)) decode_exclusive_nxt = 1'd1; else decode_exclusive_nxt = 1'd0; @@ -1894,9 +1894,9 @@ always @* begin if ( mem_op ) decode_daccess_nxt = 1'd1; - else if ( type == MTRANS ) + else if ( instruction_type == MTRANS ) decode_daccess_nxt = 1'd1; - else if ( type == SWAP ) + else if ( instruction_type == SWAP ) decode_daccess_nxt = 1'd1; else decode_daccess_nxt = 1'd0; @@ -1915,7 +1915,7 @@ always @* always @* begin - if ( instruction_valid && !interrupt && !conflict && type == SWAP) + if ( instruction_valid && !interrupt && !conflict && instruction_type == SWAP) decode_iaccess_nxt = 1'd0; else if ( control_state == MTRANS_EXEC1 && !conflict && instruction_execute &&( mtrans_num_registers > 4'd2 )) @@ -1936,7 +1936,7 @@ always @* begin if ( instruction_valid && !interrupt && !conflict ) begin - if ( type == CORTRANS && !und_request ) + if ( instruction_type == CORTRANS && !und_request ) begin if ( instruction[20] ) copro_operation_nxt = 2'd1; @@ -1961,13 +1961,13 @@ always @* begin if ( mem_op && (load_op && instruction[15:12] == 4'd15)) saved_current_instruction_wen = 1'd1; - else if ( type == MTRANS ) + else if ( instruction_type == MTRANS ) saved_current_instruction_wen = 1'd1; - else if ( type == MULT ) + else if ( instruction_type == MULT ) saved_current_instruction_wen = 1'd1; - else if ( type == SWAP ) + else if ( instruction_type == SWAP ) saved_current_instruction_wen = 1'd1; - else if ( type == CORTRANS && !und_request ) + else if ( instruction_type == CORTRANS && !und_request ) saved_current_instruction_wen = 1'd1; else saved_current_instruction_wen = 1'd0; @@ -2004,7 +2004,7 @@ always @* always @* begin - if ( instruction_valid && !interrupt && !conflict && type == MTRANS) + if ( instruction_valid && !interrupt && !conflict && instruction_type == MTRANS) // restore_base_address_nxt <= instruction[20] && // (instruction[15:0] & (1'd1 << instruction[19:16])); restore_base_address_nxt = instruction[20] && @@ -2033,7 +2033,7 @@ always @* begin if ( instruction_valid && !interrupt && !conflict ) begin - if ( type == REGOP ) + if ( instruction_type == REGOP ) begin if ( !immediate_shift_op && instruction[4] ) barrel_shift_amount_sel_nxt = 2'd1; @@ -2042,7 +2042,7 @@ always @* else barrel_shift_amount_sel_nxt = 2'd0; end - else if ( mem_op && ( type == TRANS && instruction[25] && shift_imm != 5'd0 ) ) + else if ( mem_op && ( instruction_type == TRANS && instruction[25] && shift_imm != 5'd0 ) ) barrel_shift_amount_sel_nxt = 2'd2; else barrel_shift_amount_sel_nxt = 2'd0; @@ -2055,12 +2055,12 @@ always @* begin if ( instruction_valid && !interrupt && !conflict ) begin - if(type == REGOP && !immediate_shift_op) + if(instruction_type == REGOP && !immediate_shift_op) barrel_shift_data_sel_nxt = 2'd2; - else if (mem_op && instruction[25] && type == TRANS) + else if (mem_op && instruction[25] && instruction_type == TRANS) barrel_shift_data_sel_nxt = 2'd2; - else if ( type == SWAP ) + else if ( instruction_type == SWAP ) barrel_shift_data_sel_nxt = 2'd2; else barrel_shift_data_sel_nxt = 2'd0; @@ -2075,9 +2075,9 @@ always @* begin if ( instruction_valid && !interrupt && !conflict ) begin - if ( type == REGOP && !immediate_shift_op) + if ( instruction_type == REGOP && !immediate_shift_op) barrel_shift_function_nxt = instruction[6:5]; - else if ( mem_op && type == TRANS && instruction[25] && shift_imm != 5'd0 ) + else if ( mem_op && instruction_type == TRANS && instruction[25] && shift_imm != 5'd0 ) barrel_shift_function_nxt = instruction[6:5]; else barrel_shift_function_nxt = 2'd0; @@ -2088,7 +2088,7 @@ always @* always @* begin - if ( instruction_valid && !interrupt && !conflict && type == MULT) + if ( instruction_valid && !interrupt && !conflict && instruction_type == MULT) begin multiply_function_nxt[0] = 1'd1; if( instruction[21] ) @@ -2114,15 +2114,15 @@ always @* begin if ( instruction_valid && !interrupt && !conflict ) begin - if( type == REGOP && !opcode_compare && instruction[15:12] == 4'd15) + if( instruction_type == REGOP && !opcode_compare && instruction[15:12] == 4'd15) iaddress_sel_nxt = 4'd1; - else if ( type == BRANCH ) + else if ( instruction_type == BRANCH ) iaddress_sel_nxt = 4'd1; - else if ( type == MTRANS && mtrans_num_registers > 4'd1) + else if ( instruction_type == MTRANS && mtrans_num_registers > 4'd1) iaddress_sel_nxt = 4'd3; - else if ( type == CORTRANS && !und_request ) + else if ( instruction_type == CORTRANS && !und_request ) iaddress_sel_nxt = 4'd3; - else if ( type == SWI || und_request ) + else if ( instruction_type == SWI || und_request ) iaddress_sel_nxt = 4'd2; else iaddress_sel_nxt = 4'd0; @@ -2134,8 +2134,8 @@ always @* else if ( control_state == MEM_WAIT1 && !conflict &&instruction_execute) iaddress_sel_nxt = 4'd3; - else if ( control_state == MEM_WAIT2 && !dabt && (( type == TRANS && instruction[15:12] == 4'd15 ) || - ( type == MTRANS && instruction[20] && mtrans_reg1 == 4'd15 ))) + else if ( control_state == MEM_WAIT2 && !dabt && (( instruction_type == TRANS && instruction[15:12] == 4'd15 ) || + ( instruction_type == MTRANS && instruction[20] && mtrans_reg1 == 4'd15 ))) iaddress_sel_nxt = 4'd3; @@ -2169,7 +2169,7 @@ always @* else daddress_sel_nxt = 4'd1; // alu out end - else if ( type == MTRANS ) + else if ( instruction_type == MTRANS ) if ( instruction[23] ) begin if ( instruction[24] ) // increment before @@ -2184,7 +2184,7 @@ always @* else daddress_sel_nxt = 4'd1; // alu out end - else if ( type == SWAP ) + else if ( instruction_type == SWAP ) daddress_sel_nxt = 4'd4; else daddress_sel_nxt = 4'd0; @@ -2204,21 +2204,21 @@ always @* begin if ( instruction_valid && !interrupt && !conflict ) begin - if ( type == REGOP && !opcode_compare && instruction[15:12] == 4'd15 ) + if ( instruction_type == REGOP && !opcode_compare && instruction[15:12] == 4'd15 ) pc_sel_nxt = 3'd1; else if ( mem_op && (mem_op_pre_indexed || mem_op_post_indexed) && rn_sel_nxt == 4'd15 ) pc_sel_nxt = 3'd1; - else if ( type == BRANCH ) + else if ( instruction_type == BRANCH ) pc_sel_nxt = 3'd1; - else if ( type == SWI || und_request ) + else if ( instruction_type == SWI || und_request ) pc_sel_nxt = 3'd2; else pc_sel_nxt = 3'd0; end else if ( instruction_valid && interrupt && next_interrupt != 3'd6 ) pc_sel_nxt = 3'd2; - else if ( control_state == MEM_WAIT2 && !dabt && (( type == TRANS && instruction[15:12] == 4'd15 ) || - ( type == MTRANS && instruction[20] && mtrans_reg1 == 4'd15 ))) + else if ( control_state == MEM_WAIT2 && !dabt && (( instruction_type == TRANS && instruction[15:12] == 4'd15 ) || + ( instruction_type == MTRANS && instruction[20] && mtrans_reg1 == 4'd15 ))) pc_sel_nxt = 3'd3; else if ( control_state == SWAP_WAIT1 && !dabt && instruction[15:12] == 4'd15 ) @@ -2235,15 +2235,15 @@ always @* begin if ( mem_op && ( load_op && instruction[15:12] == 4'd15 )) load_pc_nxt = 1'd1; - else if ( type == MTRANS && ( instruction[20] && mtrans_reg1 == 4'd15 )) + else if ( instruction_type == MTRANS && ( instruction[20] && mtrans_reg1 == 4'd15 )) load_pc_nxt = 1'd1; else load_pc_nxt = 1'd0; end else if ( control_state == MEM_WAIT1 && !conflict && instruction_execute) load_pc_nxt = load_pc_r; - else if ( control_state == MEM_WAIT2 && !dabt && (( type == TRANS && instruction[15:12] == 4'd15 ) || - ( type == MTRANS && instruction[20] && mtrans_reg1 == 4'd15 ))) + else if ( control_state == MEM_WAIT2 && !dabt && (( instruction_type == TRANS && instruction[15:12] == 4'd15 ) || + ( instruction_type == MTRANS && instruction[20] && mtrans_reg1 == 4'd15 ))) load_pc_nxt = load_pc_r; else if ( control_state == MTRANS_EXEC1 && !conflict && instruction_execute && ( instruction[20] && mtrans_reg1 == 4'd15 )) @@ -2262,7 +2262,7 @@ always @* begin if ( instruction_valid && !interrupt && !conflict ) begin - if ( mem_op && store_op && type == TRANS && instruction[22] ) + if ( mem_op && store_op && instruction_type == TRANS && instruction[22] ) byte_enable_sel_nxt = 2'd1; else byte_enable_sel_nxt = 2'd0; @@ -2290,9 +2290,9 @@ always @* begin if ( instruction_valid && !interrupt && !conflict ) begin - if ( type == BRANCH && instruction[24] ) + if ( instruction_type == BRANCH && instruction[24] ) reg_write_sel_nxt = 3'd1; - else if ( type == SWI || und_request ) + else if ( instruction_type == SWI || und_request ) reg_write_sel_nxt = 3'd1; else reg_write_sel_nxt = 3'd0; @@ -2318,7 +2318,7 @@ always @* always @* begin - if ( instruction_valid && !interrupt && !conflict && type == MTRANS && instruction[22:20] == 3'b100 ) + if ( instruction_valid && !interrupt && !conflict && instruction_type == MTRANS && instruction[22:20] == 3'b100 ) o_user_mode_regs_store_nxt = 1'd1; else if ( control_state == MTRANS_EXEC1 && !conflict && instruction_execute && instruction[22:20] == 3'b100 ) o_user_mode_regs_store_nxt = 1'd1; @@ -2331,7 +2331,7 @@ always @* always @* begin - if ( instruction_valid && !interrupt && !conflict && type == REGOP ) + if ( instruction_valid && !interrupt && !conflict && instruction_type == REGOP ) begin if ( opcode == RSB ) alu_swap_sel_nxt = 1'd1; @@ -2348,7 +2348,7 @@ always @* begin if ( instruction_valid && !interrupt && !conflict ) begin - if( type == REGOP ) + if( instruction_type == REGOP ) begin if ( opcode == SUB || opcode == CMP ) alu_not_sel_nxt = 1'd1; @@ -2367,7 +2367,7 @@ always @* end else if ( mem_op && !instruction[23]) alu_not_sel_nxt = 1'd1; - else if ( type == MTRANS && !instruction[23]) + else if ( instruction_type == MTRANS && !instruction[23]) alu_not_sel_nxt = 1'd1; else alu_not_sel_nxt = 1'd0; @@ -2381,7 +2381,7 @@ always @* begin if ( instruction_valid && !interrupt && !conflict ) begin - if( type == REGOP ) + if( instruction_type == REGOP ) begin if ( opcode == ADC ) alu_cin_sel_nxt = 2'd2; @@ -2398,7 +2398,7 @@ always @* end else if ( mem_op && !instruction[23]) alu_cin_sel_nxt = 2'd1; - else if ( type == MTRANS && !instruction[23]) + else if ( instruction_type == MTRANS && !instruction[23]) alu_cin_sel_nxt = 2'd1; else alu_cin_sel_nxt = 2'd0; @@ -2409,7 +2409,7 @@ always @* always @* begin - if ( instruction_valid && !interrupt && !conflict && type == REGOP ) + if ( instruction_valid && !interrupt && !conflict && instruction_type == REGOP ) begin if ( opcode == AND || opcode == TST ) alu_cout_sel_nxt = 1'd1; @@ -2435,7 +2435,7 @@ always @* begin if ( instruction_valid && !interrupt && !conflict ) begin - if( type == REGOP ) + if( instruction_type == REGOP ) begin if ( opcode == ADD || opcode == CMN ) alu_out_sel_nxt = 4'd1; @@ -2462,9 +2462,9 @@ always @* end else if ( mem_op ) alu_out_sel_nxt = 4'd1; - else if ( type == BRANCH ) + else if ( instruction_type == BRANCH ) alu_out_sel_nxt = 4'd1; - else if ( type == MTRANS ) + else if ( instruction_type == MTRANS ) alu_out_sel_nxt = 4'd1; else alu_out_sel_nxt = 4'd0; @@ -2479,7 +2479,7 @@ always @* begin if ( mem_op && store_op ) write_data_wen_nxt = 1'd1; - else if ( type == MTRANS && !instruction[20] ) + else if ( instruction_type == MTRANS && !instruction[20] ) write_data_wen_nxt = 1'd1; else write_data_wen_nxt = 1'd0; @@ -2496,7 +2496,7 @@ always @* always @* begin - if(instruction_valid && !interrupt && !conflict && (type == CORTRANS && !und_request) && ! instruction[20]) + if(instruction_valid && !interrupt && !conflict && (instruction_type == CORTRANS && !und_request) && ! instruction[20]) copro_write_data_wen_nxt = 1'd1; else copro_write_data_wen_nxt = 1'd0; @@ -2504,7 +2504,7 @@ always @* always @* begin - if(instruction_valid && !interrupt && !conflict && type == MTRANS) + if(instruction_valid && !interrupt && !conflict && instruction_type == MTRANS) base_address_wen_nxt = 1'd1; else base_address_wen_nxt = 1'd0; @@ -2516,7 +2516,7 @@ always @* begin if ( mem_op &&(load_op && instruction[15:12] == 4'd15) ) pc_wen_nxt = 1'd0; - else if ( type == MTRANS ) + else if ( instruction_type == MTRANS ) begin if ( mtrans_num_registers > 4'd1 ) pc_wen_nxt = 1'd0; @@ -2525,11 +2525,11 @@ always @* else pc_wen_nxt = 1'd1; end - else if ( type == MULT ) + else if ( instruction_type == MULT ) pc_wen_nxt = 1'd0; - else if ( type == SWAP ) + else if ( instruction_type == SWAP ) pc_wen_nxt = 1'd0; - else if ( type == CORTRANS && !und_request ) + else if ( instruction_type == CORTRANS && !und_request ) pc_wen_nxt = 1'd0; else pc_wen_nxt = 1'd1; @@ -2574,7 +2574,7 @@ always @* begin if ( instruction_valid && !interrupt && !conflict ) begin - if ( type == REGOP && !opcode_compare && instruction[15:12] != 4'd15) + if ( instruction_type == REGOP && !opcode_compare && instruction[15:12] != 4'd15) //reg_bank_wen_nxt = decode (instruction[15:12]); reg_bank_wen_nxt = instruction[15:12] == 4'h0 ? 15'h0001: instruction[15:12] == 4'h1 ? 15'h0002: @@ -2610,10 +2610,10 @@ always @* rn_sel_nxt == 4'hd ? 15'h2000: rn_sel_nxt == 4'he ? 15'h4000: 15'h0000; - else if ( type == BRANCH && instruction[24]) + else if ( instruction_type == BRANCH && instruction[24]) //reg_bank_wen_nxt = decode (4'd14); reg_bank_wen_nxt = 15'h4000; - else if ( type == MTRANS && instruction[21] ) + else if ( instruction_type == MTRANS && instruction[21] ) //reg_bank_wen_nxt = decode (rn_sel_nxt); reg_bank_wen_nxt = rn_sel_nxt == 4'h0 ? 15'h0001: rn_sel_nxt == 4'h1 ? 15'h0002: @@ -2631,7 +2631,7 @@ always @* rn_sel_nxt == 4'hd ? 15'h2000: rn_sel_nxt == 4'he ? 15'h4000: 15'h0000; - else if ( type == SWI || und_request ) + else if ( instruction_type == SWI || und_request ) //reg_bank_wen_nxt = decode (4'd14); reg_bank_wen_nxt = 15'h4000; else @@ -2660,7 +2660,7 @@ always @* 15'h0000; else if ( control_state == MULT_STORE ) begin - if ( type == MULT ) + if ( instruction_type == MULT ) //reg_bank_wen_nxt = decode ( instruction[19:16] ); reg_bank_wen_nxt = instruction[19:16] == 4'h0 ? 15'h0001: instruction[19:16] == 4'h1 ? 15'h0002: @@ -2736,7 +2736,7 @@ always @* begin if ( instruction_valid && !interrupt && !conflict) begin - if ( type == SWI || und_request ) + if ( instruction_type == SWI || und_request ) begin status_bits_mode_wen_nxt = 1'd1; status_bits_irq_mask_wen_nxt = 1'd1; @@ -2848,19 +2848,19 @@ always @* control_state_nxt = INT_WAIT1; else begin - if ( type == MTRANS && instruction[20] && mtrans_reg1 == 4'd15 ) // Write to PC + if ( instruction_type == MTRANS && instruction[20] && mtrans_reg1 == 4'd15 ) // Write to PC control_state_nxt = MEM_WAIT1; - else if ( type == MTRANS && !conflict && mtrans_num_registers != 5'd0 && mtrans_num_registers != 5'd1 ) + else if ( instruction_type == MTRANS && !conflict && mtrans_num_registers != 5'd0 && mtrans_num_registers != 5'd1 ) control_state_nxt = MTRANS_EXEC1; - else if ( type == MULT && !conflict ) + else if ( instruction_type == MULT && !conflict ) control_state_nxt = MULT_PROC1; - else if ( type == SWAP && !conflict ) + else if ( instruction_type == SWAP && !conflict ) control_state_nxt = SWAP_WRITE; - else if ( type == CORTRANS && !und_request && !conflict ) + else if ( instruction_type == CORTRANS && !und_request && !conflict ) control_state_nxt = COPRO_WAIT; else begin @@ -3075,10 +3075,10 @@ always @ ( posedge i_clk ) // to the pre-fetch instruction register // then when its decoded, a copy is saved to the saved_current_instruction // register - if ( type == MTRANS ) + if ( instruction_type == MTRANS ) begin saved_current_instruction <= mtrans_instruction_nxt; - saved_current_instruction_type <= type; + saved_current_instruction_type <= instruction_type; saved_current_instruction_iabt <= instruction_iabt; saved_current_instruction_adex <= instruction_adex; saved_current_instruction_address <= instruction_address; @@ -3087,7 +3087,7 @@ always @ ( posedge i_clk ) else if ( saved_current_instruction_wen ) begin saved_current_instruction <= instruction; - saved_current_instruction_type <= type; + saved_current_instruction_type <= instruction_type; saved_current_instruction_iabt <= instruction_iabt; saved_current_instruction_adex <= instruction_adex; saved_current_instruction_address <= instruction_address; @@ -3107,7 +3107,7 @@ always @ ( posedge i_clk ) // TODO possible to use saved_current_instruction instead and save some regs? hold_instruction <= instruction; - hold_instruction_type <= type; + hold_instruction_type <= instruction_type; hold_instruction_iabt <= instruction_iabt; hold_instruction_adex <= instruction_adex; hold_instruction_address <= instruction_address; @@ -3196,15 +3196,15 @@ assign xCONTROL_STATE = // "Fast_Interrupt" ; assign xTYPE = - type == REGOP ? "REGOP" : - type == MULT ? "MULT" : - type == SWAP ? "SWAP" : - type == TRANS ? "TRANS" : - type == MTRANS ? "MTRANS" : - type == BRANCH ? "BRANCH" : - type == CODTRANS ? "CODTRANS" : - type == COREGOP ? "COREGOP" : - type == CORTRANS ? "CORTRANS" : + instruction_type == REGOP ? "REGOP" : + instruction_type == MULT ? "MULT" : + instruction_type == SWAP ? "SWAP" : + instruction_type == TRANS ? "TRANS" : + instruction_type == MTRANS ? "MTRANS" : + instruction_type == BRANCH ? "BRANCH" : + instruction_type == CODTRANS ? "CODTRANS" : + instruction_type == COREGOP ? "COREGOP" : + instruction_type == CORTRANS ? "CORTRANS" : "SWI" ; @@ -3777,7 +3777,7 @@ input [1:0] i_function; output [31:0] o_out; output o_carry_out; -output o_stall; +output reg o_stall; /************************* IO Declarations *********************/ wire [31:0] quick_out; @@ -7080,7 +7080,7 @@ module a25_write_back( o_wb_read_data_valid, o_wb_load_rd, - i_daddress, + i_daddress // i_daddress_valid ); @@ -7372,10 +7372,10 @@ input i_wb_ack; // Signals // ---------------------------------------------------- -reg o_wb_adr = 32'd0; -reg o_wb_sel = 16'd0; +reg [31:0] o_wb_adr = 32'd0; +reg [15:0] o_wb_sel = 16'd0; reg o_wb_we = 1'd0; -reg o_wb_dat = 128'd0; +reg [127:0] o_wb_dat = 128'd0; reg o_wb_cyc = 1'd0; reg o_wb_stb = 1'd0; wire [WBUF-1:0] wbuf_valid; diff --git a/vtr_flow/benchmarks/verilog/bgm.v b/vtr_flow/benchmarks/verilog/bgm.v index dbb32256a62..edc1c3f3898 100755 --- a/vtr_flow/benchmarks/verilog/bgm.v +++ b/vtr_flow/benchmarks/verilog/bgm.v @@ -716,7 +716,7 @@ always @(posedge clk) opa_r1 <= opa_r[30:0]; //always @(fpu_op_r3 or prod) -always @(prod) +always @(*) fract_denorm = prod; always @(posedge clk) @@ -1141,7 +1141,7 @@ always @(posedge clk) // // sign: 0=Posetive Number; 1=Negative Number -always @(signa or signb) +always @(*) case({signa, signb}) // synopsys full_case parallel_case 2'b00: sign_d = 0; 2'b01: sign_d = 1; @@ -1526,7 +1526,7 @@ module post_norm( fpu_op, opas, sign, rmode, fract_in, exp_in, exp_ovf, // Choose rounding mode - always @(rmode or exp_out_rnd0 or exp_out_rnd1 or exp_out_rnd2) + always @(*) case(rmode) // synopsys full_case parallel_case 2'b00: exp_out_rnd = exp_out_rnd0; 2'b01: exp_out_rnd = exp_out_rnd1; @@ -1534,7 +1534,7 @@ module post_norm( fpu_op, opas, sign, rmode, fract_in, exp_in, exp_ovf, 2'b11: exp_out_rnd = exp_out_rnd2; endcase - always @(rmode or fract_out_rnd0 or fract_out_rnd1 or fract_out_rnd2) + always @(*) case (rmode) // synopsys full_case parallel_case 2'b00: fract_out_rnd = fract_out_rnd0; 2'b01: fract_out_rnd = fract_out_rnd1; @@ -1684,7 +1684,7 @@ reg [5:0] fi_ldz_r0; assign fi_ldz = fi_ldz_r0; -always @(fract_in) +always @(*) begin if (fract_in[47:47] == 1'b1) fi_ldz_r0 = 6'd1; @@ -1784,6 +1784,7 @@ begin fi_ldz_r0 = 6'd48; else if (fract_in[47:0] == 48'b000000000000000000000000000000000000000000000000) fi_ldz_r0 = 6'd48; + else fi_ldz_r0 = 6'd0; end endmodule @@ -1800,7 +1801,7 @@ input [5:0] shift_value; output [47:0] shift_out; reg [47:0] shift_out; -always @(shift_value) +always @(*) begin case (shift_value) 6'b000000: shift_out = shift_in; @@ -1852,8 +1853,8 @@ begin 6'b101110: shift_out = shift_in >> 46; 6'b101111: shift_out = shift_in >> 47; 6'b110000: shift_out = shift_in >> 48; - - endcase + default: shift_out = shift_in; + endcase end //assign shift_out = shift_in >> shift_value; @@ -1871,7 +1872,7 @@ input [5:0] shift_value; output [47:0] shift_out; reg [47:0] shift_out; -always @(shift_value) +always @(*) begin case (shift_value) 6'b000000: shift_out = shift_in; @@ -1923,7 +1924,7 @@ begin 6'b101110: shift_out = shift_in << 46; 6'b101111: shift_out = shift_in << 47; 6'b110000: shift_out = shift_in << 48; - + default: shift_out = shift_in; endcase end @@ -1941,7 +1942,7 @@ input [5:0] shift_value; output [55:0] shift_out; reg [55:0] shift_out; -always @(shift_value) +always @(*) begin case (shift_value) 6'b000000: shift_out = shift_in; @@ -2000,7 +2001,8 @@ begin 6'b110101: shift_out = shift_in << 53; 6'b110110: shift_out = shift_in << 54; 6'b110111: shift_out = shift_in << 55; - 6'b111000: shift_out = shift_in << 56; + 6'b111000: shift_out = shift_in << 56; + default: shift_out = shift_in; endcase end @@ -2459,7 +2461,7 @@ assign adj_op_out[26:0] = {adj_op_out_sft[26:1], temp2 }; // --------------------------------------------------------------------- // Get truncated portion (sticky bit) -always @(exp_diff_sft or adj_op_tmp) +always @(*) case(exp_diff_sft) // synopsys full_case parallel_case 5'd00: sticky = 1'h0; 5'd01: sticky = adj_op_tmp[0]; @@ -2489,6 +2491,7 @@ always @(exp_diff_sft or adj_op_tmp) 5'd25: sticky = |adj_op_tmp[24:0]; 5'd26: sticky = |adj_op_tmp[25:0]; 5'd27: sticky = |adj_op_tmp[26:0]; + default: sticky = 1'h0; endcase // --------------------------------------------------------------------- @@ -2514,7 +2517,7 @@ always @(posedge clk) // Determine sign for the output // sign: 0=Positive Number; 1=Negative Number -always @(signa or signb or add or fractb_lt_fracta) +always @(*) case({signa, signb, add}) // synopsys full_case parallel_case // Add @@ -2567,7 +2570,7 @@ always @(posedge clk) // // add: 1=Add; 0=Subtract -always @(signa or signb or add) +always @(*) case({signa, signb, add}) // synopsys full_case parallel_case // Add @@ -2599,7 +2602,7 @@ input [4:0] shift_value; output [26:0] shift_out; reg [26:0] shift_out; -always @(shift_value) +always @(*) begin case (shift_value) 5'b00000: shift_out = shift_in; @@ -2630,7 +2633,8 @@ begin 5'b11001: shift_out = shift_in >> 25; 5'b11010: shift_out = shift_in >> 26; 5'b11011: shift_out = shift_in >> 27; - endcase + default: shift_out = shift_in; + endcase end diff --git a/vtr_flow/benchmarks/verilog/blob_merge.v b/vtr_flow/benchmarks/verilog/blob_merge.v index e7b8365331b..57edc27cf4b 100755 --- a/vtr_flow/benchmarks/verilog/blob_merge.v +++ b/vtr_flow/benchmarks/verilog/blob_merge.v @@ -1447,7 +1447,7 @@ module divider(//clk, reg [10:0] divider_copy8; wire [10:0] remainder8; -always @ (opa or opb) +always @ (*) begin //stage initial quotient0 = 11'b00000000000; diff --git a/vtr_flow/benchmarks/verilog/boundtop.v b/vtr_flow/benchmarks/verilog/boundtop.v index 3beb662c402..bac522503f9 100644 --- a/vtr_flow/benchmarks/verilog/boundtop.v +++ b/vtr_flow/benchmarks/verilog/boundtop.v @@ -234,7 +234,7 @@ assign raygroupout = raygroupout01 | raygroupout10 ; assign cntreset = cntreset01 | cntreset10 ; // reset <= reset01 or reset10; - always @(BoundNodeID01 or BoundNodeID10 or resultid) + always @(*) begin if (resultid == 2'b01) begin @@ -406,7 +406,7 @@ reg[31:0] temp_rgResultData; end end - always @(state or pending01 or pending10) + always @(*) begin case (state) 0 : @@ -424,6 +424,9 @@ reg[31:0] temp_rgResultData; begin next_state = 0 ; end + temp_rgResultReady = rgResultReady; + temp_rgResultData = rgResultData; + temp_rgResultSource = rgResultSource; end 1 : begin @@ -482,10 +485,13 @@ reg[31:0] temp_rgResultData; temp_rgResultReady = 1'b0 ; temp_rgResultSource = 2'b10 ; end - default: - begin - temp_rgResultReady = u01a || u01b || u01c || v01a || v01b || v01c || u10a || u10b || u10c || v10a || v10b || v10c; - end + default: + begin + next_state = state; + temp_rgResultReady = u01a || u01b || u01c || v01a || v01b || v01c || u10a || u10b || u10c || v10a || v10b || v10c; + temp_rgResultData = rgResultData; + temp_rgResultSource = rgResultSource; + end endcase end endmodule @@ -778,10 +784,59 @@ module boundcontroller (raygroupout, raygroupwe, raygroupid, enablenear, raygrou end end - - + // Refactoring this with better style like resulttransmit and listhandler blocks would be very + // time consuming, so instead apply an old trick where we initialize the value to previous state and + // then let the case statement simply superimpose updates on top of that. always @* - begin + begin + next_state = state ; + temp_busy = busy; + temp_statepeek = statepeek; + temp_raygroupoutl = raygroupoutl ; + temp_cts = cts ; + temp_passCTSout = passCTSout ; + temp_resetcount = resetcount ; + temp_l0reset = l0reset ; + temp_addr = addr ; + temp_startAddr = startAddr ; + temp_boundNodeIDout = boundNodeIDout ; + temp_baseaddress = baseaddress ; + temp_hitmask = hitmask ; + temp_hit1 = hit1 ; + temp_hit2 = hit2 ; + temp_hit3 = hit3 ; + temp_triIDvalid = triIDvalid ; + temp_triID = triID ; + temp_lack = lack ; + temp_addrind = addrind ; + temp_addrindvalid = addrindvalid ; + temp_tladdr = tladdr ; + temp_tladdrvalid = tladdrvalid ; + temp_count = count ; + temp_subcount = subcount ; + temp_maskcount = maskcount ; + temp_triDatalatch = triDatalatch ; + temp_t1 = t1 ; + temp_u1 = u1 ; + temp_v1 = v1 ; + temp_id1 = id1 ; + temp_t2 = t2 ; + temp_u2 = u2 ; + temp_v2 = v2 ; + temp_id2 = id2 ; + temp_t3 = t3 ; + temp_u3 = u3 ; + temp_v3 = v3 ; + temp_id3 = id3 ; + // For the unregistered values, we have to pick default behavior; + // these values are used in enough other defined states to appear to + // be reasonable fallbacks, but putting this here does change design + // intent: + raygroupid = 0; + enablenear = 1'b0 ; + raygroupwe = 1'b0 ; + bcvalid = 1'b0 ; + lhreset = 1'b1 ; case (state) 0 : begin @@ -1398,7 +1453,7 @@ endmodule end end - always @(state or trigger or count) + always @(*) begin case (state) 0 : @@ -1442,6 +1497,10 @@ endmodule end end + //Before adding default this could infer latches, so + //defaulting to holding previous state preserves deisgn intent + default: next_state = state; + endcase end endmodule @@ -1509,9 +1568,20 @@ reg temp_datavalid; end end - always @(state or addr_ready or data_ready or addrvalid or datavalid) - - begin + always @(*) + + begin + next_state = state; + temp_data = data; + temp_waddr = waddr; + temp_datavalid = datavalid; + // For the unregistered values, we have to pick default behavior; + // these values are used in enough other defined states to appear to + // be reasonable fallbacks, but putting this here does change design + // intent: + we = 1'b0 ; + want_addr = 1'b1 ; + want_data = 1'b0 ; case (state) 0 : begin @@ -1648,9 +1718,9 @@ reg temp_datavalid; -defparam new_ram.ADDR_WIDTH = 10; -defparam new_ram.DATA_WIDTH = 32; -single_port_ram new_ram( +single_port_ram + # (.ADDR_WIDTH(10), .DATA_WIDTH(32)) +new_ram( .clk (clk), .we(we), .data(datain), @@ -1734,9 +1804,24 @@ single_port_ram new_ram( end end - always @(state or addr_ready or data_ready or waddress or datain or addrvalid or - datavalid or addr) - begin + always @(*) + begin + next_state = state; + temp_statepeek = statepeek; + temp_data = data; + temp_datavalid = datavalid; + temp_waddress = waddress; + // For the unregistered values, we have to pick default behavior; + // these values are used in enough other defined states to appear to + // be reasonable fallbacks, but putting this here does change design + // intent: + tm3_sram_we = 8'b11111111 ; + tm3_sram_oe = 2'b11 ; + tm3_sram_adsp = 1'b1 ; + tm3_sram_data_xhdl0 = 0; + tm3_sram_addr = 0; + want_addr = 1'b1 ; + want_data = 1'b0 ; case (state) 0 : begin @@ -2009,8 +2094,26 @@ module resultinterface (t1b, t2b, t3b, u1b, u2b, u3b, v1b, v2b, v3b, id1b, id2b, end end - always @(state or resultready) - begin + always @(*) + begin + next_state = state ; + temp_t1b = t1b; + temp_newdata = newdata; + temp_u1b = u1b; + temp_v1b = v1b; + temp_id1b = id1b; + temp_hit1b = hit1b; + temp_resultID = resultID; + temp_t2b = t2b; + temp_u2b = u2b; + temp_id2b = id2b; + temp_t3b = t3b; + temp_u3b = u3b; + temp_v3b = v3b; + temp_id3b = id3b; + temp_hit3b = hit3b; + temp_v2b = v2b; + temp_hit2b = hit2b; case (state) 0 : begin @@ -2217,7 +2320,7 @@ module sortedstack (keyin, datain, write, reset, peekdata, globalreset, clk); assign peekdata[(7 + 1) * (13) - 1:7 * (13)] = ((full7) == 1'b1) ? data7 : 0; // Select the proper insertion point - always @(keyin or key0 or key1 or key2 or key3 or key4 or key5 or key6 or key7 or full0 or full1 or full2 or full3 or full4 or full5 or full6 or full7) + always @(*) begin /* PAJ -- changed for loops */ @@ -2468,7 +2571,7 @@ module listhandler (dataarrayin, commit, hitmask, ack, boundnodeID, level, empty reg[2:0] offset1; reg[2:0] offset2; reg[4:0] address; - reg we; + wire we; reg[12:0] datain; wire[12:0] dataout; reg[2:0] lvempty; @@ -2498,265 +2601,390 @@ module listhandler (dataarrayin, commit, hitmask, ack, boundnodeID, level, empty assign empty = (lvempty == 3'b111 & busy == 1'b0) ? 1'b1 : 1'b0 ; assign dataready = ((((dataout[10]) == 1'b1 & (hitmask[0]) == 1'b1) | ((dataout[11]) == 1'b1 & (hitmask[1]) == 1'b1) | ((dataout[12]) == 1'b1 & (hitmask[2]) == 1'b1)) & (empty == 1'b0) & (busy == 1'b0)) ? 1'b1 : 1'b0 ; - always @(offset0 or offset1 or offset2 or address) - begin - address[4:3] = readlevel ; - - if (address[4:3] == 2'b00) - begin - address[2:0] = offset0 ; - end - else if (address[4:3] == 2'b01) - begin - - address[2:0] = offset1 ; - end - else if (address[4:3] == 2'b10) - begin - address[2:0] = offset2 ; - end - else - begin - address[2:0] = 0; - end - end + always @(*) + begin + address[4:3] = readlevel ; - always @(posedge clk) - begin - if (globalreset == 1'b1) - begin - state <= 0 ; - lvempty <= 1; - busy <= 1'b0 ; - readlevel <= 2'b00 ; - writelevel <= 2'b00 ; - offset0 <= 3'b000 ; - offset1 <= 3'b000 ; - offset2 <= 3'b000 ; + if (address[4:3] == 2'b00) + begin + address[2:0] = offset0 ; + end + else if (address[4:3] == 2'b01) + begin - end - else - begin - state <= next_state ; - peekstate <= temp_peekstate ; - busy <= temp_busy; - lvempty <= temp_lvempty; - readlevel <= temp_readlevel; - writelevel <= temp_writelevel; - offset0 <= temp_offset0; - offset1 <= temp_offset1; - offset2 <= temp_offset2; + address[2:0] = offset1 ; + end + else if (address[4:3] == 2'b10) + begin + address[2:0] = offset2 ; + end + else + begin + address[2:0] = 0; + end + end - end - end + always @(posedge clk) + begin + if (globalreset == 1'b1) + begin + state <= 0 ; + lvempty <= 1; + busy <= 1'b0 ; + readlevel <= 2'b00 ; + writelevel <= 2'b00 ; + offset0 <= 3'b000 ; + offset1 <= 3'b000 ; + offset2 <= 3'b000 ; - always @(state or commit or ack or address or dataarrayin or reset or dataready or - empty) - begin + end + else + begin + state <= next_state ; + peekstate <= temp_peekstate ; + busy <= temp_busy; + lvempty <= temp_lvempty; + readlevel <= temp_readlevel; + writelevel <= temp_writelevel; + offset0 <= temp_offset0; + offset1 <= temp_offset1; + offset2 <= temp_offset2; + end + end - case (state) + //for we and datain we cannot preserve original functionality and stil + //eliminate latches because there were no flops for them in the original + //code. The best we can do is observe that nonzero, valid behavior + //is defined only when state == 2'b01. Since putting these behind flops + //would change their timing, build a mux and set we and datain to zero + //for previously undefined states + assign we = (state == 2'b01); + always @(*) begin + if (state == 2'b01) begin + case(address[2:0]) + 3'b000: datain = dataarrayin[0+:13]; + 3'b001: datain = dataarrayin[13+:13]; + 3'b010: datain = dataarrayin[26+:13]; + 3'b011: datain = dataarrayin[39+:13]; + 3'b100: datain = dataarrayin[52+:13]; + 3'b101: datain = dataarrayin[65+:13]; + 3'b110: datain = dataarrayin[78+:13]; + 3'b111: datain = dataarrayin[91+:13]; + endcase + end + else begin + datain = 'h0; + end + end + + always @(*) + begin + + // Note that throughout this case statement it is necessary to + // add else statements that were not previously present in order + // to prevent latch inference. To preserve previous behavior, + // these else statements should always set the value equal to + // previous state + case (state) 2'b00 : - begin - we = 1'b0 ; - datain = 0; - if (reset == 1'b1) - begin - next_state = 0 ; - end - else if (commit == 1'b1) + begin + temp_peekstate = 2'b01 ; + + if (reset == 1'b1) + begin + temp_busy = 1'b0 ; + temp_lvempty = 1; + temp_readlevel = 2'b00 ; + + temp_writelevel = 2'b00 ; + temp_offset0 = 3'b000 ; + temp_offset1 = 3'b000 ; + temp_offset2 = 3'b000 ; + end + else if (commit == 1'b1) + begin + temp_busy = 1'b1 ; + if (writelevel == 2'b00) begin - next_state = 1 ; + temp_offset0 = 3'b000 ; + temp_offset1 = offset1; + temp_offset2 = offset2; end - else if ((ack == 1'b1) | (dataready == 1'b0 & empty == 1'b0)) + else if (writelevel == 2'b01) begin - next_state = 2 ; + temp_offset1 = 3'b000 ; + temp_offset0 = offset0; + temp_offset2 = offset2; end - else + else if (writelevel == 2'b10) begin - next_state = 0 ; - end - temp_peekstate = 2'b01 ; - - if (reset == 1'b1) - begin - temp_busy = 1'b0 ; - temp_lvempty = 1; - temp_readlevel = 2'b00 ; - - temp_writelevel = 2'b00 ; - temp_offset0 = 3'b000 ; - temp_offset1 = 3'b000 ; - temp_offset2 = 3'b000 ; - end - else if (commit == 1'b1) - begin - temp_busy = 1'b1 ; - if (writelevel == 2'b00) - begin - temp_offset0 = 3'b000 ; - end - - else if (writelevel == 2'b01) - begin - temp_offset1 = 3'b000 ; - end - else if (writelevel == 2'b10) - begin - temp_offset2 = 3'b000 ; - end - temp_readlevel = writelevel ; - end - - else if (ack == 1'b1) - begin - temp_writelevel = readlevel + 1 ; - temp_busy = 1'b1 ; // This will ensure that align skips one - end - - end + temp_offset0 = offset0; + temp_offset1 = offset1; + temp_offset2 = 3'b000 ; + end + else begin + temp_offset0 = offset0; + temp_offset1 = offset1; + temp_offset2 = offset2; + end + temp_readlevel = writelevel ; + temp_writelevel = writelevel; + temp_lvempty = lvempty; + end + + else if (ack == 1'b1) + begin + temp_writelevel = readlevel + 1 ; + temp_readlevel = readlevel; + temp_busy = 1'b1 ; // This will ensure that align skips one + temp_lvempty = lvempty; + temp_offset0 = offset0; + temp_offset1 = offset1; + temp_offset2 = offset2; + end + else begin + temp_busy = busy; + temp_lvempty = lvempty; + temp_readlevel = readlevel; + temp_writelevel = writelevel; + temp_offset0 = offset0; + temp_offset1 = offset1; + temp_offset2 = offset2; + temp_readlevel = readlevel; + temp_writelevel = writelevel; + end + end 2'b01 : - begin -/* PAJ -- Unrolled loop */ - if (address[2:0] == 0) - begin - datain = dataarrayin[(1) * 13 - 1:0 * 13] ; - end - else if ( address[2:0] == 1) - begin - datain = dataarrayin[(2) * 13 - 1:1 * 13] ; - end - else if ( address[2:0] ==2) - begin - datain = dataarrayin[(3) * 13 - 1:2 * 13] ; - end - else if ( address[2:0] ==3) - begin - datain = dataarrayin[(4) * 13 - 1:3 * 13] ; - end - else if ( address[2:0] ==4) - begin - datain = dataarrayin[(5) * 13 - 1:4 * 13] ; - end - else if ( address[2:0] ==5) - begin - datain = dataarrayin[(6) * 13 - 1:5 * 13] ; - end - else if ( address[2:0] ==6) - begin - datain = dataarrayin[(7) * 13 - 1:6 * 13] ; - end - else if ( address[2:0] ==7) - begin - datain = dataarrayin[(8) * 13 - 1:7 * 13] ; - end - - - we = 1'b1 ; - if (address[2:0] == 3'b111) + begin + temp_peekstate = 2'b10 ; + + if (readlevel == 2'b00) + begin + temp_offset0 = offset0 + 1 ; + temp_offset1 = offset1; + temp_offset2 = offset2; + end + else if (readlevel == 2'b01) + begin + temp_offset1 = offset1 + 1 ; + temp_offset0 = offset0; + temp_offset2 = offset2; + end + else if (readlevel == 2'b10) + begin + temp_offset2 = offset2 + 1 ; + temp_offset0 = offset0; + temp_offset1 = offset1; + end + else + begin + temp_offset0 = offset0; + temp_offset1 = offset1; + temp_offset2 = offset2; + end + + if (address[2:0] == 3'b111) + begin + temp_busy = 1'b0 ; + end + else begin + temp_busy = busy; + end + + if ((datain[10]) == 1'b1 | (datain[11]) == 1'b1 | (datain[12]) == 1'b1) + begin + if (readlevel == 2'b00) begin - next_state = 2 ; - + temp_lvempty[0] = 1'b0 ; + temp_lvempty[1] = lvempty[1] ; + temp_lvempty[2] = lvempty[2] ; end - else + else if (readlevel == 2'b01) begin - next_state = 1 ; - end - temp_peekstate = 2'b10 ; - - if (readlevel == 2'b00) - begin - temp_offset0 = offset0 + 1 ; - end - - else if (readlevel == 2'b01) - begin - temp_offset1 = offset1 + 1 ; - end - else if (readlevel == 2'b10) - begin - temp_offset2 = offset2 + 1 ; - end - if (address[2:0] == 3'b111) - begin - temp_busy = 1'b0 ; - end - - if ((datain[10]) == 1'b1 | (datain[11]) == 1'b1 | (datain[12]) == 1'b1) - begin - if (readlevel == 2'b00) - begin - temp_lvempty[0] = 1'b0 ; - end - else if (readlevel == 2'b01) - begin - temp_lvempty[1] = 1'b0 ; - end - else if (readlevel == 2'b10) - begin - - temp_lvempty[2] = 1'b0 ; - end - end - - end + temp_lvempty[1] = 1'b0 ; + temp_lvempty[0] = lvempty[0] ; + temp_lvempty[2] = lvempty[2] ; + end + else if (readlevel == 2'b10) + begin + temp_lvempty[2] = 1'b0 ; + temp_lvempty[0] = lvempty[0] ; + temp_lvempty[1] = lvempty[1] ; + end + else begin + temp_lvempty = lvempty; + end + end + else begin + temp_lvempty = lvempty; + end + + temp_readlevel = readlevel; + temp_writelevel = writelevel; + + end 2'b10 : - begin - if (empty == 1'b0 & dataready == 1'b0) - begin - next_state = 2 ; - end - else - next_state = 0 ; - - temp_peekstate = 2'b11 ; - temp_busy = 1'b0 ; - if (empty == 1'b0 & dataready == 1'b0) - begin - if (readlevel == 2'b00) - begin - if (offset0 == 3'b111) - begin - temp_lvempty[0] = 1'b1 ; - end - else - begin - temp_offset0 = offset0 + 1 ; - end - end - else if (readlevel == 2'b01) - begin - if (offset1 == 3'b111) + begin + if (empty == 1'b0 & dataready == 1'b0) + temp_peekstate = 2'b11 ; + else + temp_peekstate = peekstate; + + temp_busy = 1'b0 ; + + if (empty == 1'b0 & dataready == 1'b0) + begin + if (readlevel == 2'b00) + begin + if (offset0 == 3'b111) + begin + temp_lvempty[0] = 1'b1 ; + temp_lvempty[1] = lvempty[1]; + temp_lvempty[2] = lvempty[2]; + temp_offset0 = offset0; + temp_offset1 = offset1; + temp_offset2 = offset2; + end + else + begin + temp_lvempty = lvempty; + temp_offset0 = offset0 + 1 ; + temp_offset1 = offset1; + temp_offset2 = offset2; + end + temp_readlevel = readlevel; + temp_writelevel = writelevel; + end + else if (readlevel == 2'b01) + begin + if (offset1 == 3'b111) + begin + temp_lvempty[1] = 1'b1 ; + temp_lvempty[0] = lvempty[0]; + temp_lvempty[2] = lvempty[2]; + temp_readlevel = 2'b00 ; + temp_offset0 = offset0; + temp_offset1 = offset1; + temp_offset2 = offset2; + end + else + begin + temp_offset1 = offset1 + 1 ; + temp_offset0 = offset0; + temp_offset2 = offset2; + temp_lvempty = lvempty; + temp_readlevel = readlevel; + end + temp_writelevel = writelevel; + end + else if (readlevel == 2'b10) + begin + if (offset2 == 3'b111) + begin + temp_lvempty[2] = 1'b1 ; + temp_lvempty[1:0] = lvempty[1:0]; + if ((lvempty[1]) == 1'b1) begin - temp_lvempty[1] = 1'b1 ; - temp_readlevel = 2'b00 ; + temp_readlevel = 2'b00 ; end - else - begin - temp_offset1 = offset1 + 1 ; - end - end - else if (readlevel == 2'b10) - begin - if (offset2 == 3'b111) + else begin - temp_lvempty[2] = 1'b1 ; - if ((lvempty[1]) == 1'b1) - begin - temp_readlevel = 2'b00 ; - end - else - begin - temp_readlevel = 2'b01 ; - end + temp_readlevel = 2'b01 ; end - else - begin - temp_offset2 = offset2 + 1 ; - end - end - end - end + temp_offset0 = offset0; + temp_offset1 = offset1; + temp_offset2 = offset2; + end + else + begin + temp_offset0 = offset0; + temp_offset1 = offset1; + temp_offset2 = offset2 + 1 ; + temp_lvempty = lvempty; + temp_readlevel = readlevel; + end + temp_writelevel = writelevel; + end + else + begin + temp_lvempty = lvempty; + temp_offset0 = offset0; + temp_offset1 = offset1; + temp_offset2 = offset2; + temp_readlevel = readlevel; + temp_writelevel = writelevel; + end + end + else + begin + temp_lvempty = lvempty; + temp_offset0 = offset0; + temp_offset1 = offset1; + temp_offset2 = offset2; + temp_readlevel = readlevel; + temp_writelevel = writelevel; + end + end + default: begin + // preserve original design intent by holding state, even if + // this behavior is not really sensical + temp_peekstate = peekstate ; + temp_busy = busy; + temp_lvempty = lvempty; + temp_readlevel = readlevel; + temp_writelevel = writelevel; + temp_offset0 = offset0; + temp_offset1 = offset1; + temp_offset2 = offset2; + end + endcase + + case (state) + 2'b00 : + begin + if (reset == 1'b1) + begin + next_state = 0 ; + end + else if (commit == 1'b1) + begin + next_state = 1 ; + end + else if ((ack == 1'b1) | (dataready == 1'b0 & empty == 1'b0)) + begin + next_state = 2 ; + end + else + begin + next_state = 0 ; + end + end + 2'b01 : + begin + if (address[2:0] == 3'b111) + begin + next_state = 2 ; + end + else + begin + next_state = 1 ; + end + end + 2'b10 : + begin + if (empty == 1'b0 & dataready == 1'b0) + begin + next_state = 2 ; + end + else + next_state = 0 ; + end + default: begin + // preserve original design intent by holding state, even if + // this behavior is not really sensical + next_state = state; + end endcase end endmodule diff --git a/vtr_flow/benchmarks/verilog/ch_intrinsics.v b/vtr_flow/benchmarks/verilog/ch_intrinsics.v index 919263007ad..3235899b759 100755 --- a/vtr_flow/benchmarks/verilog/ch_intrinsics.v +++ b/vtr_flow/benchmarks/verilog/ch_intrinsics.v @@ -28,10 +28,9 @@ reg str_write_enable; reg [7:0] str_in; wire [7:0] str_out; - -defparam _str.ADDR_WIDTH = 5; -defparam _str.DATA_WIDTH = 8; -single_port_ram _str ( +single_port_ram + # (.ADDR_WIDTH(5), .DATA_WIDTH(8)) +_str ( .clk( clk ), .addr( str_address ), .we( str_write_enable ), @@ -43,28 +42,25 @@ single_port_ram _str ( wire tag; //must use all wires inside module..... -assign tag = |memory_controller_address & |memory_controller_address & | memory_controller_in; +assign tag = |memory_controller_address & | memory_controller_in; reg [`MEMORY_CONTROLLER_TAG_SIZE-1:0] prevTag; always @(posedge clk) prevTag <= tag; -always @( tag or memory_controller_address or memory_controller_write_enable or memory_controller_in) + +always @(posedge clk) begin - -case(tag) - - 1'b0: + if (~tag) begin - str_address = memory_controller_address[5-1+0:0]; - str_write_enable = memory_controller_write_enable; - str_in[8-1:0] = memory_controller_in[8-1:0]; + str_address <= memory_controller_address[4:0]; + str_write_enable <= memory_controller_write_enable; + str_in[7:0] <= memory_controller_in[7:0]; end -endcase - -case(prevTag) +end - 1'b0: - memory_controller_out = str_out; -endcase +always @(posedge clk) +begin + if (~prevTag) + memory_controller_out <= str_out; end endmodule @@ -276,17 +272,16 @@ case(cur_state) end endcase -always @(cur_state) +always @(posedge clk) begin - case(cur_state) - 4'b1101: + if (cur_state == 4'b1101) begin - memory_controller_address = s_07; - memory_controller_write_enable = 1'b1; - memory_controller_in = c; + memory_controller_address <= s_07; + memory_controller_write_enable <= 1'b1; + memory_controller_in <= c; end - endcase + end endmodule diff --git a/vtr_flow/benchmarks/verilog/mcml.v b/vtr_flow/benchmarks/verilog/mcml.v index 3959f55bb04..d61cf38e294 100644 --- a/vtr_flow/benchmarks/verilog/mcml.v +++ b/vtr_flow/benchmarks/verilog/mcml.v @@ -489,7 +489,7 @@ PhotonCalculator u_calc ( ); // 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 ) +always @(*) begin if(r_state == RESET_MEM_ST) begin @@ -518,112 +518,7 @@ end // 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 +always @(*) begin // Initialize data //for(i = 0; i < 104; i = i + 1) begin // c_const[i] = r_const[i]; @@ -1778,9 +1673,9 @@ assign const_zero = 1'b0; assign const_zero_data = 32'b00000000000000000000000000000000; // assign dont_care_out = 32'b00000000000000000000000000000000; -defparam dpram1.ADDR_WIDTH = 13; -defparam dpram1.DATA_WIDTH = 32; -dual_port_ram dpram1( +dual_port_ram + # (.ADDR_WIDTH(13), .DATA_WIDTH(32)) +dpram1( .clk (clk), .we1(wren), .we2(const_zero), @@ -1815,9 +1710,9 @@ assign const_zero = 1'b0; assign const_zero_data = 32'b00000000000000000000000000000000; // assign dont_care_out = 32'b00000000000000000000000000000000; -defparam dpram1.ADDR_WIDTH = 13; -defparam dpram1.DATA_WIDTH = 32; -dual_port_ram dpram1( +dual_port_ram + # (.ADDR_WIDTH(13), .DATA_WIDTH(32)) +dpram1( .clk (clk), .we1(wren), .we2(const_zero), @@ -1852,9 +1747,9 @@ assign const_zero = 1'b0; assign const_zero_data = 32'b00000000000000000000000000000000; // assign dont_care_out = 32'b00000000000000000000000000000000; -defparam dpram1.ADDR_WIDTH = 13; -defparam dpram1.DATA_WIDTH = 32; -dual_port_ram dpram1( +dual_port_ram + # (.ADDR_WIDTH(13), .DATA_WIDTH(32)) +dpram1( .clk (clk), .we1(wren), .we2(const_zero), @@ -1889,9 +1784,9 @@ assign const_zero = 1'b0; assign const_zero_data = 32'b00000000000000000000000000000000; // assign dont_care_out = 32'b00000000000000000000000000000000; -defparam dpram1.ADDR_WIDTH = 13; -defparam dpram1.DATA_WIDTH = 32; -dual_port_ram dpram1( +dual_port_ram + # (.ADDR_WIDTH(13), .DATA_WIDTH(32)) +dpram1( .clk (clk), .we1(wren), .we2(const_zero), @@ -1925,9 +1820,9 @@ assign const_zero = 1'b0; assign const_zero_data = 36'b000000000000000000000000000000000000; // assign dont_care_out = 36'b000000000000000000000000000000000000; -defparam dpram1.ADDR_WIDTH = 16; -defparam dpram1.DATA_WIDTH = 36; -dual_port_ram dpram1( +dual_port_ram + # (.ADDR_WIDTH(16), .DATA_WIDTH(36)) +dpram1( .clk (clk), .we1(wren), .we2(const_zero), @@ -1961,9 +1856,9 @@ assign const_zero = 1'b0; assign const_zero_data = 18'b000000000000000000; // assign dont_care_out = 18'b000000000000000000; -defparam dpram1.ADDR_WIDTH = 16; -defparam dpram1.DATA_WIDTH = 18; -dual_port_ram dpram1( +dual_port_ram + # (.ADDR_WIDTH(16), .DATA_WIDTH(18)) +dpram1( .clk (clk), .we1(wren), .we2(const_zero), @@ -1997,9 +1892,9 @@ assign const_zero = 1'b0; assign const_zero_data = 8'b00000000; // assign dont_care_out = 8'b00000000; -defparam dpram1.ADDR_WIDTH = 16; -defparam dpram1.DATA_WIDTH = 8; -dual_port_ram dpram1( +dual_port_ram + # (.ADDR_WIDTH(16), .DATA_WIDTH(8)) +dpram1( .clk (clk), .we1(wren), .we2(const_zero), @@ -2429,7 +2324,7 @@ DropSpinWrapper dropSpin ( ); // Determine how many photons left -always @(r_num_photons_left or dead_Roulette or r_done or r_counter) +always @(*) begin //c_num_photons_left = r_num_photons_left; //c_counter = 0; @@ -2455,7 +2350,7 @@ begin end // Only state info is done -always @(r_done or r_counter) +always @(*) begin //c_done = r_done; if(r_counter > `PIPELINE_DEPTH_UPPER_LIMIT) @@ -2467,9 +2362,7 @@ begin 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) +always @(*) begin if(dead_Roulette) begin @@ -2674,12 +2567,7 @@ 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) +always @(*) begin case(layer_moverMux) 3'b000: @@ -2728,8 +2616,7 @@ endcase end // Determine move value -always @(sleftz_moverMux or log_rand_num or OneOver_MutMaxrad or OneOver_MutMaxdep or sleftr_moverMux or - OneOver_Mut) +always @(*) begin // Resource sharing for multipliers if(sleftz_moverMux == 32'b0) @@ -2749,7 +2636,7 @@ begin 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) +always @(*) begin c_sr_big = c_r_op0 * c_r_op1; c_sz_big = c_z_op0 * c_z_op1; @@ -5538,12 +5425,7 @@ mult_signed_32_bc mult_u3( .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) +always @(*) begin case(c_layer__0) 3'b000: @@ -5593,7 +5475,7 @@ 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) +always @(*) begin //c_numer__0 = 63'b0; if(c_uz__0[31] == 1'b0) @@ -5613,10 +5495,7 @@ begin 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) +always @(*) begin c_x__0 = x_mover; c_y__0 = y_mover; @@ -5637,187 +5516,7 @@ begin 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) +always @(*) // default // setup standard pipeline @@ -10019,12 +9718,7 @@ 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) +always @(*) begin c_x_big = x_boundaryChecker + c_xmult_big[2*`BIT_WIDTH-2:31]; @@ -10169,7 +9863,7 @@ module mult_signed_32(a, b, c); 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) +always@(*) begin if(a[31] == 1) begin @@ -10198,7 +9892,7 @@ begin end end -always@(c_tmp) +always@(*) begin c = c_tmp; end @@ -10285,7 +9979,7 @@ 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 +always @ (*) 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 @@ -10393,7 +10087,7 @@ 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) +always @(*) begin if(loadseed_i) begin @@ -10468,9 +10162,10 @@ reg [`BIT_WIDTH - 1:0] log_x; wire [31:0]blank; assign blank = 32'b000000000000000000000000000000; -defparam sram_replace0.ADDR_WIDTH = `MANTISSA_PRECISION; -defparam sram_replace0.DATA_WIDTH = 32; -single_port_ram sram_replace0 (.clk (clock), .addr (c_shifted_x), .data (blank), .we (1'b0), .out (mantissa)); + +single_port_ram + # (.ADDR_WIDTH(`MANTISSA_PRECISION), .DATA_WIDTH(32)) +sram_replace0 (.clk (clock), .addr (c_shifted_x), .data (blank), .we (1'b0), .out (mantissa)); // priority encoder //integer i; @@ -10485,7 +10180,7 @@ single_port_ram sram_replace0 (.clk (clock), .addr (c_shifted_x), .data (blank), //end // Priority encoder, loop expanded -always @(in_x) +always @(*) begin if (in_x[31]) begin c_indexFirstOne = 6'b011111; @@ -10594,7 +10289,7 @@ end wire [5:0]shifted; assign shifted = c_indexFirstOne - `MANTISSA_PRECISION + 1; -always@(c_indexFirstOne or in_x or shifted) +always@(*) begin // c_temp_shift_x = in_x >> (c_indexFirstOne - `MANTISSA_PRECISION + 1); if(c_indexFirstOne >= `MANTISSA_PRECISION) @@ -10678,7 +10373,7 @@ begin end // calculate log -always@(r_indexFirstOne or mantissa) +always@(*) begin if(r_indexFirstOne >= `MANTISSA_PRECISION) begin @@ -13105,8 +12800,7 @@ ScattererReflectorWrapper scattererReflector( //// 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 +always @ (*) begin case (hit__37) 0: begin o_ux = ux_scatterer; @@ -14839,7 +14533,7 @@ PhotonBlock1 photon1q( ////////////////////////////////////////////////////////////////////////////// ///////////////STAGE 2 - square of x and y///////////////////////// -always @(reset or x_pipe or y_pipe) begin +always @(*) begin if (reset) begin x2_temp=0; y2_temp=0; @@ -14851,7 +14545,7 @@ always @(reset or x_pipe or y_pipe) begin end ///////////////STAGE 3 - square of r///////////////////////// -always @(reset or x2_P or y2_P) begin +always @(*) begin if (reset) r2_temp=0; else @@ -14860,7 +14554,7 @@ end ///////////////STAGE 4 - Find r and dwa///////////////////////// //Create MUX -always@(layer_pipe or muaFraction1 or muaFraction2 or muaFraction3 or muaFraction4 or muaFraction5) +always@(*) case(layer_pipe) 1: fractionScaled=muaFraction1; 2: fractionScaled=muaFraction2; @@ -14871,7 +14565,7 @@ always@(layer_pipe or muaFraction1 or muaFraction2 or muaFraction3 or muaFractio endcase -always @(reset or weight__4 or r_P_wire or weight_P4 or fractionScaled or product64bit or dead__4 or hit__4) begin +always @(*) begin if (reset) begin weight_P4=0; r_P=0; @@ -14902,7 +14596,7 @@ Sqrt_64b squareRoot ( ); ///////////////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 +always @(*) begin if (reset) begin ir_temp=0; iz_temp=0; @@ -14950,7 +14644,7 @@ always @(reset or r_P or z_pipe or dead__14 or hit__14 or iz_temp or ir_temp) be end ///////////////STAGE 15 - Compute MEM address///////////////////////// -always @(reset or ir__15 or iz__15 or ir_P or iz_P or ir_scaled) begin +always @(*) begin if (reset) begin ir_P=0; iz_P=0; @@ -14966,7 +14660,7 @@ always @(reset or ir__15 or iz__15 or ir_P or iz_P or ir_scaled) begin 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 +always @(*) begin if (reset) begin oldAbs_MEM=0; end else begin @@ -14984,7 +14678,7 @@ 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 +always @(*) begin if(reset) begin dwa_P=0; //How to specify Base 10??? weight_P=0; @@ -15628,7 +15322,7 @@ assign reset_new = reset & bigOr; //MUX for sending in indices for memory. -always @ (i_layer31_pipeWrapper) begin +always @ (*) begin case (i_layer31_pipeWrapper) 3'b001: layerMinusOne = 0; 3'b010: layerMinusOne = 1; @@ -17923,11 +17617,7 @@ end //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 +always @ (*) begin case (i_layer36) 1:begin downCritAngle = downCritAngle_0; @@ -17957,7 +17647,7 @@ always @ (i_layer36 or downCritAngle_0 or upCritAngle_0 or endcase end -always @ (i_uz35 or i_layer35) begin +always @ (*) begin negUz = -i_uz35; case (i_uz35[31]) 0: begin @@ -18008,11 +17698,7 @@ assign op1_2_2 = i_uz1; //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 +always @ (*) begin case (i_uz3[31]) //uz >= 0 0:begin @@ -18050,11 +17736,7 @@ 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 +always @ (*) begin case (i_uz35[31]) 0: begin//uz >= 0 case (i_layer35) @@ -18198,8 +17880,7 @@ 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 +always @ (*) begin case ({overflow1_36, negOverflow1_36}) 0: new_ux_transmitted = {prod1_36[63:63], prod1_36[59:29]}; 1: new_ux_transmitted = `INTMIN; @@ -18234,9 +17915,7 @@ end // // // -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 +always @ (*) begin //REFLECTED -- Due to total internal reflection while moving down if (~i_uz36[31] && i_uz36 <= downCritAngle) begin new_ux = i_ux36; @@ -18323,13 +18002,14 @@ output [31:0] cosp; //Instantiate a single port ram for odin wire [31:0]blank; assign blank = 32'b000000000000000000000000000000; -defparam sinp_replace.ADDR_WIDTH = 10; -defparam sinp_replace.DATA_WIDTH = 32; -single_port_ram sinp_replace(.clk (clock), .addr (pindex), .data (blank), .we (1'b0), .out (sinp)); -defparam cosp_replace.ADDR_WIDTH = 10; -defparam cosp_replace.DATA_WIDTH = 32; -single_port_ram cosp_replace(.clk (clock), .addr (pindex), .data (blank), .we (1'b0), .out (cosp)); +single_port_ram +# (.ADDR_WIDTH(10), .DATA_WIDTH(32)) +sinp_replace(.clk (clock), .addr (pindex), .data (blank), .we (1'b0), .out (sinp)); + +single_port_ram +# (.ADDR_WIDTH(10), .DATA_WIDTH(32)) +cosp_replace(.clk (clock), .addr (pindex), .data (blank), .we (1'b0), .out (cosp)); endmodule @@ -22930,7 +22610,7 @@ add_32b uyNumer_add( 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 +always @ (*) begin case ({overflow1_36, negOverflow1_36}) 0: new_uxQuotient = {prod1_36[63:63], prod1_36[45:15]}; 1: new_uxQuotient = `INTMIN; @@ -22983,7 +22663,7 @@ assign new_uzCost = prod6_36; //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 +always @ (*) 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; @@ -23104,7 +22784,7 @@ module Mult_32b (dataa, datab, result); //now signed version! 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) +always@(*) begin if(a[31] == 1) begin a_tmp = -a; @@ -23134,7 +22814,7 @@ begin end end -always@(c_tmp) +always@(*) begin c = c_tmp; end @@ -23156,7 +22836,7 @@ module Div_64b (clock, denom, numer, quotient, remain); 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 + always @ (*) begin if ( numer[63]^denom[31] ) begin // only one is negative quotient = -quotient_temp; remain = -remain_temp; @@ -23324,7 +23004,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); reg [31:0]denom19; - always @(numer or denom0) begin + always @(*) begin numer_temp_63 = {31'b0, numer}; //quo0[63] @@ -23361,7 +23041,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom1 <= denom0; end - always @(numer_temp_60_q or denom1 or quo0_q) begin + always @(*) begin quo1_d[63:61] = quo0_q[63:61]; //quo1_d[60] @@ -23397,7 +23077,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom2 <= denom1; end - always @ (numer_temp_57_q or denom2 or quo1_q) begin + always @ (*) begin quo2_d[63:58] = quo1_q[63:58]; //quo2_d[57] @@ -23434,7 +23114,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom3 <= denom2; end - always @ (numer_temp_54_q or denom3 or quo2_q) begin + always @ (*) begin quo3_d[63:55] = quo2_q[63:55]; //quo3_d[54] @@ -23470,7 +23150,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom4 <= denom3; end - always @ (numer_temp_51_q or denom4 or quo3_q) begin + always @ (*) begin quo4_d[63:52] = quo3_q[63:52]; //quo4[51] @@ -23506,7 +23186,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom5 <= denom4; end - always @ (numer_temp_48_q or denom5 or quo4_q) begin + always @ (*) begin quo5_d[63:49] = quo4_q[63:49]; //quo5_d[48] @@ -23542,7 +23222,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom6 <= denom5; end - always @ (numer_temp_45_q or denom6 or quo5_q) begin + always @ (*) begin quo6_d[63:46] = quo5_q[63:46]; //quo6_d[45] @@ -23578,7 +23258,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom7 <= denom6; end - always @ (numer_temp_42_q or denom7 or quo6_q) begin + always @ (*) begin quo7_d[63:43] = quo6_q[63:43]; //quo7_d[42] @@ -23614,7 +23294,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom8 <= denom7; end - always @ (numer_temp_39_q or denom8 or quo7_q) begin + always @ (*) begin quo8_d[63:40] = quo7_q[63:40]; //quo8[39] @@ -23650,7 +23330,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom9 <= denom8; end - always @ (numer_temp_36_q or denom9 or quo8_q) begin + always @ (*) begin quo9_d[63:37] = quo8_q[63:37]; //quo9[36] @@ -23686,7 +23366,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom10 <= denom9; end - always @ (numer_temp_33_q or denom10 or quo9_q) begin + always @ (*) begin quo10_d[63:34] = quo9_q[63:34]; //quo10_d[33] @@ -23722,7 +23402,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom11 <= denom10; end - always @ (numer_temp_30_q or denom11 or quo10_q) begin + always @ (*) begin quo11_d[63:31] = quo10_q[63:31]; //quo11[30] @@ -23758,7 +23438,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom12 <= denom11; end - always @ (numer_temp_27_q or denom12 or quo11_q) begin + always @ (*) begin quo12_d[63:28] = quo11_q[63:28]; //quo12[27] @@ -23802,7 +23482,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom13 <= denom12; end - always @ (numer_temp_23_q or denom13 or quo12_q) begin + always @ (*) begin quo13_d[63:24] = quo12_q[63:24]; //quo13_d[23] @@ -23846,7 +23526,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom14 <= denom13; end - always @ (numer_temp_19_q or denom14 or quo13_q) begin + always @ (*) begin quo14_d[63:20] = quo13_q[63:20]; //quo14_d[19] @@ -23890,7 +23570,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom15 <= denom14; end - always @ (numer_temp_15_q or denom15 or quo14_q) begin + always @ (*) begin quo15_d[63:16] = quo14_q[63:16]; //quo15_d[15] @@ -23934,7 +23614,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom16 <= denom15; end - always @ (numer_temp_11_q or denom16 or quo15_q) begin + always @ (*) begin quo16_d[63:12] = quo15_q[63:12]; //quo16_d[11] @@ -23978,7 +23658,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom17 <= denom16; end - always @ (numer_temp_7_q or denom17 or quo16_q) begin + always @ (*) begin quo17_d[63:8] = quo16_q[63:8]; //quo17_d[7] @@ -24022,7 +23702,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom18 <= denom17; end - always @ (numer_temp_3_q or denom18 or quo17_q) begin + always @ (*) begin quo18_d[63:4] = quo17_q[63:4]; //quo18_d[3] @@ -24050,7 +23730,7 @@ module Div_64b_unsigned (clock, denom_, numer_, quotient, remain); denom19 <= denom18; end - always @ (numer_temp_1_q or denom19 or quo18_q) begin + always @ (*) begin quo19_d[63:2] = quo18_q[63:2]; //quo19_d[1] if (numer_temp_1_q[94:1] >= denom19 ) begin @@ -24211,7 +23891,7 @@ module Sqrt_64b (clk, num_, res); reg [63:0]one; //This is the one that is selected in first expanded loop reg [31:0]one_tmp; - always @ (num) begin + always @ (*) begin //The first for-loop: //all of these will be zero no matter how 'one' is selected. @@ -24352,7 +24032,7 @@ module Sqrt_64b (clk, num_, res); assign res__0 = 64'b0; assign one__0 = one; - always @ (res__0 or op__0 or one__0) begin + always @ (*) begin //i = 0 if (op__0 >= res__0 + one__0) begin @@ -24391,7 +24071,7 @@ module Sqrt_64b (clk, num_, res); one__3_q <= one__3_d; end - always @ (op__3_q or res__3_q or one__3_q) begin + always @ (*) 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; @@ -24439,7 +24119,7 @@ module Sqrt_64b (clk, num_, res); res__7_q <= res__7_d; end - always @ (op__7_q or res__7_q or one__7_q) begin + always @ (*) 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; @@ -24487,7 +24167,7 @@ module Sqrt_64b (clk, num_, res); res__11_q <= res__11_d; end - always @ (op__11_q or res__11_q or one__11_q) begin + always @ (*) 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; @@ -24535,7 +24215,7 @@ module Sqrt_64b (clk, num_, res); res__15_q <= res__15_d; end - always @ (op__15_q or res__15_q or one__15_q) begin + always @ (*) 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; @@ -24573,7 +24253,7 @@ module Sqrt_64b (clk, num_, res); res__18_q <= res__18_d; end - always @ (op__18_q or res__18_q or one__18_q) begin + always @ (*) 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; @@ -24611,7 +24291,7 @@ module Sqrt_64b (clk, num_, res); res__21_q <= res__21_d; end - always @ (op__21_q or res__21_q or one__21_q) begin + always @ (*) 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; @@ -24649,7 +24329,7 @@ module Sqrt_64b (clk, num_, res); res__24_q <= res__24_d; end - always @ (op__24_q or res__24_q or one__24_q) begin + always @ (*) 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; @@ -24687,7 +24367,7 @@ module Sqrt_64b (clk, num_, res); res__27_q <= res__27_d; end - always @ (op__27_q or res__27_q or one__27_q) begin + always @ (*) 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; diff --git a/vtr_flow/benchmarks/verilog/mkDelayWorker32B.v b/vtr_flow/benchmarks/verilog/mkDelayWorker32B.v index b5dc810431e..b20a866394f 100644 --- a/vtr_flow/benchmarks/verilog/mkDelayWorker32B.v +++ b/vtr_flow/benchmarks/verilog/mkDelayWorker32B.v @@ -310,16 +310,6 @@ module mkDelayWorker32B(wciS0_Clk, wire dummy7; wire dummy8; wire dummy9; - assign dummy1 = &mesgRF_memory__DOB; - assign dummy2 = &mesgWF_memory__DOB; - assign dummy3 = &metaRF__D_OUT; - assign dummy4 = &metaWF__D_OUT ; - assign dummy5 = &wci_reqF__D_OUT; - assign dummy6 = &wide16Fa__D_OUT; - assign dummy7 = &wide16Fb__D_OUT; - assign dummy8 = &wmemi_respF__D_OUT; - assign dummy9 = &wsiS_reqFifo__D_OUT; - wire prevent_hang_wire; assign prevent_hang_wire = dummy1 & dummy2 & dummy3 & dummy4 &dummy5 & dummy6 & dummy7 & dummy8 & dummy9; assign prevent_hanging_nodes = prevent_hang_wire; @@ -1331,6 +1321,16 @@ module mkDelayWorker32B(wciS0_Clk, metaWF_RDY_deq__58_AND_NOT_wrtSerPos_11_EQ_3_1_ETC___d365, wci_cState_9_EQ_2_0_AND_dlyCtrl_4_BITS_3_TO_0__ETC___d397; + assign dummy1 = &mesgRF_memory__DOB; + assign dummy2 = &mesgWF_memory__DOB; + assign dummy3 = &metaRF__D_OUT; + assign dummy4 = &metaWF__D_OUT ; + assign dummy5 = &wci_reqF__D_OUT; + assign dummy6 = &wide16Fa__D_OUT; + assign dummy7 = &wide16Fb__D_OUT; + assign dummy8 = &wmemi_respF__D_OUT; + assign dummy9 = &wsiS_reqFifo__D_OUT; + // action method wciS0_mCmd assign CAN_FIRE_wciS0_mCmd = 1'b1 ; assign WILL_FIRE_wciS0_mCmd = 1'b1 ; @@ -1503,9 +1503,9 @@ module mkDelayWorker32B(wciS0_Clk, wire [255:0] dp_out_not_used1; wire [255:0] dp_out_not_used2; - defparam dpram1.ADDR_WIDTH = 10; - defparam dpram1.DATA_WIDTH = 256; - dual_port_ram dpram1 ( + dual_port_ram + # (.ADDR_WIDTH(10), .DATA_WIDTH(256)) + dpram1 ( .clk(wciS0_Clk), .addr1(mesgRF_memory__ADDRA), .addr2(mesgRF_memory__ADDRB), @@ -1523,9 +1523,9 @@ wire [255:0] dp_out_not_used2; // .DATA_WIDTH(32'b1056), // .MEMSIZE(11'b1024)) mesgWF_memory( - defparam dpram2.ADDR_WIDTH = 10; - defparam dpram2.DATA_WIDTH = 256; - dual_port_ram dpram2 ( + dual_port_ram + # (.ADDR_WIDTH(10), .DATA_WIDTH(256)) + dpram2 ( .clk(wciS0_Clk), .addr1(mesgWF_memory__ADDRA), .addr2(mesgWF_memory__ADDRB), @@ -2190,10 +2190,7 @@ wire [255:0] dp_out_not_used2; assign MUX_wmemi_reqF_x_wire__wset_1__VAL_1 = { 4'b0101, addr__h20994, 12'b01 } ; assign MUX_wmemi_reqF_x_wire__wset_1__VAL_2 = { 4'b0011, addr__h21166, 12'b01 } ; assign MUX_wci_respF_x_wire__wset_1__VAL_1 = { 2'b01, x_data__h21804 } ; - always@(WILL_FIRE_RL_wci_cfrd or - MUX_wci_respF_x_wire__wset_1__VAL_1 or - WILL_FIRE_RL_wci_ctl_op_complete or - MUX_wci_respF_x_wire__wset_1__VAL_2 or WILL_FIRE_RL_wci_cfwr) + always@(*) begin case (1'b1) // synopsys parallel_case WILL_FIRE_RL_wci_cfrd: @@ -2266,9 +2263,7 @@ wire [255:0] dp_out_not_used2; WILL_FIRE_RL_wmemi_reqF_incCtr && wmemi_reqF_c_r == 2'b00 ; assign MUX_wmemi_reqF_q_1__write_1__SEL_2 = WILL_FIRE_RL_wmemi_reqF_incCtr && wmemi_reqF_c_r == 2'b01 ; - always@(wrtSerPos or - IF_wrtSerPos_11_EQ_2_14_THEN_0x0_ELSE_mesgWF_w_ETC___d354 or - x1__h19969 or x1__h19978) + always@(*) begin case (wrtSerPos) 2'b00: MUX_wide16Fa__enq_1__VAL_2 = x1__h19969; @@ -2277,9 +2272,7 @@ wire [255:0] dp_out_not_used2; IF_wrtSerPos_11_EQ_2_14_THEN_0x0_ELSE_mesgWF_w_ETC___d354; endcase end - always@(wrtSerPos or - IF_wrtSerPos_11_EQ_2_14_THEN_0x0_ELSE_metaWF_f_ETC___d377 or - x1__h20492 or x1__h20501) + always@(*) begin case (wrtSerPos) 2'b00: MUX_wide16Fa__enq_1__VAL_1 = x1__h20492; @@ -2557,9 +2550,7 @@ wire [255:0] dp_out_not_used2; // wsiS_reqFifo__D_OUT[39:8] != 32'b00000000000000000000000000000000) ; // register impreciseBurst - always@(WILL_FIRE_RL_wmwt_doAbort or - MUX_impreciseBurst__write_1__SEL_2 or - WILL_FIRE_RL_wmwt_messageFinalize) + always@(*) case (1'b1) WILL_FIRE_RL_wmwt_doAbort: impreciseBurst__D_IN = 1'b0; MUX_impreciseBurst__write_1__SEL_2: impreciseBurst__D_IN = 1'b1; @@ -2572,11 +2563,7 @@ wire [255:0] dp_out_not_used2; WILL_FIRE_RL_wmwt_doAbort ; // register mesgLength - always@(WILL_FIRE_RL_wmwt_doAbort or - MUX_mesgLength__write_1__SEL_2 or - MUX_mesgLength__write_1__VAL_2 or - MUX_endOfMessage__write_1__SEL_1 or - MUX_mesgLength__write_1__VAL_3 or WILL_FIRE_RL_wmwt_messageFinalize) + always@(*) case (1'b1) WILL_FIRE_RL_wmwt_doAbort: mesgLength__D_IN = 15'b010101010101010; MUX_mesgLength__write_1__SEL_2: @@ -2650,9 +2637,7 @@ wire [255:0] dp_out_not_used2; WILL_FIRE_RL_wmwt_messageFinalize || WILL_FIRE_RL_wci_ctrl_IsO ; // register opcode - always@(WILL_FIRE_RL_wmwt_doAbort or - WILL_FIRE_RL_wmwt_mesgBegin or - MUX_opcode__write_1__VAL_2 or WILL_FIRE_RL_wmwt_messageFinalize) + always@(*) case (1'b1) WILL_FIRE_RL_wmwt_doAbort: opcode__D_IN = 9'b010101010; WILL_FIRE_RL_wmwt_mesgBegin: opcode__D_IN = MUX_opcode__write_1__VAL_2; @@ -2664,8 +2649,7 @@ wire [255:0] dp_out_not_used2; WILL_FIRE_RL_wmwt_mesgBegin ; // register preciseBurst - always@(WILL_FIRE_RL_wmwt_doAbort or - MUX_mesgLength__write_1__SEL_2 or WILL_FIRE_RL_wmwt_messageFinalize) + always@(*) case (1'b1) WILL_FIRE_RL_wmwt_doAbort: preciseBurst__D_IN = 1'b0; MUX_mesgLength__write_1__SEL_2: preciseBurst__D_IN = 1'b1; @@ -2733,10 +2717,7 @@ wire [255:0] dp_out_not_used2; assign rdSerUnroll__EN = MUX_rdSerEmpty__write_1__PSEL_1 ; // register rdSyncWord - always@(WILL_FIRE_RL_rdSer_body or - MUX_rdSyncWord__write_1__VAL_1 or - WILL_FIRE_RL_rdSer_begin or - MUX_rdSyncWord__write_1__VAL_2 or WILL_FIRE_RL_rdSer_sync) + always@(*) begin case (1'b1) // synopsys parallel_case WILL_FIRE_RL_rdSer_body: @@ -2756,9 +2737,7 @@ wire [255:0] dp_out_not_used2; assign readMeta__EN = CAN_FIRE_RL_wmrd_mesgBegin ; // register readyToPush - always@(WILL_FIRE_RL_wmwt_doAbort or - MUX_impreciseBurst__write_1__SEL_2 or - MUX_endOfMessage__write_1__SEL_1) + always@(*) case (1'b1) WILL_FIRE_RL_wmwt_doAbort: readyToPush__D_IN = 1'b0; MUX_impreciseBurst__write_1__SEL_2: readyToPush__D_IN = 1'b1; @@ -2821,7 +2800,7 @@ wire [255:0] dp_out_not_used2; MUX_wci_illegalEdge__write_1__SEL_2 ; // register wci_nState - always@(wci_reqF__D_OUT) + always@(*) begin case (wci_reqF__D_OUT[36:34]) 3'b000: wci_nState__D_IN = 3'b001; @@ -2860,11 +2839,7 @@ wire [255:0] dp_out_not_used2; WILL_FIRE_RL_wci_respF_both || WILL_FIRE_RL_wci_respF_incCtr && wci_respF_c_r == 2'b00 || WILL_FIRE_RL_wci_respF_decCtr ; - always@(WILL_FIRE_RL_wci_respF_both or - MUX_wci_respF_q_0__write_1__VAL_1 or - MUX_wci_respF_q_0__write_1__SEL_2 or - MUX_wci_respF_q_0__write_1__VAL_2 or - WILL_FIRE_RL_wci_respF_decCtr or wci_respF_q_1) + always@(*) begin case (1'b1) // synopsys parallel_case WILL_FIRE_RL_wci_respF_both: @@ -2881,10 +2856,7 @@ wire [255:0] dp_out_not_used2; WILL_FIRE_RL_wci_respF_both || WILL_FIRE_RL_wci_respF_incCtr && wci_respF_c_r == 2'b01 || WILL_FIRE_RL_wci_respF_decCtr ; - always@(WILL_FIRE_RL_wci_respF_both or - MUX_wci_respF_q_1__write_1__VAL_1 or - MUX_wci_respF_q_1__write_1__SEL_2 or - MUX_wci_respF_q_0__write_1__VAL_2 or WILL_FIRE_RL_wci_respF_decCtr) + always@(*) begin case (1'b1) // synopsys parallel_case WILL_FIRE_RL_wci_respF_both: @@ -2929,11 +2901,7 @@ wire [255:0] dp_out_not_used2; WILL_FIRE_RL_wmemi_dhF_decCtr || WILL_FIRE_RL_wmemi_dhF_incCtr ; // register wmemi_dhF_q_0 - always@(WILL_FIRE_RL_wmemi_dhF_both or - MUX_wmemi_dhF_q_0__write_1__VAL_1 or - MUX_wmemi_dhF_q_0__write_1__SEL_2 or - MUX_wmemi_dhF_q_0__write_1__VAL_2 or - WILL_FIRE_RL_wmemi_dhF_decCtr or wmemi_dhF_q_1) + always@(*) begin case (1'b1) // synopsys parallel_case WILL_FIRE_RL_wmemi_dhF_both: @@ -2951,10 +2919,7 @@ wire [255:0] dp_out_not_used2; WILL_FIRE_RL_wmemi_dhF_decCtr ; // register wmemi_dhF_q_1 - always@(WILL_FIRE_RL_wmemi_dhF_both or - MUX_wmemi_dhF_q_1__write_1__VAL_1 or - MUX_wmemi_dhF_q_1__write_1__SEL_2 or - MUX_wmemi_dhF_q_0__write_1__VAL_2 or WILL_FIRE_RL_wmemi_dhF_decCtr) + always@(*) begin case (1'b1) // synopsys parallel_case WILL_FIRE_RL_wmemi_dhF_both: @@ -2994,11 +2959,7 @@ wire [255:0] dp_out_not_used2; WILL_FIRE_RL_wmemi_reqF_incCtr ; // register wmemi_reqF_q_0 - always@(WILL_FIRE_RL_wmemi_reqF_both or - MUX_wmemi_reqF_q_0__write_1__VAL_1 or - MUX_wmemi_reqF_q_0__write_1__SEL_2 or - MUX_wmemi_reqF_q_0__write_1__VAL_2 or - WILL_FIRE_RL_wmemi_reqF_decCtr or wmemi_reqF_q_1) + always@(*) begin case (1'b1) // synopsys parallel_case WILL_FIRE_RL_wmemi_reqF_both: @@ -3016,10 +2977,7 @@ wire [255:0] dp_out_not_used2; WILL_FIRE_RL_wmemi_reqF_decCtr ; // register wmemi_reqF_q_1 - always@(WILL_FIRE_RL_wmemi_reqF_both or - MUX_wmemi_reqF_q_1__write_1__VAL_1 or - MUX_wmemi_reqF_q_1__write_1__SEL_2 or - MUX_wmemi_reqF_q_0__write_1__VAL_2 or WILL_FIRE_RL_wmemi_reqF_decCtr) + always@(*) begin case (1'b1) // synopsys parallel_case WILL_FIRE_RL_wmemi_reqF_both: @@ -3166,11 +3124,7 @@ wire [255:0] dp_out_not_used2; WILL_FIRE_RL_wsiM_reqFifo_both || WILL_FIRE_RL_wsiM_reqFifo_incCtr && wsiM_reqFifo_c_r == 2'b00 || WILL_FIRE_RL_wsiM_reqFifo_decCtr ; - always@(WILL_FIRE_RL_wsiM_reqFifo_both or - MUX_wsiM_reqFifo_q_0__write_1__VAL_1 or - MUX_wsiM_reqFifo_q_0__write_1__SEL_2 or - MUX_wsiM_reqFifo_q_0__write_1__VAL_2 or - WILL_FIRE_RL_wsiM_reqFifo_decCtr or wsiM_reqFifo_q_1) + always@(*) begin case (1'b1) // synopsys parallel_case WILL_FIRE_RL_wsiM_reqFifo_both: @@ -3189,11 +3143,7 @@ wire [255:0] dp_out_not_used2; WILL_FIRE_RL_wsiM_reqFifo_both || WILL_FIRE_RL_wsiM_reqFifo_incCtr && wsiM_reqFifo_c_r == 2'b01 || WILL_FIRE_RL_wsiM_reqFifo_decCtr ; - always@(WILL_FIRE_RL_wsiM_reqFifo_both or - MUX_wsiM_reqFifo_q_1__write_1__VAL_1 or - MUX_wsiM_reqFifo_q_1__write_1__SEL_2 or - MUX_wsiM_reqFifo_q_0__write_1__VAL_2 or - WILL_FIRE_RL_wsiM_reqFifo_decCtr) + always@(*) begin case (1'b1) // synopsys parallel_case WILL_FIRE_RL_wsiM_reqFifo_both: @@ -3341,8 +3291,7 @@ wire [255:0] dp_out_not_used2; CAN_FIRE_RL_wrtSer_body ? x__h15126[9:0] : mesgWF_rRdPtr[9:0] ; // submodule metaRF - always@(rdSerPos or - rdSerStage_3 or wide16Fb__D_OUT or rdSerStage_1 or rdSerStage_2) + always@(*) begin case (rdSerPos) 2'b00: metaRF__D_IN = wide16Fb__D_OUT[31:0]; @@ -3470,20 +3419,7 @@ wire [255:0] dp_out_not_used2; assign x_burstLength__h22437 = (readMeta[23:0] == 24'b000000000000000000000000) ? 12'b01 : readMeta[16:5] ; assign x_byteEn__h22438 = (readMeta[23:0] == 24'b000000000000000000000000) ? 32'b00000000000000000000000000000000 : 32'hFFFFFFFF ; - always@(wci_reqF__D_OUT or - dlyCtrl or - dlyHoldoffBytes or - dlyHoldoffCycles or - mesgWtCount or - mesgRdCount or - bytesWritten or - rdat__h21847 or - wsiS_extStatusW__wget or - wsiM_extStatusW__wget or - wmemiWrReq or - wmemiRdReq or - wmemiRdResp or - rdat__h22030 or rdat__h22038 or rdat__h22046 or rdat__h22054) + always@(*) begin case (wci_reqF__D_OUT[51:32]) 20'h0: x_data__h21804 = dlyCtrl; @@ -3510,7 +3446,7 @@ wire [255:0] dp_out_not_used2; default: x_data__h21804 = 32'b00000000000000000000000000000000; endcase end - always@(wrtSerPos or wide16Fa__FULL_N) + always@(*) begin case (wrtSerPos) // 2'b00, 2'b01, 2'b10 @@ -3528,7 +3464,7 @@ wire [255:0] dp_out_not_used2; wrtSerPos != 2'b11 || wide16Fa__FULL_N; endcase end - always@(wrtSerPos) + always@(*) begin case (wrtSerPos) // 2'b00, 2'b01, 2'b10, 2'b11: CASE_wrtSerPos_0b1_0_1_1_1_2_1_3_0b1__q1 = 1'b1; @@ -4137,9 +4073,9 @@ reg full_n_r, empty_n_r; // manually assign assign junk_in = 32'b00000000000000000000000000000000; -defparam ram1.ADDR_WIDTH = `awa; -defparam ram1.DATA_WIDTH = `dwa; -dual_port_ram ram1( +dual_port_ram + # (.ADDR_WIDTH(`awa), .DATA_WIDTH(`dwa)) +ram1( .clk( clk ), .addr1( rp ), .addr2( wp ), @@ -4537,9 +4473,9 @@ reg full_n_r, empty_n_r; // manually assign assign junk_in = 32'b00000000000000000000000000000000; -defparam ram1.ADDR_WIDTH = `awa; -defparam ram1.DATA_WIDTH = `dwa; -dual_port_ram ram1( +dual_port_ram + # (.ADDR_WIDTH(`awa), .DATA_WIDTH(`dwa)) +ram1( .clk( clk ), .addr1( rp ), .addr2( wp ), @@ -4941,9 +4877,9 @@ reg full_n_r, empty_n_r; // manually assign assign junk_in = 128'b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000; -defparam ram1.ADDR_WIDTH = `awa; -defparam ram1.DATA_WIDTH = `dwc; -dual_port_ram ram1( +dual_port_ram + # (.ADDR_WIDTH(`awa), .DATA_WIDTH(`dwc)) +ram1( .clk( clk ), .addr1( rp ), .addr2( wp ), @@ -5345,9 +5281,9 @@ reg full_n_r, empty_n_r; // manually assign assign junk_in = 128'b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000; -defparam ram1.ADDR_WIDTH = `awa; -defparam ram1.DATA_WIDTH = `dwd; -dual_port_ram ram1( +dual_port_ram + # (.ADDR_WIDTH(`awa), .DATA_WIDTH(`dwd)) +ram1( .clk( clk ), .addr1( rp ), .addr2( wp ), @@ -5693,9 +5629,6 @@ parameter n=32; parameter max_size = 1<> Can't find translated component 'spram'. Module name may not match spram21x4 spraminst(we, texinfo, CfgData[20:0], clk); assign we = ((CfgData_Ready == 1'b1) & (CfgAddr == 4'b1110)) ? 1'b1 : 1'b0 ; @@ -438,24 +439,26 @@ module rgconfigmemory (CfgAddr, CfgData, CfgData_Ready, want_CfgData, origx, ori end else begin - state <= next_state ; - origx <= temp_origx; - origy <= temp_origy; - origz <= temp_origz; - m11 <= temp_m11; - m12 <= temp_m12; - m13 <= temp_m13; - m21 <= temp_m21; - m22 <= temp_m22; - m23 <= temp_m23; - m31 <= temp_m31; - m32 <= temp_m32; - m33 <= temp_m33; - bkcolour <= bkcolour; + state <= next_state ; + if (CfgData_Ready) begin + if (CfgAddr == 4'b0001) origx <= CfgData; + if (CfgAddr == 4'b0010) origy <= CfgData; + if (CfgAddr == 4'b0011) origz <= CfgData; + if (CfgAddr == 4'b0100) m11 <= CfgData[15:0]; + if (CfgAddr == 4'b0101) m12 <= CfgData[15:0]; + if (CfgAddr == 4'b0110) m13 <= CfgData[15:0]; + if (CfgAddr == 4'b0111) m21 <= CfgData[15:0]; + if (CfgAddr == 4'b1000) m22 <= CfgData[15:0]; + if (CfgAddr == 4'b1001) m23 <= CfgData[15:0]; + if (CfgAddr == 4'b1010) m31 <= CfgData[15:0]; + if (CfgAddr == 4'b1011) m32 <= CfgData[15:0]; + if (CfgAddr == 4'b1100) m33 <= CfgData[15:0]; + if (CfgAddr == 4'b1101) bkcolour <= CfgData[20:0]; + end end end - always @(state or CfgData_Ready) + always @(*) begin case (state) 0 : @@ -470,59 +473,6 @@ module rgconfigmemory (CfgAddr, CfgData, CfgData_Ready, want_CfgData, origx, ori begin next_state = 0 ; end - - if ((CfgData_Ready == 1'b1) && (CfgAddr == 4'b0001)) - begin - temp_origx = CfgData ; - end - else if ((CfgData_Ready == 1'b1) && (CfgAddr == 4'b0010)) - begin - temp_origy = CfgData ; - end - else if ((CfgData_Ready == 1'b1) && (CfgAddr == 4'b0011)) - begin - temp_origz = CfgData ; - end - else if ((CfgData_Ready == 1'b1) && (CfgAddr == 4'b0100)) - begin - temp_m11 = CfgData[15:0] ; - end - else if ((CfgData_Ready == 1'b1) && (CfgAddr == 4'b0101)) - begin - temp_m12 = CfgData[15:0] ; - end - else if ((CfgData_Ready == 1'b1) && (CfgAddr == 4'b0110)) - begin - temp_m13 = CfgData[15:0] ; - end - else if ((CfgData_Ready == 1'b1) && (CfgAddr == 4'b0111)) - begin - temp_m21 = CfgData[15:0] ; - end - else if ((CfgData_Ready == 1'b1) && (CfgAddr == 4'b1000)) - begin - temp_m22 = CfgData[15:0] ; - end - else if ((CfgData_Ready == 1'b1) && (CfgAddr == 4'b1001)) - begin - temp_m23 = CfgData[15:0] ; - end - else if ((CfgData_Ready == 1'b1) && (CfgAddr == 4'b1010)) - begin - temp_m31 = CfgData[15:0] ; - end - else if ((CfgData_Ready == 1'b1) && (CfgAddr == 4'b1011)) - begin - temp_m32 = CfgData[15:0] ; - end - else if ((CfgData_Ready == 1'b1) && (CfgAddr == 4'b1100)) - begin - temp_m33 = CfgData[15:0] ; - end - else if ((CfgData_Ready == 1'b1) && (CfgAddr == 4'b1101)) - begin - temp_bkcolour = CfgData[20:0] ; - end end 1 : begin @@ -566,9 +516,9 @@ module rgconfigmemory (CfgAddr, CfgData, CfgData_Ready, want_CfgData, origx, ori end //changed to odin 2 ram specifications -defparam new_ram.ADDR_WIDTH = 8; -defparam new_ram.DATA_WIDTH = 21; -single_port_ram new_ram( +single_port_ram + # (.ADDR_WIDTH(8), .DATA_WIDTH(21)) +new_ram( .clk (clk), .we(we), .data(datain), @@ -700,345 +650,452 @@ module rgsramcontroller (want_addr, addr_ready, addrin, want_data, data_ready, d fbdata <= tm3_sram_data_in ; fbdatavalid <= fbdatavalidl ; -fbdatavalidl <= temp_fbdatavalidl; -texelready <= temp_texelready; -shadedataready <= temp_shadedataready; -fcount <= temp_fcount; -faddress <= temp_faddress; -waddress <= temp_waddress; + fbdatavalidl <= temp_fbdatavalidl; + texelready <= temp_texelready; + shadedataready <= temp_shadedataready; + fcount <= temp_fcount; + faddress <= temp_faddress; + waddress <= temp_waddress; end end - always @(state or addr_ready or data_ready or waddress or datain or wantDir or - want_read or wantwriteback or writebackdata or writebackaddr or - fcount or fbpage or faddress or fbnextscanline or triID or wantshadedata or - wanttexel or texeladdr) - - begin - case (state) + always @(*) + begin + case (state) 0 : - begin - tm3_sram_we = 8'b11111111 ; - tm3_sram_oe = 2'b01 ; - tm3_sram_adsp = 1'b0 ; - tm3_sram_data_xhdl0 = 0; - tm3_sram_addr = {1'b0, waddress} ; - want_addr = 1'b1 ; - want_data = 1'b1 ; - read_ready = 1'b1 ; - dirReady = 1'b0 ; - writebackack = 1'b0 ; - if (addr_ready == 1'b1) - begin - next_state = 1 ; - end - else if (want_read == 1'b1) - begin - next_state = 2 ; - end - else if (data_ready == 1'b1) - begin - - next_state = 3 ; - end - else if (wantDir == 1'b1) - begin - next_state = 5 ; - end - else if (wantwriteback == 1'b1) - begin - next_state = 6 ; - end - else if (wantshadedata == 1'b1) - begin - - next_state = 9 ; - end - else if (wanttexel == 1'b1) - begin - next_state = 10 ; - end - else if (fcount != 0) - begin - next_state = 7 ; - end - else if (fbnextscanline == 1'b1) - begin - - next_state = 8 ; - end - else - begin - next_state = 0 ; - end - temp_fbdatavalidl = 1'b0 ; - temp_shadedataready = 1'b0 ; - temp_texelready = 1'b0 ; - if (addr_ready == 1'b1) - - begin - temp_waddress = addrin ; - end - - end + begin + tm3_sram_we = 8'b11111111 ; + tm3_sram_oe = 2'b01 ; + tm3_sram_adsp = 1'b0 ; + tm3_sram_data_xhdl0 = 0; + tm3_sram_addr = {1'b0, waddress} ; + want_addr = 1'b1 ; + want_data = 1'b1 ; + read_ready = 1'b1 ; + dirReady = 1'b0 ; + writebackack = 1'b0 ; + + temp_fbdatavalidl = 1'b0 ; + temp_shadedataready = 1'b0 ; + temp_texelready = 1'b0 ; + if (addr_ready == 1'b1) + + begin + temp_waddress = addrin ; + end + else begin + temp_waddress = waddress; + end + temp_faddress = faddress; + temp_fcount = fcount; + + end 1 : - begin - tm3_sram_we = 8'b11111111 ; - tm3_sram_oe = 2'b01 ; - tm3_sram_adsp = 1'b0 ; - tm3_sram_data_xhdl0 = 0; - tm3_sram_addr = {1'b0, waddress} ; - want_data = 1'b1 ; - read_ready = 1'b1 ; - dirReady = 1'b0 ; - writebackack = 1'b0 ; - want_addr = 1'b0 ; - if (addr_ready == 1'b0) - begin - next_state = 0 ; - - end - else - begin - next_state = 1 ; - end - end + begin + tm3_sram_we = 8'b11111111 ; + tm3_sram_oe = 2'b01 ; + tm3_sram_adsp = 1'b0 ; + tm3_sram_data_xhdl0 = 0; + tm3_sram_addr = {1'b0, waddress} ; + want_addr = 1'b0 ; + want_data = 1'b1 ; + read_ready = 1'b1 ; + dirReady = 1'b0 ; + writebackack = 1'b0 ; + + temp_fbdatavalidl = fbdatavalidl; + temp_shadedataready = shadedataready; + temp_texelready = texelready; + temp_waddress = waddress; + temp_faddress = faddress; + temp_fcount = fcount; + + end 2 : - begin - tm3_sram_we = 8'b11111111 ; - tm3_sram_oe = 2'b01 ; - tm3_sram_adsp = 1'b0 ; - tm3_sram_data_xhdl0 = 0; - tm3_sram_addr = {1'b0, waddress} ; - want_addr = 1'b1 ; - want_data = 1'b1 ; - dirReady = 1'b0 ; - writebackack = 1'b0 ; - - read_ready = 1'b0 ; - if (want_read == 1'b0) - begin - next_state = 0 ; - end - else - begin - next_state = 2 ; - end - - temp_fbdatavalidl = 1'b0 ; - temp_shadedataready = 1'b0 ; - temp_texelready = 1'b0 ; - if (want_read == 1'b0) - begin - - temp_waddress = waddress + 1 ; - end - - end + begin + tm3_sram_we = 8'b11111111 ; + tm3_sram_oe = 2'b01 ; + tm3_sram_adsp = 1'b0 ; + tm3_sram_data_xhdl0 = 0; + tm3_sram_addr = {1'b0, waddress} ; + want_addr = 1'b1 ; + want_data = 1'b1 ; + read_ready = 1'b0 ; + dirReady = 1'b0 ; + writebackack = 1'b0 ; + + temp_fbdatavalidl = 1'b0 ; + temp_shadedataready = 1'b0 ; + temp_texelready = 1'b0 ; + if (want_read == 1'b0) + begin + + temp_waddress = waddress + 1 ; + end + else begin + temp_waddress = waddress; + end + temp_faddress = faddress; + temp_fcount = fcount; + end 3 : - begin - tm3_sram_addr = {1'b0, waddress} ; - want_addr = 1'b1 ; - read_ready = 1'b1 ; - dirReady = 1'b0 ; - writebackack = 1'b0 ; - tm3_sram_data_xhdl0 = datain ; - tm3_sram_we = 8'b00000000 ; - - - tm3_sram_oe = 2'b11 ; - tm3_sram_adsp = 1'b0 ; - want_data = 1'b0 ; - next_state = 4 ; - - temp_fbdatavalidl = 1'b0 ; - temp_shadedataready = 1'b0 ; - temp_texelready = 1'b0 ; - temp_waddress = waddress + 1 ; - - end + begin + tm3_sram_we = 8'b00000000 ; + tm3_sram_oe = 2'b11 ; + tm3_sram_adsp = 1'b0 ; + tm3_sram_data_xhdl0 = datain ; + tm3_sram_addr = {1'b0, waddress} ; + want_addr = 1'b1 ; + want_data = 1'b0 ; + read_ready = 1'b1 ; + dirReady = 1'b0 ; + writebackack = 1'b0 ; + + temp_fbdatavalidl = 1'b0 ; + temp_shadedataready = 1'b0 ; + temp_texelready = 1'b0 ; + temp_waddress = waddress + 1 ; + temp_faddress = faddress; + temp_fcount = fcount; + + end 4 : - begin - tm3_sram_we = 8'b11111111 ; - tm3_sram_oe = 2'b01 ; - tm3_sram_adsp = 1'b0 ; - tm3_sram_data_xhdl0 = 0; - tm3_sram_addr = {1'b0, waddress} ; - want_addr = 1'b1 ; - read_ready = 1'b1 ; - dirReady = 1'b0 ; - writebackack = 1'b0 ; - if (data_ready == 1'b0) - begin - - next_state = 0 ; - end - else - begin - next_state = 4 ; - end - want_data = 1'b0 ; - end + begin + tm3_sram_we = 8'b11111111 ; + tm3_sram_oe = 2'b01 ; + tm3_sram_adsp = 1'b0 ; + tm3_sram_data_xhdl0 = 0; + tm3_sram_addr = {1'b0, waddress} ; + want_addr = 1'b1 ; + want_data = 1'b0 ; + read_ready = 1'b1 ; + dirReady = 1'b0 ; + writebackack = 1'b0 ; + + temp_fbdatavalidl = fbdatavalidl; + temp_shadedataready = shadedataready; + temp_texelready = texelready; + temp_waddress = waddress; + temp_faddress = faddress; + temp_fcount = fcount; + end 5 : - begin - tm3_sram_we = 8'b11111111 ; - tm3_sram_oe = 2'b01 ; - tm3_sram_adsp = 1'b0 ; - tm3_sram_data_xhdl0 = 0; - tm3_sram_addr = {1'b0, waddress} ; - want_addr = 1'b1 ; - want_data = 1'b1 ; - read_ready = 1'b1 ; - writebackack = 1'b0 ; - - dirReady = 1'b1 ; - if (wantDir == 1'b0) - begin - next_state = 0 ; - - end - else - begin - next_state = 5 ; - end - - temp_fbdatavalidl = 1'b0 ; - temp_shadedataready = 1'b0 ; - temp_texelready = 1'b0 ; - if (wantDir == 1'b0) - begin - temp_waddress = waddress + 1 ; - end - - end + begin + tm3_sram_we = 8'b11111111 ; + tm3_sram_oe = 2'b01 ; + tm3_sram_adsp = 1'b0 ; + tm3_sram_data_xhdl0 = 0; + tm3_sram_addr = {1'b0, waddress} ; + want_addr = 1'b1 ; + want_data = 1'b1 ; + read_ready = 1'b1 ; + dirReady = 1'b1 ; + writebackack = 1'b0 ; + + temp_fbdatavalidl = 1'b0 ; + temp_shadedataready = 1'b0 ; + temp_texelready = 1'b0 ; + if (wantDir == 1'b0) + begin + temp_waddress = waddress + 1 ; + end + else begin + temp_waddress = waddress; + end + temp_faddress = faddress; + temp_fcount = fcount; + end 6 : - begin - want_addr = 1'b1 ; - want_data = 1'b1 ; - read_ready = 1'b1 ; - dirReady = 1'b0 ; - - tm3_sram_data_xhdl0 = writebackdata ; - tm3_sram_we = 8'b00000000 ; - tm3_sram_oe = 2'b11 ; - tm3_sram_adsp = 1'b0 ; - tm3_sram_addr = {1'b0, writebackaddr} ; - writebackack = 1'b1 ; - next_state = 0 ; - end + begin + tm3_sram_we = 8'b00000000 ; + tm3_sram_oe = 2'b11 ; + tm3_sram_adsp = 1'b0 ; + tm3_sram_data_xhdl0 = writebackdata ; + tm3_sram_addr = {1'b0, writebackaddr} ; + want_addr = 1'b1 ; + want_data = 1'b1 ; + read_ready = 1'b1 ; + dirReady = 1'b0 ; + writebackack = 1'b1 ; + + temp_fbdatavalidl = fbdatavalidl; + temp_shadedataready = shadedataready; + temp_texelready = texelready; + temp_waddress = waddress; + temp_faddress = faddress; + temp_fcount = fcount; + end 7 : - begin - tm3_sram_we = 8'b11111111 ; - tm3_sram_oe = 2'b01 ; - tm3_sram_adsp = 1'b0 ; - tm3_sram_data_xhdl0 = 0; - want_addr = 1'b1 ; - want_data = 1'b1 ; - read_ready = 1'b1 ; - dirReady = 1'b0 ; - writebackack = 1'b0 ; - tm3_sram_addr = {3'b011, fbpage, faddress} ; - if ((fcount == 1) | (addr_ready == 1'b1) | (want_read == 1'b1) | (data_ready == 1'b1) | (wantDir == 1'b1) | (wantwriteback == 1'b1)) - begin - next_state = 0 ; - - end - else - begin - next_state = 7 ; - end + begin + tm3_sram_we = 8'b11111111 ; + tm3_sram_oe = 2'b01 ; + tm3_sram_adsp = 1'b0 ; + tm3_sram_data_xhdl0 = 0; + tm3_sram_addr = {3'b011, fbpage, faddress} ; + want_addr = 1'b1 ; + want_data = 1'b1 ; + read_ready = 1'b1 ; + dirReady = 1'b0 ; + writebackack = 1'b0 ; + + temp_shadedataready = 1'b0 ; + temp_texelready = 1'b0 ; + temp_fbdatavalidl = 1'b1 ; + temp_waddress = waddress; + if (fcount != 0) + begin + temp_faddress = faddress + 1 ; + temp_fcount = fcount - 1 ; + end + else begin + temp_faddress = faddress; + temp_fcount = fcount; + end + end + 8 : + begin + tm3_sram_we = 8'b11111111 ; + tm3_sram_oe = 2'b01 ; + tm3_sram_adsp = 1'b0 ; + tm3_sram_data_xhdl0 = 0; + tm3_sram_addr = {1'b0, waddress} ; + want_addr = 1'b1 ; + want_data = 1'b1 ; + read_ready = 1'b1 ; + dirReady = 1'b0 ; + writebackack = 1'b0 ; + + temp_fbdatavalidl = 1'b0 ; + temp_shadedataready = 1'b0 ; + temp_texelready = 1'b0 ; + temp_waddress = waddress; + temp_fcount = 7'b1101011 ; + if (faddress == 25680) + begin + temp_faddress = 0; + end + else begin + temp_faddress = faddress; + end + end + 9 : + begin + tm3_sram_we = 8'b11111111 ; + tm3_sram_oe = 2'b01 ; + tm3_sram_adsp = 1'b0 ; + tm3_sram_data_xhdl0 = 0; + want_addr = 1'b1 ; + want_data = 1'b1 ; + read_ready = 1'b1 ; + dirReady = 1'b0 ; + writebackack = 1'b0 ; + tm3_sram_addr = {3'b010, triID} ; + + temp_fbdatavalidl = 1'b0 ; + temp_texelready = 1'b0 ; + temp_shadedataready = 1'b1 ; + temp_waddress = waddress; + temp_faddress = faddress; + temp_fcount = fcount; + end + 10 : + begin + tm3_sram_we = 8'b11111111 ; + tm3_sram_oe = 2'b01 ; + tm3_sram_adsp = 1'b0 ; + tm3_sram_data_xhdl0 = 0; + want_addr = 1'b1 ; + want_data = 1'b1 ; + read_ready = 1'b1 ; + dirReady = 1'b0 ; + writebackack = 1'b0 ; + tm3_sram_addr = {1'b0, texeladdr} ; + + temp_fbdatavalidl = 1'b0 ; + temp_shadedataready = 1'b0 ; + temp_texelready = 1'b1 ; + temp_waddress = waddress; + temp_faddress = faddress; + temp_fcount = fcount; + end + // Create a default case to avoid inferring latches. + // for temp_* variables we can hold previous state to + // preserve design intent. For variables that are + // not re-registered, we must make a choice about + // what the default behavior should be that will + // potentially change functionality vs. previous revision + // for previously undefined state decoding. Make a best + // effort based on how the signals appear to idle when + // not being used by the FSM by matching state 0 + default: begin + tm3_sram_we = 8'b11111111 ; + tm3_sram_oe = 2'b01 ; + tm3_sram_adsp = 1'b0 ; + tm3_sram_data_xhdl0 = 0; + tm3_sram_addr = {1'b0, waddress} ; + want_addr = 1'b1 ; + want_data = 1'b1 ; + read_ready = 1'b1 ; + dirReady = 1'b0 ; + writebackack = 1'b0 ; + + temp_fbdatavalidl = fbdatavalidl; + temp_shadedataready = shadedataready; + temp_texelready = texelready; + temp_waddress = waddress; + temp_faddress = faddress; + temp_fcount = fcount; + end + endcase + end - temp_shadedataready = 1'b0 ; - temp_texelready = 1'b0 ; - temp_fbdatavalidl = 1'b1 ; - if (fcount != 0) - begin - temp_faddress = faddress + 1 ; - temp_fcount = fcount - 1 ; - end + always @(*) + begin + case (state) + 0 : + begin + if (addr_ready == 1'b1) + begin + next_state = 1 ; + end + else if (want_read == 1'b1) + begin + next_state = 2 ; + end + else if (data_ready == 1'b1) + begin + + next_state = 3 ; + end + else if (wantDir == 1'b1) + begin + next_state = 5 ; + end + else if (wantwriteback == 1'b1) + begin + next_state = 6 ; + end + else if (wantshadedata == 1'b1) + begin + + next_state = 9 ; + end + else if (wanttexel == 1'b1) + begin + next_state = 10 ; + end + else if (fcount != 0) + begin + next_state = 7 ; + end + else if (fbnextscanline == 1'b1) + begin + + next_state = 8 ; + end + else + begin + next_state = 0 ; + end + end + 1 : + begin + if (addr_ready == 1'b0) + begin + next_state = 0 ; + + end + else + begin + next_state = 1 ; + end + end + 2 : + begin + if (want_read == 1'b0) + begin + next_state = 0 ; + end + else + begin + next_state = 2 ; + end + end + 3 : + begin + next_state = 4 ; + end + 4 : + begin + if (data_ready == 1'b0) + begin + + next_state = 0 ; + end + else + begin + next_state = 4 ; + end + end + 5 : + begin + if (wantDir == 1'b0) + begin + next_state = 0 ; + + end + else + begin + next_state = 5 ; + end + end + 6 : + begin + next_state = 0 ; + end - end + 7 : + begin + if ((fcount == 1) | (addr_ready == 1'b1) | (want_read == 1'b1) | (data_ready == 1'b1) | (wantDir == 1'b1) | (wantwriteback == 1'b1)) + begin + next_state = 0 ; + + end + else + begin + next_state = 7 ; + end + end 8 : - begin - tm3_sram_we = 8'b11111111 ; - tm3_sram_oe = 2'b01 ; - tm3_sram_adsp = 1'b0 ; - tm3_sram_data_xhdl0 = 0; - tm3_sram_addr = {1'b0, waddress} ; - want_addr = 1'b1 ; - want_data = 1'b1 ; - read_ready = 1'b1 ; - dirReady = 1'b0 ; - writebackack = 1'b0 ; - next_state = 7 ; - - temp_fbdatavalidl = 1'b0 ; - temp_shadedataready = 1'b0 ; - temp_texelready = 1'b0 ; - temp_fcount = 7'b1101011 ; - if (faddress == 25680) - begin - temp_faddress = 0; - end - end + begin + next_state = 7 ; + end 9 : - begin - tm3_sram_we = 8'b11111111 ; - tm3_sram_oe = 2'b01 ; - tm3_sram_adsp = 1'b0 ; - tm3_sram_data_xhdl0 = 0; - want_addr = 1'b1 ; - want_data = 1'b1 ; - read_ready = 1'b1 ; - dirReady = 1'b0 ; - writebackack = 1'b0 ; - tm3_sram_addr = {3'b010, triID} ; - next_state = 0 ; - - temp_fbdatavalidl = 1'b0 ; - temp_texelready = 1'b0 ; - temp_shadedataready = 1'b1 ; - end + begin + next_state = 0 ; + end 10 : - begin - tm3_sram_we = 8'b11111111 ; - tm3_sram_oe = 2'b01 ; - tm3_sram_adsp = 1'b0 ; - tm3_sram_data_xhdl0 = 0; - want_addr = 1'b1 ; - want_data = 1'b1 ; - read_ready = 1'b1 ; - dirReady = 1'b0 ; - writebackack = 1'b0 ; - tm3_sram_addr = {1'b0, texeladdr} ; - next_state = 0 ; + begin + next_state = 0 ; + end + // Add a default to avoid inferring latches. Preserve original functionality + // by holding previous state, even if this is suboptimal for real circuits: + default: begin + next_state = state; + end + endcase + end - temp_fbdatavalidl = 1'b0 ; - temp_shadedataready = 1'b0 ; - temp_texelready = 1'b1 ; - end - endcase - end endmodule - - - - - - - - - - - module raysend (as, ack, addr, dir, origx, origy, origz, rgData, rgAddr, rgWE, rgAddrValid, rgDone, globalreset, clk, statepeek); + module raysend (as, ack, addr, dir, origx, origy, origz, rgData, rgAddr, rgWE, rgAddrValid, rgDone, globalreset, clk, statepeek); input as; output ack; @@ -1098,7 +1155,7 @@ rgAddr <= temp_rgAddr; end end - always @(state or ack or as or rgDone) + always @(*) begin case (state) @@ -1120,11 +1177,24 @@ rgAddr <= temp_rgAddr; temp_rgWE = 3'b001 ; temp_rgAddrValid = 1'b1 ; temp_rgAddr = addr ; - end + end + //need to hold previous value explicitly to prevent + //latch inference + else begin + temp_rgData = rgData; + temp_rgWE = rgWE; + temp_rgAddrValid = rgAddrValid; + temp_rgAddr = addr ; + end if (as == 1'b0 & ack == 1'b1) begin temp_ack = 1'b0 ; - end + end + //need to hold previous value explicitly to prevent + //latch inference + else begin + temp_ack = ack; + end end 1 : @@ -1139,11 +1209,22 @@ rgAddr <= temp_rgAddr; end statepeek = 3'b010 ; + //need to hold previous value explicitly to prevent + //latch inference + temp_rgData = rgData; + temp_rgWE = rgWE; + temp_rgAddr = rgAddr; + if (rgDone == 1'b1) begin temp_rgAddrValid = 1'b0 ; end - + //need to hold previous value explicitly to prevent + //latch inference + else begin + temp_rgAddrValid = rgAddrValid; + end + temp_ack = ack; end 2 : begin @@ -1157,11 +1238,21 @@ rgAddr <= temp_rgAddr; end statepeek = 3'b011 ; + //need to hold previous value explicitly to prevent + //latch inference + temp_rgData = rgData; + temp_rgWE = rgWE; + temp_rgAddr = rgAddr; + if (rgDone == 1'b1) begin temp_rgAddrValid = 1'b0 ; end + else begin + temp_rgAddrValid = rgAddrValid; + end + temp_ack = ack; end 3 : begin @@ -1175,11 +1266,21 @@ rgAddr <= temp_rgAddr; end statepeek = 3'b100 ; + //need to hold previous value explicitly to prevent + //latch inference + temp_rgData = rgData; + temp_rgWE = rgWE; + temp_rgAddr = rgAddr; + if (rgDone == 1'b1) begin temp_rgAddrValid = 1'b0 ; end + else begin + temp_rgAddrValid = rgAddrValid; + end + temp_ack = ack; end 4 : begin @@ -1193,10 +1294,20 @@ rgAddr <= temp_rgAddr; end statepeek = 3'b101 ; + //need to hold previous value explicitly to prevent + //latch inference + temp_rgData = rgData; + temp_rgWE = rgWE; + temp_rgAddr = rgAddr; + if (rgDone == 1'b1) begin temp_rgAddrValid = 1'b0 ; end + else begin + temp_rgAddrValid = rgAddrValid; + end + temp_ack = ack; end 5 : @@ -1211,11 +1322,20 @@ rgAddr <= temp_rgAddr; end statepeek = 3'b110 ; + //need to hold previous value explicitly to prevent + //latch inference + temp_rgData = rgData; + temp_rgWE = rgWE; + temp_rgAddr = rgAddr; + temp_ack = 1'b1 ; if (rgDone == 1'b1) begin temp_rgAddrValid = 1'b0 ; end + else begin + temp_rgAddrValid = rgAddrValid; + end end @@ -1223,6 +1343,11 @@ rgAddr <= temp_rgAddr; begin next_state = 2 ; + //need to hold previous value explicitly to prevent + //latch inference + temp_rgAddr = rgAddr; + temp_ack = ack; + temp_rgData = {4'b0000, origy} ; temp_rgWE = 3'b010 ; temp_rgAddrValid = 1'b1 ; @@ -1232,6 +1357,11 @@ rgAddr <= temp_rgAddr; begin next_state = 3 ; + //need to hold previous value explicitly to prevent + //latch inference + temp_rgAddr = rgAddr; + temp_ack = ack; + temp_rgData = {4'b0000, origz} ; temp_rgWE = 3'b011 ; temp_rgAddrValid = 1'b1 ; @@ -1240,6 +1370,11 @@ rgAddr <= temp_rgAddr; begin next_state = 4 ; + //need to hold previous value explicitly to prevent + //latch inference + temp_rgAddr = rgAddr; + temp_ack = ack; + temp_rgData = {dir[31:16], dir[47:32]} ; temp_rgWE = 3'b100 ; temp_rgAddrValid = 1'b1 ; @@ -1248,19 +1383,32 @@ rgAddr <= temp_rgAddr; begin next_state = 5 ; + //need to hold previous value explicitly to prevent + //latch inference + temp_rgAddr = rgAddr; + temp_ack = ack; + temp_rgData = {16'b0000000000000000, dir[15:0]} ; temp_rgWE = 3'b101 ; temp_rgAddrValid = 1'b1 ; end + // The original FSM did not have a default case. We want to add one + // to prevent modern synthesis tools from inferring latches in this + // logic. To preserve as much of the original behavior as possible, + // hold the previous flop values whereever possible, even though + // this will cause the FSM to lock up if it gets in an illegal state + default: begin + temp_rgData = rgData; + temp_rgWE = rgWE; + temp_rgAddrValid = rgAddrValid; + temp_rgAddr = rgAddr; + temp_ack = ack; + next_state = state; + end endcase end - endmodule - - - - - - + endmodule + module raygencont (go, initcount, busyout, cycles, nextaddr, nas0, nas1, page, dirReady, wantDir, dirIn, addrIn, as, addr, ack, dir, raygroup0, raygroupvalid0, busy0, raygroup1, raygroupvalid1, busy1, globalreset, clk, statepeek); @@ -1359,8 +1507,25 @@ rgAddr <= temp_rgAddr; addr[1:0] <= temp_addr[1:0]; state <= next_state ; - dir <= temp_dir; - cycles <= temp_cycles; + // dir is only loaded if state == 1, make enable logic here rather + // than risk latch inference below + if (state == 1) begin + dir <= dirIn; + end + + // This matches original logic for all explicitly defined + // states; with a simulation testbench, we could show whether + // there are bugs introduced by allowing this to increment + // during states that are not part of the next state logic + if (state == 0) begin + if (go) begin + cycles <= 0; + end + end + else begin + cycles <= cycles + 1; + end + loaded <= temp_loaded; groupID <= temp_groupID; count <= temp_count; @@ -1378,250 +1543,361 @@ rgAddr <= temp_rgAddr; assign nas0 = temp_nas0; assign nas1 = temp_nas1; - always @(state or go or ack or busy or dirReady or addr or count or loaded) - begin - case (state) + always @(*) + begin + case (state) 0 : - begin - as = 1'b0 ; - wantDir = 1'b0 ; - if (go == 1'b1) + begin + temp_addr[1:0] = 2'b00 ; + temp_loaded = 2'b00 ; + temp_groupID = 2'b00 ; + temp_count = initcount ; + temp_active = 1'b0 ; + temp_raygroupvalid0 = raygroupvalid0; + temp_raygroupvalid1 = raygroupvalid1; + end + 1 : + begin + if (dirReady == 1'b1 & addr[1:0] == 2'b10) + begin + if (active == 1'b0) begin - next_state = 1 ; + temp_loaded[0] = 1'b1 ; + temp_loaded[1] = loaded[1]; end - else + else begin - next_state = 0 ; + temp_loaded[1] = 1'b1 ; + temp_loaded[0] = loaded[0]; end - statepeek = 3'b001 ; - temp_busyout = 1'b0; - temp_nas0 = 1'b0; - temp_nas1 = 1'b0; - - - if (go == 1'b1) - begin - temp_cycles = 0; - end - temp_addr[1:0] = 2'b00 ; - temp_loaded = 2'b00 ; - temp_groupID = 2'b00 ; - temp_count = initcount ; + end + else begin + temp_loaded = loaded; + end + + temp_addr[1:0] = addr; + temp_groupID = groupID; + temp_count = count; + temp_active = active; + temp_raygroupvalid0 = raygroupvalid0; + temp_raygroupvalid1 = raygroupvalid1; + end + 2 : + begin + if ((ack == 1'b1) & (addr[1:0] != 2'b10)) + begin + temp_active = active; + temp_addr[1:0] = addr[1:0] + 2'b01 ; + temp_raygroupvalid0 = raygroupvalid0; + temp_raygroupvalid1 = raygroupvalid1; + end + else if ((ack == 1'b1) & addr[1:0] == 2'b10) + begin + if ((loaded[0]) == 1'b1 & (busy[0]) == 1'b0) + begin + temp_active = active; + temp_addr[1:0] = addr; + temp_raygroupvalid0 = 1'b1 ; + temp_raygroupvalid1 = raygroupvalid1; + end + else if ((loaded[1]) == 1'b1 & (busy[1]) == 1'b0) + begin + temp_active = active; + temp_addr[1:0] = addr; + temp_raygroupvalid0 = raygroupvalid0; + temp_raygroupvalid1 = 1'b1 ; + end + else if ((loaded[0]) == 1'b0) + begin temp_active = 1'b0 ; - - end - 1 : - begin - as = dirReady ; - wantDir = 1'b1 ; - if (dirReady == 1'b1) + temp_addr[1:0] = 2'b00 ; + temp_raygroupvalid0 = raygroupvalid0; + temp_raygroupvalid1 = raygroupvalid1; + end + else if ((loaded[1]) == 1'b0) begin - next_state = 2 ; + temp_active = 1'b1 ; + temp_addr[1:0] = 2'b00 ; + temp_raygroupvalid0 = raygroupvalid0; + temp_raygroupvalid1 = raygroupvalid1; end - else + else begin - next_state = 1 ; - end - statepeek = 3'b010 ; - temp_busyout = 1'b1; - if (addr[1:0] == 2'b00 & dirReady == 1'b1 & active == 1'b0) - begin - temp_nas0 = 1'b1; - temp_nas1 = 1'b1; - end - - temp_dir = dirIn ; - if (dirReady == 1'b1 & addr[1:0] == 2'b10) - begin - if (active == 1'b0) - begin - temp_loaded[0] = 1'b1 ; - end - else - begin - temp_loaded[1] = 1'b1 ; - end - end - temp_cycles = cycles + 1 ; - - - end - 2 : - begin - wantDir = 1'b0 ; - as = 1'b1 ; - if ((ack == 1'b1) & (addr[1:0] != 2'b10)) + temp_addr[1:0] = addr; + temp_active = active; + temp_raygroupvalid0 = raygroupvalid0; + temp_raygroupvalid1 = raygroupvalid1; + end + end + else begin + temp_addr[1:0] = addr; + temp_active = active; + temp_raygroupvalid0 = raygroupvalid0; + temp_raygroupvalid1 = raygroupvalid1; + end + temp_loaded = loaded; + temp_groupID = groupID; + temp_count = count; + end + 3 : + begin + if ((busy[0]) == 1'b1) + begin + temp_groupID = {groupID[1], ~groupID[0]} ; + temp_raygroupvalid0 = 1'b0 ; + temp_count = count - 1 ; + if ((loaded[1]) == 1'b1 & (busy[1]) == 1'b0) + begin + temp_raygroupvalid1 = 1'b1 ; + temp_active = active; + + end + else if ((loaded[1]) == 1'b0) begin - next_state = 1 ; + temp_raygroupvalid1 = raygroupvalid1 ; + temp_active = 1'b1 ; end - else if (ack == 1'b1) + else begin - if ((loaded[0]) == 1'b1 & (busy[0]) == 1'b0) - begin - next_state = 3 ; - end - else if ((loaded[1]) == 1'b1 & (busy[1]) == 1'b0) - begin - next_state = 4 ; - end - else if (loaded != 2'b11) - begin + temp_raygroupvalid1 = raygroupvalid1 ; + temp_active = 1'b0 ; + end + end + else begin + temp_active = active; + temp_raygroupvalid0 = raygroupvalid0; + temp_raygroupvalid1 = raygroupvalid1; + temp_count = count; + temp_groupID = groupID; + end + temp_loaded = {loaded[1], 1'b0} ; + temp_addr[1:0] = 2'b00 ; + end + 4 : + begin + if ((busy[1]) == 1'b1) + begin + temp_groupID = {~groupID[1], groupID[0]} ; + temp_raygroupvalid1 = 1'b0 ; + temp_count = count - 1 ; + if ((loaded[0]) == 1'b1 & (busy[0]) == 1'b0) + begin + temp_raygroupvalid0 = 1'b1 ; + temp_active = active; + end - next_state = 1 ; - end - else - begin - next_state = 2 ; - end + else if ((loaded[0]) == 1'b0) + begin + temp_raygroupvalid0 = raygroupvalid0 ; + temp_active = 1'b0 ; end - else + else begin - next_state = 2 ; + temp_raygroupvalid0 = raygroupvalid0; + temp_active = 1'b1 ; end - statepeek = 3'b011 ; - temp_busyout = 1'b1; - temp_nas0 = 1'b0; - temp_nas1 = 1'b0; - - if ((ack == 1'b1) & (addr[1:0] != 2'b10)) - begin - temp_addr[1:0] = addr[1:0] + 2'b01 ; - end - else if ((ack == 1'b1) & addr[1:0] == 2'b10) - begin - if ((loaded[0]) == 1'b1 & (busy[0]) == 1'b0) - begin - temp_raygroupvalid0 = 1'b1 ; - end - else if ((loaded[1]) == 1'b1 & (busy[1]) == 1'b0) - begin - - temp_raygroupvalid1 = 1'b1 ; - end - else if ((loaded[0]) == 1'b0) - begin - temp_active = 1'b0 ; - temp_addr[1:0] = 2'b00 ; - end - else if ((loaded[1]) == 1'b0) - begin - temp_active = 1'b1 ; - temp_addr[1:0] = 2'b00 ; - end - end + end + else begin + temp_active = active; + temp_raygroupvalid0 = raygroupvalid0; + temp_raygroupvalid1 = raygroupvalid1; + temp_count = count; + temp_groupID = groupID; + end + temp_loaded = {1'b0, loaded[0]} ; + temp_addr[1:0] = 2'b00 ; + end + // add a default to prevent latch inference. preserve original + // design intent and hold previous state + default: begin + temp_addr[1:0] = addr; + temp_loaded = loaded; + temp_groupID = groupID; + temp_count = count; + temp_active = active; + temp_raygroupvalid0 = raygroupvalid0; + temp_raygroupvalid1 = raygroupvalid1; + end + endcase + end + + always @(*) + begin + case (state) + 0 : + begin + as = 1'b0 ; + wantDir = 1'b0 ; + statepeek = 3'b001 ; + temp_busyout = 1'b0; + temp_nas0 = 1'b0; + temp_nas1 = 1'b0; + end + 1 : + begin + as = dirReady ; + wantDir = 1'b1 ; + statepeek = 3'b010 ; + temp_busyout = 1'b1; + if (addr[1:0] == 2'b00 & dirReady == 1'b1 & active == 1'b0) + begin + temp_nas0 = 1'b1; + temp_nas1 = 1'b1; + end + else begin + temp_nas0 = 1'b0; + temp_nas1 = 1'b0; + end + end + 2 : + begin + wantDir = 1'b0 ; + as = 1'b1 ; + statepeek = 3'b011 ; + temp_busyout = 1'b1; + temp_nas0 = 1'b0; + temp_nas1 = 1'b0; + end + // Create a default to avoid latch inference + // use the pattern from other states to make + // choices about how to calculate each value. + // this preserves design intent for defined states + // while not guaranteeing identical behavior for + // undefined states. + // Note that states 3 and 4 were previously explicitly + // defined for these signals but match the defaults. + default: begin + //***NOTE: The original behavior of "wantDir" and "as" is almost + // certainly buggy, as the values are undefined for + // states 3-7 and so behavior during states 3-4 (which are + // actually used unlike states 5-7) would have + // held as = 1 and wantDir = 0 regardless of whether + // that was the desired effect or not. It seems unlikely + // that latched behavior was envisioned, as the clock + // for these latches is not well defined. We thus have + // to guess as to the desired value for these bits in + // states 3, 4, (and 5-7 for that matter). The next state + // logic bounces around, so there's not much insight + // to be gleaned from it. The safe choice appears to be + // to set them both inactive even though that definitely + // changes the behavior of the circuit by allowing as to + // clear on transitions from states 2-3 or 2-4. + wantDir = 1'b0; + as = 1'b0; + statepeek = state + 1 ; + temp_busyout = 1'b1; + temp_nas0 = 1'b0; + temp_nas1 = 1'b0; + end + endcase + end - temp_cycles = cycles + 1 ; - end - 4 : - begin - if ((busy[1]) == 1'b0) + always @(*) + begin + case (state) + 0 : + begin + if (go == 1'b1) + begin + next_state = 1 ; + end + else + begin + next_state = 0 ; + end + end + 1 : + begin + if (dirReady == 1'b1) + begin + next_state = 2 ; + end + else + begin + next_state = 1 ; + end + end + 2 : + begin + if ((ack == 1'b1) & (addr[1:0] != 2'b10)) + begin + next_state = 1 ; + end + else if (ack == 1'b1) + begin + if ((loaded[0]) == 1'b1 & (busy[0]) == 1'b0) begin - next_state = 4 ; + next_state = 3 ; end - else if ((loaded[0]) == 1'b1 & (busy[0]) == 1'b0) + else if ((loaded[1]) == 1'b1 & (busy[1]) == 1'b0) begin - next_state = 3 ; + next_state = 4 ; end - else if (count > 0) + else if (loaded != 2'b11) begin - next_state = 1 ; end - else + else begin - next_state = 0 ; + next_state = 2 ; end - statepeek = 3'b101 ; - temp_busyout = 1'b1; - temp_nas0 = 1'b0; - temp_nas1 = 1'b0; - - if ((busy[1]) == 1'b1) - begin - temp_groupID[1] = ~groupID[1] ; - temp_raygroupvalid1 = 1'b0 ; - temp_count = count - 1 ; - if ((loaded[0]) == 1'b1 & (busy[0]) == 1'b0) - begin - temp_raygroupvalid0 = 1'b1 ; - end - - else if ((loaded[0]) == 1'b0) - begin - temp_active = 1'b0 ; - end - else - begin - temp_active = 1'b1 ; - end - end - temp_loaded[1] = 1'b0 ; - temp_addr[1:0] = 2'b00 ; - - temp_cycles = cycles + 1 ; - end + end + else + begin + next_state = 2 ; + end + end 3 : - begin - if ((busy[0]) == 1'b0) - begin - next_state = 3 ; - - end - else if ((loaded[1]) == 1'b1 & (busy[1]) == 1'b0) - begin - next_state = 4 ; - end - else if (count > 0) - begin - next_state = 1 ; - end - else - begin - next_state = 0 ; - - end - statepeek = 3'b100 ; - temp_busyout = 1'b1; - temp_nas0 = 1'b0; - temp_nas1 = 1'b0; - - if ((busy[0]) == 1'b1) - begin - temp_groupID[0] = ~groupID[0] ; - temp_raygroupvalid0 = 1'b0 ; - temp_count = count - 1 ; - if ((loaded[1]) == 1'b1 & (busy[1]) == 1'b0) - begin - temp_raygroupvalid1 = 1'b1 ; - - end - else if ((loaded[1]) == 1'b0) - begin - temp_active = 1'b1 ; - end - else - begin - temp_active = 1'b0 ; - end - end - temp_loaded[0] = 1'b0 ; - temp_addr[1:0] = 2'b00 ; - - - temp_cycles = cycles + 1 ; - end - endcase + begin + if ((busy[0]) == 1'b0) + begin + next_state = 3 ; + end + else if ((loaded[1]) == 1'b1 & (busy[1]) == 1'b0) + begin + next_state = 4 ; + end + else if (count > 0) + begin + next_state = 1 ; + end + else + begin + next_state = 0 ; + end + end + 4 : + begin + if ((busy[1]) == 1'b0) + begin + next_state = 4 ; + end + else if ((loaded[0]) == 1'b1 & (busy[0]) == 1'b0) + begin + next_state = 3 ; + end + else if (count > 0) + begin + + next_state = 1 ; + end + else + begin + next_state = 0 ; + end + end + // add a default to prevent latch inference + // hold previous state to preserve original design + // intent, even if this is not optimal behavior + default: + next_state = state; + endcase end + endmodule - - - - - - - module resultrecieve (valid01, valid10, id01a, id01b, id01c, id10a, id10b, id10c, hit01a, hit01b, hit01c, hit10a, hit10b, hit10c, u01a, u01b, u01c, v01a, v01b, v01c, u10a, u10b, u10c, v10a, v10b, v10c, rgResultData, rgResultReady, rgResultSource, globalreset, clk); + module resultrecieve (valid01, valid10, id01a, id01b, id01c, id10a, id10b, id10c, hit01a, hit01b, hit01c, hit10a, hit10b, hit10c, u01a, u01b, u01c, v01a, v01b, v01c, u10a, u10b, u10c, v10a, v10b, v10c, rgResultData, rgResultReady, rgResultSource, globalreset, clk); output valid01; reg valid01; @@ -1685,34 +1961,6 @@ rgAddr <= temp_rgAddr; input globalreset; input clk; - reg temp_valid01; - reg temp_valid10; - reg[15:0] temp_id01a; - reg[15:0] temp_id01b; - reg[15:0] temp_id01c; - reg[15:0] temp_id10a; - reg[15:0] temp_id10b; - reg[15:0] temp_id10c; - reg temp_hit01a; - reg temp_hit01b; - reg temp_hit01c; - reg temp_hit10a; - reg temp_hit10b; - reg temp_hit10c; - reg[7:0] temp_u01a; - reg[7:0] temp_u01b; - reg[7:0] temp_u01c; - reg[7:0] temp_v01a; - reg[7:0] temp_v01b; - reg[7:0] temp_v01c; - reg[7:0] temp_u10a; - reg[7:0] temp_u10b; - reg[7:0] temp_u10c; - reg[7:0] temp_v10a; - reg[7:0] temp_v10b; - reg[7:0] temp_v10c; - - reg[2:0] state; reg[2:0] next_state; @@ -1754,34 +2002,68 @@ rgAddr <= temp_rgAddr; begin state <= next_state ; -valid01 <= temp_valid01; -valid10 <= temp_valid10; -id01a <= temp_id01a; -id01b <= temp_id01b; -id01c <= temp_id01c; -hit01a <= temp_hit01a; -hit01b <= temp_hit01b; -hit01c <= temp_hit01c; -u01a <= temp_u01a; -u01b <= temp_u01b; -u01c <= temp_u01c; -u10a <= temp_u10a; -u10b <= temp_u10b; -u10c <= temp_u10c; -v01a <= temp_v01a; -v01b <= temp_v01b; -v01c <= temp_v01c; -v10a <= temp_v10a; -v10b <= temp_v10b; -v10c <= temp_v10c; -hit10a <= temp_hit10a; -hit10b <= temp_hit10b; -hit10c <= temp_hit10c; + if (state == 0) begin + if (rgResultReady == 1'b1 & rgResultSource == 2'b01) + begin + id01a <= rgResultData[31:16] ; + id01b <= rgResultData[15:0] ; + end + else if (rgResultReady == 1'b1 & rgResultSource == 2'b10) + begin + id10a <= rgResultData[31:16] ; + id10b <= rgResultData[15:0] ; + end + end + if (state == 1) begin + id01c <= rgResultData[15:0]; + hit01a <= rgResultData[18]; + hit01b <= rgResultData[17]; + hit01c <= rgResultData[16]; + end + if (state == 2) begin + u01a <= rgResultData[23:16]; + u01b <= rgResultData[15:8]; + u01c <= rgResultData[7:0]; + end + if (state == 5) begin + u10a <= rgResultData[23:16]; + u10b <= rgResultData[15:8]; + u10c <= rgResultData[7:0]; + end + if (state == 3) begin + v01a <= rgResultData[23:16]; + v01b <= rgResultData[15:8]; + v01c <= rgResultData[7:0]; + end + if (state == 6) begin + v10a <= rgResultData[23:16]; + v10b <= rgResultData[15:8]; + v10c <= rgResultData[7:0]; + end + if (state == 4) begin + id10c <= rgResultData[15:0] ; + hit10a <= rgResultData[18]; + hit10b <= rgResultData[17]; + hit10c <= rgResultData[16]; + end + + if (state == 3) begin + valid01 <= 1'b1; + end + else begin + valid01 <= 1'b0; + end + if (state == 6) begin + valid10 <= 1'b1; + end + else begin + valid10 <= 1'b0; + end end end - always @(state or rgResultReady or rgResultSource) + always @(*) begin case (state) 0 : @@ -1792,117 +2074,46 @@ hit10c <= temp_hit10c; end else if (rgResultReady == 1'b1 & rgResultSource == 2'b10) begin - next_state = 4 ; end else begin next_state = 0 ; end - - - temp_valid01 = 1'b0 ; - temp_valid10 = 1'b0 ; - if (rgResultReady == 1'b1 & rgResultSource == 2'b01) - begin - temp_id01a = rgResultData[31:16] ; - temp_id01b = rgResultData[15:0] ; - end - else if (rgResultReady == 1'b1 & rgResultSource == 2'b10) - begin - temp_id10a = rgResultData[31:16] ; - temp_id10b = rgResultData[15:0] ; - end - end 1 : begin next_state = 2 ; - - temp_valid01 = 1'b0 ; - temp_valid10 = 1'b0 ; - temp_id01c = rgResultData[15:0] ; - temp_hit01a = rgResultData[18] ; - temp_hit01b = rgResultData[17] ; - temp_hit01c = rgResultData[16] ; - end 2 : begin next_state = 3 ; - - temp_valid01 = 1'b0 ; - temp_valid10 = 1'b0 ; - temp_u01a = rgResultData[23:16] ; - temp_u01b = rgResultData[15:8] ; - temp_u01c = rgResultData[7:0] ; - end 3 : begin next_state = 0 ; - - temp_valid10 = 1'b0 ; - temp_v01a = rgResultData[23:16] ; - temp_v01b = rgResultData[15:8] ; - temp_v01c = rgResultData[7:0] ; - temp_valid01 = 1'b1 ; - end 4 : begin next_state = 5 ; - - temp_valid01 = 1'b0 ; - temp_valid10 = 1'b0 ; - temp_id10c = rgResultData[15:0] ; - - temp_hit10a = rgResultData[18] ; - temp_hit10b = rgResultData[17] ; - temp_hit10c = rgResultData[16] ; - end 5 : begin next_state = 6 ; - - temp_valid01 = 1'b0 ; - temp_valid10 = 1'b0 ; - temp_u10a = rgResultData[23:16] ; - temp_u10b = rgResultData[15:8] ; - temp_u10c = rgResultData[7:0] ; - end 6 : begin next_state = 0 ; - - temp_valid01 = 1'b0 ; - temp_v10a = rgResultData[23:16] ; - temp_v10b = rgResultData[15:8] ; - temp_v10c = rgResultData[7:0] ; - temp_valid10 = 1'b1 ; - end + default: begin + next_state = state; + end endcase end - endmodule - - - - - - - - - - - - - + endmodule module resultwriter (valid01, valid10, id01a, id01b, id01c, id10a, id10b, id10c, hit01a, hit01b, hit01c, hit10a, hit10b, hit10c, u01a, u01b, u01c, v01a, v01b, v01c, u10a, u10b, u10c, v10a, v10b, v10c, addr, as01, as10, bkcolour, shadedata, triID, wantshadedata, shadedataready, texinfo, texaddr, texeladdr, texel, wanttexel, texelready, dataout, addrout, write, ack, globalreset, clk); @@ -2000,7 +2211,6 @@ hit10c <= temp_hit10c; reg temp_pending01; reg temp_pending10; - reg temp_process01; reg temp_texmap; reg[20:0] temp_texinfol; reg[20:0] temp_shadedataa; @@ -2040,601 +2250,592 @@ hit10c <= temp_hit10c; begin state <= next_state ; -process01 <= temp_process01; -pending01 <= temp_pending01; -pending10 <= temp_pending10; -texmap <= temp_texmap; -texinfol <= temp_texinfol; -shadedataa <= temp_shadedataa; -shadedatab <= temp_shadedatab; -shadedatac <= temp_shadedatac; - - dataout <= {1'b0, - shadedataa[20], - shadedataa[19], - shadedataa[18], - shadedataa[17], - shadedataa[16], - shadedataa[15], - shadedataa[14], - shadedataa[13], - shadedataa[12], - shadedataa[11], - shadedataa[10], - shadedataa[9], - shadedataa[8], - shadedataa[7], - shadedataa[6], - shadedataa[5], - shadedataa[4], - shadedataa[3], - shadedataa[2], - shadedataa[1], - shadedataa[0], - shadedatab[20], - shadedatab[19], - shadedatab[18], - shadedatab[17], - shadedatab[16], - shadedatab[15], - shadedatab[14], - shadedatab[13], - shadedatab[12], - shadedatab[11], - shadedatab[10], - shadedatab[9], - shadedatab[8], - shadedatab[7], - shadedatab[6], - shadedatab[5], - shadedatab[4], - shadedatab[3], - shadedatab[2], - shadedatab[1], - shadedatab[0], - shadedatac[20], - shadedatac[19], - shadedatac[18], - shadedatac[17], - shadedatac[16], - shadedatac[15], - shadedatac[14], - shadedatac[13], - shadedatac[12], - shadedatac[11], - shadedatac[10], - shadedatac[9], - shadedatac[8], - shadedatac[7], - shadedatac[6], - shadedatac[5], - shadedatac[4], - shadedatac[3], - shadedatac[2], - shadedatac[1], - shadedatac[0]} ; + if (state == 0) begin + process01 <= pending01; + end + + pending01 <= temp_pending01; + pending10 <= temp_pending10; + texmap <= temp_texmap; + texinfol <= temp_texinfol; + shadedataa <= temp_shadedataa; + shadedatab <= temp_shadedatab; + shadedatac <= temp_shadedatac; + + dataout <= {1'b0, shadedataa, shadedatab, shadedatac} ; end // end // PAJ used to be assign, but weird error, so added as register assign dataout = {1'b0, end assign addrout = (process01 == 1'b1) ? addrout01 : addrout10 ; - always @(state or process01 or pending10 or ack or shadedataready or id01a or - id01b or id01c or id10a or id10b or id10c or selectuv or hita or - hitb or hitc or shadedata or pending01 or texmap or texelready) - begin - case (state) + always @(*) + begin + case (state) 0 : - begin - wantshadedata = 1'b0 ; - triID = 0; - selectuv = 0; - lmenable = 1'b0 ; - wanttexel = 1'b0 ; - if (pending01 == 1'b1 | pending10 == 1'b1) - begin - next_state = 2 ; - end - else - - begin - next_state = 0 ; - end - if (valid01 == 1'b1) - begin - temp_pending01 = 1'b1 ; - end - if (valid10 == 1'b1) - begin - temp_pending10 = 1'b1 ; - end - temp_process01 = pending01 ; - - temp_shiften01 = 1'b0; - temp_shiften10 = 1'b0; - temp_write = 1'b0; - end + begin + wantshadedata = 1'b0 ; + triID = 0; + selectuv = 0; + lmenable = 1'b0 ; + wanttexel = 1'b0 ; + end + 1 : + begin + wantshadedata = 1'b0 ; + triID = 0; + selectuv = 0; + lmenable = 1'b0 ; + wanttexel = 1'b0 ; + end 2 : - begin - lmenable = 1'b0 ; - wanttexel = 1'b0 ; - wantshadedata = 1'b1 ; - selectuv[2] = ~process01 ; - selectuv[1:0] = 2'b00 ; - if (process01 == 1'b1) - begin - triID = id01a ; - - end - else - begin - triID = id10a ; - end - if (shadedataready == 1'b1) - begin - if (hita == 1'b1 & ((shadedata[63]) == 1'b1 | shadedata[63:62] == 2'b01)) - begin - next_state = 3 ; - end - else - - begin - next_state = 4 ; - end - end - else - begin - next_state = 2 ; - end - - if (valid01 == 1'b1) - begin - temp_pending01 = 1'b1 ; - end - if (valid10 == 1'b1) - begin - temp_pending10 = 1'b1 ; - end - - if (hita == 1'b1) - begin - temp_shadedataa = shadedata[20:0] ; - temp_texmap = (~shadedata[63]) & shadedata[62] ; - end - else - begin - temp_shadedataa = bkcolour ; - end - - temp_shiften01 = 1'b0; - temp_shiften10 = 1'b0; - temp_write = 1'b0; - end + begin + lmenable = 1'b0 ; + wanttexel = 1'b0 ; + wantshadedata = 1'b1 ; + selectuv[2] = ~process01 ; + selectuv[1:0] = 2'b00 ; + if (process01 == 1'b1) + begin + triID = id01a ; + + end + else + begin + triID = id10a ; + end + end 3 : - begin - wantshadedata = 1'b0 ; - triID = 0; - lmenable = 1'b0 ; - wanttexel = 1'b0 ; - selectuv[2] = ~process01 ; - - selectuv[1:0] = 2'b00 ; - next_state = 8 ; - - if (valid01 == 1'b1) - begin - temp_pending01 = 1'b1 ; - end - if (valid10 == 1'b1) - begin - temp_pending10 = 1'b1 ; - end - temp_texinfol = texinfo ; - - temp_shiften01 = 1'b0; - temp_shiften10 = 1'b0; - temp_write = 1'b0; - - end + begin + wantshadedata = 1'b0 ; + triID = 0; + lmenable = 1'b0 ; + wanttexel = 1'b0 ; + selectuv[2] = ~process01 ; + selectuv[1:0] = 2'b00 ; + end + 4 : + begin + wantshadedata = 1'b0 ; + lmenable = 1'b0 ; + wanttexel = 1'b0 ; + selectuv[2] = ~process01 ; + selectuv[1:0] = 2'b01 ; + if (process01 == 1'b1) + begin + triID = id01b ; + end + else + begin + triID = id10b ; + end + end + 5 : + begin + lmenable = 1'b0 ; + wanttexel = 1'b0 ; + wantshadedata = 1'b1 ; + selectuv[2] = ~process01 ; + selectuv[1:0] = 2'b10 ; + if (process01 == 1'b1) + begin + triID = id01c ; + end + else + begin + triID = id10c ; + end + end + 6 : + begin + wantshadedata = 1'b0 ; + triID = 0; + lmenable = 1'b0 ; + wanttexel = 1'b0 ; + selectuv[2] = ~process01 ; + selectuv[1:0] = 2'b01 ; + end + 7 : + begin + wantshadedata = 1'b0 ; + triID = 0; + lmenable = 1'b0 ; + wanttexel = 1'b0 ; + selectuv[2] = ~process01 ; + selectuv[1:0] = 2'b10 ; + end 8 : - begin - wantshadedata = 1'b0 ; - triID = 0; - wanttexel = 1'b0 ; - selectuv[2] = ~process01 ; - selectuv[1:0] = 2'b00 ; - lmenable = 1'b1 ; - if (texmap == 1'b1) - begin - - next_state = 11 ; - end - else - begin - next_state = 4 ; - end - - if (valid01 == 1'b1) - begin - temp_pending01 = 1'b1 ; - end - if (valid10 == 1'b1) - begin - temp_pending10 = 1'b1 ; - end - temp_shadedataa[6:0] = blb ; - temp_shadedataa[13:7] = blg ; - temp_shadedataa[20:14] = blr ; - - temp_shiften01 = 1'b0; - temp_shiften10 = 1'b0; - temp_write = 1'b0; - end + begin + wantshadedata = 1'b0 ; + triID = 0; + wanttexel = 1'b0 ; + selectuv[2] = ~process01 ; + selectuv[1:0] = 2'b00 ; + lmenable = 1'b1 ; + end + 9 : + begin + wantshadedata = 1'b0 ; + triID = 0; + wanttexel = 1'b0 ; + selectuv[2] = ~process01 ; + selectuv[1:0] = 2'b01 ; + lmenable = 1'b1 ; + end + 10 : + begin + wantshadedata = 1'b0 ; + triID = 0; + wanttexel = 1'b0 ; + selectuv[2] = ~process01 ; + selectuv[1:0] = 2'b10 ; + lmenable = 1'b1 ; + end 11 : - begin - wantshadedata = 1'b0 ; - triID = 0; - selectuv = 0; - lmenable = 1'b0 ; - - wanttexel = 1'b1 ; - if (texelready == 1'b1) - begin - next_state = 4 ; - end - else - begin - next_state = 11 ; - end - - if (valid01 == 1'b1) - begin - temp_pending01 = 1'b1 ; - end - if (valid10 == 1'b1) - begin - temp_pending10 = 1'b1 ; - end - - temp_shadedataa[6:0] = texelb ; - temp_shadedataa[13:7] = texelg ; - temp_shadedataa[20:14] = texelr ; - - temp_shiften01 = 1'b0; - temp_shiften10 = 1'b0; - temp_write = 1'b0; - end + begin + wantshadedata = 1'b0 ; + triID = 0; + selectuv = 0; + lmenable = 1'b0 ; + wanttexel = 1'b1 ; + end 12 : - begin - wantshadedata = 1'b0 ; - triID = 0; - selectuv = 0; - lmenable = 1'b0 ; - - wanttexel = 1'b1 ; - if (texelready == 1'b1) - begin - next_state = 5 ; - end - else - begin - next_state = 12 ; - end - - if (valid01 == 1'b1) - begin - temp_pending01 = 1'b1 ; - end - if (valid10 == 1'b1) - begin - temp_pending10 = 1'b1 ; - end - temp_shadedatab[6:0] = texelb ; - temp_shadedatab[13:7] = texelg ; - temp_shadedatab[20:14] = texelr ; - - temp_shiften01 = 1'b0; - temp_shiften10 = 1'b0; - temp_write = 1'b0; - end + begin + wantshadedata = 1'b0 ; + triID = 0; + selectuv = 0; + lmenable = 1'b0 ; + wanttexel = 1'b1 ; + end 13 : - begin - wantshadedata = 1'b0 ; - triID = 0; - selectuv = 0; - lmenable = 1'b0 ; - - wanttexel = 1'b1 ; - if (texelready == 1'b1) - begin - next_state = 1 ; - end - else - begin - next_state = 13 ; - end - - if (valid01 == 1'b1) - begin - temp_pending01 = 1'b1 ; - end - if (valid10 == 1'b1) - begin - temp_pending10 = 1'b1 ; - end - - temp_shadedatac[6:0] = texelb ; - temp_shadedatac[13:7] = texelg ; - temp_shadedatac[20:14] = texelr ; + begin + wantshadedata = 1'b0 ; + triID = 0; + selectuv = 0; + lmenable = 1'b0 ; + wanttexel = 1'b1 ; + end + // Default needed to prevent latch inference; set everything to zero + // for undefined state. This represents a change in design intent + // vs. original code, albeit a subtle one + default: begin + wantshadedata = 1'b0 ; + triID = 0; + selectuv = 0; + lmenable = 1'b0 ; + wanttexel = 1'b0 ; + end + endcase + end - end + always @(*) + begin + case (state) + 1 : + begin + if (ack == 1'b1 & process01 == 1'b1) + begin + temp_pending01 = 1'b0 ; + temp_pending10 = pending10; + end + + else if (ack == 1'b1 & process01 == 1'b0) + begin + temp_pending10 = 1'b0 ; + temp_pending01 = pending01; + end + //add an else to hold the register value to prevent + //latch inference while preserving design intent + else begin + temp_pending01 = pending01; + temp_pending10 = pending10; + end + end + // Create a default to avoid latch inference. This has a couple of side effects: + // 1. the two unused states in the FSM will pick up this logic (subtle change + // in design intent) + // 2. We can collapse the case statement to eliminate redundancy -- most + // states calculate these values as follows: + default : + begin + if (valid01 == 1'b1) + begin + temp_pending01 = 1'b1 ; + end + //add an else to hold the register value to prevent + //latch inference while preserving design intent + else begin + temp_pending01 = pending01; + end + + if (valid10 == 1'b1) + begin + temp_pending10 = 1'b1 ; + end + //add an else to hold the register value to prevent + //latch inference while preserving design intent + else begin + temp_pending10 = pending10; + end + end + endcase + end + + always @(*) + begin + case (state) + 1 : + begin + if (process01 == 1'b1 & ack == 1'b1) + begin + temp_shiften01 = 1'b1; + temp_shiften10 = 1'b1; + end + else begin + temp_shiften01 = 1'b0; + temp_shiften10 = 1'b0; + end + temp_write = 1'b1; + end + // Create a default to avoid latch inference. This has a couple of side effects: + // 1. the two unused states in the FSM will pick up this logic (subtle change + // in design intent) + // 2. We can collapse the case statement to eliminate redundancy -- most + // states calculate these values as follows: + default: begin + temp_shiften01 = 1'b0; + temp_shiften10 = 1'b0; + temp_write = 1'b0; + end + endcase + end + + always @(*) + begin + case (state) + 2 : + begin + if (hita == 1'b1) + begin + temp_shadedataa = shadedata[20:0] ; + temp_texmap = (~shadedata[63]) & shadedata[62] ; + end + else + begin + temp_shadedataa = bkcolour ; + temp_texmap = texmap; + end + + temp_shadedatab = shadedatab; + temp_shadedatac = shadedatac; + temp_texinfol = texinfol; + + end + 3 : + begin + temp_texinfol = texinfo ; + + temp_shadedataa = shadedataa; + temp_shadedatab = shadedatab; + temp_shadedatac = shadedatac; + temp_texmap = texmap; + end + 4 : + begin + if (hitb == 1'b1) + begin + temp_shadedatab = shadedata[20:0] ; + temp_texmap = (~shadedata[63]) & shadedata[62] ; + end + else + begin + temp_shadedatab = bkcolour ; + temp_texmap = texmap; + end + temp_shadedataa = shadedataa; + temp_shadedatac = shadedatac; + temp_texinfol = texinfol; + end + 5 : + begin + if (hitc == 1'b1) + begin + temp_shadedatac = shadedata[20:0] ; + temp_texmap = (~shadedata[63]) & shadedata[62] ; + end + else + begin + temp_shadedatac = bkcolour ; + temp_texmap = texmap; + end + temp_shadedataa = shadedataa; + temp_shadedatab = shadedatab; + temp_texinfol = texinfol; + end 6 : - begin - wantshadedata = 1'b0 ; - triID = 0; - lmenable = 1'b0 ; - wanttexel = 1'b0 ; - - selectuv[2] = ~process01 ; - selectuv[1:0] = 2'b01 ; - next_state = 9 ; - - if (valid01 == 1'b1) - begin - temp_pending01 = 1'b1 ; - end - if (valid10 == 1'b1) - begin - temp_pending10 = 1'b1 ; - end - temp_texinfol = texinfo ; - - temp_shiften01 = 1'b0; - temp_shiften10 = 1'b0; - temp_write = 1'b0; - end - 9 : - begin - wantshadedata = 1'b0 ; - triID = 0; - wanttexel = 1'b0 ; - selectuv[2] = ~process01 ; - selectuv[1:0] = 2'b01 ; - lmenable = 1'b1 ; - if (texmap == 1'b1) - begin - next_state = 12 ; - - end - else - begin - next_state = 5 ; - end - - if (valid01 == 1'b1) - begin - temp_pending01 = 1'b1 ; - end - if (valid10 == 1'b1) - begin - temp_pending10 = 1'b1 ; - end - - temp_shadedatab[6:0] = blb ; - temp_shadedatab[13:7] = blg ; - temp_shadedatab[20:14] = blr ; - - temp_shiften01 = 1'b0; - temp_shiften10 = 1'b0; - temp_write = 1'b0; - end + begin + temp_texinfol = texinfo ; + + temp_shadedataa = shadedataa; + temp_shadedatab = shadedatab; + temp_shadedatac = shadedatac; + temp_texmap = texmap; + end 7 : - begin - wantshadedata = 1'b0 ; - triID = 0; - lmenable = 1'b0 ; - wanttexel = 1'b0 ; - selectuv[2] = ~process01 ; - selectuv[1:0] = 2'b10 ; - next_state = 10 ; - - if (valid01 == 1'b1) - begin - temp_pending01 = 1'b1 ; - end - if (valid10 == 1'b1) - begin - temp_pending10 = 1'b1 ; - end - temp_texinfol = texinfo ; - - temp_shiften01 = 1'b0; - temp_shiften10 = 1'b0; - temp_write = 1'b0; - end - + begin + temp_texinfol = texinfo ; + + temp_shadedataa = shadedataa; + temp_shadedatab = shadedatab; + temp_shadedatac = shadedatac; + temp_texmap = texmap; + end + 8 : + begin + temp_shadedataa[6:0] = blb ; + temp_shadedataa[13:7] = blg ; + temp_shadedataa[20:14] = blr ; + + temp_shadedatab = shadedatab; + temp_shadedatac = shadedatac; + temp_texinfol = texinfol ; + temp_texmap = texmap; + end + 9 : + begin + temp_shadedatab[6:0] = blb ; + temp_shadedatab[13:7] = blg ; + temp_shadedatab[20:14] = blr ; + + temp_shadedataa = shadedataa; + temp_shadedatac = shadedatac; + temp_texinfol = texinfol ; + temp_texmap = texmap; + end 10 : - begin - wantshadedata = 1'b0 ; - triID = 0; - wanttexel = 1'b0 ; - selectuv[2] = ~process01 ; - selectuv[1:0] = 2'b10 ; - if (texmap == 1'b1) - begin - next_state = 13 ; - end - else - begin - next_state = 1 ; - end + begin + temp_shadedatac[6:0] = blb ; + temp_shadedatac[13:7] = blg ; + temp_shadedatac[20:14] = blr ; + + temp_shadedataa = shadedataa; + temp_shadedatab = shadedatab; + temp_texinfol = texinfol ; + temp_texmap = texmap; + end + 11 : + begin + temp_shadedataa[6:0] = texelb ; + temp_shadedataa[13:7] = texelg ; + temp_shadedataa[20:14] = texelr ; + + temp_shadedatab = shadedatab; + temp_shadedatac = shadedatac; + temp_texinfol = texinfol ; + temp_texmap = texmap; + end + 12 : + begin + temp_shadedatab[6:0] = texelb ; + temp_shadedatab[13:7] = texelg ; + temp_shadedatab[20:14] = texelr ; + + temp_shadedataa = shadedataa; + temp_shadedatac = shadedatac; + temp_texinfol = texinfol ; + temp_texmap = texmap; + end + 13 : + begin + temp_shadedatac[6:0] = texelb ; + temp_shadedatac[13:7] = texelg ; + temp_shadedatac[20:14] = texelr ; + + temp_shadedataa = shadedataa; + temp_shadedatab = shadedatab; + temp_texinfol = texinfol ; + temp_texmap = texmap; + end + //create a default to avoid latch inference; use to hold + //previous state and thus preserve design intent + default: begin + temp_shadedataa = shadedataa; + temp_shadedatab = shadedatab; + temp_shadedatac = shadedatac; + temp_texinfol = texinfol; + temp_texmap = texmap; + end + endcase + end - lmenable = 1'b1 ; - - if (valid01 == 1'b1) - begin - temp_pending01 = 1'b1 ; - end - if (valid10 == 1'b1) - begin - temp_pending10 = 1'b1 ; - end - temp_shadedatac[6:0] = blb ; - temp_shadedatac[13:7] = blg ; - temp_shadedatac[20:14] = blr ; - - temp_shiften01 = 1'b0; - temp_shiften10 = 1'b0; - temp_write = 1'b0; - end - 4 : - begin - wantshadedata = 1'b0 ; - lmenable = 1'b0 ; - wanttexel = 1'b0 ; - selectuv[2] = ~process01 ; - selectuv[1:0] = 2'b01 ; - if (process01 == 1'b1) + always @(*) + begin + case (state) + 0 : + begin + if (pending01 == 1'b1 | pending10 == 1'b1) + begin + next_state = 2 ; + end + else + begin + next_state = 0 ; + end + end + 1 : + begin + if (ack == 1'b1) + begin + next_state = 0 ; + end + else + begin + next_state = 1 ; + end + end + 2 : + begin + if (shadedataready == 1'b1) + begin + if (hita == 1'b1 & ((shadedata[63]) == 1'b1 | shadedata[63:62] == 2'b01)) begin - triID = id01b ; + next_state = 3 ; end - else - begin - - triID = id10b ; - end - if (shadedataready == 1'b1) - begin - if (hitb == 1'b1 & ((shadedata[63]) == 1'b1 | shadedata[63:62] == 2'b01)) - begin - next_state = 6 ; - end - else - begin - next_state = 5 ; - end + else - end - else begin next_state = 4 ; end - - if (valid01 == 1'b1) - begin - temp_pending01 = 1'b1 ; - end - if (valid10 == 1'b1) - begin - temp_pending10 = 1'b1 ; - end - - if (hitb == 1'b1) - begin - temp_shadedatab = shadedata[20:0] ; - temp_texmap = (~shadedata[63]) & shadedata[62] ; - end - else - begin - temp_shadedatab = bkcolour ; - end - - temp_shiften01 = 1'b0; - temp_shiften10 = 1'b0; - temp_write = 1'b0; - end - 5 : - begin - lmenable = 1'b0 ; - wanttexel = 1'b0 ; - wantshadedata = 1'b1 ; - selectuv[2] = ~process01 ; - selectuv[1:0] = 2'b10 ; - if (process01 == 1'b1) - - begin - triID = id01c ; - end - else - begin - triID = id10c ; - end - if (shadedataready == 1'b1) + end + else + begin + next_state = 2 ; + end + end + 3 : + begin + next_state = 8 ; + end + 4 : + begin + if (shadedataready == 1'b1) + begin + if (hitb == 1'b1 & ((shadedata[63]) == 1'b1 | shadedata[63:62] == 2'b01)) begin - if (hitc == 1'b1 & ((shadedata[63]) == 1'b1 | shadedata[63:62] == 2'b01)) - begin - next_state = 7 ; - - end - else - begin - next_state = 1 ; - end + next_state = 6 ; end - else + else begin next_state = 5 ; end - if (valid01 == 1'b1) - begin - temp_pending01 = 1'b1 ; - end - if (valid10 == 1'b1) - begin - temp_pending10 = 1'b1 ; - end - - if (hitc == 1'b1) - begin - temp_shadedatac = shadedata[20:0] ; - temp_texmap = (~shadedata[63]) & shadedata[62] ; - end - else - begin - temp_shadedatac = bkcolour ; - end - - temp_shiften01 = 1'b0; - temp_shiften10 = 1'b0; - temp_write = 1'b0; - end - 1 : - - begin - wantshadedata = 1'b0 ; - triID = 0; - selectuv = 0; - lmenable = 1'b0 ; - wanttexel = 1'b0 ; - if (ack == 1'b1) + end + else + begin + next_state = 4 ; + end + end + 5 : + begin + if (shadedataready == 1'b1) + begin + if (hitc == 1'b1 & ((shadedata[63]) == 1'b1 | shadedata[63:62] == 2'b01)) begin - next_state = 0 ; + next_state = 7 ; + end - else + else begin next_state = 1 ; end - - if (ack == 1'b1 & process01 == 1'b1) - begin - temp_pending01 = 1'b0 ; - end - - else if (ack == 1'b1 & process01 == 1'b0) - begin - temp_pending10 = 1'b0 ; - end - - if (process01 == 1'b1 & ack == 1'b1) - begin - temp_shiften01 = 1'b1; - temp_shiften10 = 1'b1; - end - temp_write = 1'b1; - end - endcase - end + end + else + begin + next_state = 5 ; + end + end + 6 : + begin + next_state = 9 ; + end + 7 : + begin + next_state = 10 ; + end + 8 : + begin + if (texmap == 1'b1) + begin + next_state = 11 ; + end + else + begin + next_state = 4 ; + end + end + 9 : + begin + if (texmap == 1'b1) + begin + next_state = 12 ; + + end + else + begin + next_state = 5 ; + end + end + 10 : + begin + if (texmap == 1'b1) + begin + next_state = 13 ; + end + else + begin + next_state = 1 ; + end + end + 11 : + begin + if (texelready == 1'b1) + begin + next_state = 4 ; + end + else + begin + next_state = 11 ; + end + end + 12 : + begin + if (texelready == 1'b1) + begin + next_state = 5 ; + end + else + begin + next_state = 12 ; + end + end + 13 : + begin + if (texelready == 1'b1) + begin + next_state = 1 ; + end + else + begin + next_state = 13 ; + end + end + // create a default to avoid latch inference; preserving intent by holding + // circuit in invalid states + default: begin + next_state = state; + end + endcase + end endmodule ////////////////////////////////////////////////////////////////////////////////////////////// // @@ -2664,7 +2865,7 @@ shadedatac <= temp_shadedatac; reg[15:0] col16; - always @(dataline or texelselect) + always @(*) begin case (texelselect) 2'b00 : @@ -2815,8 +3016,7 @@ shadedatac <= temp_shadedatac; reg[6:0] bvl; reg[6:0] bwl; - always @(selectuv or u01a or u01b or u01c or v01a or v01b or v01c or u10a or - u10b or u10c or v10a or v10b or v10c) + always @(*) begin case (selectuv) 3'b000 : diff --git a/vtr_flow/benchmarks/verilog/spree.v b/vtr_flow/benchmarks/verilog/spree.v index 5128317654c..b1e108c4b5d 100644 --- a/vtr_flow/benchmarks/verilog/spree.v +++ b/vtr_flow/benchmarks/verilog/spree.v @@ -1121,7 +1121,6 @@ assign ctrl_pipereg11_squashn = 1'b1; assign ctrl_pipereg12_squashn = 1'b1; assign ctrl_pipereg13_squashn = 1'b1; assign ctrl_ifetch_squashn = 1'b1; -wire ctrl_ifetch_squashn; assign squash_stage2 = ((stall_out_stage2))|~resetn; @@ -1717,9 +1716,10 @@ assign a_readdataout = a_readdataout_temp; wire wren1; assign wren1 = (c_we & (|c_reg)); -defparam regfile1_replace.ADDR_WIDTH = 5; -defparam regfile1_replace.DATA_WIDTH = 32; -single_port_ram regfile1_replace ( + +single_port_ram + # (.ADDR_WIDTH(5), .DATA_WIDTH(32)) +regfile1_replace ( .clk (clk), .we(wren1), .data(c_writedatain), @@ -1731,9 +1731,9 @@ single_port_ram regfile1_replace ( //between 2 read and 1 write //MORE MEMORY -defparam regfile2_replace.ADDR_WIDTH = 5; -defparam regfile2_replace.DATA_WIDTH = 32; -single_port_ram regfile2_replace( +single_port_ram + # (.ADDR_WIDTH(5), .DATA_WIDTH(32)) +regfile2_replace( .clk (clk), .we(wren1), .data(c_writedatain), @@ -1980,9 +1980,9 @@ assign next_pc_wire = next_pc [9:0]; wire [31:0]dummyout2; -defparam imem_replace.ADDR_WIDTH = 10; -defparam imem_replace.DATA_WIDTH = `I_DATAWIDTH; -dual_port_ram imem_replace( +dual_port_ram + # (.ADDR_WIDTH(10), .DATA_WIDTH(`I_DATAWIDTH)) +imem_replace( .clk (clk), .we1(wren1), .we2(boot_iwe), @@ -2153,9 +2153,9 @@ wire [9:0] memaddr_wrd; assign memaddr_wrd = d_address[`DM_ADDRESSWIDTH:2]; -defparam dmem_replace.ADDR_WIDTH = 10; -defparam dmem_replace.DATA_WIDTH = `DM_DATAWIDTH; -single_port_ram dmem_replace( +single_port_ram + # (.ADDR_WIDTH(10), .DATA_WIDTH(`DM_DATAWIDTH)) +dmem_replace( .clk (clk), .we(will_be_wren1), .data(d_writedatamem), @@ -2202,7 +2202,7 @@ output [31:0] d_writedataout; reg [3:0] d_byteena; reg [31:0] d_writedataout; -always @(write_data or d_address or store_size) +always @(*) begin case (store_size) 2'b11: @@ -2268,15 +2268,15 @@ input [31:0] d_readdatain; output [31:0] d_loadresult; wire d_adr_one; -assign d_adr_one = d_address [1]; reg [31:0] d_loadresult; reg sign; wire [1:0] d_address; +assign d_adr_one = d_address [1]; assign d_address [1:0] =d_readdatain [25:24]; //assume always full-word-access -always @(d_readdatain or d_address ) +always @(*) begin d_loadresult[31:0]=d_readdatain[31:0]; end @@ -2404,7 +2404,7 @@ output [31:0] result; reg [31:0] logic_result; -always@(opA or opB or op ) +always@(*) case(op) 2'b00: logic_result=opA&opB; @@ -2876,7 +2876,7 @@ output stalled; reg T,Tnext; // State machine for Stalling 1 cycle - always@(request or T) + always@(*) begin case(T) 1'b0: Tnext=request; diff --git a/vtr_flow/benchmarks/verilog/stereovision1.v b/vtr_flow/benchmarks/verilog/stereovision1.v index 5a9765831c4..0c8033af58a 100755 --- a/vtr_flow/benchmarks/verilog/stereovision1.v +++ b/vtr_flow/benchmarks/verilog/stereovision1.v @@ -2294,7 +2294,7 @@ module my_wrapper_divider(rst, clk, data_in_a, data_in_b, data_out); y <= Y; end - always @(y) + always @(*) begin case (y) S1 : @@ -2370,7 +2370,7 @@ module my_divider(clk, rst, start, LA, EB, data_in_a, data_in_b, Remainder, data reg [INPUT_WIDTH_A-1:0] DataA; reg ff0; - always @(start or y or zero) + always @(*) begin case(y) S1: @@ -2409,7 +2409,7 @@ module my_divider(clk, rst, start, LA, EB, data_in_a, data_in_b, Remainder, data y <= Y; end - always @(y or start or Cout or zero) + always @(*) begin case (y) S1: diff --git a/vtr_flow/benchmarks/verilog/stereovision3.v b/vtr_flow/benchmarks/verilog/stereovision3.v index 1b3e343a2bb..d9de7d979b8 100755 --- a/vtr_flow/benchmarks/verilog/stereovision3.v +++ b/vtr_flow/benchmarks/verilog/stereovision3.v @@ -637,7 +637,7 @@ module sv_chip3_hierarchy_no_mem (tm3_clk_v0, tm3_clk_v2, tm3_vidin_llc, tm3_vid endcase end - always @(reg_prog_state or iic_stop) + always @(*) begin case (reg_prog_state) reg_prog1 : @@ -1016,6 +1016,13 @@ module sv_chip3_hierarchy_no_mem (tm3_clk_v0, tm3_clk_v2, tm3_vidin_llc, tm3_vid iic_start = 1'b0 ; reg_prog_nextstate = reg_prog_end ; end + default: + begin + iicaddr = 8'b00000000 ; + iicdata = 8'b00000000 ; + iic_start = 1'b0 ; + reg_prog_nextstate = reg_prog_state; + end endcase end diff --git a/vtr_flow/misc/yosys/slang_filelist.tcl b/vtr_flow/misc/yosys/slang_filelist.tcl index f5772e62445..0a3be6868c0 100644 --- a/vtr_flow/misc/yosys/slang_filelist.tcl +++ b/vtr_flow/misc/yosys/slang_filelist.tcl @@ -108,6 +108,7 @@ namespace eval ::slang { lappend top_args --top $top_name } } + } else { close $fh error "Unsupported file type. Yosys-Slang accepts .sv .svh .v .vh. File {$f}"