Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

data forward violation when custom xpulp instruction, cv.insertr followed by fp instructions #870

Closed
dd-baoshan opened this issue Sep 7, 2023 · 1 comment
Assignees
Labels
Component:RTL For issues in the RTL (e.g. for files in the rtl directory) PARAM:FPU Issue depends on the FPU parameter PARAM:PULP_XPULP Issue depends on the PULP_XPULP parameter Status:Resolved Issue has been resolved, but closure is pending on git merge and/or issuer confirmation Type:Bug For bugs in the RTL, Documentation, Verification environment or Tool and Build system

Comments

@dd-baoshan
Copy link

Simulation shows below Imperas error messages which related to bsetr xpulp instruction.

image

From tracer log, we can see that the data forward rule is violated whereby the fmul.s rd is not reflecting correctly on cv.insertr r2

image

It was proven in waves whereby we can see that cv.insertr write to register earlier than its preceded fmul instruction (blue marker indicate fmul reg_write to X10 happen after cv.insertr reg_write to X20 )

image

Further debug shows that the apu_stall signal is not asserted when cv.insertr has dependency on X10 (the read_reg_valid_i[1] deasserted during cv.insertr decoding stage).

  • cv.insertr has alu_op_b_mux_sel_o set to OP_B_MASK in decoder_i

image

  • but dependency check for op_b has no include OP_B_MASK as option thus de-assert the apu_read_reg_valid[1]

image

Component:RTL

Steps to Reproduce

Please provide:

  1. cv32e40p git hash : 4d281cf
  2. 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_data_fwd_test CFG=pulp_fpu_zfinx_2cyclat SIMULATOR=vsim SEED=1406786435 TEST_CFG_FILE=floating_pt_zfinx_instr_en COREV=1 USE_ISS=YES
    make test TEST=corev_rand_fp_instr_data_fwd_test CFG=pulp_fpu_zfinx_2cyclat SIMULATOR=vsim SEED=1406786435 TEST_CFG_FILE=floating_pt_zfinx_instr_en USE_ISS=YES
@pascalgouedo pascalgouedo self-assigned this Sep 7, 2023
@pascalgouedo pascalgouedo added the Type:Bug For bugs in the RTL, Documentation, Verification environment or Tool and Build system label Sep 7, 2023
@pascalgouedo pascalgouedo added the Component:RTL For issues in the RTL (e.g. for files in the rtl directory) label Sep 27, 2023
pascalgouedo pushed a commit to pascalgouedo/cv32e40p that referenced this issue Oct 2, 2023
…correction.

Signed-off-by: Pascal Gouedo <pascal.gouedo@dolphin.fr>
@pascalgouedo
Copy link

Resolved with PR #881

@MikeOpenHWGroup MikeOpenHWGroup added the PARAM:FPU Issue depends on the FPU parameter label Oct 25, 2023
@pascalgouedo pascalgouedo added Status:Resolved Issue has been resolved, but closure is pending on git merge and/or issuer confirmation PARAM:PULP_XPULP Issue depends on the PULP_XPULP parameter labels Oct 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component:RTL For issues in the RTL (e.g. for files in the rtl directory) PARAM:FPU Issue depends on the FPU parameter PARAM:PULP_XPULP Issue depends on the PULP_XPULP parameter Status:Resolved Issue has been resolved, but closure is pending on git merge and/or issuer confirmation Type:Bug For bugs in the RTL, Documentation, Verification environment or Tool and Build system
Projects
None yet
Development

No branches or pull requests

3 participants