[Modified] Fix bugs & 36 Functional Test Point PASS

This commit is contained in:
2023-06-26 17:14:26 +08:00
parent 7c1a1db436
commit 38f1ea7eda
8 changed files with 104397 additions and 48 deletions

View File

@@ -10,7 +10,7 @@ module mul_div_top(
input [31:0] a,
input [31:0] b,
output [63:0] mul_div_result
output [31:0] mul_div_result
);
wire stallreq_for_mul;
wire stallreq_for_div;
@@ -34,8 +34,8 @@ module mul_div_top(
assign div_en = mul_div_op[2] | mul_div_op[3];
assign sign_flag = a[31] ^ b[31];
assign src_a = (mul_div_sign || a[31]) ? ({1'b0, ~a[30:0] + 1'b0}) : a;
assign src_b = (mul_div_sign || b[31]) ? ({1'b0, ~b[30:0] + 1'b0}) : b;
assign src_a = (mul_div_sign & a[31]) ? (~a[31:0] + 1'b1) : a;
assign src_b = (mul_div_sign & b[31]) ? (~b[31:0] + 1'b1) : b;
mul_div_lock u_mul_div_lock(
.clk (clk ),
@@ -78,10 +78,10 @@ module mul_div_top(
);
assign stallreq = stallreq_for_mul | stallreq_for_div;
assign mul_div_result = mul_div_op[0] ? result_l :
mul_div_op[1] ? result_h :
mul_div_op[2] ? quotient :
mul_div_op[3] ? remainder :
assign mul_div_result = mul_div_op[0] ? (mul_div_sign & (a[31] ^ b[31]) & |result_l ) ? { ~result_l[31:0] + 1'b1} : result_l :
mul_div_op[1] ? (mul_div_sign & (a[31] ^ b[31]) & |result_h ) ? {a[31] ^ b[31], ~result_h[30:0] } : result_h :
mul_div_op[2] ? (mul_div_sign & (a[31] ^ b[31]) & |quotient ) ? {a[31] ^ b[31], ~quotient[30:0] + 1'b1} : quotient :
mul_div_op[3] ? (mul_div_sign & a[31] & |remainder) ? {a[31] , ~remainder[30:0] + 1'b1} : remainder :
32'b0;
endmodule