|  | 
 
| 
各位前辈早上好~  本菜鸟看例程代码有些不太理解的地方,以下是粗略:
×
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册  
 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
            
            (1.96 KB , 下载次数:
                4 ) | 
 |