Increase code coverage on second ALU by removing branch logic (#2362)

This commit is contained in:
Côme 2024-08-26 17:32:24 +02:00 committed by JeanRochCoulon
parent 064cec2066
commit d606eeb8b8
3 changed files with 18 additions and 20 deletions

View file

@ -1,2 +1,2 @@
cv32a65x:
gates: 171990
gates: 171460

View file

@ -22,6 +22,7 @@ module alu
import ariane_pkg::*;
#(
parameter config_pkg::cva6_cfg_t CVA6Cfg = config_pkg::cva6_cfg_empty,
parameter bit HasBranch = 1'b1,
parameter type fu_data_t = logic
) (
// Subsystem Clock - SUBSYSTEM
@ -68,15 +69,7 @@ module alu
logic [CVA6Cfg.XLEN-1:0] adder_result;
logic [CVA6Cfg.XLEN-1:0] operand_a_bitmanip, bit_indx;
always_comb begin
adder_op_b_negate = 1'b0;
unique case (fu_data_i.operation)
// ADDER OPS
EQ, NE, SUB, SUBW, ANDN, ORN, XNOR: adder_op_b_negate = 1'b1;
default: ;
endcase
end
assign adder_op_b_negate = fu_data_i.operation inside {EQ, NE, SUB, SUBW, ANDN, ORN, XNOR};
always_comb begin
operand_a_bitmanip = fu_data_i.operand_a;
@ -115,16 +108,19 @@ module alu
assign adder_z_flag = ~|adder_result;
// get the right branch comparison result
always_comb begin : branch_resolve
// set comparison by default
alu_branch_res_o = 1'b1;
case (fu_data_i.operation)
EQ: alu_branch_res_o = adder_z_flag;
NE: alu_branch_res_o = ~adder_z_flag;
LTS, LTU: alu_branch_res_o = less;
GES, GEU: alu_branch_res_o = ~less;
default: alu_branch_res_o = 1'b1;
endcase
if (HasBranch) begin
always_comb begin : branch_resolve
// set comparison by default
case (fu_data_i.operation)
EQ: alu_branch_res_o = adder_z_flag;
NE: alu_branch_res_o = ~adder_z_flag;
LTS, LTU: alu_branch_res_o = less;
GES, GEU: alu_branch_res_o = ~less;
default: alu_branch_res_o = 1'b1;
endcase
end
end else begin
assign alu_branch_res_o = 1'b0;
end
// ---------

View file

@ -294,6 +294,7 @@ module ex_stage
// 1. ALU (combinatorial)
alu #(
.CVA6Cfg (CVA6Cfg),
.HasBranch(1'b1),
.fu_data_t(fu_data_t)
) alu_i (
.clk_i,
@ -460,6 +461,7 @@ module ex_stage
alu #(
.CVA6Cfg (CVA6Cfg),
.HasBranch(1'b0),
.fu_data_t(fu_data_t)
) alu2_i (
.clk_i,