pulp-platform / snitch_cluster

An energy-efficient RISC-V floating-point compute cluster.
https://pulp-platform.github.io/snitch_cluster/
Apache License 2.0
52 stars 55 forks source link

hw: Fix repeated load-stores in FPSS on WAW stall #92

Closed colluca closed 9 months ago

colluca commented 9 months ago

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.