diff --git a/src/ariane.sv b/src/ariane.sv index b745effe2783f4038de78508c895ba9a417d9dee..eaefd7797b96de47690514129cfca140b61bf9ce 100644 --- a/src/ariane.sv +++ b/src/ariane.sv @@ -240,6 +240,7 @@ module ariane import ariane_pkg::*; #( icache_areq_o_t icache_areq_cache_ex; icache_dreq_i_t icache_dreq_if_cache; icache_dreq_o_t icache_dreq_cache_if; + logic icache_stall_ctrl; amo_req_t amo_req; amo_resp_t amo_resp; @@ -652,7 +653,9 @@ module ariane import ariane_pkg::*; #( // CO .commit_instr_i (commit_instr_id_commit), - .commit_ack_i (commit_ack) + .commit_ack_i (commit_ack), + + .should_lock_icache_o (icache_stall_ctrl) ); // ------------------- @@ -675,6 +678,7 @@ module ariane import ariane_pkg::*; #( .icache_areq_o ( icache_areq_cache_ex ), .icache_dreq_i ( icache_dreq_if_cache ), .icache_dreq_o ( icache_dreq_cache_if ), + .icache_stall_i ( icache_stall_ctrl ), // D$ .dcache_enable_i ( dcache_en_csr_nbdcache ), .dcache_flush_i ( dcache_flush_ctrl_cache ), diff --git a/src/cache_subsystem/wt_cache_subsystem.sv b/src/cache_subsystem/wt_cache_subsystem.sv index 5a0662dc4c2efa9bcc4fc34ebc15c0b6b2cc000c..3dc470d6b956d1dae85e1eaf171e7ece09bf3be3 100644 --- a/src/cache_subsystem/wt_cache_subsystem.sv +++ b/src/cache_subsystem/wt_cache_subsystem.sv @@ -34,6 +34,7 @@ module wt_cache_subsystem import ariane_pkg::*; import wt_cache_pkg::*; #( // data requests input icache_dreq_i_t icache_dreq_i, // to/from frontend output icache_dreq_o_t icache_dreq_o, + input logic icache_stall_i, // D$ // Cache management input logic dcache_enable_i, // from CSR @@ -88,7 +89,8 @@ module wt_cache_subsystem import ariane_pkg::*; import wt_cache_pkg::*; #( .mem_rtrn_i ( adapter_icache ), .mem_data_req_o ( icache_adapter_data_req ), .mem_data_ack_i ( adapter_icache_data_ack ), - .mem_data_o ( icache_adapter ) + .mem_data_o ( icache_adapter ), + .stall_req_i ( icache_stall_i ) ); diff --git a/src/cache_subsystem/wt_icache.sv b/src/cache_subsystem/wt_icache.sv index b127eb6a132c8ed46cf7d9039e0052f62a07310b..0b3cd9db77074fcb6f5ccd69abf6a46c53e2472c 100644 --- a/src/cache_subsystem/wt_icache.sv +++ b/src/cache_subsystem/wt_icache.sv @@ -46,7 +46,8 @@ module wt_icache import ariane_pkg::*; import wt_cache_pkg::*; #( input icache_rtrn_t mem_rtrn_i, output logic mem_data_req_o, input logic mem_data_ack_i, - output icache_req_t mem_data_o + output icache_req_t mem_data_o, + input logic stall_req_i ); // signals diff --git a/src/verifier.sv b/src/verifier.sv index f0875db2dd2ab28ccf8eaedefff74f9c4b4eaf40..80d2059119f0cb9053a1d8adc3b7dcae6938ced9 100644 --- a/src/verifier.sv +++ b/src/verifier.sv @@ -33,7 +33,8 @@ module verifier #( // Bus accesses (I$ misses and memory instructions in the pipeline) logic has_mem_access; assign has_mem_access = if_has_mem_access_i | id_has_mem_access_i | is_has_mem_access_i | (~no_st_pending_commit_i); - assign should_lock_icache_o = has_mem_access & icache_miss_i; + // assign should_lock_icache_o = has_mem_access & icache_miss_i; + assign should_lock_icache_o = has_mem_access; // CO logic [NR_COMMIT_PORTS-1:0][BITS_ENTRIES-1:0] commit_id_n, commit_id_q;