CAPI=2: # Copyright lowRISC contributors. # Licensed under the Apache License, Version 2.0, see LICENSE for details. # SPDX-License-Identifier: Apache-2.0 name: "lowrisc:ibex:ibex_top:0.1" description: "Ibex, a small RV32 CPU core" filesets: files_rtl: depend: - lowrisc:ibex:ibex_pkg - lowrisc:ibex:ibex_core - lowrisc:prim:buf - lowrisc:prim:clock_mux2 - lowrisc:prim:flop - lowrisc:prim:ram_1p_scr - lowrisc:prim:onehot_check files: - rtl/ibex_register_file_ff.sv # generic FF-based - rtl/ibex_register_file_fpga.sv # FPGA - rtl/ibex_register_file_latch.sv # ASIC - rtl/ibex_lockstep.sv - rtl/ibex_top.sv file_type: systemVerilogSource files_lint_verilator: files: - lint/verilator_waiver.vlt: {file_type: vlt} files_lint_verible: files: - lint/verible_waiver.vbw: {file_type: veribleLintWaiver} files_check_tool_requirements: depend: - lowrisc:tool:check_tool_requirements parameters: RVFI: datatype: bool paramtype: vlogdefine SYNTHESIS: datatype: bool paramtype: vlogdefine FPGA_XILINX: datatype: bool description: Identifies Xilinx FPGA targets to set DSP pragmas for performance counters. default: false paramtype: vlogdefine RV32E: datatype: int default: 0 paramtype: vlogparam RV32M: datatype: str default: ibex_pkg::RV32MFast paramtype: vlogdefine description: "RV32M implementation parameter enum. See the ibex_pkg::rv32m_e enum in ibex_pkg.sv for permitted values." RV32B: datatype: str default: ibex_pkg::RV32BNone paramtype: vlogdefine description: "Bitmanip implementation parameter enum. See the ibex_pkg::rv32b_e enum in ibex_pkg.sv for permitted values." RegFile: datatype: str default: ibex_pkg::RegFileFF paramtype: vlogdefine description: "Register file implementation parameter enum. See the ibex_pkg::regfile_e enum in ibex_pkg.sv for permitted values." ICache: datatype: int default: 0 paramtype: vlogparam description: "Enable instruction cache" ICacheECC: datatype: int default: 0 paramtype: vlogparam description: "Enable ECC protection in instruction cache" BranchTargetALU: datatype: int default: 0 paramtype: vlogparam description: "Enables separate branch target ALU (increasing branch performance EXPERIMENTAL) [0/1]" WritebackStage: datatype: int default: 0 paramtype: vlogparam description: "Enables third pipeline stage (EXPERIMENTAL) [0/1]" BranchPredictor: datatype: int paramtype: vlogparam default: 0 description: "Enables static branch prediction (EXPERIMENTAL)" DbgTriggerEn: datatype: int default: 0 paramtype: vlogparam description: "Enable support for debug triggers. " SecureIbex: datatype: int default: 0 paramtype: vlogparam description: "Enables security hardening features (EXPERIMENTAL) [0/1]" ICacheScramble: datatype: int default: 0 paramtype: vlogparam description: "Enables ICache scrambling feature (EXPERIMENTAL) [0/1]" PMPEnable: datatype: int default: 0 paramtype: vlogparam description: "Enable PMP" PMPGranularity: datatype: int default: 0 paramtype: vlogparam description: "Granularity of NAPOT range, 0 = 4 byte, 1 = byte, 2 = 16 byte, 3 = 32 byte etc" PMPNumRegions: datatype: int default: 4 paramtype: vlogparam description: "Number of PMP regions" MHPMCounterNum: datatype: int paramtype: vlogparam default: 0 description: Number of performance monitor event counters [0/29] MHPMCounterWidth: datatype: int paramtype: vlogparam default: 40 description: Bit width of performance monitor event counters [32/64] targets: default: &default_target filesets: - tool_verilator ? (files_lint_verilator) - tool_veriblelint ? (files_lint_verible) - files_rtl - files_check_tool_requirements toplevel: ibex_top parameters: - tool_vivado ? (FPGA_XILINX=true) lint: <<: *default_target parameters: - SYNTHESIS=true - RVFI=true default_tool: verilator tools: verilator: mode: lint-only verilator_options: - "-Wall" # RAM primitives wider than 64bit (required for ECC) fail to build in # Verilator without increasing the unroll count (see Verilator#1266) - "--unroll-count 72" format: filesets: - files_rtl parameters: - SYNTHESIS=true - RVFI=true default_tool: veribleformat toplevel: ibex_top tools: veribleformat: verible_format_args: - "--inplace" - "--formal_parameters_indentation=indent" - "--named_parameter_indentation=indent" - "--named_port_indentation=indent" - "--port_declarations_indentation=indent"