【问题标题】:Will infinite while loop inside fork-join_any end after exiting?退出后,fork-join_any 内的无限循环会结束吗?
【发布时间】:2022-01-03 06:42:36
【问题描述】:

在我退出fork/join_any 后,第一个while 循环会继续吗?我在“加入任何”消息之后看到消息“我在这里”。

我希望当我退出fork/join_any 时第一个while 循环将停止。 不是这样吗?

fork
    begin
        while(1)
            begin
                @(posedge trigger_clock);
                do something
                $info("i am here");
                
            end
    end
    begin 
        while(1)
            begin 
                @(posedge trigger_clock);
                if(condition is true)
                    begin
                        break;
                    end
            end
    end 
join_any
$info("after join any");

【问题讨论】:

    标签: system-verilog


    【解决方案1】:

    正如您所观察到的,即使您在底部 while 循环完成时退出 fork,顶部 while 循环也会继续执行。这是意料之中的。

    如果您希望顶部的while 循环在您退出fork 时停止执行,您可以使用disable fork 语句:

    fork
        // ...
    join_any
    disable fork;
    $info("after join any");
    

    请参阅 IEEE Std 1800-2017,第 9.6 节 过程控制。

    【讨论】:

      猜你喜欢
      • 2017-06-11
      • 2022-01-18
      • 2019-03-19
      • 1970-01-01
      • 2016-11-07
      • 2013-12-06
      • 2013-09-30
      • 2020-06-06
      相关资源
      最近更新 更多