在seq中timeout看门狗处理的时候,如果fork : timeout 被同时执行了多次,在其中一次disable了后,所有正在循环的fork : timeout都会退出,如下代码。我们期望的是循环的三次fork : timeout各自跳出。
方法一:使用process进程控制。fork join中的每一个进程都声明一个process。当某一个跳出后,杀掉其余两个进程,可以看到结果了循环了三次,每次都从第一个begin...end跳出,避免了直接从第一个循环的begin..end跳出后杀掉所有循环的fork : timeout
方法二:把fork后面的statement名称去掉,最后直接用disable fork。这种方式可能会引入另一个问题,会把同层次之前提交过的fork...join_any一起杀掉。将其外面再套一层fork...join,可以避免这个问题,但是会显得代码冗余