data forward violation when custom xpulp instruction, cv.bsetr followed by fp instructions
Created by: dd-baoshan
Simulation shows below Imperas error messages which related to bsetr xpulp instruction.
From tracer log, we can see that the data forward rule is violated whereby the fcvt rd is not reflecting correctly on cv.bsetr rs2.
It was proven in waves whereby we can see that both instructions write_back/data_forward happen at the same cycle (red marker)
Further debug shows that the apu_stall signal is not asserted during the event, and it is due to alu_op_b_mux_sel is not set correctly. cv.bsetr unlike cv.bset whereby its op_B is not an Immediate but was set to OP_B_IMM in rtl (cv32e40p_decoder.sv).
Component:RTL
Steps to Reproduce
- cv32e40p git hash : 4d281cf2
- Users need to checkout below core-v-verif to replicate the issue. The reproduce steps as followings git clone --branch cv32e40p/bsm-github_cv32e40p_Issue_0907 https://github.com/XavierAubert/core-v-verif.git sandbox cd sandbox/cv32e40p/sim/uvmt make gen_corev-dv TEST=corev_rand_fp_instr_sanity_test CFG=pulp_fpu_1cyclat SIMULATOR=vsim SEED=1945030691 TEST_CFG_FILE=floating_pt_instr_en COREV=1 USE_ISS=YES make test TEST=corev_rand_fp_instr_sanity_test CFG=pulp_fpu_1cyclat SIMULATOR=vsim SEED=1945030691 TEST_CFG_FILE=floating_pt_instr_en USE_ISS=YES