Module ibex_cs_registers
Block Diagram of ibex_cs_registers
Name |
Default |
Description |
---|---|---|
DbgTriggerEn |
0 |
|
DbgHwBreakNum |
1 |
|
DataIndTiming |
1'b0 |
|
DummyInstructions |
1'b0 |
|
ShadowCSR |
1'b0 |
|
ICache |
1'b0 |
|
MHPMCounterNum |
10 |
|
MHPMCounterWidth |
40 |
|
PMPEnable |
0 |
|
PMPGranularity |
0 |
|
PMPNumRegions |
4 |
|
PMPRstCfg |
ibex_pkg::PmpCfgRst |
|
PMPRstAddr |
ibex_pkg::PmpAddrRst |
|
PMPRstMsecCfg |
ibex_pkg::PmpMseccfgRst |
|
RV32E |
0 |
|
RV32M |
ibex_pkg::RV32MFast |
|
RV32B |
ibex_pkg::RV32BNone |
Name |
Type |
Direction |
Description |
---|---|---|---|
clk_i |
wire logic |
input |
|
rst_ni |
wire logic |
input |
|
hart_id_i |
wire logic [31 : 0] |
input |
Hart ID |
priv_mode_id_o |
output |
Privilege mode |
|
priv_mode_lsu_o |
output |
||
csr_mstatus_tw_o |
var logic |
output |
|
csr_mtvec_o |
var logic [31 : 0] |
output |
mtvec |
csr_mtvec_init_i |
wire logic |
input |
|
boot_addr_i |
wire logic [31 : 0] |
input |
|
csr_access_i |
wire logic |
input |
Interface to registers (SRAM like) |
csr_addr_i |
wire ibex_pkg::csr_num_e |
input |
|
csr_wdata_i |
wire logic [31 : 0] |
input |
|
csr_op_i |
wire ibex_pkg::csr_op_e |
input |
|
csr_op_en_i |
wire logic |
input |
|
csr_rdata_o |
var logic [31 : 0] |
output |
|
irq_software_i |
wire logic |
input |
interrupts |
irq_timer_i |
wire logic |
input |
|
irq_external_i |
wire logic |
input |
|
irq_fast_i |
wire logic [14 : 0] |
input |
|
nmi_mode_i |
wire logic |
input |
|
irq_pending_o |
var logic |
output |
interrupt request pending |
irqs_o |
var ibex_pkg::irqs_t |
output |
interrupt requests qualified with mie |
csr_mstatus_mie_o |
var logic |
output |
|
csr_mepc_o |
var logic [31 : 0] |
output |
|
csr_mtval_o |
var logic [31 : 0] |
output |
|
csr_pmp_cfg_o |
var pmp_cfg_t |
output |
PMP |
csr_pmp_addr_o |
var logic [33 : 0] |
output |
|
csr_pmp_mseccfg_o |
output |
||
debug_mode_i |
wire logic |
input |
debug |
debug_mode_entering_i |
wire logic |
input |
|
debug_cause_i |
input |
||
debug_csr_save_i |
wire logic |
input |
|
csr_depc_o |
var logic [31 : 0] |
output |
|
debug_single_step_o |
var logic |
output |
|
debug_ebreakm_o |
var logic |
output |
|
debug_ebreaku_o |
var logic |
output |
|
trigger_match_o |
var logic |
output |
|
pc_if_i |
wire logic [31 : 0] |
input |
|
pc_id_i |
wire logic [31 : 0] |
input |
|
pc_wb_i |
wire logic [31 : 0] |
input |
|
data_ind_timing_o |
var logic |
output |
CPU control and status bits |
dummy_instr_en_o |
var logic |
output |
|
dummy_instr_mask_o |
var logic [2 : 0] |
output |
|
dummy_instr_seed_en_o |
var logic |
output |
|
dummy_instr_seed_o |
var logic [31 : 0] |
output |
|
icache_enable_o |
var logic |
output |
|
csr_shadow_err_o |
var logic |
output |
|
ic_scr_key_valid_i |
wire logic |
input |
|
csr_save_if_i |
wire logic |
input |
Exception save/restore |
csr_save_id_i |
wire logic |
input |
|
csr_save_wb_i |
wire logic |
input |
|
csr_restore_mret_i |
wire logic |
input |
|
csr_restore_dret_i |
wire logic |
input |
|
csr_save_cause_i |
wire logic |
input |
|
csr_mcause_i |
input |
||
csr_mtval_i |
wire logic [31 : 0] |
input |
|
illegal_csr_insn_o |
var logic |
output |
access to non-existent CSR, |
double_fault_seen_o |
var logic |
output |
with wrong priviledge level, or missing write permissions |
instr_ret_i |
wire logic |
input |
Performance Counters instr retired in ID/EX stage |
instr_ret_compressed_i |
wire logic |
input |
compressed instr retired |
instr_ret_spec_i |
wire logic |
input |
speculative instr_ret_i |
instr_ret_compressed_spec_i |
wire logic |
input |
speculative instr_ret_compressed_i |
iside_wait_i |
wire logic |
input |
core waiting for the iside |
jump_i |
wire logic |
input |
jump instr seen (j, jr, jal, jalr) |
branch_i |
wire logic |
input |
branch instr seen (bf, bnf) |
branch_taken_i |
wire logic |
input |
branch was taken |
mem_load_i |
wire logic |
input |
load from memory in this cycle |
mem_store_i |
wire logic |
input |
store to memory in this cycle |
dside_wait_i |
wire logic |
input |
core waiting for the dside |
mul_wait_i |
wire logic |
input |
core waiting for multiply |
div_wait_i |
wire logic |
input |
core waiting for divide |
Name |
Kind |
Description |
---|---|---|
ibex_cs_registers.PMPAddrRstLowBitsZero_A |
immediate assert |
(PMPRstAddr[i][33 - PMPAddrWidth : 0] == '0)
|
ibex_cs_registers.IbexCsrOpEnRequiresAccess |
concurent assert |
disable iff((!rst_ni)!=='0)(csr_op_en_i |-> csr_access_i)
|
Structs
- typedef struct status_t
- typedef struct status_stk_t
- typedef struct dcsr_t
- typedef struct cpu_ctrl_sts_part_t
Partial CPU control and status register fields ICache scramble key valid (ic_scr_key_valid) is registered seperately to this struct. This is because it is sampled from the top-level every cycle whilst the other fields only change occasionally.
Always Blocks
- always_comb @()
read logic
- always_comb @()
write logic
- always_ff @(posedge clk_i or negedge rst_ni)
Update current priv level
- always_comb @()
CSR operation logic
- always_comb @()
update enable signals
- always_comb @()
event selection (hardwired) & control
- always_comb @()
event selector (hardwired, 0 means no event)
Functions
- is_mml_m_exec_cfg(ibex_pkg::pmp_cfg_t pmp_cfg)
Is a PMP config a locked one that allows M-mode execution when MSECCFG.MML is set (either M mode alone or shared M/U mode execution)?
- Parameters:
pmp_cfg (ibex_pkg::pmp_cfg_t)
Instances
- ibex_top : ibex_top
- u_ibex_core : ibex_core
cs_registers_i : ibex_cs_registers
Submodules
- ibex_cs_registers
g_mcountinhibit_reduced : []
g_no_pmp_tieoffs : [if !(PMPEnable)]
gen_cntrs : [for (genvar i=0;i<29;i++)]
gen_no_dit : [if !(DataIndTiming)]
gen_no_dummy : [if !(DummyInstructions)]
gen_no_icache : [if !(ICache)]
gen_no_trigger_regs : [if !(DbgTriggerEn)]
mcycle_counter_i : ibex_counter
minstret_counter_i : ibex_counter
u_cpuctrlsts_part_csr : ibex_csr
u_dcsr_csr : ibex_csr
u_depc_csr : ibex_csr
u_dscratch0_csr : ibex_csr
u_dscratch1_csr : ibex_csr
u_mcause_csr : ibex_csr
u_mepc_csr : ibex_csr
u_mie_csr : ibex_csr
u_mscratch_csr : ibex_csr
u_mstack_cause_csr : ibex_csr
u_mstack_csr : ibex_csr
u_mstack_epc_csr : ibex_csr
u_mstatus_csr : ibex_csr
u_mtval_csr : ibex_csr
u_mtvec_csr : ibex_csr
Flow Diagram of ibex_cs_registers
Sub-Instances Diagram of ibex_cs_registers
Schematic Diagram of ibex_cs_registers
Clock and Reset