微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > UVM中driver的问题

UVM中driver的问题

时间:10-02 整理:3721RD 点击:
task run_phase(uvm_phase phase);
vif.cmd_en<= 1'b0;
vif.op<= 1'b0;
vif.addr<= 8'b0;
vif.wr_data <= 8'b0;
while(!vif.rst_n)
@(posedge vif.clk);
while(1) begin
seq_item_port.get_next_item(req);
//begin_tr(req);
@(posedge vif.clk);
vif.cmd_en<= 1'b1;
vif.wr_data <= ((req.op == R) ? 0 : req.wr_data);
vif.addr<= req.addr;
vif.op<= ((req.op == R) ? 0 : 1);
@(posedge vif.clk);
vif.cmd_en<= 1'b0;
vif.wr_data <= 8'b0;
vif.addr<= 8'b0;
vif.op<= 1'b0;
//end_tr(req);
@(posedge vif.clk);
if(req.op == R) begin //注意这里!
req.rd_data = vif.rd_data;
end
seq_item_port.item_done();
end
endtask
这是driver的代码,数据不是sequence产生吗?这里面怎么还有对interface的驱动啊?
@(posedge vif.clk);
vif.cmd_en<= 1'b0;
vif.wr_data <= 8'b0;
vif.addr<= 8'b0;
vif.op<= 1'b0;

driver就是对DUT做驱动啊,只不过是通过interface实现的env和dut的连接,这里表现出来就是对interface写数据咯,你再了解了解

driver不是把sequence的数据传输给DUT吗?它自己产生了数据不会和sequence的数据冲突吗?

看着只是在某个clk时,清空数据总线上的内容,然后后面又重新赋值了

谢谢了,现在想通了,都不知道我以前怎么会那样想。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top