马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 xileito 于 2012-10-24 18:02 编辑
一样的代码 ,不设置 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
请各位前辈帮帮忙 谢谢了 |