mirror of
https://github.com/openhwgroup/cva6.git
synced 2025-04-22 13:17:41 -04:00
Define a new param to constraint mtvec to be in direct mode only (#2226)
This commit is contained in:
parent
feb35f2b88
commit
dc000d6c37
19 changed files with 24 additions and 2 deletions
|
@ -1349,10 +1349,12 @@ module csr_regfile
|
|||
end
|
||||
|
||||
riscv::CSR_MTVEC: begin
|
||||
mtvec_d = {csr_wdata[CVA6Cfg.XLEN-1:2], 1'b0, csr_wdata[0]};
|
||||
logic DirVecOnly;
|
||||
DirVecOnly = CVA6Cfg.DirectVecOnly ? 1'b0 : csr_wdata[0];
|
||||
mtvec_d = {csr_wdata[CVA6Cfg.XLEN-1:2], 1'b0, DirVecOnly};
|
||||
// we are in vector mode, this implementation requires the additional
|
||||
// alignment constraint of 64 * 4 bytes
|
||||
if (csr_wdata[0]) mtvec_d = {csr_wdata[CVA6Cfg.XLEN-1:8], 7'b0, csr_wdata[0]};
|
||||
if (DirVecOnly) mtvec_d = {csr_wdata[CVA6Cfg.XLEN-1:8], 7'b0, DirVecOnly};
|
||||
end
|
||||
riscv::CSR_MCOUNTEREN: begin
|
||||
if (CVA6Cfg.RVU) mcounteren_d = {{CVA6Cfg.XLEN - 32{1'b0}}, csr_wdata[31:0]};
|
||||
|
|
|
@ -92,6 +92,7 @@ package build_config_pkg;
|
|||
cfg.BHTEntries = CVA6Cfg.BHTEntries;
|
||||
cfg.DmBaseAddress = CVA6Cfg.DmBaseAddress;
|
||||
cfg.TvalEn = CVA6Cfg.TvalEn;
|
||||
cfg.DirectVecOnly = CVA6Cfg.DirectVecOnly;
|
||||
cfg.NrPMPEntries = CVA6Cfg.NrPMPEntries;
|
||||
cfg.PMPCfgRstVal = CVA6Cfg.PMPCfgRstVal;
|
||||
cfg.PMPAddrRstVal = CVA6Cfg.PMPAddrRstVal;
|
||||
|
|
|
@ -94,6 +94,8 @@ package config_pkg;
|
|||
logic [63:0] ExceptionAddress;
|
||||
// Tval Support Enable
|
||||
bit TvalEn;
|
||||
// MTVEC CSR supports only direct mode
|
||||
bit DirectVecOnly;
|
||||
// PMP entries number
|
||||
int unsigned NrPMPEntries;
|
||||
// PMP CSR configuration reset values
|
||||
|
@ -267,6 +269,7 @@ package config_pkg;
|
|||
|
||||
logic [63:0] DmBaseAddress;
|
||||
bit TvalEn;
|
||||
bit DirectVecOnly;
|
||||
int unsigned NrPMPEntries;
|
||||
logic [15:0][63:0] PMPCfgRstVal;
|
||||
logic [15:0][63:0] PMPAddrRstVal;
|
||||
|
|
|
@ -112,6 +112,7 @@ package cva6_config_pkg;
|
|||
BHTEntries: unsigned'(CVA6ConfigBHTEntries),
|
||||
DmBaseAddress: 64'h0,
|
||||
TvalEn: bit'(CVA6ConfigTvalEn),
|
||||
DirectVecOnly: bit'(0),
|
||||
NrPMPEntries: unsigned'(CVA6ConfigNrPMPEntries),
|
||||
PMPCfgRstVal: {16{64'h0}},
|
||||
PMPAddrRstVal: {16{64'h0}},
|
||||
|
|
|
@ -60,6 +60,7 @@ package cva6_config_pkg;
|
|||
BHTEntries: unsigned'(32),
|
||||
DmBaseAddress: 64'h0,
|
||||
TvalEn: bit'(0),
|
||||
DirectVecOnly: bit'(1),
|
||||
NrPMPEntries: unsigned'(8),
|
||||
PMPCfgRstVal: {16{64'h0}},
|
||||
PMPAddrRstVal: {16{64'h0}},
|
||||
|
|
|
@ -111,6 +111,7 @@ package cva6_config_pkg;
|
|||
BHTEntries: unsigned'(CVA6ConfigBHTEntries),
|
||||
DmBaseAddress: 64'h0,
|
||||
TvalEn: bit'(CVA6ConfigTvalEn),
|
||||
DirectVecOnly: bit'(0),
|
||||
NrPMPEntries: unsigned'(CVA6ConfigNrPMPEntries),
|
||||
PMPCfgRstVal: {16{64'h0}},
|
||||
PMPAddrRstVal: {16{64'h0}},
|
||||
|
|
|
@ -112,6 +112,7 @@ package cva6_config_pkg;
|
|||
BHTEntries: unsigned'(CVA6ConfigBHTEntries),
|
||||
DmBaseAddress: 64'h0,
|
||||
TvalEn: unsigned'(CVA6ConfigTvalEn),
|
||||
DirectVecOnly: bit'(0),
|
||||
NrPMPEntries: unsigned'(CVA6ConfigNrPMPEntries),
|
||||
PMPCfgRstVal: {16{64'h0}},
|
||||
PMPAddrRstVal: {16{64'h0}},
|
||||
|
|
|
@ -112,6 +112,7 @@ package cva6_config_pkg;
|
|||
BHTEntries: unsigned'(CVA6ConfigBHTEntries),
|
||||
DmBaseAddress: 64'h0,
|
||||
TvalEn: unsigned'(CVA6ConfigTvalEn),
|
||||
DirectVecOnly: bit'(0),
|
||||
NrPMPEntries: unsigned'(CVA6ConfigNrPMPEntries),
|
||||
PMPCfgRstVal: {16{64'h0}},
|
||||
PMPAddrRstVal: {16{64'h0}},
|
||||
|
|
|
@ -112,6 +112,7 @@ package cva6_config_pkg;
|
|||
BHTEntries: unsigned'(CVA6ConfigBHTEntries),
|
||||
DmBaseAddress: 64'h0,
|
||||
TvalEn: bit'(CVA6ConfigTvalEn),
|
||||
DirectVecOnly: bit'(0),
|
||||
NrPMPEntries: unsigned'(CVA6ConfigNrPMPEntries),
|
||||
PMPCfgRstVal: {16{64'h0}},
|
||||
PMPAddrRstVal: {16{64'h0}},
|
||||
|
|
|
@ -112,6 +112,7 @@ package cva6_config_pkg;
|
|||
BHTEntries: unsigned'(CVA6ConfigBHTEntries),
|
||||
DmBaseAddress: 64'h0,
|
||||
TvalEn: bit'(CVA6ConfigTvalEn),
|
||||
DirectVecOnly: bit'(0),
|
||||
NrPMPEntries: unsigned'(CVA6ConfigNrPMPEntries),
|
||||
PMPCfgRstVal: {16{64'h0}},
|
||||
PMPAddrRstVal: {16{64'h0}},
|
||||
|
|
|
@ -112,6 +112,7 @@ package cva6_config_pkg;
|
|||
BHTEntries: unsigned'(CVA6ConfigBHTEntries),
|
||||
DmBaseAddress: 64'h0,
|
||||
TvalEn: bit'(CVA6ConfigTvalEn),
|
||||
DirectVecOnly: bit'(0),
|
||||
NrPMPEntries: unsigned'(CVA6ConfigNrPMPEntries),
|
||||
PMPCfgRstVal: {16{64'h0}},
|
||||
PMPAddrRstVal: {16{64'h0}},
|
||||
|
|
|
@ -112,6 +112,7 @@ package cva6_config_pkg;
|
|||
BHTEntries: unsigned'(CVA6ConfigBHTEntries),
|
||||
DmBaseAddress: 64'h0,
|
||||
TvalEn: bit'(CVA6ConfigTvalEn),
|
||||
DirectVecOnly: bit'(0),
|
||||
NrPMPEntries: unsigned'(CVA6ConfigNrPMPEntries),
|
||||
PMPCfgRstVal: {16{64'h0}},
|
||||
PMPAddrRstVal: {16{64'h0}},
|
||||
|
|
|
@ -119,6 +119,7 @@ package cva6_config_pkg;
|
|||
BHTEntries: unsigned'(CVA6ConfigBHTEntries),
|
||||
DmBaseAddress: 64'h0,
|
||||
TvalEn: bit'(CVA6ConfigTvalEn),
|
||||
DirectVecOnly: bit'(0),
|
||||
NrPMPEntries: unsigned'(CVA6ConfigNrPMPEntries),
|
||||
PMPCfgRstVal: {16{64'h0}},
|
||||
PMPAddrRstVal: {16{64'h0}},
|
||||
|
|
|
@ -112,6 +112,7 @@ package cva6_config_pkg;
|
|||
BHTEntries: unsigned'(CVA6ConfigBHTEntries),
|
||||
DmBaseAddress: 64'h0,
|
||||
TvalEn: bit'(CVA6ConfigTvalEn),
|
||||
DirectVecOnly: bit'(0),
|
||||
NrPMPEntries: unsigned'(CVA6ConfigNrPMPEntries),
|
||||
PMPCfgRstVal: {16{64'h0}},
|
||||
PMPAddrRstVal: {16{64'h0}},
|
||||
|
|
|
@ -112,6 +112,7 @@ package cva6_config_pkg;
|
|||
BHTEntries: unsigned'(CVA6ConfigBHTEntries),
|
||||
DmBaseAddress: 64'h0,
|
||||
TvalEn: bit'(CVA6ConfigTvalEn),
|
||||
DirectVecOnly: bit'(0),
|
||||
NrPMPEntries: unsigned'(CVA6ConfigNrPMPEntries),
|
||||
PMPCfgRstVal: {16{64'h0}},
|
||||
PMPAddrRstVal: {16{64'h0}},
|
||||
|
|
|
@ -112,6 +112,7 @@ package cva6_config_pkg;
|
|||
BHTEntries: unsigned'(CVA6ConfigBHTEntries),
|
||||
DmBaseAddress: 64'h0,
|
||||
TvalEn: bit'(CVA6ConfigTvalEn),
|
||||
DirectVecOnly: bit'(0),
|
||||
NrPMPEntries: unsigned'(CVA6ConfigNrPMPEntries),
|
||||
PMPCfgRstVal: {16{64'h0}},
|
||||
PMPAddrRstVal: {16{64'h0}},
|
||||
|
|
|
@ -112,6 +112,7 @@ package cva6_config_pkg;
|
|||
BHTEntries: unsigned'(CVA6ConfigBHTEntries),
|
||||
DmBaseAddress: 64'h0,
|
||||
TvalEn: bit'(CVA6ConfigTvalEn),
|
||||
DirectVecOnly: bit'(0),
|
||||
NrPMPEntries: unsigned'(CVA6ConfigNrPMPEntries),
|
||||
PMPCfgRstVal: {16{64'h0}},
|
||||
PMPAddrRstVal: {16{64'h0}},
|
||||
|
|
|
@ -112,6 +112,7 @@ package cva6_config_pkg;
|
|||
BHTEntries: unsigned'(CVA6ConfigBHTEntries),
|
||||
DmBaseAddress: 64'h0,
|
||||
TvalEn: bit'(CVA6ConfigTvalEn),
|
||||
DirectVecOnly: bit'(0),
|
||||
NrPMPEntries: unsigned'(CVA6ConfigNrPMPEntries),
|
||||
PMPCfgRstVal: {16{64'h0}},
|
||||
PMPAddrRstVal: {16{64'h0}},
|
||||
|
|
|
@ -64,6 +64,7 @@ package cva6_config_pkg;
|
|||
BHTEntries: unsigned'(32),
|
||||
DmBaseAddress: 64'h0,
|
||||
TvalEn: bit'(0),
|
||||
DirectVecOnly: bit'(1),
|
||||
NrPMPEntries: unsigned'(64),
|
||||
PMPCfgRstVal: {16{64'h0}},
|
||||
PMPAddrRstVal: {16{64'h0}},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue