diff --git a/lib/uvm_agents/uvma_axi/src/seq/uvma_axi_b_seq.sv b/lib/uvm_agents/uvma_axi/src/seq/uvma_axi_b_seq.sv index 8269aa1c06..be514b3ac9 100644 --- a/lib/uvm_agents/uvma_axi/src/seq/uvma_axi_b_seq.sv +++ b/lib/uvm_agents/uvma_axi/src/seq/uvma_axi_b_seq.sv @@ -148,13 +148,17 @@ task uvma_axi_b_seq_c::body(); if(b_preresp_item.b_ready) begin foreach(req_requette[i,j]) begin - req_requette[selected_id][j] = req_requette[selected_id][j+1]; + if(j < req_requette[selected_id].size()-1) begin + req_requette[selected_id][j] = req_requette[selected_id][j+1]; + end end req_requette[selected_id] = new[aw_id_tr[selected_id] - 1] (req_requette[selected_id]); aw_id_tr[selected_id]--; foreach(status[i]) begin - status[i] = status[i+1]; + if(i < status.size()-1) begin + status[i] = status[i+1]; + end end status = new[status.size() - 1] (status); diff --git a/lib/uvm_agents/uvma_axi/src/seq/uvma_axi_r_seq.sv b/lib/uvm_agents/uvma_axi/src/seq/uvma_axi_r_seq.sv index 7ee7a0f3ad..682e221223 100644 --- a/lib/uvm_agents/uvma_axi/src/seq/uvma_axi_r_seq.sv +++ b/lib/uvm_agents/uvma_axi/src/seq/uvma_axi_r_seq.sv @@ -115,7 +115,9 @@ task uvma_axi_r_seq_c::body(); if(resp_item.r_last == 1'b1) begin foreach(req_requette[i,j]) begin - req_requette[selected_id][j] = req_requette[selected_id][j+1]; + if(j < req_requette[selected_id].size()-1) begin + req_requette[selected_id][j] = req_requette[selected_id][j+1]; + end end req_requette[selected_id] = new[ar_id_tr[selected_id] - 1] (req_requette[selected_id]); @@ -123,7 +125,9 @@ task uvma_axi_r_seq_c::body(); selected_indice = select_first_id(status, selected_id); foreach(status[j]) begin - status[selected_indice + j] = status[selected_indice + j + 1]; + if(selected_indice + j < status.size()-1) begin + status[selected_indice + j] = status[selected_indice + j + 1]; + end end status = new[status.size() - 1] (status); diff --git a/lib/uvm_agents/uvma_axi/src/seq/uvma_axi_w_seq.sv b/lib/uvm_agents/uvma_axi/src/seq/uvma_axi_w_seq.sv index b30faedbc9..d598f271c3 100644 --- a/lib/uvm_agents/uvma_axi/src/seq/uvma_axi_w_seq.sv +++ b/lib/uvm_agents/uvma_axi/src/seq/uvma_axi_w_seq.sv @@ -138,12 +138,16 @@ task uvma_axi_w_seq_c::body(); if(write_data_req[0].w_last) begin foreach(req_requette[i]) begin - req_requette[i] = req_requette[(i + aw_latency[0]) +1]; + if(i < req_requette.size() - aw_latency[0] - 1) begin + req_requette[i] = req_requette[(i + aw_latency[0]) +1]; + end end req_requette = new[req_requette.size() - (1 + aw_latency[0])] (req_requette); foreach(aw_latency[i]) begin - aw_latency[i] = aw_latency[i + 1]; + if(i < aw_latency.size() - 1) begin + aw_latency[i] = aw_latency[i + 1]; + end end aw_latency = new[aw_latency.size() - 1] (aw_latency); @@ -151,7 +155,9 @@ task uvma_axi_w_seq_c::body(); end foreach(write_data_req[i]) begin - write_data_req[i] = write_data_req[i+1]; + if(i < write_data_req.size() - 1) begin + write_data_req[i] = write_data_req[i+1]; + end end write_data_req = new[write_data_req.size() - 1] (write_data_req); if(write_data_req.size() == 0) begin