Sometimes, when the floating-point subsystem is stalled on a load/store, it may issue it multiple times.
Since the lsu_qvalid and lsu_qready signals ignore dst_ready, it may occur, when dst_ready is 0, that we have a handshake on the LSU request interface (lsu_qvalid && lsu_qready), without the same handshake being propagated to the accelerator request interface, as acc_req_ready_q depends on dst_ready. Therefore, lsu_qvalid, which depends on acc_req_valid_q, will remain asserted, and repeated issues may occur.
This PR fixes this issue by only asserting lsu_qvalid when dst_ready is high.
Sometimes, when the floating-point subsystem is stalled on a load/store, it may issue it multiple times.
Since the
lsu_qvalid
andlsu_qready
signals ignoredst_ready
, it may occur, whendst_ready
is 0, that we have a handshake on the LSU request interface (lsu_qvalid && lsu_qready
), without the same handshake being propagated to the accelerator request interface, asacc_req_ready_q
depends ondst_ready
. Therefore,lsu_qvalid
, which depends onacc_req_valid_q
, will remain asserted, and repeated issues may occur.This PR fixes this issue by only asserting
lsu_qvalid
whendst_ready
is high.