lm32_mc_arithmetic.v

changeset 27
d6c693415d59
parent 26
73de224304c1
     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