# Copyright lowRISC contributors. # Licensed under the Apache License, Version 2.0, see LICENSE for details. # SPDX-License-Identifier: Apache-2.0 # Ibex named configurations, each configuration must specify the same set of # parameters. # ============================ # * SUPPORTED CONFIGURATIONS * # ============================ # # Supported configurations are those that verification (such as nightly # regression) and design effort is focussed on. Currently only the 'opentitan' # configuration has nightly regressions but this will be expanded to all # supported configurations. # Two-stage pipeline without additional branch target ALU and 3 cycle multiplier # (4 cycles for mulh), resulting in 2 stall cycles for mul (3 for mulh) small: RV32E : 0 RV32M : "ibex_pkg::RV32MFast" RV32B : "ibex_pkg::RV32BNone" RV32ZC : "ibex_pkg::RV32Zca" RegFile : "ibex_pkg::RegFileFF" BranchTargetALU : 0 WritebackStage : 0 ICache : 0 ICacheECC : 0 ICacheScramble : 0 BranchPredictor : 0 DbgTriggerEn : 0 SecureIbex : 0 PMPEnable : 0 PMPGranularity : 0 PMPNumRegions : 4 MHPMCounterNum : 0 MHPMCounterWidth : 40 # Configuration to match that used in the OpenTitan project opentitan: RV32E : 0 RV32M : "ibex_pkg::RV32MSingleCycle" RV32B : "ibex_pkg::RV32BOTEarlGrey" RV32ZC : "ibex_pkg::RV32ZcaZcbZcmp" RegFile : "ibex_pkg::RegFileFF" BranchTargetALU : 1 WritebackStage : 1 ICache : 1 ICacheECC : 1 ICacheScramble : 1 BranchPredictor : 0 DbgTriggerEn : 1 SecureIbex : 1 PMPEnable : 1 PMPGranularity : 0 PMPNumRegions : 16 MHPMCounterNum : 10 MHPMCounterWidth : 32 # Three-stage pipeline with additional branch traget ALU and 1 cycle multiplier # (2 cycles for mulh) so mul does not stall (mulh stall 1 cycles). This is the # maximum performance configuration ignoring the branch predictor (which isn't # yet fully verified) maxperf: RV32E : 0 RV32M : "ibex_pkg::RV32MSingleCycle" RV32B : "ibex_pkg::RV32BNone" RV32ZC : "ibex_pkg::RV32ZcaZcbZcmp" RegFile : "ibex_pkg::RegFileFF" BranchTargetALU : 1 WritebackStage : 1 ICache : 0 ICacheECC : 0 ICacheScramble : 0 BranchPredictor : 0 DbgTriggerEn : 0 SecureIbex : 0 PMPEnable : 0 PMPGranularity : 0 PMPNumRegions : 4 MHPMCounterNum : 0 MHPMCounterWidth : 40 # maxperf config above with balanced bitmanip extension and PMP maxperf-pmp-bmbalanced: RV32E : 0 RV32M : "ibex_pkg::RV32MSingleCycle" RV32B : "ibex_pkg::RV32BBalanced" RV32ZC : "ibex_pkg::RV32ZcaZcbZcmp" RegFile : "ibex_pkg::RegFileFF" BranchTargetALU : 1 WritebackStage : 1 ICache : 0 ICacheECC : 0 ICacheScramble : 0 BranchPredictor : 0 DbgTriggerEn : 0 SecureIbex : 0 PMPEnable : 1 PMPGranularity : 0 PMPNumRegions : 16 MHPMCounterNum : 0 MHPMCounterWidth : 40 # ======================== # * OTHER CONFIGURATIONS * # ======================== # Configurations that may be useful but aren't supported configurations. # maxperf config above plus PMP enabled with 16 regions. maxperf-pmp: RV32E : 0 RV32M : "ibex_pkg::RV32MSingleCycle" RV32B : "ibex_pkg::RV32BNone" RV32ZC : "ibex_pkg::RV32ZcaZcbZcmp" RegFile : "ibex_pkg::RegFileFF" BranchTargetALU : 1 WritebackStage : 1 ICache : 0 ICacheECC : 0 ICacheScramble : 0 BranchPredictor : 0 DbgTriggerEn : 0 SecureIbex : 0 PMPEnable : 1 PMPGranularity : 0 PMPNumRegions : 16 MHPMCounterNum : 0 MHPMCounterWidth : 40 # maxperf-pmp config above with full bitmanip extension maxperf-pmp-bmfull: RV32E : 0 RV32M : "ibex_pkg::RV32MSingleCycle" RV32B : "ibex_pkg::RV32BFull" RV32ZC : "ibex_pkg::RV32ZcaZcbZcmp" RegFile : "ibex_pkg::RegFileFF" BranchTargetALU : 1 WritebackStage : 1 ICache : 0 ICacheECC : 0 ICacheScramble : 0 BranchPredictor : 0 DbgTriggerEn : 0 SecureIbex : 0 PMPEnable : 1 PMPGranularity : 0 PMPNumRegions : 16 MHPMCounterNum : 0 MHPMCounterWidth : 40 # maxperf-pmp-bmfull config above with icache enabled maxperf-pmp-bmfull-icache: RV32E : 0 RV32M : "ibex_pkg::RV32MSingleCycle" RV32B : "ibex_pkg::RV32BFull" RV32ZC : "ibex_pkg::RV32ZcaZcbZcmp" RegFile : "ibex_pkg::RegFileFF" BranchTargetALU : 1 WritebackStage : 1 ICache : 1 ICacheECC : 1 ICacheScramble : 0 BranchPredictor : 0 DbgTriggerEn : 0 SecureIbex : 0 PMPEnable : 1 PMPGranularity : 0 PMPNumRegions : 16 MHPMCounterNum : 0 MHPMCounterWidth : 40 # =============================== # * EXPERIMENTAL CONFIGURATIONS * # =============================== # Configurations using experimental features that aren't yet verified and/or # known to have issues. experimental-branch-predictor: RV32E : 0 RV32M : "ibex_pkg::RV32MSingleCycle" RV32B : "ibex_pkg::RV32BNone" RV32ZC : "ibex_pkg::RV32ZcaZcbZcmp" RegFile : "ibex_pkg::RegFileFF" BranchTargetALU : 1 WritebackStage : 1 ICache : 0 ICacheECC : 0 ICacheScramble : 0 BranchPredictor : 1 DbgTriggerEn : 0 SecureIbex : 0 PMPEnable : 0 PMPGranularity : 0 PMPNumRegions : 4 MHPMCounterNum : 0 MHPMCounterWidth : 40