Multiplier updated

This commit is contained in:
​Laraib Khan 2021-01-26 16:06:50 +05:00
parent a0f383cb2d
commit 9d2075de64
6 changed files with 694 additions and 764 deletions

874
exu.fir

File diff suppressed because it is too large Load Diff

580
exu.v
View File

@ -2160,117 +2160,117 @@ module exu(
wire rvclkhdr_6_io_en; // @[lib.scala 404:23] wire rvclkhdr_6_io_en; // @[lib.scala 404:23]
wire rvclkhdr_7_io_clk; // @[lib.scala 404:23] wire rvclkhdr_7_io_clk; // @[lib.scala 404:23]
wire rvclkhdr_7_io_en; // @[lib.scala 404:23] wire rvclkhdr_7_io_en; // @[lib.scala 404:23]
wire i_alu_clock; // @[exu.scala 129:19] wire i_alu_clock; // @[exu.scala 130:19]
wire i_alu_reset; // @[exu.scala 129:19] wire i_alu_reset; // @[exu.scala 130:19]
wire i_alu_io_dec_alu_dec_i0_alu_decode_d; // @[exu.scala 129:19] wire i_alu_io_dec_alu_dec_i0_alu_decode_d; // @[exu.scala 130:19]
wire i_alu_io_dec_alu_dec_csr_ren_d; // @[exu.scala 129:19] wire i_alu_io_dec_alu_dec_csr_ren_d; // @[exu.scala 130:19]
wire [31:0] i_alu_io_dec_alu_dec_csr_rddata_d; // @[exu.scala 129:19] wire [31:0] i_alu_io_dec_alu_dec_csr_rddata_d; // @[exu.scala 130:19]
wire [11:0] i_alu_io_dec_alu_dec_i0_br_immed_d; // @[exu.scala 129:19] wire [11:0] i_alu_io_dec_alu_dec_i0_br_immed_d; // @[exu.scala 130:19]
wire [30:0] i_alu_io_dec_alu_exu_i0_pc_x; // @[exu.scala 129:19] wire [30:0] i_alu_io_dec_alu_exu_i0_pc_x; // @[exu.scala 130:19]
wire [30:0] i_alu_io_dec_i0_pc_d; // @[exu.scala 129:19] wire [30:0] i_alu_io_dec_i0_pc_d; // @[exu.scala 130:19]
wire i_alu_io_flush_upper_x; // @[exu.scala 129:19] wire i_alu_io_flush_upper_x; // @[exu.scala 130:19]
wire i_alu_io_dec_tlu_flush_lower_r; // @[exu.scala 129:19] wire i_alu_io_dec_tlu_flush_lower_r; // @[exu.scala 130:19]
wire i_alu_io_enable; // @[exu.scala 129:19] wire i_alu_io_enable; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_clz; // @[exu.scala 129:19] wire i_alu_io_i0_ap_clz; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_ctz; // @[exu.scala 129:19] wire i_alu_io_i0_ap_ctz; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_pcnt; // @[exu.scala 129:19] wire i_alu_io_i0_ap_pcnt; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_sext_b; // @[exu.scala 129:19] wire i_alu_io_i0_ap_sext_b; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_sext_h; // @[exu.scala 129:19] wire i_alu_io_i0_ap_sext_h; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_min; // @[exu.scala 129:19] wire i_alu_io_i0_ap_min; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_max; // @[exu.scala 129:19] wire i_alu_io_i0_ap_max; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_pack; // @[exu.scala 129:19] wire i_alu_io_i0_ap_pack; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_packu; // @[exu.scala 129:19] wire i_alu_io_i0_ap_packu; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_packh; // @[exu.scala 129:19] wire i_alu_io_i0_ap_packh; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_rol; // @[exu.scala 129:19] wire i_alu_io_i0_ap_rol; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_ror; // @[exu.scala 129:19] wire i_alu_io_i0_ap_ror; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_grev; // @[exu.scala 129:19] wire i_alu_io_i0_ap_grev; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_gorc; // @[exu.scala 129:19] wire i_alu_io_i0_ap_gorc; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_zbb; // @[exu.scala 129:19] wire i_alu_io_i0_ap_zbb; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_sbset; // @[exu.scala 129:19] wire i_alu_io_i0_ap_sbset; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_sbclr; // @[exu.scala 129:19] wire i_alu_io_i0_ap_sbclr; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_sbinv; // @[exu.scala 129:19] wire i_alu_io_i0_ap_sbinv; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_sbext; // @[exu.scala 129:19] wire i_alu_io_i0_ap_sbext; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_land; // @[exu.scala 129:19] wire i_alu_io_i0_ap_land; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_lor; // @[exu.scala 129:19] wire i_alu_io_i0_ap_lor; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_lxor; // @[exu.scala 129:19] wire i_alu_io_i0_ap_lxor; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_sll; // @[exu.scala 129:19] wire i_alu_io_i0_ap_sll; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_srl; // @[exu.scala 129:19] wire i_alu_io_i0_ap_srl; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_sra; // @[exu.scala 129:19] wire i_alu_io_i0_ap_sra; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_beq; // @[exu.scala 129:19] wire i_alu_io_i0_ap_beq; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_bne; // @[exu.scala 129:19] wire i_alu_io_i0_ap_bne; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_blt; // @[exu.scala 129:19] wire i_alu_io_i0_ap_blt; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_bge; // @[exu.scala 129:19] wire i_alu_io_i0_ap_bge; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_add; // @[exu.scala 129:19] wire i_alu_io_i0_ap_add; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_sub; // @[exu.scala 129:19] wire i_alu_io_i0_ap_sub; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_slt; // @[exu.scala 129:19] wire i_alu_io_i0_ap_slt; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_unsign; // @[exu.scala 129:19] wire i_alu_io_i0_ap_unsign; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_jal; // @[exu.scala 129:19] wire i_alu_io_i0_ap_jal; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_predict_t; // @[exu.scala 129:19] wire i_alu_io_i0_ap_predict_t; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_predict_nt; // @[exu.scala 129:19] wire i_alu_io_i0_ap_predict_nt; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_csr_write; // @[exu.scala 129:19] wire i_alu_io_i0_ap_csr_write; // @[exu.scala 130:19]
wire i_alu_io_i0_ap_csr_imm; // @[exu.scala 129:19] wire i_alu_io_i0_ap_csr_imm; // @[exu.scala 130:19]
wire [31:0] i_alu_io_a_in; // @[exu.scala 129:19] wire [31:0] i_alu_io_a_in; // @[exu.scala 130:19]
wire [31:0] i_alu_io_b_in; // @[exu.scala 129:19] wire [31:0] i_alu_io_b_in; // @[exu.scala 130:19]
wire i_alu_io_pp_in_valid; // @[exu.scala 129:19] wire i_alu_io_pp_in_valid; // @[exu.scala 130:19]
wire i_alu_io_pp_in_bits_boffset; // @[exu.scala 129:19] wire i_alu_io_pp_in_bits_boffset; // @[exu.scala 130:19]
wire i_alu_io_pp_in_bits_pc4; // @[exu.scala 129:19] wire i_alu_io_pp_in_bits_pc4; // @[exu.scala 130:19]
wire [1:0] i_alu_io_pp_in_bits_hist; // @[exu.scala 129:19] wire [1:0] i_alu_io_pp_in_bits_hist; // @[exu.scala 130:19]
wire [11:0] i_alu_io_pp_in_bits_toffset; // @[exu.scala 129:19] wire [11:0] i_alu_io_pp_in_bits_toffset; // @[exu.scala 130:19]
wire i_alu_io_pp_in_bits_br_error; // @[exu.scala 129:19] wire i_alu_io_pp_in_bits_br_error; // @[exu.scala 130:19]
wire i_alu_io_pp_in_bits_br_start_error; // @[exu.scala 129:19] wire i_alu_io_pp_in_bits_br_start_error; // @[exu.scala 130:19]
wire i_alu_io_pp_in_bits_pcall; // @[exu.scala 129:19] wire i_alu_io_pp_in_bits_pcall; // @[exu.scala 130:19]
wire i_alu_io_pp_in_bits_pja; // @[exu.scala 129:19] wire i_alu_io_pp_in_bits_pja; // @[exu.scala 130:19]
wire i_alu_io_pp_in_bits_way; // @[exu.scala 129:19] wire i_alu_io_pp_in_bits_way; // @[exu.scala 130:19]
wire i_alu_io_pp_in_bits_pret; // @[exu.scala 129:19] wire i_alu_io_pp_in_bits_pret; // @[exu.scala 130:19]
wire [30:0] i_alu_io_pp_in_bits_prett; // @[exu.scala 129:19] wire [30:0] i_alu_io_pp_in_bits_prett; // @[exu.scala 130:19]
wire [31:0] i_alu_io_result_ff; // @[exu.scala 129:19] wire [31:0] i_alu_io_result_ff; // @[exu.scala 130:19]
wire i_alu_io_flush_upper_out; // @[exu.scala 129:19] wire i_alu_io_flush_upper_out; // @[exu.scala 130:19]
wire i_alu_io_flush_final_out; // @[exu.scala 129:19] wire i_alu_io_flush_final_out; // @[exu.scala 130:19]
wire [30:0] i_alu_io_flush_path_out; // @[exu.scala 129:19] wire [30:0] i_alu_io_flush_path_out; // @[exu.scala 130:19]
wire i_alu_io_pred_correct_out; // @[exu.scala 129:19] wire i_alu_io_pred_correct_out; // @[exu.scala 130:19]
wire i_alu_io_predict_p_out_valid; // @[exu.scala 129:19] wire i_alu_io_predict_p_out_valid; // @[exu.scala 130:19]
wire i_alu_io_predict_p_out_bits_misp; // @[exu.scala 129:19] wire i_alu_io_predict_p_out_bits_misp; // @[exu.scala 130:19]
wire i_alu_io_predict_p_out_bits_ataken; // @[exu.scala 129:19] wire i_alu_io_predict_p_out_bits_ataken; // @[exu.scala 130:19]
wire i_alu_io_predict_p_out_bits_boffset; // @[exu.scala 129:19] wire i_alu_io_predict_p_out_bits_boffset; // @[exu.scala 130:19]
wire i_alu_io_predict_p_out_bits_pc4; // @[exu.scala 129:19] wire i_alu_io_predict_p_out_bits_pc4; // @[exu.scala 130:19]
wire [1:0] i_alu_io_predict_p_out_bits_hist; // @[exu.scala 129:19] wire [1:0] i_alu_io_predict_p_out_bits_hist; // @[exu.scala 130:19]
wire [11:0] i_alu_io_predict_p_out_bits_toffset; // @[exu.scala 129:19] wire [11:0] i_alu_io_predict_p_out_bits_toffset; // @[exu.scala 130:19]
wire i_alu_io_predict_p_out_bits_br_error; // @[exu.scala 129:19] wire i_alu_io_predict_p_out_bits_br_error; // @[exu.scala 130:19]
wire i_alu_io_predict_p_out_bits_br_start_error; // @[exu.scala 129:19] wire i_alu_io_predict_p_out_bits_br_start_error; // @[exu.scala 130:19]
wire i_alu_io_predict_p_out_bits_pcall; // @[exu.scala 129:19] wire i_alu_io_predict_p_out_bits_pcall; // @[exu.scala 130:19]
wire i_alu_io_predict_p_out_bits_pja; // @[exu.scala 129:19] wire i_alu_io_predict_p_out_bits_pja; // @[exu.scala 130:19]
wire i_alu_io_predict_p_out_bits_way; // @[exu.scala 129:19] wire i_alu_io_predict_p_out_bits_way; // @[exu.scala 130:19]
wire i_alu_io_predict_p_out_bits_pret; // @[exu.scala 129:19] wire i_alu_io_predict_p_out_bits_pret; // @[exu.scala 130:19]
wire i_mul_clock; // @[exu.scala 147:21] wire i_mul_clock; // @[exu.scala 148:21]
wire i_mul_reset; // @[exu.scala 147:21] wire i_mul_reset; // @[exu.scala 148:21]
wire i_mul_io_mul_p_valid; // @[exu.scala 147:21] wire i_mul_io_mul_p_valid; // @[exu.scala 148:21]
wire i_mul_io_mul_p_bits_rs1_sign; // @[exu.scala 147:21] wire i_mul_io_mul_p_bits_rs1_sign; // @[exu.scala 148:21]
wire i_mul_io_mul_p_bits_rs2_sign; // @[exu.scala 147:21] wire i_mul_io_mul_p_bits_rs2_sign; // @[exu.scala 148:21]
wire i_mul_io_mul_p_bits_low; // @[exu.scala 147:21] wire i_mul_io_mul_p_bits_low; // @[exu.scala 148:21]
wire [31:0] i_mul_io_rs1_in; // @[exu.scala 147:21] wire [31:0] i_mul_io_rs1_in; // @[exu.scala 148:21]
wire [31:0] i_mul_io_rs2_in; // @[exu.scala 147:21] wire [31:0] i_mul_io_rs2_in; // @[exu.scala 148:21]
wire [31:0] i_mul_io_result_x; // @[exu.scala 147:21] wire [31:0] i_mul_io_result_x; // @[exu.scala 148:21]
wire i_div_clock; // @[exu.scala 154:21] wire i_div_clock; // @[exu.scala 156:21]
wire i_div_reset; // @[exu.scala 154:21] wire i_div_reset; // @[exu.scala 156:21]
wire [31:0] i_div_io_dividend; // @[exu.scala 154:21] wire [31:0] i_div_io_dividend; // @[exu.scala 156:21]
wire [31:0] i_div_io_divisor; // @[exu.scala 154:21] wire [31:0] i_div_io_divisor; // @[exu.scala 156:21]
wire [31:0] i_div_io_exu_div_result; // @[exu.scala 154:21] wire [31:0] i_div_io_exu_div_result; // @[exu.scala 156:21]
wire i_div_io_exu_div_wren; // @[exu.scala 154:21] wire i_div_io_exu_div_wren; // @[exu.scala 156:21]
wire i_div_io_dec_div_div_p_valid; // @[exu.scala 154:21] wire i_div_io_dec_div_div_p_valid; // @[exu.scala 156:21]
wire i_div_io_dec_div_div_p_bits_unsign; // @[exu.scala 154:21] wire i_div_io_dec_div_div_p_bits_unsign; // @[exu.scala 156:21]
wire i_div_io_dec_div_div_p_bits_rem; // @[exu.scala 154:21] wire i_div_io_dec_div_div_p_bits_rem; // @[exu.scala 156:21]
wire i_div_io_dec_div_dec_div_cancel; // @[exu.scala 154:21] wire i_div_io_dec_div_dec_div_cancel; // @[exu.scala 156:21]
wire x_data_en = io_dec_exu_decode_exu_dec_data_en[1]; // @[exu.scala 54:69] wire x_data_en = io_dec_exu_decode_exu_dec_data_en[1]; // @[exu.scala 55:69]
wire x_data_en_q1 = x_data_en & io_dec_exu_dec_alu_dec_csr_ren_d; // @[exu.scala 55:73] wire x_data_en_q1 = x_data_en & io_dec_exu_dec_alu_dec_csr_ren_d; // @[exu.scala 56:73]
wire x_data_en_q2 = x_data_en & io_dec_exu_decode_exu_dec_i0_branch_d; // @[exu.scala 56:73] wire x_data_en_q2 = x_data_en & io_dec_exu_decode_exu_dec_i0_branch_d; // @[exu.scala 57:73]
wire r_data_en = io_dec_exu_decode_exu_dec_data_en[0]; // @[exu.scala 57:69] wire r_data_en = io_dec_exu_decode_exu_dec_data_en[0]; // @[exu.scala 58:69]
reg i0_branch_x; // @[Reg.scala 27:20] reg i0_branch_x; // @[Reg.scala 27:20]
wire r_data_en_q2 = r_data_en & i0_branch_x; // @[exu.scala 58:73] wire r_data_en_q2 = r_data_en & i0_branch_x; // @[exu.scala 59:73]
wire x_ctl_en = io_dec_exu_decode_exu_dec_ctl_en[1]; // @[exu.scala 59:68] wire x_ctl_en = io_dec_exu_decode_exu_dec_ctl_en[1]; // @[exu.scala 60:68]
wire r_ctl_en = io_dec_exu_decode_exu_dec_ctl_en[0]; // @[exu.scala 60:68] wire r_ctl_en = io_dec_exu_decode_exu_dec_ctl_en[0]; // @[exu.scala 61:68]
wire [20:0] predpipe_d = {io_dec_exu_decode_exu_i0_predict_fghr_d,io_dec_exu_decode_exu_i0_predict_index_d,io_dec_exu_decode_exu_i0_predict_btag_d}; // @[Cat.scala 29:58] wire [20:0] predpipe_d = {io_dec_exu_decode_exu_i0_predict_fghr_d,io_dec_exu_decode_exu_i0_predict_index_d,io_dec_exu_decode_exu_i0_predict_btag_d}; // @[Cat.scala 29:58]
reg [30:0] i0_flush_path_x; // @[Reg.scala 27:20] reg [30:0] i0_flush_path_x; // @[Reg.scala 27:20]
wire [30:0] i0_flush_path_d = i_alu_io_flush_path_out; // @[exu.scala 41:53 exu.scala 142:45] wire [30:0] i0_flush_path_d = i_alu_io_flush_path_out; // @[exu.scala 41:53 exu.scala 143:45]
reg i0_predict_p_x_valid; // @[Reg.scala 27:20] reg i0_predict_p_x_valid; // @[Reg.scala 27:20]
reg i0_predict_p_x_bits_misp; // @[Reg.scala 27:20] reg i0_predict_p_x_bits_misp; // @[Reg.scala 27:20]
reg i0_predict_p_x_bits_ataken; // @[Reg.scala 27:20] reg i0_predict_p_x_bits_ataken; // @[Reg.scala 27:20]
@ -2284,33 +2284,33 @@ module exu(
reg i0_predict_p_x_bits_pja; // @[Reg.scala 27:20] reg i0_predict_p_x_bits_pja; // @[Reg.scala 27:20]
reg i0_predict_p_x_bits_way; // @[Reg.scala 27:20] reg i0_predict_p_x_bits_way; // @[Reg.scala 27:20]
reg i0_predict_p_x_bits_pret; // @[Reg.scala 27:20] reg i0_predict_p_x_bits_pret; // @[Reg.scala 27:20]
wire i0_predict_p_d_bits_pret = i_alu_io_predict_p_out_bits_pret; // @[exu.scala 42:53 exu.scala 144:45] wire i0_predict_p_d_bits_pret = i_alu_io_predict_p_out_bits_pret; // @[exu.scala 42:53 exu.scala 145:45]
wire i0_predict_p_d_bits_way = i_alu_io_predict_p_out_bits_way; // @[exu.scala 42:53 exu.scala 144:45] wire i0_predict_p_d_bits_way = i_alu_io_predict_p_out_bits_way; // @[exu.scala 42:53 exu.scala 145:45]
wire i0_predict_p_d_bits_pja = i_alu_io_predict_p_out_bits_pja; // @[exu.scala 42:53 exu.scala 144:45] wire i0_predict_p_d_bits_pja = i_alu_io_predict_p_out_bits_pja; // @[exu.scala 42:53 exu.scala 145:45]
wire i0_predict_p_d_bits_pcall = i_alu_io_predict_p_out_bits_pcall; // @[exu.scala 42:53 exu.scala 144:45] wire i0_predict_p_d_bits_pcall = i_alu_io_predict_p_out_bits_pcall; // @[exu.scala 42:53 exu.scala 145:45]
wire i0_predict_p_d_bits_br_start_error = i_alu_io_predict_p_out_bits_br_start_error; // @[exu.scala 42:53 exu.scala 144:45] wire i0_predict_p_d_bits_br_start_error = i_alu_io_predict_p_out_bits_br_start_error; // @[exu.scala 42:53 exu.scala 145:45]
wire i0_predict_p_d_bits_br_error = i_alu_io_predict_p_out_bits_br_error; // @[exu.scala 42:53 exu.scala 144:45] wire i0_predict_p_d_bits_br_error = i_alu_io_predict_p_out_bits_br_error; // @[exu.scala 42:53 exu.scala 145:45]
wire [11:0] i0_predict_p_d_bits_toffset = i_alu_io_predict_p_out_bits_toffset; // @[exu.scala 42:53 exu.scala 144:45] wire [11:0] i0_predict_p_d_bits_toffset = i_alu_io_predict_p_out_bits_toffset; // @[exu.scala 42:53 exu.scala 145:45]
wire [1:0] i0_predict_p_d_bits_hist = i_alu_io_predict_p_out_bits_hist; // @[exu.scala 42:53 exu.scala 144:45] wire [1:0] i0_predict_p_d_bits_hist = i_alu_io_predict_p_out_bits_hist; // @[exu.scala 42:53 exu.scala 145:45]
wire i0_predict_p_d_bits_pc4 = i_alu_io_predict_p_out_bits_pc4; // @[exu.scala 42:53 exu.scala 144:45] wire i0_predict_p_d_bits_pc4 = i_alu_io_predict_p_out_bits_pc4; // @[exu.scala 42:53 exu.scala 145:45]
wire i0_predict_p_d_bits_boffset = i_alu_io_predict_p_out_bits_boffset; // @[exu.scala 42:53 exu.scala 144:45] wire i0_predict_p_d_bits_boffset = i_alu_io_predict_p_out_bits_boffset; // @[exu.scala 42:53 exu.scala 145:45]
wire i0_predict_p_d_bits_ataken = i_alu_io_predict_p_out_bits_ataken; // @[exu.scala 42:53 exu.scala 144:45] wire i0_predict_p_d_bits_ataken = i_alu_io_predict_p_out_bits_ataken; // @[exu.scala 42:53 exu.scala 145:45]
wire i0_predict_p_d_bits_misp = i_alu_io_predict_p_out_bits_misp; // @[exu.scala 42:53 exu.scala 144:45] wire i0_predict_p_d_bits_misp = i_alu_io_predict_p_out_bits_misp; // @[exu.scala 42:53 exu.scala 145:45]
wire i0_predict_p_d_valid = i_alu_io_predict_p_out_valid; // @[exu.scala 42:53 exu.scala 144:45] wire i0_predict_p_d_valid = i_alu_io_predict_p_out_valid; // @[exu.scala 42:53 exu.scala 145:45]
reg [20:0] predpipe_x; // @[Reg.scala 27:20] reg [20:0] predpipe_x; // @[Reg.scala 27:20]
reg [20:0] predpipe_r; // @[Reg.scala 27:20] reg [20:0] predpipe_r; // @[Reg.scala 27:20]
reg [7:0] ghr_x; // @[Reg.scala 27:20] reg [7:0] ghr_x; // @[Reg.scala 27:20]
reg i0_valid_x; // @[Reg.scala 27:20] reg i0_valid_x; // @[Reg.scala 27:20]
reg i0_taken_x; // @[Reg.scala 27:20] reg i0_taken_x; // @[Reg.scala 27:20]
wire [7:0] _T_235 = {ghr_x[6:0],i0_taken_x}; // @[Cat.scala 29:58] wire [7:0] _T_191 = {ghr_x[6:0],i0_taken_x}; // @[Cat.scala 29:58]
reg i0_pred_correct_upper_x; // @[Reg.scala 27:20] reg i0_pred_correct_upper_x; // @[Reg.scala 27:20]
wire i0_pred_correct_upper_d = i_alu_io_pred_correct_out; // @[exu.scala 47:41 exu.scala 145:27] wire i0_pred_correct_upper_d = i_alu_io_pred_correct_out; // @[exu.scala 47:41 exu.scala 146:27]
reg i0_flush_upper_x; // @[Reg.scala 27:20] reg i0_flush_upper_x; // @[Reg.scala 27:20]
wire i0_flush_upper_d = i_alu_io_flush_upper_out; // @[exu.scala 48:45 exu.scala 141:35] wire i0_flush_upper_d = i_alu_io_flush_upper_out; // @[exu.scala 48:45 exu.scala 142:35]
wire i0_taken_d = i0_predict_p_d_bits_ataken & io_dec_exu_dec_alu_dec_i0_alu_decode_d; // @[exu.scala 172:59] wire i0_taken_d = i0_predict_p_d_bits_ataken & io_dec_exu_dec_alu_dec_i0_alu_decode_d; // @[exu.scala 174:59]
wire _T_213 = i0_predict_p_d_valid & io_dec_exu_dec_alu_dec_i0_alu_decode_d; // @[exu.scala 171:54] wire _T_169 = i0_predict_p_d_valid & io_dec_exu_dec_alu_dec_i0_alu_decode_d; // @[exu.scala 173:54]
wire _T_214 = ~io_dec_exu_tlu_exu_dec_tlu_flush_lower_r; // @[exu.scala 171:97] wire _T_170 = ~io_dec_exu_tlu_exu_dec_tlu_flush_lower_r; // @[exu.scala 173:97]
wire i0_valid_d = _T_213 & _T_214; // @[exu.scala 171:95] wire i0_valid_d = _T_169 & _T_170; // @[exu.scala 173:95]
reg i0_pp_r_valid; // @[Reg.scala 27:20] reg i0_pp_r_valid; // @[Reg.scala 27:20]
reg i0_pp_r_bits_misp; // @[Reg.scala 27:20] reg i0_pp_r_bits_misp; // @[Reg.scala 27:20]
reg i0_pp_r_bits_ataken; // @[Reg.scala 27:20] reg i0_pp_r_bits_ataken; // @[Reg.scala 27:20]
@ -2325,16 +2325,16 @@ module exu(
reg [30:0] i0_flush_path_upper_r; // @[Reg.scala 27:20] reg [30:0] i0_flush_path_upper_r; // @[Reg.scala 27:20]
reg [24:0] pred_temp2; // @[Reg.scala 27:20] reg [24:0] pred_temp2; // @[Reg.scala 27:20]
wire [30:0] _T_31 = {pred_temp2,pred_temp1}; // @[Cat.scala 29:58] wire [30:0] _T_31 = {pred_temp2,pred_temp1}; // @[Cat.scala 29:58]
wire _T_218 = _T_214 & i0_valid_d; // @[exu.scala 178:50] wire _T_174 = _T_170 & i0_valid_d; // @[exu.scala 180:50]
reg [7:0] ghr_d; // @[Reg.scala 27:20] reg [7:0] ghr_d; // @[Reg.scala 27:20]
wire [7:0] _T_221 = {ghr_d[6:0],i0_taken_d}; // @[Cat.scala 29:58] wire [7:0] _T_177 = {ghr_d[6:0],i0_taken_d}; // @[Cat.scala 29:58]
wire [7:0] _T_227 = _T_218 ? _T_221 : 8'h0; // @[Mux.scala 27:72] wire [7:0] _T_183 = _T_174 ? _T_177 : 8'h0; // @[Mux.scala 27:72]
wire _T_223 = ~i0_valid_d; // @[exu.scala 179:52] wire _T_179 = ~i0_valid_d; // @[exu.scala 181:52]
wire _T_224 = _T_214 & _T_223; // @[exu.scala 179:50] wire _T_180 = _T_170 & _T_179; // @[exu.scala 181:50]
wire [7:0] _T_228 = _T_224 ? ghr_d : 8'h0; // @[Mux.scala 27:72] wire [7:0] _T_184 = _T_180 ? ghr_d : 8'h0; // @[Mux.scala 27:72]
wire [7:0] _T_230 = _T_227 | _T_228; // @[Mux.scala 27:72] wire [7:0] _T_186 = _T_183 | _T_184; // @[Mux.scala 27:72]
wire [7:0] _T_229 = io_dec_exu_tlu_exu_dec_tlu_flush_lower_r ? ghr_x : 8'h0; // @[Mux.scala 27:72] wire [7:0] _T_185 = io_dec_exu_tlu_exu_dec_tlu_flush_lower_r ? ghr_x : 8'h0; // @[Mux.scala 27:72]
wire [7:0] ghr_d_ns = _T_230 | _T_229; // @[Mux.scala 27:72] wire [7:0] ghr_d_ns = _T_186 | _T_185; // @[Mux.scala 27:72]
wire [7:0] _T_33 = ghr_d_ns ^ ghr_d; // @[lib.scala 448:21] wire [7:0] _T_33 = ghr_d_ns ^ ghr_d; // @[lib.scala 448:21]
wire _T_34 = |_T_33; // @[lib.scala 448:29] wire _T_34 = |_T_33; // @[lib.scala 448:29]
reg mul_valid_x; // @[Reg.scala 27:20] reg mul_valid_x; // @[Reg.scala 27:20]
@ -2342,12 +2342,12 @@ module exu(
wire _T_38 = |_T_37; // @[lib.scala 470:29] wire _T_38 = |_T_37; // @[lib.scala 470:29]
wire _T_41 = io_dec_exu_decode_exu_dec_i0_branch_d ^ i0_branch_x; // @[lib.scala 448:21] wire _T_41 = io_dec_exu_decode_exu_dec_i0_branch_d ^ i0_branch_x; // @[lib.scala 448:21]
wire _T_42 = |_T_41; // @[lib.scala 448:29] wire _T_42 = |_T_41; // @[lib.scala 448:29]
wire _T_46 = io_dec_exu_decode_exu_dec_i0_rs1_bypass_en_d[0] | io_dec_exu_decode_exu_dec_i0_rs1_bypass_en_d[1]; // @[exu.scala 82:84] wire _T_46 = io_dec_exu_decode_exu_dec_i0_rs1_bypass_en_d[0] | io_dec_exu_decode_exu_dec_i0_rs1_bypass_en_d[1]; // @[exu.scala 83:84]
wire _T_48 = _T_46 | io_dec_exu_decode_exu_dec_i0_rs1_bypass_en_d[2]; // @[exu.scala 82:134] wire _T_48 = _T_46 | io_dec_exu_decode_exu_dec_i0_rs1_bypass_en_d[2]; // @[exu.scala 83:134]
wire i0_rs1_bypass_en_d = _T_48 | io_dec_exu_decode_exu_dec_i0_rs1_bypass_en_d[3]; // @[exu.scala 82:184] wire i0_rs1_bypass_en_d = _T_48 | io_dec_exu_decode_exu_dec_i0_rs1_bypass_en_d[3]; // @[exu.scala 83:184]
wire _T_52 = io_dec_exu_decode_exu_dec_i0_rs2_bypass_en_d[0] | io_dec_exu_decode_exu_dec_i0_rs2_bypass_en_d[1]; // @[exu.scala 83:84] wire _T_52 = io_dec_exu_decode_exu_dec_i0_rs2_bypass_en_d[0] | io_dec_exu_decode_exu_dec_i0_rs2_bypass_en_d[1]; // @[exu.scala 84:84]
wire _T_54 = _T_52 | io_dec_exu_decode_exu_dec_i0_rs2_bypass_en_d[2]; // @[exu.scala 83:134] wire _T_54 = _T_52 | io_dec_exu_decode_exu_dec_i0_rs2_bypass_en_d[2]; // @[exu.scala 84:134]
wire i0_rs2_bypass_en_d = _T_54 | io_dec_exu_decode_exu_dec_i0_rs2_bypass_en_d[3]; // @[exu.scala 83:184] wire i0_rs2_bypass_en_d = _T_54 | io_dec_exu_decode_exu_dec_i0_rs2_bypass_en_d[3]; // @[exu.scala 84:184]
wire [31:0] _T_64 = io_dec_exu_decode_exu_dec_i0_rs1_bypass_en_d[0] ? io_dec_exu_decode_exu_dec_i0_result_r : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_64 = io_dec_exu_decode_exu_dec_i0_rs1_bypass_en_d[0] ? io_dec_exu_decode_exu_dec_i0_result_r : 32'h0; // @[Mux.scala 27:72]
wire [31:0] _T_65 = io_dec_exu_decode_exu_dec_i0_rs1_bypass_en_d[1] ? io_lsu_exu_lsu_result_m : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_65 = io_dec_exu_decode_exu_dec_i0_rs1_bypass_en_d[1] ? io_lsu_exu_lsu_result_m : 32'h0; // @[Mux.scala 27:72]
wire [31:0] _T_66 = io_dec_exu_decode_exu_dec_i0_rs1_bypass_en_d[2] ? io_dec_exu_decode_exu_exu_i0_result_x : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_66 = io_dec_exu_decode_exu_dec_i0_rs1_bypass_en_d[2] ? io_dec_exu_decode_exu_exu_i0_result_x : 32'h0; // @[Mux.scala 27:72]
@ -2362,13 +2362,13 @@ module exu(
wire [31:0] _T_83 = _T_79 | _T_80; // @[Mux.scala 27:72] wire [31:0] _T_83 = _T_79 | _T_80; // @[Mux.scala 27:72]
wire [31:0] _T_84 = _T_83 | _T_81; // @[Mux.scala 27:72] wire [31:0] _T_84 = _T_83 | _T_81; // @[Mux.scala 27:72]
wire [31:0] i0_rs2_bypass_data_d = _T_84 | _T_82; // @[Mux.scala 27:72] wire [31:0] i0_rs2_bypass_data_d = _T_84 | _T_82; // @[Mux.scala 27:72]
wire _T_87 = ~i0_rs1_bypass_en_d; // @[exu.scala 100:6] wire _T_87 = ~i0_rs1_bypass_en_d; // @[exu.scala 101:6]
wire _T_88 = _T_87 & io_dec_exu_decode_exu_dec_i0_select_pc_d; // @[exu.scala 100:26] wire _T_88 = _T_87 & io_dec_exu_decode_exu_dec_i0_select_pc_d; // @[exu.scala 101:26]
wire [31:0] _T_90 = {io_dec_exu_ib_exu_dec_i0_pc_d,1'h0}; // @[Cat.scala 29:58] wire [31:0] _T_90 = {io_dec_exu_ib_exu_dec_i0_pc_d,1'h0}; // @[Cat.scala 29:58]
wire _T_92 = _T_87 & io_dec_exu_ib_exu_dec_debug_wdata_rs1_d; // @[exu.scala 101:26] wire _T_92 = _T_87 & io_dec_exu_ib_exu_dec_debug_wdata_rs1_d; // @[exu.scala 102:26]
wire _T_95 = ~io_dec_exu_ib_exu_dec_debug_wdata_rs1_d; // @[exu.scala 102:28] wire _T_95 = ~io_dec_exu_ib_exu_dec_debug_wdata_rs1_d; // @[exu.scala 103:28]
wire _T_96 = _T_87 & _T_95; // @[exu.scala 102:26] wire _T_96 = _T_87 & _T_95; // @[exu.scala 103:26]
wire _T_97 = _T_96 & io_dec_exu_decode_exu_dec_i0_rs1_en_d; // @[exu.scala 102:69] wire _T_97 = _T_96 & io_dec_exu_decode_exu_dec_i0_rs1_en_d; // @[exu.scala 103:69]
wire [31:0] _T_99 = i0_rs1_bypass_en_d ? i0_rs1_bypass_data_d : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_99 = i0_rs1_bypass_en_d ? i0_rs1_bypass_data_d : 32'h0; // @[Mux.scala 27:72]
wire [31:0] _T_100 = _T_88 ? _T_90 : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_100 = _T_88 ? _T_90 : 32'h0; // @[Mux.scala 27:72]
wire [31:0] _T_101 = _T_92 ? io_dbg_cmd_wrdata : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_101 = _T_92 ? io_dbg_cmd_wrdata : 32'h0; // @[Mux.scala 27:72]
@ -2377,51 +2377,45 @@ module exu(
wire [31:0] _T_104 = _T_103 | _T_101; // @[Mux.scala 27:72] wire [31:0] _T_104 = _T_103 | _T_101; // @[Mux.scala 27:72]
wire [31:0] i0_rs1_d = _T_104 | _T_102; // @[Mux.scala 27:72] wire [31:0] i0_rs1_d = _T_104 | _T_102; // @[Mux.scala 27:72]
reg [31:0] _T_107; // @[Reg.scala 27:20] reg [31:0] _T_107; // @[Reg.scala 27:20]
wire _T_108 = ~i0_rs2_bypass_en_d; // @[exu.scala 107:6] wire _T_108 = ~i0_rs2_bypass_en_d; // @[exu.scala 108:6]
wire _T_109 = _T_108 & io_dec_exu_decode_exu_dec_i0_rs2_en_d; // @[exu.scala 107:26] wire _T_109 = _T_108 & io_dec_exu_decode_exu_dec_i0_rs2_en_d; // @[exu.scala 108:26]
wire [31:0] _T_114 = _T_109 ? io_dec_exu_gpr_exu_gpr_i0_rs2_d : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_114 = _T_109 ? io_dec_exu_gpr_exu_gpr_i0_rs2_d : 32'h0; // @[Mux.scala 27:72]
wire [31:0] _T_115 = _T_108 ? io_dec_exu_decode_exu_dec_i0_immed_d : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_115 = _T_108 ? io_dec_exu_decode_exu_dec_i0_immed_d : 32'h0; // @[Mux.scala 27:72]
wire [31:0] _T_116 = i0_rs2_bypass_en_d ? i0_rs2_bypass_data_d : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_116 = i0_rs2_bypass_en_d ? i0_rs2_bypass_data_d : 32'h0; // @[Mux.scala 27:72]
wire [31:0] _T_117 = _T_114 | _T_115; // @[Mux.scala 27:72] wire [31:0] _T_117 = _T_114 | _T_115; // @[Mux.scala 27:72]
wire [31:0] _T_118 = _T_117 | _T_116; // @[Mux.scala 27:72] wire [31:0] _T_118 = _T_117 | _T_116; // @[Mux.scala 27:72]
wire _T_120 = ~io_dec_exu_decode_exu_dec_extint_stall; // @[exu.scala 114:28] wire _T_120 = ~io_dec_exu_decode_exu_dec_extint_stall; // @[exu.scala 115:28]
wire _T_121 = _T_87 & _T_120; // @[exu.scala 114:26] wire _T_121 = _T_87 & _T_120; // @[exu.scala 115:26]
wire _T_122 = _T_121 & io_dec_exu_decode_exu_dec_i0_rs1_en_d; // @[exu.scala 114:68] wire _T_122 = _T_121 & io_dec_exu_decode_exu_dec_i0_rs1_en_d; // @[exu.scala 115:68]
wire _T_123 = _T_122 & io_dec_qual_lsu_d; // @[exu.scala 114:108] wire _T_123 = _T_122 & io_dec_qual_lsu_d; // @[exu.scala 115:108]
wire _T_126 = i0_rs1_bypass_en_d & _T_120; // @[exu.scala 115:25] wire _T_126 = i0_rs1_bypass_en_d & _T_120; // @[exu.scala 116:25]
wire _T_127 = _T_126 & io_dec_qual_lsu_d; // @[exu.scala 115:67] wire _T_127 = _T_126 & io_dec_qual_lsu_d; // @[exu.scala 116:67]
wire _T_129 = io_dec_exu_decode_exu_dec_extint_stall & io_dec_qual_lsu_d; // @[exu.scala 116:45] wire _T_129 = io_dec_exu_decode_exu_dec_extint_stall & io_dec_qual_lsu_d; // @[exu.scala 117:45]
wire [31:0] _T_131 = {io_dec_exu_tlu_exu_dec_tlu_meihap,2'h0}; // @[Cat.scala 29:58] wire [31:0] _T_131 = {io_dec_exu_tlu_exu_dec_tlu_meihap,2'h0}; // @[Cat.scala 29:58]
wire [31:0] _T_132 = _T_123 ? io_dec_exu_gpr_exu_gpr_i0_rs1_d : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_132 = _T_123 ? io_dec_exu_gpr_exu_gpr_i0_rs1_d : 32'h0; // @[Mux.scala 27:72]
wire [31:0] _T_133 = _T_127 ? i0_rs1_bypass_data_d : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_133 = _T_127 ? i0_rs1_bypass_data_d : 32'h0; // @[Mux.scala 27:72]
wire [31:0] _T_134 = _T_129 ? _T_131 : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_134 = _T_129 ? _T_131 : 32'h0; // @[Mux.scala 27:72]
wire [31:0] _T_135 = _T_132 | _T_133; // @[Mux.scala 27:72] wire [31:0] _T_135 = _T_132 | _T_133; // @[Mux.scala 27:72]
wire _T_140 = _T_108 & _T_120; // @[exu.scala 120:26] wire _T_140 = _T_108 & _T_120; // @[exu.scala 121:26]
wire _T_141 = _T_140 & io_dec_exu_decode_exu_dec_i0_rs2_en_d; // @[exu.scala 120:68] wire _T_141 = _T_140 & io_dec_exu_decode_exu_dec_i0_rs2_en_d; // @[exu.scala 121:68]
wire _T_142 = _T_141 & io_dec_qual_lsu_d; // @[exu.scala 120:108] wire _T_142 = _T_141 & io_dec_qual_lsu_d; // @[exu.scala 121:108]
wire _T_145 = i0_rs2_bypass_en_d & _T_120; // @[exu.scala 121:25] wire _T_145 = i0_rs2_bypass_en_d & _T_120; // @[exu.scala 122:25]
wire _T_146 = _T_145 & io_dec_qual_lsu_d; // @[exu.scala 121:67] wire _T_146 = _T_145 & io_dec_qual_lsu_d; // @[exu.scala 122:67]
wire [31:0] _T_148 = _T_142 ? io_dec_exu_gpr_exu_gpr_i0_rs2_d : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_148 = _T_142 ? io_dec_exu_gpr_exu_gpr_i0_rs2_d : 32'h0; // @[Mux.scala 27:72]
wire [31:0] _T_149 = _T_146 ? i0_rs2_bypass_data_d : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_149 = _T_146 ? i0_rs2_bypass_data_d : 32'h0; // @[Mux.scala 27:72]
wire _T_153 = _T_87 & io_dec_exu_decode_exu_dec_i0_rs1_en_d; // @[exu.scala 125:26] wire _T_153 = _T_87 & io_dec_exu_decode_exu_dec_i0_rs1_en_d; // @[exu.scala 126:26]
wire [31:0] _T_156 = _T_153 ? io_dec_exu_gpr_exu_gpr_i0_rs1_d : 32'h0; // @[Mux.scala 27:72] wire [31:0] _T_156 = _T_153 ? io_dec_exu_gpr_exu_gpr_i0_rs1_d : 32'h0; // @[Mux.scala 27:72]
wire [31:0] muldiv_rs1_d = _T_156 | _T_99; // @[Mux.scala 27:72] wire [31:0] muldiv_rs1_d = _T_156 | _T_99; // @[Mux.scala 27:72]
wire [9:0] _T_176 = {io_dec_exu_decode_exu_mul_p_bits_rs1_sign,io_dec_exu_decode_exu_mul_p_bits_rs2_sign,io_dec_exu_decode_exu_mul_p_bits_low,io_dec_exu_decode_exu_mul_p_bits_bext,io_dec_exu_decode_exu_mul_p_bits_bdep,io_dec_exu_decode_exu_mul_p_bits_clmul,io_dec_exu_decode_exu_mul_p_bits_clmulh,io_dec_exu_decode_exu_mul_p_bits_clmulr,io_dec_exu_decode_exu_mul_p_bits_grev,io_dec_exu_decode_exu_mul_p_bits_gorc}; // @[exu.scala 149:139] wire [31:0] _T_161 = io_dec_exu_decode_exu_mul_p_valid ? 32'hffffffff : 32'h0; // @[Bitwise.scala 72:12]
wire [18:0] _T_177 = {_T_176,io_dec_exu_decode_exu_mul_p_bits_shfl,io_dec_exu_decode_exu_mul_p_bits_unshfl,io_dec_exu_decode_exu_mul_p_bits_crc32_b,io_dec_exu_decode_exu_mul_p_bits_crc32_h,io_dec_exu_decode_exu_mul_p_bits_crc32_w,io_dec_exu_decode_exu_mul_p_bits_crc32c_b,io_dec_exu_decode_exu_mul_p_bits_crc32c_h,io_dec_exu_decode_exu_mul_p_bits_crc32c_w,io_dec_exu_decode_exu_mul_p_bits_bfp}; // @[exu.scala 149:139]
wire [1:0] _T_179 = io_dec_exu_decode_exu_mul_p_valid ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12]
wire [18:0] _GEN_44 = {{17'd0}, _T_179}; // @[exu.scala 149:146]
wire [18:0] _T_180 = _T_177 & _GEN_44; // @[exu.scala 149:146]
wire [19:0] _T_183 = {{1'd0}, _T_180};
wire [31:0] _T_205 = io_dec_exu_decode_exu_mul_p_valid ? 32'hffffffff : 32'h0; // @[Bitwise.scala 72:12]
wire [31:0] i0_rs2_d = _T_118; // @[Mux.scala 27:72 Mux.scala 27:72] wire [31:0] i0_rs2_d = _T_118; // @[Mux.scala 27:72 Mux.scala 27:72]
wire [1:0] _T_238 = i0_pp_r_valid ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12] wire [1:0] _T_194 = i0_pp_r_valid ? 2'h3 : 2'h0; // @[Bitwise.scala 72:12]
wire [20:0] final_predpipe_mp = i0_flush_upper_x ? predpipe_x : 21'h0; // @[exu.scala 197:48] wire [20:0] final_predpipe_mp = i0_flush_upper_x ? predpipe_x : 21'h0; // @[exu.scala 199:48]
wire _T_250 = i0_flush_upper_x & _T_214; // @[exu.scala 199:75] wire _T_206 = i0_flush_upper_x & _T_170; // @[exu.scala 201:75]
wire _T_258 = _T_214 & i0_flush_upper_d; // @[exu.scala 238:48] wire _T_214 = _T_170 & i0_flush_upper_d; // @[exu.scala 240:48]
wire [30:0] _T_260 = io_dec_exu_tlu_exu_dec_tlu_flush_lower_r ? io_dec_exu_tlu_exu_dec_tlu_flush_path_r : 31'h0; // @[Mux.scala 27:72] wire [30:0] _T_216 = io_dec_exu_tlu_exu_dec_tlu_flush_lower_r ? io_dec_exu_tlu_exu_dec_tlu_flush_path_r : 31'h0; // @[Mux.scala 27:72]
wire [30:0] _T_261 = _T_258 ? i0_flush_path_d : 31'h0; // @[Mux.scala 27:72] wire [30:0] _T_217 = _T_214 ? i0_flush_path_d : 31'h0; // @[Mux.scala 27:72]
wire [31:0] pred_correct_npc_r = {{1'd0}, _T_31}; // @[exu.scala 46:51 exu.scala 77:45] wire [31:0] pred_correct_npc_r = {{1'd0}, _T_31}; // @[exu.scala 46:51 exu.scala 78:45]
wire [31:0] _T_265 = i0_pred_correct_upper_r ? pred_correct_npc_r : {{1'd0}, i0_flush_path_upper_r}; // @[exu.scala 240:55] wire [31:0] _T_221 = i0_pred_correct_upper_r ? pred_correct_npc_r : {{1'd0}, i0_flush_path_upper_r}; // @[exu.scala 242:55]
rvclkhdr rvclkhdr ( // @[lib.scala 404:23] rvclkhdr rvclkhdr ( // @[lib.scala 404:23]
.io_clk(rvclkhdr_io_clk), .io_clk(rvclkhdr_io_clk),
.io_en(rvclkhdr_io_en) .io_en(rvclkhdr_io_en)
@ -2454,7 +2448,7 @@ module exu(
.io_clk(rvclkhdr_7_io_clk), .io_clk(rvclkhdr_7_io_clk),
.io_en(rvclkhdr_7_io_en) .io_en(rvclkhdr_7_io_en)
); );
exu_alu_ctl i_alu ( // @[exu.scala 129:19] exu_alu_ctl i_alu ( // @[exu.scala 130:19]
.clock(i_alu_clock), .clock(i_alu_clock),
.reset(i_alu_reset), .reset(i_alu_reset),
.io_dec_alu_dec_i0_alu_decode_d(i_alu_io_dec_alu_dec_i0_alu_decode_d), .io_dec_alu_dec_i0_alu_decode_d(i_alu_io_dec_alu_dec_i0_alu_decode_d),
@ -2537,7 +2531,7 @@ module exu(
.io_predict_p_out_bits_way(i_alu_io_predict_p_out_bits_way), .io_predict_p_out_bits_way(i_alu_io_predict_p_out_bits_way),
.io_predict_p_out_bits_pret(i_alu_io_predict_p_out_bits_pret) .io_predict_p_out_bits_pret(i_alu_io_predict_p_out_bits_pret)
); );
exu_mul_ctl i_mul ( // @[exu.scala 147:21] exu_mul_ctl i_mul ( // @[exu.scala 148:21]
.clock(i_mul_clock), .clock(i_mul_clock),
.reset(i_mul_reset), .reset(i_mul_reset),
.io_mul_p_valid(i_mul_io_mul_p_valid), .io_mul_p_valid(i_mul_io_mul_p_valid),
@ -2548,7 +2542,7 @@ module exu(
.io_rs2_in(i_mul_io_rs2_in), .io_rs2_in(i_mul_io_rs2_in),
.io_result_x(i_mul_io_result_x) .io_result_x(i_mul_io_result_x)
); );
exu_div_ctl i_div ( // @[exu.scala 154:21] exu_div_ctl i_div ( // @[exu.scala 156:21]
.clock(i_div_clock), .clock(i_div_clock),
.reset(i_div_reset), .reset(i_div_reset),
.io_dividend(i_div_io_dividend), .io_dividend(i_div_io_dividend),
@ -2560,47 +2554,47 @@ module exu(
.io_dec_div_div_p_bits_rem(i_div_io_dec_div_div_p_bits_rem), .io_dec_div_div_p_bits_rem(i_div_io_dec_div_div_p_bits_rem),
.io_dec_div_dec_div_cancel(i_div_io_dec_div_dec_div_cancel) .io_dec_div_dec_div_cancel(i_div_io_dec_div_dec_div_cancel)
); );
assign io_dec_exu_dec_alu_exu_i0_pc_x = i_alu_io_dec_alu_exu_i0_pc_x; // @[exu.scala 130:20] assign io_dec_exu_dec_alu_exu_i0_pc_x = i_alu_io_dec_alu_exu_i0_pc_x; // @[exu.scala 131:20]
assign io_dec_exu_decode_exu_exu_i0_result_x = mul_valid_x ? i_mul_io_result_x : i_alu_io_result_ff; // @[exu.scala 162:57] assign io_dec_exu_decode_exu_exu_i0_result_x = mul_valid_x ? i_mul_io_result_x : i_alu_io_result_ff; // @[exu.scala 164:57]
assign io_dec_exu_decode_exu_exu_csr_rs1_x = _T_107; // @[exu.scala 104:57] assign io_dec_exu_decode_exu_exu_csr_rs1_x = _T_107; // @[exu.scala 105:57]
assign io_dec_exu_tlu_exu_exu_i0_br_hist_r = _T_238 & i0_pp_r_bits_hist; // @[exu.scala 189:43] assign io_dec_exu_tlu_exu_exu_i0_br_hist_r = _T_194 & i0_pp_r_bits_hist; // @[exu.scala 191:43]
assign io_dec_exu_tlu_exu_exu_i0_br_error_r = i0_pp_r_bits_br_error; // @[exu.scala 190:43] assign io_dec_exu_tlu_exu_exu_i0_br_error_r = i0_pp_r_bits_br_error; // @[exu.scala 192:43]
assign io_dec_exu_tlu_exu_exu_i0_br_start_error_r = i0_pp_r_bits_br_start_error; // @[exu.scala 192:48] assign io_dec_exu_tlu_exu_exu_i0_br_start_error_r = i0_pp_r_bits_br_start_error; // @[exu.scala 194:48]
assign io_dec_exu_tlu_exu_exu_i0_br_index_r = predpipe_r[12:5]; // @[exu.scala 194:43] assign io_dec_exu_tlu_exu_exu_i0_br_index_r = predpipe_r[12:5]; // @[exu.scala 196:43]
assign io_dec_exu_tlu_exu_exu_i0_br_valid_r = i0_pp_r_valid; // @[exu.scala 186:43] assign io_dec_exu_tlu_exu_exu_i0_br_valid_r = i0_pp_r_valid; // @[exu.scala 188:43]
assign io_dec_exu_tlu_exu_exu_i0_br_mp_r = i0_pp_r_bits_misp; // @[exu.scala 187:43] assign io_dec_exu_tlu_exu_exu_i0_br_mp_r = i0_pp_r_bits_misp; // @[exu.scala 189:43]
assign io_dec_exu_tlu_exu_exu_i0_br_middle_r = i0_pp_r_bits_pc4 ^ i0_pp_r_bits_boffset; // @[exu.scala 191:43] assign io_dec_exu_tlu_exu_exu_i0_br_middle_r = i0_pp_r_bits_pc4 ^ i0_pp_r_bits_boffset; // @[exu.scala 193:43]
assign io_dec_exu_tlu_exu_exu_pmu_i0_br_misp = i0_pp_r_bits_misp; // @[exu.scala 166:47] assign io_dec_exu_tlu_exu_exu_pmu_i0_br_misp = i0_pp_r_bits_misp; // @[exu.scala 168:47]
assign io_dec_exu_tlu_exu_exu_pmu_i0_br_ataken = i0_pp_r_bits_ataken; // @[exu.scala 167:47] assign io_dec_exu_tlu_exu_exu_pmu_i0_br_ataken = i0_pp_r_bits_ataken; // @[exu.scala 169:47]
assign io_dec_exu_tlu_exu_exu_pmu_i0_pc4 = i0_pp_r_bits_pc4; // @[exu.scala 168:47] assign io_dec_exu_tlu_exu_exu_pmu_i0_pc4 = i0_pp_r_bits_pc4; // @[exu.scala 170:47]
assign io_dec_exu_tlu_exu_exu_npc_r = _T_265[30:0]; // @[exu.scala 240:49] assign io_dec_exu_tlu_exu_exu_npc_r = _T_221[30:0]; // @[exu.scala 242:49]
assign io_exu_bp_exu_i0_br_index_r = io_dec_exu_tlu_exu_exu_i0_br_index_r; // @[exu.scala 195:43] assign io_exu_bp_exu_i0_br_index_r = io_dec_exu_tlu_exu_exu_i0_br_index_r; // @[exu.scala 197:43]
assign io_exu_bp_exu_i0_br_fghr_r = predpipe_r[20:13]; // @[exu.scala 193:43] assign io_exu_bp_exu_i0_br_fghr_r = predpipe_r[20:13]; // @[exu.scala 195:43]
assign io_exu_bp_exu_i0_br_way_r = i0_pp_r_bits_way; // @[exu.scala 188:43] assign io_exu_bp_exu_i0_br_way_r = i0_pp_r_bits_way; // @[exu.scala 190:43]
assign io_exu_bp_exu_mp_pkt_valid = i0_flush_upper_x & i0_predict_p_x_valid; // @[exu.scala 52:53 exu.scala 201:39] assign io_exu_bp_exu_mp_pkt_valid = i0_flush_upper_x & i0_predict_p_x_valid; // @[exu.scala 52:53 exu.scala 203:39]
assign io_exu_bp_exu_mp_pkt_bits_misp = i0_flush_upper_x & i0_predict_p_x_bits_misp; // @[exu.scala 203:39] assign io_exu_bp_exu_mp_pkt_bits_misp = i0_flush_upper_x & i0_predict_p_x_bits_misp; // @[exu.scala 205:39]
assign io_exu_bp_exu_mp_pkt_bits_ataken = i0_flush_upper_x & i0_predict_p_x_bits_ataken; // @[exu.scala 207:39] assign io_exu_bp_exu_mp_pkt_bits_ataken = i0_flush_upper_x & i0_predict_p_x_bits_ataken; // @[exu.scala 209:39]
assign io_exu_bp_exu_mp_pkt_bits_boffset = i0_flush_upper_x & i0_predict_p_x_bits_boffset; // @[exu.scala 208:39] assign io_exu_bp_exu_mp_pkt_bits_boffset = i0_flush_upper_x & i0_predict_p_x_bits_boffset; // @[exu.scala 210:39]
assign io_exu_bp_exu_mp_pkt_bits_pc4 = i0_flush_upper_x & i0_predict_p_x_bits_pc4; // @[exu.scala 209:39] assign io_exu_bp_exu_mp_pkt_bits_pc4 = i0_flush_upper_x & i0_predict_p_x_bits_pc4; // @[exu.scala 211:39]
assign io_exu_bp_exu_mp_pkt_bits_hist = i0_flush_upper_x ? i0_predict_p_x_bits_hist : 2'h0; // @[exu.scala 210:39] assign io_exu_bp_exu_mp_pkt_bits_hist = i0_flush_upper_x ? i0_predict_p_x_bits_hist : 2'h0; // @[exu.scala 212:39]
assign io_exu_bp_exu_mp_pkt_bits_toffset = i0_flush_upper_x ? i0_predict_p_x_bits_toffset : 12'h0; // @[exu.scala 211:39] assign io_exu_bp_exu_mp_pkt_bits_toffset = i0_flush_upper_x ? i0_predict_p_x_bits_toffset : 12'h0; // @[exu.scala 213:39]
assign io_exu_bp_exu_mp_pkt_bits_br_error = 1'h0; // @[exu.scala 51:39] assign io_exu_bp_exu_mp_pkt_bits_br_error = 1'h0; // @[exu.scala 51:39]
assign io_exu_bp_exu_mp_pkt_bits_br_start_error = 1'h0; // @[exu.scala 50:44] assign io_exu_bp_exu_mp_pkt_bits_br_start_error = 1'h0; // @[exu.scala 50:44]
assign io_exu_bp_exu_mp_pkt_bits_pcall = i0_flush_upper_x & i0_predict_p_x_bits_pcall; // @[exu.scala 204:39] assign io_exu_bp_exu_mp_pkt_bits_pcall = i0_flush_upper_x & i0_predict_p_x_bits_pcall; // @[exu.scala 206:39]
assign io_exu_bp_exu_mp_pkt_bits_pja = i0_flush_upper_x & i0_predict_p_x_bits_pja; // @[exu.scala 205:39] assign io_exu_bp_exu_mp_pkt_bits_pja = i0_flush_upper_x & i0_predict_p_x_bits_pja; // @[exu.scala 207:39]
assign io_exu_bp_exu_mp_pkt_bits_way = i0_flush_upper_x & i0_predict_p_x_bits_way; // @[exu.scala 202:39] assign io_exu_bp_exu_mp_pkt_bits_way = i0_flush_upper_x & i0_predict_p_x_bits_way; // @[exu.scala 204:39]
assign io_exu_bp_exu_mp_pkt_bits_pret = i0_flush_upper_x & i0_predict_p_x_bits_pret; // @[exu.scala 206:39] assign io_exu_bp_exu_mp_pkt_bits_pret = i0_flush_upper_x & i0_predict_p_x_bits_pret; // @[exu.scala 208:39]
assign io_exu_bp_exu_mp_pkt_bits_prett = 31'h0; // @[exu.scala 49:57] assign io_exu_bp_exu_mp_pkt_bits_prett = 31'h0; // @[exu.scala 49:57]
assign io_exu_bp_exu_mp_eghr = final_predpipe_mp[20:13]; // @[exu.scala 215:39] assign io_exu_bp_exu_mp_eghr = final_predpipe_mp[20:13]; // @[exu.scala 217:39]
assign io_exu_bp_exu_mp_fghr = _T_250 ? ghr_d : ghr_x; // @[exu.scala 212:39] assign io_exu_bp_exu_mp_fghr = _T_206 ? ghr_d : ghr_x; // @[exu.scala 214:39]
assign io_exu_bp_exu_mp_index = final_predpipe_mp[12:5]; // @[exu.scala 213:39] assign io_exu_bp_exu_mp_index = final_predpipe_mp[12:5]; // @[exu.scala 215:39]
assign io_exu_bp_exu_mp_btag = final_predpipe_mp[4:0]; // @[exu.scala 214:39] assign io_exu_bp_exu_mp_btag = final_predpipe_mp[4:0]; // @[exu.scala 216:39]
assign io_exu_flush_final = i_alu_io_flush_final_out; // @[exu.scala 143:27] assign io_exu_flush_final = i_alu_io_flush_final_out; // @[exu.scala 144:27]
assign io_exu_div_result = i_div_io_exu_div_result; // @[exu.scala 160:33] assign io_exu_div_result = i_div_io_exu_div_result; // @[exu.scala 162:33]
assign io_exu_div_wren = i_div_io_exu_div_wren; // @[exu.scala 159:41] assign io_exu_div_wren = i_div_io_exu_div_wren; // @[exu.scala 161:41]
assign io_lsu_exu_exu_lsu_rs1_d = _T_135 | _T_134; // @[exu.scala 113:27] assign io_lsu_exu_exu_lsu_rs1_d = _T_135 | _T_134; // @[exu.scala 114:27]
assign io_lsu_exu_exu_lsu_rs2_d = _T_148 | _T_149; // @[exu.scala 119:27] assign io_lsu_exu_exu_lsu_rs2_d = _T_148 | _T_149; // @[exu.scala 120:27]
assign io_exu_flush_path_final = _T_260 | _T_261; // @[exu.scala 236:33] assign io_exu_flush_path_final = _T_216 | _T_217; // @[exu.scala 238:33]
assign rvclkhdr_io_clk = clock; // @[lib.scala 406:18] assign rvclkhdr_io_clk = clock; // @[lib.scala 406:18]
assign rvclkhdr_io_en = x_data_en & io_dec_exu_decode_exu_dec_i0_branch_d; // @[lib.scala 407:17] assign rvclkhdr_io_en = x_data_en & io_dec_exu_decode_exu_dec_i0_branch_d; // @[lib.scala 407:17]
assign rvclkhdr_1_io_clk = clock; // @[lib.scala 406:18] assign rvclkhdr_1_io_clk = clock; // @[lib.scala 406:18]
@ -2619,82 +2613,82 @@ module exu(
assign rvclkhdr_7_io_en = x_data_en & io_dec_exu_dec_alu_dec_csr_ren_d; // @[lib.scala 407:17] assign rvclkhdr_7_io_en = x_data_en & io_dec_exu_dec_alu_dec_csr_ren_d; // @[lib.scala 407:17]
assign i_alu_clock = clock; assign i_alu_clock = clock;
assign i_alu_reset = reset; assign i_alu_reset = reset;
assign i_alu_io_dec_alu_dec_i0_alu_decode_d = io_dec_exu_dec_alu_dec_i0_alu_decode_d; // @[exu.scala 130:20] assign i_alu_io_dec_alu_dec_i0_alu_decode_d = io_dec_exu_dec_alu_dec_i0_alu_decode_d; // @[exu.scala 131:20]
assign i_alu_io_dec_alu_dec_csr_ren_d = io_dec_exu_dec_alu_dec_csr_ren_d; // @[exu.scala 130:20] assign i_alu_io_dec_alu_dec_csr_ren_d = io_dec_exu_dec_alu_dec_csr_ren_d; // @[exu.scala 131:20]
assign i_alu_io_dec_alu_dec_csr_rddata_d = io_dec_exu_dec_alu_dec_csr_rddata_d; // @[exu.scala 130:20] assign i_alu_io_dec_alu_dec_csr_rddata_d = io_dec_exu_dec_alu_dec_csr_rddata_d; // @[exu.scala 131:20]
assign i_alu_io_dec_alu_dec_i0_br_immed_d = io_dec_exu_dec_alu_dec_i0_br_immed_d; // @[exu.scala 130:20] assign i_alu_io_dec_alu_dec_i0_br_immed_d = io_dec_exu_dec_alu_dec_i0_br_immed_d; // @[exu.scala 131:20]
assign i_alu_io_dec_i0_pc_d = io_dec_exu_ib_exu_dec_i0_pc_d; // @[exu.scala 138:33] assign i_alu_io_dec_i0_pc_d = io_dec_exu_ib_exu_dec_i0_pc_d; // @[exu.scala 139:33]
assign i_alu_io_flush_upper_x = i0_flush_upper_x; // @[exu.scala 134:33] assign i_alu_io_flush_upper_x = i0_flush_upper_x; // @[exu.scala 135:33]
assign i_alu_io_dec_tlu_flush_lower_r = io_dec_exu_tlu_exu_dec_tlu_flush_lower_r; // @[exu.scala 135:41] assign i_alu_io_dec_tlu_flush_lower_r = io_dec_exu_tlu_exu_dec_tlu_flush_lower_r; // @[exu.scala 136:41]
assign i_alu_io_enable = io_dec_exu_decode_exu_dec_data_en[1]; // @[exu.scala 132:45] assign i_alu_io_enable = io_dec_exu_decode_exu_dec_data_en[1]; // @[exu.scala 133:45]
assign i_alu_io_i0_ap_clz = io_dec_exu_decode_exu_i0_ap_clz; // @[exu.scala 139:51] assign i_alu_io_i0_ap_clz = io_dec_exu_decode_exu_i0_ap_clz; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_ctz = io_dec_exu_decode_exu_i0_ap_ctz; // @[exu.scala 139:51] assign i_alu_io_i0_ap_ctz = io_dec_exu_decode_exu_i0_ap_ctz; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_pcnt = io_dec_exu_decode_exu_i0_ap_pcnt; // @[exu.scala 139:51] assign i_alu_io_i0_ap_pcnt = io_dec_exu_decode_exu_i0_ap_pcnt; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_sext_b = io_dec_exu_decode_exu_i0_ap_sext_b; // @[exu.scala 139:51] assign i_alu_io_i0_ap_sext_b = io_dec_exu_decode_exu_i0_ap_sext_b; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_sext_h = io_dec_exu_decode_exu_i0_ap_sext_h; // @[exu.scala 139:51] assign i_alu_io_i0_ap_sext_h = io_dec_exu_decode_exu_i0_ap_sext_h; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_min = io_dec_exu_decode_exu_i0_ap_min; // @[exu.scala 139:51] assign i_alu_io_i0_ap_min = io_dec_exu_decode_exu_i0_ap_min; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_max = io_dec_exu_decode_exu_i0_ap_max; // @[exu.scala 139:51] assign i_alu_io_i0_ap_max = io_dec_exu_decode_exu_i0_ap_max; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_pack = io_dec_exu_decode_exu_i0_ap_pack; // @[exu.scala 139:51] assign i_alu_io_i0_ap_pack = io_dec_exu_decode_exu_i0_ap_pack; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_packu = io_dec_exu_decode_exu_i0_ap_packu; // @[exu.scala 139:51] assign i_alu_io_i0_ap_packu = io_dec_exu_decode_exu_i0_ap_packu; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_packh = io_dec_exu_decode_exu_i0_ap_packh; // @[exu.scala 139:51] assign i_alu_io_i0_ap_packh = io_dec_exu_decode_exu_i0_ap_packh; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_rol = io_dec_exu_decode_exu_i0_ap_rol; // @[exu.scala 139:51] assign i_alu_io_i0_ap_rol = io_dec_exu_decode_exu_i0_ap_rol; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_ror = io_dec_exu_decode_exu_i0_ap_ror; // @[exu.scala 139:51] assign i_alu_io_i0_ap_ror = io_dec_exu_decode_exu_i0_ap_ror; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_grev = io_dec_exu_decode_exu_i0_ap_grev; // @[exu.scala 139:51] assign i_alu_io_i0_ap_grev = io_dec_exu_decode_exu_i0_ap_grev; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_gorc = io_dec_exu_decode_exu_i0_ap_gorc; // @[exu.scala 139:51] assign i_alu_io_i0_ap_gorc = io_dec_exu_decode_exu_i0_ap_gorc; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_zbb = io_dec_exu_decode_exu_i0_ap_zbb; // @[exu.scala 139:51] assign i_alu_io_i0_ap_zbb = io_dec_exu_decode_exu_i0_ap_zbb; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_sbset = io_dec_exu_decode_exu_i0_ap_sbset; // @[exu.scala 139:51] assign i_alu_io_i0_ap_sbset = io_dec_exu_decode_exu_i0_ap_sbset; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_sbclr = io_dec_exu_decode_exu_i0_ap_sbclr; // @[exu.scala 139:51] assign i_alu_io_i0_ap_sbclr = io_dec_exu_decode_exu_i0_ap_sbclr; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_sbinv = io_dec_exu_decode_exu_i0_ap_sbinv; // @[exu.scala 139:51] assign i_alu_io_i0_ap_sbinv = io_dec_exu_decode_exu_i0_ap_sbinv; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_sbext = io_dec_exu_decode_exu_i0_ap_sbext; // @[exu.scala 139:51] assign i_alu_io_i0_ap_sbext = io_dec_exu_decode_exu_i0_ap_sbext; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_land = io_dec_exu_decode_exu_i0_ap_land; // @[exu.scala 139:51] assign i_alu_io_i0_ap_land = io_dec_exu_decode_exu_i0_ap_land; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_lor = io_dec_exu_decode_exu_i0_ap_lor; // @[exu.scala 139:51] assign i_alu_io_i0_ap_lor = io_dec_exu_decode_exu_i0_ap_lor; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_lxor = io_dec_exu_decode_exu_i0_ap_lxor; // @[exu.scala 139:51] assign i_alu_io_i0_ap_lxor = io_dec_exu_decode_exu_i0_ap_lxor; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_sll = io_dec_exu_decode_exu_i0_ap_sll; // @[exu.scala 139:51] assign i_alu_io_i0_ap_sll = io_dec_exu_decode_exu_i0_ap_sll; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_srl = io_dec_exu_decode_exu_i0_ap_srl; // @[exu.scala 139:51] assign i_alu_io_i0_ap_srl = io_dec_exu_decode_exu_i0_ap_srl; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_sra = io_dec_exu_decode_exu_i0_ap_sra; // @[exu.scala 139:51] assign i_alu_io_i0_ap_sra = io_dec_exu_decode_exu_i0_ap_sra; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_beq = io_dec_exu_decode_exu_i0_ap_beq; // @[exu.scala 139:51] assign i_alu_io_i0_ap_beq = io_dec_exu_decode_exu_i0_ap_beq; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_bne = io_dec_exu_decode_exu_i0_ap_bne; // @[exu.scala 139:51] assign i_alu_io_i0_ap_bne = io_dec_exu_decode_exu_i0_ap_bne; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_blt = io_dec_exu_decode_exu_i0_ap_blt; // @[exu.scala 139:51] assign i_alu_io_i0_ap_blt = io_dec_exu_decode_exu_i0_ap_blt; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_bge = io_dec_exu_decode_exu_i0_ap_bge; // @[exu.scala 139:51] assign i_alu_io_i0_ap_bge = io_dec_exu_decode_exu_i0_ap_bge; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_add = io_dec_exu_decode_exu_i0_ap_add; // @[exu.scala 139:51] assign i_alu_io_i0_ap_add = io_dec_exu_decode_exu_i0_ap_add; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_sub = io_dec_exu_decode_exu_i0_ap_sub; // @[exu.scala 139:51] assign i_alu_io_i0_ap_sub = io_dec_exu_decode_exu_i0_ap_sub; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_slt = io_dec_exu_decode_exu_i0_ap_slt; // @[exu.scala 139:51] assign i_alu_io_i0_ap_slt = io_dec_exu_decode_exu_i0_ap_slt; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_unsign = io_dec_exu_decode_exu_i0_ap_unsign; // @[exu.scala 139:51] assign i_alu_io_i0_ap_unsign = io_dec_exu_decode_exu_i0_ap_unsign; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_jal = io_dec_exu_decode_exu_i0_ap_jal; // @[exu.scala 139:51] assign i_alu_io_i0_ap_jal = io_dec_exu_decode_exu_i0_ap_jal; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_predict_t = io_dec_exu_decode_exu_i0_ap_predict_t; // @[exu.scala 139:51] assign i_alu_io_i0_ap_predict_t = io_dec_exu_decode_exu_i0_ap_predict_t; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_predict_nt = io_dec_exu_decode_exu_i0_ap_predict_nt; // @[exu.scala 139:51] assign i_alu_io_i0_ap_predict_nt = io_dec_exu_decode_exu_i0_ap_predict_nt; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_csr_write = io_dec_exu_decode_exu_i0_ap_csr_write; // @[exu.scala 139:51] assign i_alu_io_i0_ap_csr_write = io_dec_exu_decode_exu_i0_ap_csr_write; // @[exu.scala 140:51]
assign i_alu_io_i0_ap_csr_imm = io_dec_exu_decode_exu_i0_ap_csr_imm; // @[exu.scala 139:51] assign i_alu_io_i0_ap_csr_imm = io_dec_exu_decode_exu_i0_ap_csr_imm; // @[exu.scala 140:51]
assign i_alu_io_a_in = _T_104 | _T_102; // @[exu.scala 136:39] assign i_alu_io_a_in = _T_104 | _T_102; // @[exu.scala 137:39]
assign i_alu_io_b_in = i0_rs2_d; // @[exu.scala 137:39] assign i_alu_io_b_in = i0_rs2_d; // @[exu.scala 138:39]
assign i_alu_io_pp_in_valid = io_dec_exu_decode_exu_dec_i0_predict_p_d_valid; // @[exu.scala 133:45] assign i_alu_io_pp_in_valid = io_dec_exu_decode_exu_dec_i0_predict_p_d_valid; // @[exu.scala 134:45]
assign i_alu_io_pp_in_bits_boffset = io_dec_exu_ib_exu_dec_i0_pc_d[0]; // @[exu.scala 133:45] assign i_alu_io_pp_in_bits_boffset = io_dec_exu_ib_exu_dec_i0_pc_d[0]; // @[exu.scala 134:45]
assign i_alu_io_pp_in_bits_pc4 = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_pc4; // @[exu.scala 133:45] assign i_alu_io_pp_in_bits_pc4 = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_pc4; // @[exu.scala 134:45]
assign i_alu_io_pp_in_bits_hist = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_hist; // @[exu.scala 133:45] assign i_alu_io_pp_in_bits_hist = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_hist; // @[exu.scala 134:45]
assign i_alu_io_pp_in_bits_toffset = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_toffset; // @[exu.scala 133:45] assign i_alu_io_pp_in_bits_toffset = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_toffset; // @[exu.scala 134:45]
assign i_alu_io_pp_in_bits_br_error = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_br_error; // @[exu.scala 133:45] assign i_alu_io_pp_in_bits_br_error = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_br_error; // @[exu.scala 134:45]
assign i_alu_io_pp_in_bits_br_start_error = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_br_start_error; // @[exu.scala 133:45] assign i_alu_io_pp_in_bits_br_start_error = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_br_start_error; // @[exu.scala 134:45]
assign i_alu_io_pp_in_bits_pcall = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_pcall; // @[exu.scala 133:45] assign i_alu_io_pp_in_bits_pcall = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_pcall; // @[exu.scala 134:45]
assign i_alu_io_pp_in_bits_pja = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_pja; // @[exu.scala 133:45] assign i_alu_io_pp_in_bits_pja = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_pja; // @[exu.scala 134:45]
assign i_alu_io_pp_in_bits_way = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_way; // @[exu.scala 133:45] assign i_alu_io_pp_in_bits_way = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_way; // @[exu.scala 134:45]
assign i_alu_io_pp_in_bits_pret = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_pret; // @[exu.scala 133:45] assign i_alu_io_pp_in_bits_pret = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_pret; // @[exu.scala 134:45]
assign i_alu_io_pp_in_bits_prett = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_prett; // @[exu.scala 133:45] assign i_alu_io_pp_in_bits_prett = io_dec_exu_decode_exu_dec_i0_predict_p_d_bits_prett; // @[exu.scala 134:45]
assign i_mul_clock = clock; assign i_mul_clock = clock;
assign i_mul_reset = reset; assign i_mul_reset = reset;
assign i_mul_io_mul_p_valid = _T_183[19]; // @[exu.scala 149:25] assign i_mul_io_mul_p_valid = io_dec_exu_decode_exu_mul_p_valid; // @[exu.scala 150:18]
assign i_mul_io_mul_p_bits_rs1_sign = _T_183[18]; // @[exu.scala 149:25] assign i_mul_io_mul_p_bits_rs1_sign = io_dec_exu_decode_exu_mul_p_bits_rs1_sign; // @[exu.scala 150:18]
assign i_mul_io_mul_p_bits_rs2_sign = _T_183[17]; // @[exu.scala 149:25] assign i_mul_io_mul_p_bits_rs2_sign = io_dec_exu_decode_exu_mul_p_bits_rs2_sign; // @[exu.scala 150:18]
assign i_mul_io_mul_p_bits_low = _T_183[16]; // @[exu.scala 149:25] assign i_mul_io_mul_p_bits_low = io_dec_exu_decode_exu_mul_p_bits_low; // @[exu.scala 150:18]
assign i_mul_io_rs1_in = muldiv_rs1_d & _T_205; // @[exu.scala 150:41] assign i_mul_io_rs1_in = muldiv_rs1_d & _T_161; // @[exu.scala 152:41]
assign i_mul_io_rs2_in = i0_rs2_d & _T_205; // @[exu.scala 151:41] assign i_mul_io_rs2_in = i0_rs2_d & _T_161; // @[exu.scala 153:41]
assign i_div_clock = clock; assign i_div_clock = clock;
assign i_div_reset = reset; assign i_div_reset = reset;
assign i_div_io_dividend = _T_156 | _T_99; // @[exu.scala 157:33] assign i_div_io_dividend = _T_156 | _T_99; // @[exu.scala 159:33]
assign i_div_io_divisor = i0_rs2_d; // @[exu.scala 158:33] assign i_div_io_divisor = i0_rs2_d; // @[exu.scala 160:33]
assign i_div_io_dec_div_div_p_valid = io_dec_exu_dec_div_div_p_valid; // @[exu.scala 155:20] assign i_div_io_dec_div_div_p_valid = io_dec_exu_dec_div_div_p_valid; // @[exu.scala 157:20]
assign i_div_io_dec_div_div_p_bits_unsign = io_dec_exu_dec_div_div_p_bits_unsign; // @[exu.scala 155:20] assign i_div_io_dec_div_div_p_bits_unsign = io_dec_exu_dec_div_div_p_bits_unsign; // @[exu.scala 157:20]
assign i_div_io_dec_div_div_p_bits_rem = io_dec_exu_dec_div_div_p_bits_rem; // @[exu.scala 155:20] assign i_div_io_dec_div_div_p_bits_rem = io_dec_exu_dec_div_div_p_bits_rem; // @[exu.scala 157:20]
assign i_div_io_dec_div_dec_div_cancel = io_dec_exu_dec_div_dec_div_cancel; // @[exu.scala 155:20] assign i_div_io_dec_div_dec_div_cancel = io_dec_exu_dec_div_dec_div_cancel; // @[exu.scala 157:20]
`ifdef RANDOMIZE_GARBAGE_ASSIGN `ifdef RANDOMIZE_GARBAGE_ASSIGN
`define RANDOMIZE `define RANDOMIZE
`endif `endif
@ -3051,7 +3045,7 @@ end // initial
ghr_x <= 8'h0; ghr_x <= 8'h0;
end else if (x_ctl_en) begin end else if (x_ctl_en) begin
if (i0_valid_x) begin if (i0_valid_x) begin
ghr_x <= _T_235; ghr_x <= _T_191;
end end
end end
end end

View File

@ -51,6 +51,7 @@ class exu extends Module with lib with RequireAsyncReset{
io.exu_bp.exu_mp_pkt.bits.br_error := 0.U io.exu_bp.exu_mp_pkt.bits.br_error := 0.U
io.exu_bp.exu_mp_pkt.valid := 0.U io.exu_bp.exu_mp_pkt.valid := 0.U
i0_pp_r.bits.toffset := 0.U i0_pp_r.bits.toffset := 0.U
val x_data_en = io.dec_exu.decode_exu.dec_data_en(1) val x_data_en = io.dec_exu.decode_exu.dec_data_en(1)
val x_data_en_q1 = io.dec_exu.decode_exu.dec_data_en(1) & io.dec_exu.dec_alu.dec_csr_ren_d val x_data_en_q1 = io.dec_exu.decode_exu.dec_data_en(1) & io.dec_exu.dec_alu.dec_csr_ren_d
val x_data_en_q2 = io.dec_exu.decode_exu.dec_data_en(1) & io.dec_exu.decode_exu.dec_i0_branch_d val x_data_en_q2 = io.dec_exu.decode_exu.dec_data_en(1) & io.dec_exu.decode_exu.dec_i0_branch_d
@ -146,7 +147,8 @@ class exu extends Module with lib with RequireAsyncReset{
val i_mul = Module(new exu_mul_ctl()) val i_mul = Module(new exu_mul_ctl())
i_mul.io.scan_mode := io.scan_mode i_mul.io.scan_mode := io.scan_mode
i_mul.io.mul_p := VecInit.tabulate(io.dec_exu.decode_exu.mul_p.getElements.size-1)(i=>io.dec_exu.decode_exu.mul_p.getElements(i).asUInt & Fill(io.dec_exu.decode_exu.mul_p.getElements.size,io.dec_exu.decode_exu.mul_p.valid)).asTypeOf(io.dec_exu.decode_exu.mul_p) //& io.dec_exu.decode_exu.mul_p.valid i_mul.io.mul_p := io.dec_exu.decode_exu.mul_p
//i_mul.io.mul_p := VecInit.tabulate(io.dec_exu.decode_exu.mul_p.getElements.size-1)(i=>io.dec_exu.decode_exu.mul_p.getElements(i).asUInt & Fill(io.dec_exu.decode_exu.mul_p.getElements.size,io.dec_exu.decode_exu.mul_p.valid)).asTypeOf(io.dec_exu.decode_exu.mul_p) //& io.dec_exu.decode_exu.mul_p.valid
i_mul.io.rs1_in := muldiv_rs1_d & Fill(32,io.dec_exu.decode_exu.mul_p.valid) i_mul.io.rs1_in := muldiv_rs1_d & Fill(32,io.dec_exu.decode_exu.mul_p.valid)
i_mul.io.rs2_in := i0_rs2_d & Fill(32,io.dec_exu.decode_exu.mul_p.valid) i_mul.io.rs2_in := i0_rs2_d & Fill(32,io.dec_exu.decode_exu.mul_p.valid)
val mul_result_x = i_mul.io.result_x val mul_result_x = i_mul.io.result_x