mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
M implies Zmmul
This commit is contained in:
parent
bf397f791f
commit
291d1e62d5
@ -108,8 +108,10 @@ D_SUPPORTED 0
|
||||
|
||||
deriv syn_rv64gc_noMulDiv syn_rv64gc_noFPU
|
||||
M_SUPPORTED 0
|
||||
ZMMUL_SUPPORTED 0
|
||||
deriv syn_sram_rv64gc_noMulDiv syn_sram_rv64gc_noFPU
|
||||
M_SUPPORTED 0
|
||||
ZMMUL_SUPPORTED 0
|
||||
|
||||
deriv syn_rv64gc_noAtomic syn_rv64gc_noMulDiv
|
||||
ZAAMO_SUPPORTED 0
|
||||
|
@ -44,6 +44,7 @@ localparam logic ZICCLSM_SUPPORTED = 0; // Misaligned loads/stores
|
||||
localparam logic ZICOND_SUPPORTED = 0; // Integer conditional operations
|
||||
|
||||
// Multiplication & division extensions
|
||||
// M implies (and in the configuration file requires) Zmmul
|
||||
localparam logic M_SUPPORTED = 0;
|
||||
localparam logic ZMMUL_SUPPORTED = 0;
|
||||
|
||||
|
@ -44,8 +44,9 @@ localparam logic ZICCLSM_SUPPORTED = 0; // Misaligned loads/stores
|
||||
localparam logic ZICOND_SUPPORTED = 1; // Integer conditional operations
|
||||
|
||||
// Multiplication & division extensions
|
||||
// M implies (and in the configuration file requires) Zmmul
|
||||
localparam logic M_SUPPORTED = 1;
|
||||
localparam logic ZMMUL_SUPPORTED = 0;
|
||||
localparam logic ZMMUL_SUPPORTED = 1;
|
||||
|
||||
// Atomic extensions
|
||||
// A extension is Zaamo + Zalrsc
|
||||
|
@ -44,6 +44,7 @@ localparam logic ZICCLSM_SUPPORTED = 0; // Misaligned loads/stores
|
||||
localparam logic ZICOND_SUPPORTED = 0; // Integer conditional operations
|
||||
|
||||
// Multiplication & division extensions
|
||||
// M implies (and in the configuration file requires) Zmmul
|
||||
localparam logic M_SUPPORTED = 0;
|
||||
localparam logic ZMMUL_SUPPORTED = 0;
|
||||
|
||||
|
@ -44,8 +44,9 @@ localparam logic ZICCLSM_SUPPORTED = 0; // Misaligned loads/stores
|
||||
localparam logic ZICOND_SUPPORTED = 0; // Integer conditional operations
|
||||
|
||||
// Multiplication & division extensions
|
||||
// M implies (and in the configuration file requires) Zmmul
|
||||
localparam logic M_SUPPORTED = 1;
|
||||
localparam logic ZMMUL_SUPPORTED = 0;
|
||||
localparam logic ZMMUL_SUPPORTED = 1;
|
||||
|
||||
// Atomic extensions
|
||||
// A extension is Zaamo + Zalrsc
|
||||
|
@ -44,8 +44,9 @@ localparam logic ZICCLSM_SUPPORTED = 1; // Misaligned loads/stores
|
||||
localparam logic ZICOND_SUPPORTED = 1; // Integer conditional operations
|
||||
|
||||
// Multiplication & division extensions
|
||||
// M implies (and in the configuration file requires) Zmmul
|
||||
localparam logic M_SUPPORTED = 1;
|
||||
localparam logic ZMMUL_SUPPORTED = 0;
|
||||
localparam logic ZMMUL_SUPPORTED = 1;
|
||||
|
||||
// Atomic extensions
|
||||
// A extension is Zaamo + Zalrsc
|
||||
|
@ -44,6 +44,7 @@ localparam logic ZICCLSM_SUPPORTED = 0; // Misaligned loads/stores
|
||||
localparam logic ZICOND_SUPPORTED = 0; // Integer conditional operations
|
||||
|
||||
// Multiplication & division extensions
|
||||
// M implies (and in the configuration file requires) Zmmul
|
||||
localparam logic M_SUPPORTED = 0;
|
||||
localparam logic ZMMUL_SUPPORTED = 0;
|
||||
|
||||
|
@ -314,7 +314,7 @@ module wallypipelinedcore import cvw::*; #(parameter cvw_t P) (
|
||||
end
|
||||
|
||||
// multiply/divide unit
|
||||
if (P.M_SUPPORTED | P.ZMMUL_SUPPORTED) begin:mdu
|
||||
if (P.ZMMUL_SUPPORTED) begin:mdu
|
||||
mdu #(P) mdu(.clk, .reset, .StallM, .StallW, .FlushE, .FlushM, .FlushW,
|
||||
.ForwardedSrcAE, .ForwardedSrcBE,
|
||||
.Funct3E, .Funct3M, .IntDivE, .W64E, .MDUActiveE,
|
||||
|
@ -54,7 +54,7 @@ module riscvassertions import cvw::*; #(parameter cvw_t P);
|
||||
assert (P.DCACHE_SUPPORTED || (P.A_SUPPORTED == 0)) else $fatal(1, "Atomic extension (A) requires cache on Wally.");
|
||||
assert (P.IDIV_ON_FPU == 0 || P.F_SUPPORTED) else $fatal(1, "IDIV on FPU needs F_SUPPORTED");
|
||||
assert (P.SSTC_SUPPORTED == 0 || (P.S_SUPPORTED)) else $fatal(1, "SSTC requires S_SUPPORTED");
|
||||
assert ((P.ZMMUL_SUPPORTED == 0) || (P.M_SUPPORTED ==0)) else $fatal(1, "At most one of ZMMUL_SUPPORTED and M_SUPPORTED can be enabled");
|
||||
assert ((P.M_SUPPORTED == 0) || (P.ZMMUL_SUPPORTED == 1)) else $fatal(1, "M requires ZMMUL");
|
||||
assert ((P.ZICNTR_SUPPORTED == 0) || (P.ZICSR_SUPPORTED == 1)) else $fatal(1, "ZICNTR_SUPPORTED requires ZICSR_SUPPORTED");
|
||||
assert ((P.ZIHPM_SUPPORTED == 0) || (P.ZICNTR_SUPPORTED == 1)) else $fatal(1, "ZIPHM_SUPPORTED requires ZICNTR_SUPPORTED");
|
||||
assert ((P.ZICBOM_SUPPORTED == 0) || (P.DCACHE_SUPPORTED == 1)) else $fatal(1, "ZICBOM requires DCACHE_SUPPORTED");
|
||||
@ -64,7 +64,7 @@ module riscvassertions import cvw::*; #(parameter cvw_t P);
|
||||
assert ((P.ZCB_SUPPORTED == 0) || (P.M_SUPPORTED == 1 && (P.ZBA_SUPPORTED == 1 || P.XLEN == 32) && P.ZBB_SUPPORTED == 1)) else $fatal(1, "ZCB requires M and ZBB (and also ZBA for RV64)");
|
||||
assert ((P.ZCA_SUPPORTED == 1) || (P.ZCD_SUPPORTED == 0 && P.ZCF_SUPPORTED == 0 && P.ZCB_SUPPORTED == 0)) else $fatal(1, "ZCB, ZCF, or ZCD requires ZCA");
|
||||
assert ((P.ZCF_SUPPORTED == 0) || ((P.F_SUPPORTED == 1) && (P.XLEN == 32))) else $fatal(1, "ZCF requires F and XLEN == 32");
|
||||
assert ((P.ZCD_SUPPORTED == 0) || (P.D_SUPPORTED == 1)) else $fatal(1, "ZCD requires D");
|
||||
assert ((P.ZCD_SUPPORTED == 0) || (P.D_SUPPORTED == 1)) else $fatal(1, "ZCD requires D");
|
||||
assert ((P.LLEN == P.XLEN) || (P.DCACHE_SUPPORTED)) else $fatal(1, "LLEN > XLEN (D on RV32 or Q on RV64) requires data cache");
|
||||
end
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user