Skip to content

Commit

Permalink
fix(LoadUnit): misalign wakeup should not set s0 valid (#4359)
Browse files Browse the repository at this point in the history
`s0_src_valid_vec` is not `s0_src_select_vec`, and bit corresponding to
`s0_src_valid_vec` is valid when any of the inputs `valid`. Therefore,
`misalign wakeup` needs to globally control `s0_valid`.
  • Loading branch information
Anzooooo authored Mar 5, 2025
1 parent aa78128 commit 25381b7
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/main/scala/xiangshan/mem/pipeline/LoadUnit.scala
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ class LoadUnit(implicit p: Parameters) extends XSModule
s0_src_select_vec(fast_rep_idx) || s0_src_select_vec(mmio_idx) ||
s0_src_select_vec(nc_idx)
s0_valid := !s0_kill && (s0_src_select_vec(nc_idx) || ((
s0_src_valid_vec(mab_idx) && !io.misalign_ldin.bits.misalignNeedWakeUp ||
s0_src_valid_vec(mab_idx) ||
s0_src_valid_vec(super_rep_idx) ||
s0_src_valid_vec(fast_rep_idx) ||
s0_src_valid_vec(lsq_rep_idx) ||
Expand All @@ -339,7 +339,9 @@ class LoadUnit(implicit p: Parameters) extends XSModule
s0_src_valid_vec(int_iss_idx) ||
s0_src_valid_vec(l2l_fwd_idx) ||
s0_src_valid_vec(low_pf_idx)
) && !s0_src_select_vec(mmio_idx) && io.dcache.req.ready))
) && !s0_src_select_vec(mmio_idx) && io.dcache.req.ready &&
!(io.misalign_ldin.fire && io.misalign_ldin.bits.misalignNeedWakeUp) // Currently, misalign is the highest priority
))

s0_mmio_select := s0_src_select_vec(mmio_idx) && !s0_kill
s0_nc_select := s0_src_select_vec(nc_idx) && !s0_kill
Expand Down

0 comments on commit 25381b7

Please sign in to comment.