022天津同城交友网
标题:
uvm例程中的问题求解
[打印本页]
作者:
在无忧
时间:
2020-4-7 18:46
标题:
uvm例程中的问题求解
文章简介:首先这个例程可以正常仿真并且结果也正确,可是以上这段我就理解不上去了,r
各位前辈早上好~ 本菜鸟看例程代码有些不太理解的地方,以下是粗略:
class iMonitor extends uvm_monitor;
................
................
................
virtual task run_phase(uvm_phase phase);
packet tr;
forever begin
tr= packet::type_id::create("tr",this);
get_packet(tr);
analysis_port.write(tr);
end
endtask: run_phase
virtual get_packet(packet tr);
............
............
forever begin
........
........
end
endtask: get_packet
endclass
首先这个例程可以正常仿真并且結果也正确,可是以上这段我就理解不上去了,run_phase里面调用了get_packet(), get_packet()里面又有一个forever循环,那么为啥analysis_port.write(tr)最终还會被调用嘞。
希望看到帖子的各位老师帮小弟分析解惑一下,感激不尽。
附件中时iMonitor全部源代码。
iMonitor.rar
下載积分: 资产 -2 信元, 下载支出 2 信元
作者:
开心青年
时间:
2020-4-7 18:46
1# dreamore
当vif.iMonClk.frame_n[port_id] == 1 且 i == 8的时候就return. 这时就退出get_packet(),可以继续执行analysis_port.write()
欢迎光临 022天津同城交友网 (http://www.btlz.cn/)
Powered by Discuz! X3