首页 > 解决方案 > 如果“break”在fork-join内,如何打破循环?

问题描述

我需要打破一个repeat循环,它的break决定是在一个 fork-join 块内做出的,但是我的模拟器没有编译具有以下结构的代码。

repeat (10) begin
    fork
        begin
            // do something
        end
        begin
            #(100ms);
            break; // compile error
        end
    join_any
    disable fork;
end

我也试过这个disable命令。我能够编译,但它没有打破循环。

repeat (10)
begin : repeat10_loop
    fork
        begin
            // do something
        end
        begin
            #(100ms);
            disable repeat10_loop; // try
        end
    join_any
    disable fork;
end : repeat10_loop

有没有办法使用breakdisable在 fork-join 内?

标签: system-verilog

解决方案


breakandcontinue语句必须与循环语句在同一进程中。您禁用的问题是您错误地标记了循环。尝试:

repeat10_loop: repeat (10)
   begin

推荐阅读