this is a very example code for req/grant test case.
// timing modeling
task req_grant_00();
m_vif.REQ <= 0;
m_vif.GRANT <= 0;
@(posedge m_vif.CLK);
endtask : req_grant_00
task req_grant_01();
m_vif.REQ <= 0;
m_vif.GRANT <= 1;
@(posedge m_vif.CLK);
endtask : req_grant_01
task req_grant_10();
m_vif.REQ <= 1;
m_vif.GRANT <= 0;
@(posedge m_vif.CLK);
endtask : req_grant_10
task req_grant_11();
m_vif.REQ <= 1;
m_vif.GRANT <= 1;
@(posedge m_vif.CLK);
endtask : req_grant_1
task
task wave_gen();
list = {`ON_OFF, `ON_ON, `OFF_ON, `OFF_OFF};
foreach(list[i]) begin
case(list[i])
`ON_OFF : req_grant_10();
`ON_ON : req_grant_11();
`OFF_OFF: req_grant_00();
`OFF_ON : req_grant_01();
endcase
end
endtask
沒有留言:
張貼留言