本文共 357 字,大约阅读时间需要 1 分钟。
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循环。因为要等当期的结束才能进到下一次循环。