References:
Main module is ibex_top, defined in ibex_top.sv
Core logic is split-out from the register file and RAMs under
ibex_top. This is to facilitate a dual-core lockstep implementation.
RegFile defined in rtl/ibex_pkg.sv
Three register file implementations, depending on different target technologies:
ibex_pkg::RegFileFF: flip-flop-based, default;ibex_pkg::RegFileLatch: latch-based;ibex_pkg::RegFileFPGA: for FPGA target;Read-only CSRs, defined in rtl/ibex_pkg.sv, follows RISC-V Privileged Architecture.
mvendorid, 0 by default.
marchid, 22 for ibex.
mimpid, 0 by default.
Held outside rtl/ folder.
Can implement your own primitives.
Some primitives can be removed/ignored if not using in specific Ibex configurations.
Mandatory primitives:
prim_buf, a buffer used to avoid security critical logic being optimized away (by applying suitable constraints to prim_buf)prim_clock_gating, a clock gate.Depends on configuration:
If you could revise
the fundmental principles of
computer system design
to improve security...
... what would you change?