Module ibex_decoder
Block Diagram of ibex_decoder
Name |
Default |
Description |
---|---|---|
RV32E |
0 |
|
RV32M |
ibex_pkg::RV32MFast |
|
RV32B |
ibex_pkg::RV32BNone |
|
BranchTargetALU |
0 |
Name |
Type |
Direction |
Description |
---|---|---|---|
clk_i |
wire logic |
input |
|
rst_ni |
wire logic |
input |
|
illegal_insn_o |
var logic |
output |
|
ebrk_insn_o |
var logic |
output |
trap instr encountered |
mret_insn_o |
var logic |
output |
return from exception instr |
dret_insn_o |
var logic |
output |
encountered return from debug instr encountered |
ecall_insn_o |
var logic |
output |
syscall instr encountered |
wfi_insn_o |
var logic |
output |
wait for interrupt instr encountered |
jump_set_o |
var logic |
output |
jump taken set signal |
branch_taken_i |
wire logic |
input |
registered branch decision |
icache_inval_o |
var logic |
output |
|
instr_first_cycle_i |
wire logic |
input |
from IF-ID pipeline register instruction read is in its first cycle |
instr_rdata_i |
wire logic [31 : 0] |
input |
instruction read from memory/cache |
instr_rdata_alu_i |
wire logic [31 : 0] |
input |
instruction read from memory/cache |
illegal_c_insn_i |
wire logic |
input |
replicated to ease fan-out) compressed instruction decode failed |
imm_a_mux_sel_o |
output |
immediates immediate selection for operand a |
|
imm_b_mux_sel_o |
output |
immediate selection for operand b |
|
bt_a_mux_sel_o |
output |
branch target selection operand a |
|
bt_b_mux_sel_o |
output |
branch target selection operand b |
|
imm_i_type_o |
var logic [31 : 0] |
output |
|
imm_s_type_o |
var logic [31 : 0] |
output |
|
imm_b_type_o |
var logic [31 : 0] |
output |
|
imm_u_type_o |
var logic [31 : 0] |
output |
|
imm_j_type_o |
var logic [31 : 0] |
output |
|
zimm_rs1_type_o |
var logic [31 : 0] |
output |
|
rf_wdata_sel_o |
output |
register file RF write data selection |
|
rf_we_o |
var logic |
output |
write enable for regfile |
rf_raddr_a_o |
var logic [4 : 0] |
output |
|
rf_raddr_b_o |
var logic [4 : 0] |
output |
|
rf_waddr_o |
var logic [4 : 0] |
output |
|
rf_ren_a_o |
var logic |
output |
Instruction reads from RF addr A |
rf_ren_b_o |
var logic |
output |
Instruction reads from RF addr B |
alu_operator_o |
output |
ALU ALU operation selection |
|
alu_op_a_mux_sel_o |
output |
operand a selection reg value, PC, |
|
alu_op_b_mux_sel_o |
output |
immediate or zero operand b selection: reg value or |
|
alu_multicycle_o |
var logic |
output |
immediate ternary bitmanip instruction |
mult_en_o |
var logic |
output |
MULT & DIV perform integer multiplication |
div_en_o |
var logic |
output |
perform integer division or remainder |
mult_sel_o |
var logic |
output |
as above but static, for data muxes |
div_sel_o |
var logic |
output |
as above but static, for data muxes |
multdiv_operator_o |
output |
||
multdiv_signed_mode_o |
var logic [1 : 0] |
output |
|
csr_access_o |
var logic |
output |
CSRs access to CSR |
csr_op_o |
output |
operation to perform on CSR |
|
csr_addr_o |
output |
CSR address |
|
data_req_o |
var logic |
output |
LSU start transaction to data memory |
data_we_o |
var logic |
output |
write enable |
data_type_o |
var logic [1 : 0] |
output |
size of transaction byte, half |
data_sign_extension_o |
var logic |
output |
word or word sign extension for data read from |
jump_in_dec_o |
var logic |
output |
jump/branches jump is being calculated in ALU |
branch_in_dec_o |
var logic |
output |
Name |
Kind |
Description |
---|---|---|
ibex_decoder.IbexRegImmAluOpKnown |
concurent assert |
disable iff((!rst_ni)!=='0)((opcode == OPCODE_OP_IMM) |-> ! $isunknown(instr[14 : 12]))
|
Always Blocks
- always_comb @()
///////////////////// CSR operand check // /////////////////////
- always_comb @()
/////////// Decoder // ///////////
- always_comb @()
/////////////////////////// Decoder for ALU control // ///////////////////////////
Instances
- ibex_top : ibex_top
- u_ibex_core : ibex_core
- id_stage_i : ibex_id_stage
decoder_i : ibex_decoder
Submodules
- ibex_decoder
gen_no_rs3_flop : [if !(RV32B!=RV32BNone)]
gen_rv32e_reg_check_inactive : [if !(RV32E)]
to/from controller illegal instr encountered