1.1 diff -r 73de224304c1 -r d6c693415d59 lm32_mc_arithmetic.v 1.2 --- a/lm32_mc_arithmetic.v Sat Aug 06 00:02:46 2011 +0100 1.3 +++ b/lm32_mc_arithmetic.v Sat Aug 06 01:26:56 2011 +0100 1.4 @@ -170,59 +170,59 @@ 1.5 begin 1.6 if (rst_i == `TRUE) 1.7 begin 1.8 - cycles <= #1 {6{1'b0}}; 1.9 - p <= #1 {`LM32_WORD_WIDTH{1'b0}}; 1.10 - a <= #1 {`LM32_WORD_WIDTH{1'b0}}; 1.11 - b <= #1 {`LM32_WORD_WIDTH{1'b0}}; 1.12 + cycles <= {6{1'b0}}; 1.13 + p <= {`LM32_WORD_WIDTH{1'b0}}; 1.14 + a <= {`LM32_WORD_WIDTH{1'b0}}; 1.15 + b <= {`LM32_WORD_WIDTH{1'b0}}; 1.16 `ifdef CFG_MC_BARREL_SHIFT_ENABLED 1.17 - sign_extend_x <= #1 1'b0; 1.18 + sign_extend_x <= 1'b0; 1.19 `endif 1.20 `ifdef CFG_MC_DIVIDE_ENABLED 1.21 - divide_by_zero_x <= #1 `FALSE; 1.22 + divide_by_zero_x <= `FALSE; 1.23 `endif 1.24 - result_x <= #1 {`LM32_WORD_WIDTH{1'b0}}; 1.25 - state <= #1 `LM32_MC_STATE_IDLE; 1.26 + result_x <= {`LM32_WORD_WIDTH{1'b0}}; 1.27 + state <= `LM32_MC_STATE_IDLE; 1.28 end 1.29 else 1.30 begin 1.31 `ifdef CFG_MC_DIVIDE_ENABLED 1.32 - divide_by_zero_x <= #1 `FALSE; 1.33 + divide_by_zero_x <= `FALSE; 1.34 `endif 1.35 case (state) 1.36 `LM32_MC_STATE_IDLE: 1.37 begin 1.38 if (stall_d == `FALSE) 1.39 begin 1.40 - cycles <= #1 `LM32_WORD_WIDTH; 1.41 - p <= #1 32'b0; 1.42 - a <= #1 operand_0_d; 1.43 - b <= #1 operand_1_d; 1.44 + cycles <= `LM32_WORD_WIDTH; 1.45 + p <= 32'b0; 1.46 + a <= operand_0_d; 1.47 + b <= operand_1_d; 1.48 `ifdef CFG_MC_DIVIDE_ENABLED 1.49 if (divide_d == `TRUE) 1.50 - state <= #1 `LM32_MC_STATE_DIVIDE; 1.51 + state <= `LM32_MC_STATE_DIVIDE; 1.52 if (modulus_d == `TRUE) 1.53 - state <= #1 `LM32_MC_STATE_MODULUS; 1.54 + state <= `LM32_MC_STATE_MODULUS; 1.55 `endif 1.56 `ifdef CFG_MC_MULTIPLY_ENABLED 1.57 if (multiply_d == `TRUE) 1.58 - state <= #1 `LM32_MC_STATE_MULTIPLY; 1.59 + state <= `LM32_MC_STATE_MULTIPLY; 1.60 `endif 1.61 `ifdef CFG_MC_BARREL_SHIFT_ENABLED 1.62 if (shift_left_d == `TRUE) 1.63 begin 1.64 - state <= #1 `LM32_MC_STATE_SHIFT_LEFT; 1.65 - sign_extend_x <= #1 sign_extend_d; 1.66 - cycles <= #1 operand_1_d[4:0]; 1.67 - a <= #1 operand_0_d; 1.68 - b <= #1 operand_0_d; 1.69 + state <= `LM32_MC_STATE_SHIFT_LEFT; 1.70 + sign_extend_x <= sign_extend_d; 1.71 + cycles <= operand_1_d[4:0]; 1.72 + a <= operand_0_d; 1.73 + b <= operand_0_d; 1.74 end 1.75 if (shift_right_d == `TRUE) 1.76 begin 1.77 - state <= #1 `LM32_MC_STATE_SHIFT_RIGHT; 1.78 - sign_extend_x <= #1 sign_extend_d; 1.79 - cycles <= #1 operand_1_d[4:0]; 1.80 - a <= #1 operand_0_d; 1.81 - b <= #1 operand_0_d; 1.82 + state <= `LM32_MC_STATE_SHIFT_RIGHT; 1.83 + sign_extend_x <= sign_extend_d; 1.84 + cycles <= operand_1_d[4:0]; 1.85 + a <= operand_0_d; 1.86 + b <= operand_0_d; 1.87 end 1.88 `endif 1.89 end 1.90 @@ -232,74 +232,74 @@ 1.91 begin 1.92 if (t[32] == 1'b0) 1.93 begin 1.94 - p <= #1 t[31:0]; 1.95 - a <= #1 {a[`LM32_WORD_WIDTH-2:0], 1'b1}; 1.96 + p <= t[31:0]; 1.97 + a <= {a[`LM32_WORD_WIDTH-2:0], 1'b1}; 1.98 end 1.99 else 1.100 begin 1.101 - p <= #1 {p[`LM32_WORD_WIDTH-2:0], a[`LM32_WORD_WIDTH-1]}; 1.102 - a <= #1 {a[`LM32_WORD_WIDTH-2:0], 1'b0}; 1.103 + p <= {p[`LM32_WORD_WIDTH-2:0], a[`LM32_WORD_WIDTH-1]}; 1.104 + a <= {a[`LM32_WORD_WIDTH-2:0], 1'b0}; 1.105 end 1.106 - result_x <= #1 a; 1.107 + result_x <= a; 1.108 if ((cycles == `LM32_WORD_WIDTH'd0) || (kill_x == `TRUE)) 1.109 begin 1.110 // Check for divide by zero 1.111 - divide_by_zero_x <= #1 b == {`LM32_WORD_WIDTH{1'b0}}; 1.112 - state <= #1 `LM32_MC_STATE_IDLE; 1.113 + divide_by_zero_x <= b == {`LM32_WORD_WIDTH{1'b0}}; 1.114 + state <= `LM32_MC_STATE_IDLE; 1.115 end 1.116 - cycles <= #1 cycles - 1'b1; 1.117 + cycles <= cycles - 1'b1; 1.118 end 1.119 `LM32_MC_STATE_MODULUS: 1.120 begin 1.121 if (t[32] == 1'b0) 1.122 begin 1.123 - p <= #1 t[31:0]; 1.124 - a <= #1 {a[`LM32_WORD_WIDTH-2:0], 1'b1}; 1.125 + p <= t[31:0]; 1.126 + a <= {a[`LM32_WORD_WIDTH-2:0], 1'b1}; 1.127 end 1.128 else 1.129 begin 1.130 - p <= #1 {p[`LM32_WORD_WIDTH-2:0], a[`LM32_WORD_WIDTH-1]}; 1.131 - a <= #1 {a[`LM32_WORD_WIDTH-2:0], 1'b0}; 1.132 + p <= {p[`LM32_WORD_WIDTH-2:0], a[`LM32_WORD_WIDTH-1]}; 1.133 + a <= {a[`LM32_WORD_WIDTH-2:0], 1'b0}; 1.134 end 1.135 - result_x <= #1 p; 1.136 + result_x <= p; 1.137 if ((cycles == `LM32_WORD_WIDTH'd0) || (kill_x == `TRUE)) 1.138 begin 1.139 // Check for divide by zero 1.140 - divide_by_zero_x <= #1 b == {`LM32_WORD_WIDTH{1'b0}}; 1.141 - state <= #1 `LM32_MC_STATE_IDLE; 1.142 + divide_by_zero_x <= b == {`LM32_WORD_WIDTH{1'b0}}; 1.143 + state <= `LM32_MC_STATE_IDLE; 1.144 end 1.145 - cycles <= #1 cycles - 1'b1; 1.146 + cycles <= cycles - 1'b1; 1.147 end 1.148 `endif 1.149 `ifdef CFG_MC_MULTIPLY_ENABLED 1.150 `LM32_MC_STATE_MULTIPLY: 1.151 begin 1.152 if (b[0] == 1'b1) 1.153 - p <= #1 p + a; 1.154 - b <= #1 {1'b0, b[`LM32_WORD_WIDTH-1:1]}; 1.155 - a <= #1 {a[`LM32_WORD_WIDTH-2:0], 1'b0}; 1.156 - result_x <= #1 p; 1.157 + p <= p + a; 1.158 + b <= {1'b0, b[`LM32_WORD_WIDTH-1:1]}; 1.159 + a <= {a[`LM32_WORD_WIDTH-2:0], 1'b0}; 1.160 + result_x <= p; 1.161 if ((cycles == `LM32_WORD_WIDTH'd0) || (kill_x == `TRUE)) 1.162 - state <= #1 `LM32_MC_STATE_IDLE; 1.163 - cycles <= #1 cycles - 1'b1; 1.164 + state <= `LM32_MC_STATE_IDLE; 1.165 + cycles <= cycles - 1'b1; 1.166 end 1.167 `endif 1.168 `ifdef CFG_MC_BARREL_SHIFT_ENABLED 1.169 `LM32_MC_STATE_SHIFT_LEFT: 1.170 begin 1.171 - a <= #1 {a[`LM32_WORD_WIDTH-2:0], 1'b0}; 1.172 - result_x <= #1 a; 1.173 + a <= {a[`LM32_WORD_WIDTH-2:0], 1'b0}; 1.174 + result_x <= a; 1.175 if ((cycles == `LM32_WORD_WIDTH'd0) || (kill_x == `TRUE)) 1.176 - state <= #1 `LM32_MC_STATE_IDLE; 1.177 - cycles <= #1 cycles - 1'b1; 1.178 + state <= `LM32_MC_STATE_IDLE; 1.179 + cycles <= cycles - 1'b1; 1.180 end 1.181 `LM32_MC_STATE_SHIFT_RIGHT: 1.182 begin 1.183 - b <= #1 {fill_value, b[`LM32_WORD_WIDTH-1:1]}; 1.184 - result_x <= #1 b; 1.185 + b <= {fill_value, b[`LM32_WORD_WIDTH-1:1]}; 1.186 + result_x <= b; 1.187 if ((cycles == `LM32_WORD_WIDTH'd0) || (kill_x == `TRUE)) 1.188 - state <= #1 `LM32_MC_STATE_IDLE; 1.189 - cycles <= #1 cycles - 1'b1; 1.190 + state <= `LM32_MC_STATE_IDLE; 1.191 + cycles <= cycles - 1'b1; 1.192 end 1.193 `endif 1.194 endcase