forked from Github_Repos/cvw
added individual zb tests in tests.vh and testbench
- also minor alu/controller configurability changes
This commit is contained in:
parent
73833d5576
commit
bb252acfbe
@ -106,7 +106,7 @@ module alu #(parameter WIDTH=32) (
|
||||
assign SLTU = {{(WIDTH-1){1'b0}}, LTU};
|
||||
|
||||
// Select appropriate ALU Result
|
||||
if (`ZBS_SUPPORTED) begin
|
||||
if (`ZBS_SUPPORTED | `ZBB_SUPPORTED) begin
|
||||
always_comb
|
||||
if (~ALUOp) FullResult = Sum; // Always add for ALUOp = 0 (address generation)
|
||||
else casez (ALUSelect) // Otherwise check Funct3 NOTE: change signal name to ALUSelect
|
||||
@ -150,7 +150,7 @@ module alu #(parameter WIDTH=32) (
|
||||
end else assign ZBBResult = 0;
|
||||
|
||||
// Final Result B instruction select mux
|
||||
if (`ZBC_SUPPORTED | `ZBS_SUPPORTED) begin : zbdecoder
|
||||
if (`ZBC_SUPPORTED | `ZBS_SUPPORTED | `ZBA_SUPPORTED | `ZBB_SUPPORTED) begin : zbdecoder
|
||||
always_comb
|
||||
case (BSelect)
|
||||
//ZBA_ZBB_ZBC_ZBS
|
||||
|
@ -239,7 +239,7 @@ module controller(
|
||||
assign SubArithD = ALUOpD & (subD | sraD | sltD | sltuD | (`ZBS_SUPPORTED & (bextD | bclrD)) | (`ZBB_SUPPORTED & (andnD | ornD | xnorD))); // TRUE for R-type subtracts and sra, slt, sltu, and any B instruction that requires inverted operand
|
||||
assign ALUControlD = {W64D, SubArithD, ALUOpD};
|
||||
|
||||
if (`ZBS_SUPPORTED) begin: bitmanipi //change the conditional expression to OR any Z supported flags
|
||||
if (`ZBS_SUPPORTED | `ZBA_SUPPORTED | `ZBB_SUPPORTED | `ZBC_SUPPORTED) begin: bitmanipi //change the conditional expression to OR any Z supported flags
|
||||
bmuctrl bmuctrl(.clk, .reset, .StallD, .FlushD, .InstrD, .ALUSelectD, .BSelectD, .ZBBSelectD, .StallE, .FlushE, .ALUSelectE, .BSelectE, .ZBBSelectE);
|
||||
end else begin: bitmanipi
|
||||
assign ALUSelectD = Funct3D;
|
||||
|
@ -105,6 +105,10 @@ logic [3:0] dummy;
|
||||
"coremark": tests = coremark;
|
||||
"fpga": tests = fpga;
|
||||
"ahb" : tests = ahb;
|
||||
"arch64zba": if (`ZBA_SUPPORTED) tests = arch64zba;
|
||||
"arch64zbb": if (`ZBB_SUPPORTED) tests = arch64zbb;
|
||||
"arch64zbc": if (`ZBC_SUPPORTED) tests = arch64zbc;
|
||||
"arch64zbs": if (`ZBS_SUPPORTED) tests = arch64zbs;
|
||||
"arch64b": if (`ZBB_SUPPORTED & `ZBA_SUPPORTED & `ZBS_SUPPORTED & `ZBC_SUPPORTED) tests = arch64b;
|
||||
endcase
|
||||
end else begin // RV32
|
||||
@ -130,7 +134,10 @@ logic [3:0] dummy;
|
||||
"wally32periph": tests = wally32periph;
|
||||
"embench": tests = embench;
|
||||
"coremark": tests = coremark;
|
||||
"arch32ba": if (`ZBA_SUPPORTED) tests = arch32ba;
|
||||
"arch32zba": if (`ZBA_SUPPORTED) tests = arch32zba;
|
||||
"arch32zbb": if (`ZBB_SUPPORTED) tests = arch32zbb;
|
||||
"arch32zbc": if (`ZBC_SUPPORTED) tests = arch32zbc;
|
||||
"arch32zbs": if (`ZBS_SUPPORTED) tests = arch32zbs;
|
||||
"arch32b": if (`ZBB_SUPPORTED & `ZBA_SUPPORTED & `ZBS_SUPPORTED & `ZBC_SUPPORTED) tests = arch32b;
|
||||
endcase
|
||||
end
|
||||
|
@ -836,17 +836,17 @@ string imperas32f[] = '{
|
||||
};
|
||||
|
||||
|
||||
string wally64a[] = '{
|
||||
string wally64a[] = '{
|
||||
`WALLYTEST,
|
||||
"rv64i_m/privilege/src/WALLY-amo-01.S",
|
||||
"rv64i_m/privilege/src/WALLY-lrsc-01.S"
|
||||
};
|
||||
|
||||
string wally32a[] = '{
|
||||
string wally32a[] = '{
|
||||
`WALLYTEST,
|
||||
"rv32i_m/privilege/src/WALLY-amo-01.S",
|
||||
"rv32i_m/privilege/src/WALLY-lrsc-01.S"
|
||||
};
|
||||
};
|
||||
|
||||
string arch64priv[] = '{
|
||||
`RISCVARCHTEST,
|
||||
@ -881,14 +881,128 @@ string imperas32f[] = '{
|
||||
"rv32i_m/Zifencei/src/Fencei.S"
|
||||
};
|
||||
|
||||
string arch32ba[] = '{
|
||||
string arch32zba[] = '{
|
||||
`RISCVARCHTEST,
|
||||
// *** unclear why add.uw isn't in the list
|
||||
"rv32i_m/B/src/sh1add-01.S",
|
||||
"rv32i_m/B/src/sh1add-02.S",
|
||||
"rv32i_m/B/src/sh1add-013.S"
|
||||
"rv32i_m/B/src/sh2add-01.S",
|
||||
"rv32i_m/B/src/sh3add-01.S"
|
||||
};
|
||||
|
||||
string arch32zbb[] = '{
|
||||
`RISCVARCHTEST,
|
||||
"rv32i_m/B/src/max-01.S",
|
||||
"rv32i_m/B/src/maxu-01.S",
|
||||
"rv32i_m/B/src/min-01.S",
|
||||
"rv32i_m/B/src/minu-01.S",
|
||||
"rv32i_m/B/src/orcb_32-01.S",
|
||||
"rv32i_m/B/src/rev8_32-01.S",
|
||||
"rv32i_m/B/src/andn-01.S",
|
||||
"rv32i_m/B/src/orn-01.S",
|
||||
"rv32i_m/B/src/xnor-01.S",
|
||||
"rv32i_m/B/src/zext.h_32-01.S",
|
||||
"rv32i_m/B/src/sext.b-01.S",
|
||||
"rv32i_m/B/src/sext.h-01.S",
|
||||
"rv32i_m/B/src/clz-01.S",
|
||||
"rv32i_m/B/src/cpop-01.S",
|
||||
"rv32i_m/B/src/ctz-01.S",
|
||||
"rv32i_m/B/src/ror-01.S",
|
||||
"rv32i_m/B/src/rori-01.S",
|
||||
"rv32i_m/B/src/rol-01.S"
|
||||
};
|
||||
|
||||
string arch32zbc[] = '{
|
||||
`RISCVARCHTEST,
|
||||
"rv32i_m/B/src/clmul-01.S",
|
||||
"rv32i_m/B/src/clmulh-01.S",
|
||||
"rv32i_m/B/src/clmulr-01.S"
|
||||
};
|
||||
|
||||
string arch32zbs[] = '{
|
||||
`RISCVARCHTEST,
|
||||
"rv32i_m/B/src/bclr-01.S",
|
||||
"rv32i_m/B/src/bclri-01.S",
|
||||
"rv32i_m/B/src/bext-01.S",
|
||||
"rv32i_m/B/src/bexti-01.S",
|
||||
"rv32i_m/B/src/binv-01.S",
|
||||
"rv32i_m/B/src/binvi-01.S",
|
||||
"rv32i_m/B/src/bset-01.S",
|
||||
"rv32i_m/B/src/bseti-01.S"
|
||||
};
|
||||
|
||||
string arch32b[] = '{
|
||||
`RISCVARCHTEST,
|
||||
"rv32i_m/B/src/clmul-01.S",
|
||||
"rv32i_m/B/src/clmulh-01.S",
|
||||
"rv32i_m/B/src/clmulr-01.S",
|
||||
"rv32i_m/B/src/bclr-01.S",
|
||||
"rv32i_m/B/src/bclri-01.S",
|
||||
"rv32i_m/B/src/bext-01.S",
|
||||
"rv32i_m/B/src/bexti-01.S",
|
||||
"rv32i_m/B/src/binv-01.S",
|
||||
"rv32i_m/B/src/binvi-01.S",
|
||||
"rv32i_m/B/src/bset-01.S",
|
||||
"rv32i_m/B/src/bseti-01.S",
|
||||
"rv32i_m/B/src/max-01.S",
|
||||
"rv32i_m/B/src/maxu-01.S",
|
||||
"rv32i_m/B/src/min-01.S",
|
||||
"rv32i_m/B/src/minu-01.S",
|
||||
"rv32i_m/B/src/orcb_32-01.S",
|
||||
"rv32i_m/B/src/rev8_32-01.S",
|
||||
"rv32i_m/B/src/andn-01.S",
|
||||
"rv32i_m/B/src/orn-01.S",
|
||||
"rv32i_m/B/src/xnor-01.S",
|
||||
"rv32i_m/B/src/zext.h_32-01.S",
|
||||
"rv32i_m/B/src/sext.b-01.S",
|
||||
"rv32i_m/B/src/sext.h-01.S",
|
||||
"rv32i_m/B/src/clz-01.S",
|
||||
"rv32i_m/B/src/cpop-01.S",
|
||||
"rv32i_m/B/src/ctz-01.S",
|
||||
"rv32i_m/B/src/ror-01.S",
|
||||
"rv32i_m/B/src/rori-01.S",
|
||||
"rv32i_m/B/src/rol-01.S",
|
||||
"rv32i_m/B/src/sh1add-01.S",
|
||||
"rv32i_m/B/src/sh2add-01.S",
|
||||
"rv32i_m/B/src/sh3add-01.S",
|
||||
"rv32i_m/I/src/add-01.S",
|
||||
"rv32i_m/I/src/addi-01.S",
|
||||
"rv32i_m/I/src/and-01.S",
|
||||
"rv32i_m/I/src/andi-01.S",
|
||||
"rv32i_m/I/src/auipc-01.S",
|
||||
"rv32i_m/I/src/beq-01.S",
|
||||
"rv32i_m/I/src/bge-01.S",
|
||||
"rv32i_m/I/src/bgeu-01.S",
|
||||
"rv32i_m/I/src/blt-01.S",
|
||||
"rv32i_m/I/src/bltu-01.S",
|
||||
"rv32i_m/I/src/bne-01.S",
|
||||
"rv32i_m/I/src/fence-01.S",
|
||||
"rv32i_m/I/src/jal-01.S",
|
||||
"rv32i_m/I/src/jalr-01.S",
|
||||
"rv32i_m/I/src/lb-align-01.S",
|
||||
"rv32i_m/I/src/lbu-align-01.S",
|
||||
"rv32i_m/I/src/lh-align-01.S",
|
||||
"rv32i_m/I/src/lhu-align-01.S",
|
||||
"rv32i_m/I/src/lui-01.S",
|
||||
"rv32i_m/I/src/lw-align-01.S",
|
||||
"rv32i_m/I/src/or-01.S",
|
||||
"rv32i_m/I/src/ori-01.S",
|
||||
"rv32i_m/I/src/sb-align-01.S",
|
||||
"rv32i_m/I/src/sh-align-01.S",
|
||||
"rv32i_m/I/src/sll-01.S",
|
||||
"rv32i_m/I/src/slli-01.S",
|
||||
"rv32i_m/I/src/slt-01.S",
|
||||
"rv32i_m/I/src/slti-01.S",
|
||||
"rv32i_m/I/src/sltiu-01.S",
|
||||
"rv32i_m/I/src/sltu-01.S",
|
||||
"rv32i_m/I/src/sra-01.S",
|
||||
"rv32i_m/I/src/srai-01.S",
|
||||
"rv32i_m/I/src/srl-01.S",
|
||||
"rv32i_m/I/src/srli-01.S",
|
||||
"rv32i_m/I/src/sub-01.S",
|
||||
"rv32i_m/I/src/sw-align-01.S",
|
||||
"rv32i_m/I/src/xor-01.S",
|
||||
"rv32i_m/I/src/xori-01.S"
|
||||
};
|
||||
|
||||
string arch64m[] = '{
|
||||
`RISCVARCHTEST,
|
||||
"rv64i_m/M/src/div-01.S",
|
||||
@ -1422,101 +1536,59 @@ string arch64b[] = '{
|
||||
"rv64i_m/B/src/binvi-01.S",
|
||||
"rv64i_m/B/src/bset-01.S",
|
||||
"rv64i_m/B/src/bseti-01.S"
|
||||
/*"rv64i_m/B/src/add.uw-01.S",
|
||||
"rv64i_m/B/src/bclr-01.S",
|
||||
"rv64i_m/B/src/bclri-01.S",
|
||||
"rv64i_m/B/src/bext-01.S",
|
||||
"rv64i_m/B/src/bexti-01.S",
|
||||
"rv64i_m/B/src/binv-01.S",
|
||||
"rv64i_m/B/src/binvi-01.S",
|
||||
"rv64i_m/B/src/bset-01.S",
|
||||
"rv64i_m/B/src/bseti-01.S",
|
||||
"rv64i_m/B/src/clmul-01.S",
|
||||
|
||||
|
||||
|
||||
"rv64i_m/B/src/rol-01.S",
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
};
|
||||
|
||||
string arch32b[] = '{
|
||||
string arch64zba[] = '{
|
||||
`RISCVARCHTEST,
|
||||
"rv64i_m/B/src/slli.uw-01.S",
|
||||
"rv64i_m/B/src/add.uw-01.S",
|
||||
"rv64i_m/B/src/sh1add-01.S",
|
||||
"rv64i_m/B/src/sh2add-01.S",
|
||||
"rv64i_m/B/src/sh3add-01.S",
|
||||
"rv64i_m/B/src/sh1add.uw-01.S",
|
||||
"rv64i_m/B/src/sh2add.uw-01.S",
|
||||
"rv64i_m/B/src/sh3add.uw-01.S"
|
||||
};
|
||||
|
||||
|
||||
|
||||
string arch64zbb[] = '{
|
||||
`RISCVARCHTEST,
|
||||
"rv64i_m/B/src/max-01.S",
|
||||
"rv64i_m/B/src/maxu-01.S",
|
||||
"rv64i_m/B/src/min-01.S",
|
||||
"rv64i_m/B/src/minu-01.S",
|
||||
"rv64i_m/B/src/orcb_64-01.S",
|
||||
"rv64i_m/B/src/rev8-01.S",
|
||||
"rv64i_m/B/src/andn-01.S",
|
||||
"rv64i_m/B/src/orn-01.S",
|
||||
"rv64i_m/B/src/xnor-01.S",
|
||||
"rv64i_m/B/src/zext.h-01.S",
|
||||
"rv64i_m/B/src/sext.b-01.S",
|
||||
"rv64i_m/B/src/sext.h-01.S",
|
||||
"rv64i_m/B/src/clz-01.S",
|
||||
"rv64i_m/B/src/clzw-01.S",
|
||||
"rv64i_m/B/src/cpop-01.S",
|
||||
"rv64i_m/B/src/cpopw-01.S",
|
||||
"rv64i_m/B/src/ctz-01.S",
|
||||
"rv64i_m/B/src/ctzw-01.S",
|
||||
"rv64i_m/B/src/rolw-01.S",
|
||||
"rv64i_m/B/src/ror-01.S",
|
||||
"rv64i_m/B/src/rori-01.S",
|
||||
"rv64i_m/B/src/roriw-01.S",
|
||||
"rv64i_m/B/src/rorw-01.S",
|
||||
"rv64i_m/B/src/rol-01.S"
|
||||
};
|
||||
|
||||
string arch64zbc[] = '{
|
||||
`RISCVARCHTEST,
|
||||
"rv64i_m/B/src/clmul-01.S",
|
||||
"rv64i_m/B/src/clmulh-01.S",
|
||||
"rv64i_m/B/src/clmulr-01.S"
|
||||
};
|
||||
|
||||
string arch64zbs[] = '{
|
||||
`RISCVARCHTEST,
|
||||
"rv32i_m/B/src/clmul-01.S",
|
||||
"rv32i_m/B/src/clmulh-01.S",
|
||||
"rv32i_m/B/src/clmulr-01.S",
|
||||
"rv32i_m/B/src/bclr-01.S",
|
||||
"rv32i_m/B/src/bclri-01.S",
|
||||
"rv32i_m/B/src/bext-01.S",
|
||||
"rv32i_m/B/src/bexti-01.S",
|
||||
"rv32i_m/B/src/binv-01.S",
|
||||
"rv32i_m/B/src/binvi-01.S",
|
||||
"rv32i_m/B/src/bset-01.S",
|
||||
"rv32i_m/B/src/bseti-01.S",
|
||||
"rv32i_m/B/src/max-01.S",
|
||||
"rv32i_m/B/src/maxu-01.S",
|
||||
"rv32i_m/B/src/min-01.S",
|
||||
"rv32i_m/B/src/minu-01.S",
|
||||
"rv32i_m/B/src/orcb_32-01.S",
|
||||
"rv32i_m/B/src/rev8_32-01.S",
|
||||
"rv32i_m/B/src/andn-01.S",
|
||||
"rv32i_m/B/src/orn-01.S",
|
||||
"rv32i_m/B/src/xnor-01.S",
|
||||
"rv32i_m/B/src/zext.h_32-01.S",
|
||||
"rv32i_m/B/src/sext.b-01.S",
|
||||
"rv32i_m/B/src/sext.h-01.S",
|
||||
"rv32i_m/B/src/clz-01.S",
|
||||
"rv32i_m/B/src/cpop-01.S",
|
||||
"rv32i_m/B/src/ctz-01.S",
|
||||
"rv32i_m/B/src/ror-01.S",
|
||||
"rv32i_m/B/src/rori-01.S",
|
||||
"rv32i_m/B/src/rol-01.S",
|
||||
"rv32i_m/B/src/sh1add-01.S",
|
||||
"rv32i_m/B/src/sh2add-01.S",
|
||||
"rv32i_m/B/src/sh3add-01.S",
|
||||
"rv32i_m/I/src/add-01.S",
|
||||
"rv32i_m/I/src/addi-01.S",
|
||||
"rv32i_m/I/src/and-01.S",
|
||||
"rv32i_m/I/src/andi-01.S",
|
||||
"rv32i_m/I/src/auipc-01.S",
|
||||
"rv32i_m/I/src/beq-01.S",
|
||||
"rv32i_m/I/src/bge-01.S",
|
||||
"rv32i_m/I/src/bgeu-01.S",
|
||||
"rv32i_m/I/src/blt-01.S",
|
||||
"rv32i_m/I/src/bltu-01.S",
|
||||
"rv32i_m/I/src/bne-01.S",
|
||||
"rv32i_m/I/src/fence-01.S",
|
||||
"rv32i_m/I/src/jal-01.S",
|
||||
"rv32i_m/I/src/jalr-01.S",
|
||||
"rv32i_m/I/src/lb-align-01.S",
|
||||
"rv32i_m/I/src/lbu-align-01.S",
|
||||
"rv32i_m/I/src/lh-align-01.S",
|
||||
"rv32i_m/I/src/lhu-align-01.S",
|
||||
"rv32i_m/I/src/lui-01.S",
|
||||
"rv32i_m/I/src/lw-align-01.S",
|
||||
"rv32i_m/I/src/or-01.S",
|
||||
"rv32i_m/I/src/ori-01.S",
|
||||
"rv32i_m/I/src/sb-align-01.S",
|
||||
"rv32i_m/I/src/sh-align-01.S",
|
||||
"rv32i_m/I/src/sll-01.S",
|
||||
"rv32i_m/I/src/slli-01.S",
|
||||
"rv32i_m/I/src/slt-01.S",
|
||||
"rv32i_m/I/src/slti-01.S",
|
||||
"rv32i_m/I/src/sltiu-01.S",
|
||||
"rv32i_m/I/src/sltu-01.S",
|
||||
"rv32i_m/I/src/sra-01.S",
|
||||
"rv32i_m/I/src/srai-01.S",
|
||||
"rv32i_m/I/src/srl-01.S",
|
||||
"rv32i_m/I/src/srli-01.S",
|
||||
"rv32i_m/I/src/sub-01.S",
|
||||
"rv32i_m/I/src/sw-align-01.S",
|
||||
"rv32i_m/I/src/xor-01.S",
|
||||
"rv32i_m/I/src/xori-01.S"
|
||||
|
||||
/*"rv64i_m/B/src/add.uw-01.S",
|
||||
"rv64i_m/B/src/bclr-01.S",
|
||||
"rv64i_m/B/src/bclri-01.S",
|
||||
"rv64i_m/B/src/bext-01.S",
|
||||
@ -1524,18 +1596,11 @@ string arch32b[] = '{
|
||||
"rv64i_m/B/src/binv-01.S",
|
||||
"rv64i_m/B/src/binvi-01.S",
|
||||
"rv64i_m/B/src/bset-01.S",
|
||||
"rv64i_m/B/src/bseti-01.S",
|
||||
"rv64i_m/B/src/clmul-01.S",
|
||||
|
||||
|
||||
|
||||
"rv64i_m/B/src/rol-01.S",
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
"rv64i_m/B/src/bseti-01.S"
|
||||
};
|
||||
|
||||
|
||||
|
||||
string arch32priv[] = '{
|
||||
`RISCVARCHTEST,
|
||||
"rv32i_m/privilege/src/ebreak.S",
|
||||
|
Loading…
Reference in New Issue
Block a user