本文主要是介绍UVM:6.5.5 在sequence 中慎用fork join_none,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.将DUT 的数据口扩展为4路,验证平台也要有4个完全相同的driver,sequencer。my_vsqr 如下:
2.virtual sequence:
1)由于join_none 的特性,系统并不等fork 起来的进程结束就进入下一次for 循环,展开后如下:
问题是:使用join_none 并不等这4个mseq 执行完就直接返回。然后就是endtask,此时系统认为这个sequence 执行完毕。之后,系统会清理sequence 之前占据的内存空间。于是4个sequence 根本没执行,就被杀死了。
3.解决有很多方法,使用wait fork:
wait for 会等待前面被fork起来的进程执行完毕。
4.使用 fork join:
但无法使用for循环。因为要等当期的结束才能进到下一次循环。
这篇关于UVM:6.5.5 在sequence 中慎用fork join_none的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!