[source]

Module ibex_ex_block

RV32MRV32BBranchTargetALUclk_ilogicrst_nilogicalu_operator_iibex_pkg::alu_op_ealu_operand_a_i[31:0]logicalu_operand_b_i[31:0]logicalu_instr_first_cycle_ilogicbt_a_operand_i[31:0]logicbt_b_operand_i[31:0]logicmultdiv_operator_iibex_pkg::md_op_emult_en_ilogicdiv_en_ilogicmult_sel_ilogicdiv_sel_ilogicmultdiv_signed_mode_i[1:0]logicmultdiv_operand_a_i[31:0]logicmultdiv_operand_b_i[31:0]logicmultdiv_ready_id_ilogicdata_ind_timing_ilogicimd_val_q_i[33:0]logicimd_val_we_ologic[1:0]imd_val_d_ologic[33:0]alu_adder_result_ex_ologic[31:0]result_ex_ologic[31:0]branch_target_ologic[31:0]branch_decision_ologicex_valid_ologic

Block Diagram of ibex_ex_block

Execution stage

Execution block

Hosts ALU and MUL/DIV unit

Parameters

Name

Default

Description

RV32M

ibex_pkg::RV32MFast

RV32B

ibex_pkg::RV32BNone

BranchTargetALU

0

Ports

Name

Type

Direction

Description

clk_i

wire logic

input

rst_ni

wire logic

input

alu_operator_i

wire ibex_pkg::alu_op_e

input

ALU

alu_operand_a_i

wire logic [31 : 0]

input

alu_operand_b_i

wire logic [31 : 0]

input

alu_instr_first_cycle_i

wire logic

input

bt_a_operand_i

wire logic [31 : 0]

input

Branch Target ALU All of these signals are unusued when BranchTargetALU == 0

bt_b_operand_i

wire logic [31 : 0]

input

multdiv_operator_i

wire ibex_pkg::md_op_e

input

Multiplier/Divider

mult_en_i

wire logic

input

dynamic enable signal, for FSM control

div_en_i

wire logic

input

dynamic enable signal, for FSM control

mult_sel_i

wire logic

input

static decoder output, for data muxes

div_sel_i

wire logic

input

static decoder output, for data muxes

multdiv_signed_mode_i

wire logic [1 : 0]

input

multdiv_operand_a_i

wire logic [31 : 0]

input

multdiv_operand_b_i

wire logic [31 : 0]

input

multdiv_ready_id_i

wire logic

input

data_ind_timing_i

wire logic

input

imd_val_we_o

var logic [1 : 0]

output

intermediate val reg

imd_val_d_o

var logic [33 : 0]

output

imd_val_q_i

wire logic [33 : 0]

input

alu_adder_result_ex_o

var logic [31 : 0]

output

Outputs to LSU

result_ex_o

var logic [31 : 0]

output

branch_target_o

var logic [31 : 0]

output

to IF

branch_decision_o

var logic

output

to ID

ex_valid_o

var logic

output

EX has valid output

Instances

Submodules

  • ibex_ex_block
    • alu_i : ibex_alu

    • g_no_branch_target_alu : [if !(BranchTargetALU)]

    • gen_multdiv_fast : []
    • gen_multdiv_m : []

    • gen_multdiv_sva_idle_fast : []

alu_i (ibex_alu) gen_multdiv_fast.multdiv_i (ibex_multdiv_fast) gen_multdiv_fast ex_block_i (ibex_ex_block)

Flow Diagram of ibex_ex_block

alu_i (ibex_alu) operator_i operand_a_i operand_b_i instr_first_cycle_i multdiv_operand_a_i multdiv_operand_b_i adder_result_o adder_result_ext_o is_equal_result_o g_no_branch_target_alu gen_multdiv_fast.multdiv_i (ibex_multdiv_fast) clk_i rst_ni mult_en_i div_en_i mult_sel_i div_sel_i operator_i signed_mode_i op_a_i op_b_i alu_adder_ext_i alu_adder_i equal_to_zero_i data_ind_timing_i alu_operand_a_o alu_operand_b_o imd_val_q_i multdiv_ready_id_i gen_multdiv_fast gen_multdiv_m gen_multdiv_sva_idle_fast ex_block_i (ibex_ex_block) clk_i rst_ni alu_operator_i alu_operand_a_i alu_operand_b_i alu_instr_first_cycle_i multdiv_operator_i mult_en_i div_en_i mult_sel_i div_sel_i multdiv_signed_mode_i multdiv_operand_a_i multdiv_operand_b_i multdiv_ready_id_i data_ind_timing_i imd_val_q_i alu_adder_result_ex_o

Sub-Instances Diagram of ibex_ex_block

alu_i (ibex_alu) operator_i operand_a_i operand_b_i instr_first_cycle_i multdiv_operand_a_i multdiv_operand_b_i multdiv_sel_i imd_val_q_i imd_val_d_o imd_val_we_o adder_result_o adder_result_ext_o result_o comparison_result_o is_equal_result_o imd_val_d_o multdiv_imd_val_d multdiv_sel alu_imd_val_d imd_val_d_o multdiv_imd_val_d multdiv_sel alu_imd_val_d imd_val_we_o multdiv_imd_val_we multdiv_sel alu_imd_val_we alu_imd_val_q imd_val_q_i result_ex_o multdiv_result multdiv_sel alu_result branch_decision_o alu_cmp_result ex_valid_o multdiv_valid multdiv_sel alu_imd_val_we unused_sva_multdiv_fsm_idle sva_multdiv_fsm_idle unused_bt_a_operand bt_a_operand_i unused_bt_b_operand bt_b_operand_i branch_target_o alu_adder_result_ex_o g_no_branch_target_alu gen_multdiv_fast.multdiv_i (ibex_multdiv_fast) clk_i rst_ni mult_en_i div_en_i mult_sel_i div_sel_i operator_i signed_mode_i op_a_i op_b_i alu_adder_ext_i alu_adder_i equal_to_zero_i data_ind_timing_i alu_operand_a_o alu_operand_b_o imd_val_q_i imd_val_d_o imd_val_we_o multdiv_ready_id_i multdiv_result_o valid_o gen_multdiv_fast multdiv_sel mult_sel_i div_sel_i gen_multdiv_m sva_multdiv_fsm_idle gen_multdiv_sva_idle_fast ex_block_i (ibex_ex_block) clk_i rst_ni alu_operator_i alu_operand_a_i alu_operand_b_i alu_instr_first_cycle_i bt_a_operand_i bt_b_operand_i multdiv_operator_i mult_en_i div_en_i mult_sel_i div_sel_i multdiv_signed_mode_i multdiv_operand_a_i multdiv_operand_b_i multdiv_ready_id_i data_ind_timing_i imd_val_we_o imd_val_d_o imd_val_q_i alu_adder_result_ex_o result_ex_o branch_target_o branch_decision_o ex_valid_o

Schematic Diagram of ibex_ex_block