File tree Expand file tree Collapse file tree 1 file changed +11
-2
lines changed Expand file tree Collapse file tree 1 file changed +11
-2
lines changed Original file line number Diff line number Diff line change @@ -102,7 +102,8 @@ module miss_handler import ariane_pkg::*; import std_cache_pkg::*; #(
102
102
WB_CACHELINE_AMO , // F
103
103
AMO_WAIT_RESP , // 10
104
104
SEND_CLEAN , // 11
105
- REQ_CACHELINE_UNIQUE // 12
105
+ REQ_CACHELINE_UNIQUE , // 12
106
+ WB_CACHELINE_AMO_WAIT_ACK // 13
106
107
} state_d, state_q;
107
108
108
109
// Registers
@@ -432,11 +433,19 @@ module miss_handler import ariane_pkg::*; import std_cache_pkg::*; #(
432
433
state_d = (state_q == WB_CACHELINE_MISS ) ?
433
434
(colliding_clean_q[mshr_q.id] ? REQ_CACHELINE_UNIQUE : REQ_CACHELINE ) :
434
435
(state_q == WB_CACHELINE_FLUSH ) ? FLUSH_REQ_STATUS :
435
- (state_q == WB_CACHELINE_AMO ) ? AMO_REQ :
436
+ (state_q == WB_CACHELINE_AMO ) ? WB_CACHELINE_AMO_WAIT_ACK :
436
437
IDLE ;
437
438
end
438
439
end
439
440
441
+ // ~> write back before AMO needs to wait until write is completely finished
442
+ WB_CACHELINE_AMO_WAIT_ACK : begin
443
+ if (valid_miss_fsm) begin
444
+ state_d = AMO_REQ ;
445
+ end
446
+ end
447
+
448
+
440
449
// ------------------------------
441
450
// Flushing & Initialization
442
451
// ------------------------------
You can’t perform that action at this time.
0 commit comments