微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > uvm 设置 virtual sequencer 跑到driver里 clock不动

uvm 设置 virtual sequencer 跑到driver里 clock不动

时间:10-02 整理:3721RD 点击:

一样的代码 ,不设置 virtual sequencer 就能一直执行sequence,有波形产生。
设置virtual sequencer 就没有任何波形产生, 执行到driver里,在@(posedge vif.clock iff (vif.reset)) 这个地方一直等待。
在driver里的代码

task uart_tx_driver::get_and_drive();

while (1) begin

reset();

fork

@(negedge vif.reset)

begin

forever begin

@(posedge vif.clock iff (vif.reset))//执行到这里就一直等到, clock也不动

seq_item_port.get_next_item(req);

send_tx_frame(req);

seq_item_port.item_done();

end

end

join_any

disable fork;

//If we are in the middle of a transfer, need to end the tx. Also,

//do any reset cleanup here. The only way we got to this point is via

//a reset.

`uvm_info(get_type_name(), "Get out the loop\n", UVM_LOW)

if(req.is_active()) this.end_tr(req);

end

endtask : get_and_drive



run_phase部分

task uart_tx_driver::run_phase(uvm_phase phase);

fork

get_and_drive();

gen_sample_rate(ua_brgr, sample_clk);

join

endtask : run_phase


请各位前辈帮帮忙 谢谢了

你的driver肯定没有get到transaction,一直block住了。看看你的Virtual Sequencer里面的Sequencer指针有没有指向Agent里面的Sequencer

没有启动sequence

一楼说的有理,不过先检查下你的reset有没有被置位

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

网站地图

Top