mirror of
https://github.com/openhwgroup/cva6.git
synced 2025-04-22 21:27:10 -04:00
ptw: Wait for rvalid on flush (#1184)
When the PTW is flushed, we need any pending transactions to complete before returning to the IDLE state. Currently, the PTW returns to IDLE after one cycle. Remain in WAIT_RVALID until we have actually received rvalid. Signed-off-by: Nils Wistoff <nwistoff@iis.ee.ethz.ch> Co-authored-by: Marcelo Orenes <movera@princeton.edu> Co-authored-by: Hyunsung Yun <88669963+yuhysu@users.noreply.github.com>
This commit is contained in:
parent
402ee6fdfc
commit
109f9e9ed3
2 changed files with 4 additions and 2 deletions
|
@ -359,7 +359,8 @@ module cva6_ptw_sv32 import ariane_pkg::*; #(
|
|||
// 1. in the PTE Lookup check whether we still need to wait for an rvalid
|
||||
// 2. waiting for a grant, if so: wait for it
|
||||
// if not, go back to idle
|
||||
if ((state_q == PTE_LOOKUP && !data_rvalid_q) || ((state_q == WAIT_GRANT) && req_port_i.data_gnt))
|
||||
if (((state_q inside {PTE_LOOKUP, WAIT_RVALID}) && !data_rvalid_q) ||
|
||||
((state_q == WAIT_GRANT) && req_port_i.data_gnt))
|
||||
state_d = WAIT_RVALID;
|
||||
else
|
||||
state_d = LATENCY;
|
||||
|
|
|
@ -369,7 +369,8 @@ module ptw import ariane_pkg::*; #(
|
|||
// 1. in the PTE Lookup check whether we still need to wait for an rvalid
|
||||
// 2. waiting for a grant, if so: wait for it
|
||||
// if not, go back to idle
|
||||
if ((state_q == PTE_LOOKUP && !data_rvalid_q) || ((state_q == WAIT_GRANT) && req_port_i.data_gnt))
|
||||
if (((state_q inside {PTE_LOOKUP, WAIT_RVALID}) && !data_rvalid_q) ||
|
||||
((state_q == WAIT_GRANT) && req_port_i.data_gnt))
|
||||
state_d = WAIT_RVALID;
|
||||
else
|
||||
state_d = IDLE;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue