|
14 | 14 | * Top level module of the ibex RISC-V core |
15 | 15 | */ |
16 | 16 | module ibex_core import ibex_pkg::*; #( |
17 | | - parameter bit PMPEnable = 1'b0, |
18 | | - parameter int unsigned PMPGranularity = 0, |
19 | | - parameter int unsigned PMPNumRegions = 4, |
20 | | - parameter ibex_pkg::pmp_cfg_t PMPRstCfg[16] = ibex_pkg::PmpCfgRst, |
21 | | - parameter logic [33:0] PMPRstAddr[16] = ibex_pkg::PmpAddrRst, |
22 | | - parameter ibex_pkg::pmp_mseccfg_t PMPRstMsecCfg = ibex_pkg::PmpMseccfgRst, |
23 | | - parameter int unsigned MHPMCounterNum = 0, |
24 | | - parameter int unsigned MHPMCounterWidth = 40, |
25 | | - parameter bit RV32E = 1'b0, |
26 | | - parameter rv32m_e RV32M = RV32MFast, |
27 | | - parameter rv32b_e RV32B = RV32BNone, |
28 | | - parameter bit BranchTargetALU = 1'b0, |
29 | | - parameter bit WritebackStage = 1'b0, |
30 | | - parameter bit ICache = 1'b0, |
31 | | - parameter bit ICacheECC = 1'b0, |
32 | | - parameter int unsigned BusSizeECC = BUS_SIZE, |
33 | | - parameter int unsigned TagSizeECC = IC_TAG_SIZE, |
34 | | - parameter int unsigned LineSizeECC = IC_LINE_SIZE, |
35 | | - parameter bit BranchPredictor = 1'b0, |
36 | | - parameter bit DbgTriggerEn = 1'b0, |
37 | | - parameter int unsigned DbgHwBreakNum = 1, |
38 | | - parameter bit ResetAll = 1'b0, |
39 | | - parameter lfsr_seed_t RndCnstLfsrSeed = RndCnstLfsrSeedDefault, |
40 | | - parameter lfsr_perm_t RndCnstLfsrPerm = RndCnstLfsrPermDefault, |
41 | | - parameter bit SecureIbex = 1'b0, |
42 | | - parameter bit DummyInstructions= 1'b0, |
43 | | - parameter bit RegFileECC = 1'b0, |
44 | | - parameter int unsigned RegFileDataWidth = 32, |
45 | | - parameter bit MemECC = 1'b0, |
46 | | - parameter int unsigned MemDataWidth = MemECC ? 32 + 7 : 32, |
47 | | - parameter int unsigned DmBaseAddr = 32'h1A110000, |
48 | | - parameter int unsigned DmAddrMask = 32'h00000FFF, |
49 | | - parameter int unsigned DmHaltAddr = 32'h1A110800, |
50 | | - parameter int unsigned DmExceptionAddr = 32'h1A110808, |
| 17 | + parameter bit PMPEnable = 1'b0, |
| 18 | + parameter int unsigned PMPGranularity = 0, |
| 19 | + parameter int unsigned PMPNumRegions = 4, |
| 20 | + parameter ibex_pkg::pmp_cfg_t PMPRstCfg[PMP_MAX_REGIONS] = ibex_pkg::PmpCfgRst, |
| 21 | + parameter logic [PMP_ADDR_MSB:0] PMPRstAddr[PMP_MAX_REGIONS] = ibex_pkg::PmpAddrRst, |
| 22 | + parameter ibex_pkg::pmp_mseccfg_t PMPRstMsecCfg = ibex_pkg::PmpMseccfgRst, |
| 23 | + parameter int unsigned MHPMCounterNum = 0, |
| 24 | + parameter int unsigned MHPMCounterWidth = 40, |
| 25 | + parameter bit RV32E = 1'b0, |
| 26 | + parameter rv32m_e RV32M = RV32MFast, |
| 27 | + parameter rv32b_e RV32B = RV32BNone, |
| 28 | + parameter bit BranchTargetALU = 1'b0, |
| 29 | + parameter bit WritebackStage = 1'b0, |
| 30 | + parameter bit ICache = 1'b0, |
| 31 | + parameter bit ICacheECC = 1'b0, |
| 32 | + parameter int unsigned BusSizeECC = BUS_SIZE, |
| 33 | + parameter int unsigned TagSizeECC = IC_TAG_SIZE, |
| 34 | + parameter int unsigned LineSizeECC = IC_LINE_SIZE, |
| 35 | + parameter bit BranchPredictor = 1'b0, |
| 36 | + parameter bit DbgTriggerEn = 1'b0, |
| 37 | + parameter int unsigned DbgHwBreakNum = 1, |
| 38 | + parameter bit ResetAll = 1'b0, |
| 39 | + parameter lfsr_seed_t RndCnstLfsrSeed = RndCnstLfsrSeedDefault, |
| 40 | + parameter lfsr_perm_t RndCnstLfsrPerm = RndCnstLfsrPermDefault, |
| 41 | + parameter bit SecureIbex = 1'b0, |
| 42 | + parameter bit DummyInstructions = 1'b0, |
| 43 | + parameter bit RegFileECC = 1'b0, |
| 44 | + parameter int unsigned RegFileDataWidth = 32, |
| 45 | + parameter bit MemECC = 1'b0, |
| 46 | + parameter int unsigned MemDataWidth = MemECC ? 32 + 7 : 32, |
| 47 | + parameter int unsigned DmBaseAddr = 32'h1A110000, |
| 48 | + parameter int unsigned DmAddrMask = 32'h00000FFF, |
| 49 | + parameter int unsigned DmHaltAddr = 32'h1A110800, |
| 50 | + parameter int unsigned DmExceptionAddr = 32'h1A110808, |
51 | 51 | // mvendorid: encoding of manufacturer/provider |
52 | | - parameter logic [31:0] CsrMvendorId = 32'b0, |
| 52 | + parameter logic [31:0] CsrMvendorId = 32'b0, |
53 | 53 | // marchid: encoding of base microarchitecture |
54 | | - parameter logic [31:0] CsrMimpId = 32'b0 |
| 54 | + parameter logic [31:0] CsrMimpId = 32'b0 |
55 | 55 | ) ( |
56 | 56 | // Clock and Reset |
57 | 57 | input logic clk_i, |
@@ -331,11 +331,11 @@ module ibex_core import ibex_pkg::*; #( |
331 | 331 | logic [31:0] csr_mepc, csr_depc; |
332 | 332 |
|
333 | 333 | // PMP signals |
334 | | - logic [33:0] csr_pmp_addr [PMPNumRegions]; |
335 | | - pmp_cfg_t csr_pmp_cfg [PMPNumRegions]; |
336 | | - pmp_mseccfg_t csr_pmp_mseccfg; |
337 | | - logic pmp_req_err [PMPNumChan]; |
338 | | - logic data_req_out; |
| 334 | + logic [PMP_ADDR_MSB:0] csr_pmp_addr [PMPNumRegions]; |
| 335 | + pmp_cfg_t csr_pmp_cfg [PMPNumRegions]; |
| 336 | + pmp_mseccfg_t csr_pmp_mseccfg; |
| 337 | + logic pmp_req_err [PMPNumChan]; |
| 338 | + logic data_req_out; |
339 | 339 |
|
340 | 340 | logic csr_save_if; |
341 | 341 | logic csr_save_id; |
@@ -1170,10 +1170,10 @@ module ibex_core import ibex_pkg::*; #( |
1170 | 1170 | `ASSERT_KNOWN_IF(IbexCsrWdataIntKnown, cs_registers_i.csr_wdata_int, csr_op_en) |
1171 | 1171 |
|
1172 | 1172 | if (PMPEnable) begin : g_pmp |
1173 | | - logic [31:0] pc_if_inc; |
1174 | | - logic [33:0] pmp_req_addr [PMPNumChan]; |
1175 | | - pmp_req_e pmp_req_type [PMPNumChan]; |
1176 | | - priv_lvl_e pmp_priv_lvl [PMPNumChan]; |
| 1173 | + logic [31:0] pc_if_inc; |
| 1174 | + logic [PMP_ADDR_MSB:0] pmp_req_addr [PMPNumChan]; |
| 1175 | + pmp_req_e pmp_req_type [PMPNumChan]; |
| 1176 | + priv_lvl_e pmp_priv_lvl [PMPNumChan]; |
1177 | 1177 |
|
1178 | 1178 | assign pc_if_inc = pc_if + 32'd2; |
1179 | 1179 | assign pmp_req_addr[PMP_I] = {2'b00, pc_if}; |
@@ -1206,10 +1206,10 @@ module ibex_core import ibex_pkg::*; #( |
1206 | 1206 | ); |
1207 | 1207 | end else begin : g_no_pmp |
1208 | 1208 | // Unused signal tieoff |
1209 | | - priv_lvl_e unused_priv_lvl_ls; |
1210 | | - logic [33:0] unused_csr_pmp_addr [PMPNumRegions]; |
1211 | | - pmp_cfg_t unused_csr_pmp_cfg [PMPNumRegions]; |
1212 | | - pmp_mseccfg_t unused_csr_pmp_mseccfg; |
| 1209 | + priv_lvl_e unused_priv_lvl_ls; |
| 1210 | + logic [PMP_ADDR_MSB:0] unused_csr_pmp_addr [PMPNumRegions]; |
| 1211 | + pmp_cfg_t unused_csr_pmp_cfg [PMPNumRegions]; |
| 1212 | + pmp_mseccfg_t unused_csr_pmp_mseccfg; |
1213 | 1213 | assign unused_priv_lvl_ls = priv_mode_lsu; |
1214 | 1214 | assign unused_csr_pmp_addr = csr_pmp_addr; |
1215 | 1215 | assign unused_csr_pmp_cfg = csr_pmp_cfg; |
|
0 commit comments