In reply to cgales:
i try to keep the sequence alive , but now i can’t get requests back to back. the next request is received only after the former request got its response.
i need a way to get back to back requests from the sequence.
the sequence is :
…
// send xaction
finish_item(this_transfer);
if (this_transfer.NeedRsp)
begin
expected_responses++;
$display("start wait for expected_responses at %t",$time());
wait(expected_responses == 0);
$display("finish wait for expected_responses at %t",$time());
end
endtask // body
function void response_handler(ovm_sequence_item response) ;
cmi_src_cmd req;
assert($cast(req, response)) else
ovm_report_error(get_full_name()," received completion with unmatched type");
$display("in sequence: got xact_id of response = %d",req.xact_id);
// verify data
if(req.CompareCompletion)
for (int i = 0 ; i < 16 ; i++)
if (req.ExpectedData[i] != req.WData[i])
ovm_report_error(get_full_name(), $psprintf("data mismatch! index = %1d : expected = %h actual = %h @ TID = %h, SRC = %h , DST = %h . CHID = %d, Adress = %h",i,
req.ExpectedData[i] ,req.WData[i],req.TID,req.SrcID,req.DstID,req.ChId,req.Addr));
else
$display("cmp: %d == %d",req.ExpectedData[i],req.WData[i]);
expected_responses--;
endfunction