|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
task apb_driver::drv(apb_transaction tr);
`uvm_info(get_full_name(), "Driver: Driving APB transaction", UVM_LOW);
// Drive the APB signals
@(posedge apb_vif.pclk);
apb_vif.paddr <= tr.paddr;
apb_vif.psel <= 1'b1;
apb_vif.pwrite <= tr.pwrite;
apb_vif.pwdata <= tr.pwdata;
@(posedge apb_vif.pclk);
apb_vif.penable <= 1'b1;
@(posedge apb_vif.pclk);
while(apb_vif.pready == 1'b0) begin
@(posedge apb_vif.pclk);
end
apb_vif.psel <= 1'b0;
apb_vif.penable <= 1'b0;
tr.prdata <= apb_vif.prdata;
tr.pslverr <= apb_vif.pslverr;
`uvm_info(get_full_name(), $sformatf("%t, Transaction completed: paddr=%h, pwrite=%b, pwdata=%h, prdata=%h:%h, pslverr=%b,", $time, tr.paddr, tr.pwrite, tr.pwdata, tr.prdata, apb_vif.prdata, tr.pslverr), UVM_LOW);
endtask
不知道是不是这个task的问题,tr.prdata、apb_vif.prdata,打印的时候这2个值不相等,tr.prdata始终是0,找不到原因,明明是直接赋值的。
|
|