在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 335|回复: 4

[求助] 关于wait fork的作用范围

[复制链接]
发表于 2025-7-16 18:55:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
module test;


initial begin
  fork: b0
    #5 $display($time,, "thread1");
    begin
      fork: b1
        #250 $display($time,, "thread2");
        #300 $display($time,, "thread6");
      join_any
    end
  join_any


  test();


  $display($time,, "after call task");
end


task test;
  fork: b2
    #10 $display($time,, "thread3");
    begin
      fork: b3
        #5 $display($time,, "thread4");
        #40 $display($time,, "thread5");
      join_any
    end
  join_any
  wait fork;
  $display($time,, "after wait fork");
endtask


endmodule

这段程序,vcs的仿真结果是:
5     THREAD 1
10   THREAD 4
15   THREAD 3
45   THREAD 5
250 THREAD 2
250 After wait fork
250 After task call

300 THREAD 6


为什么wait fork会阻塞b1

发表于 2025-7-17 12:17:08 | 显示全部楼层
从你的结果看,并没有阻塞b1啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-17 13:22:40 | 显示全部楼层


   
veryIC 发表于 2025-7-17 12:17
从你的结果看,并没有阻塞b1啊。


两条display是在250时间单位打印的,是b1执行完的时间
回复 支持 反对

使用道具 举报

发表于 2025-7-19 10:11:48 | 显示全部楼层
fork在那个层次的就会柱塞这个层次以及子层次。
回复 支持 反对

使用道具 举报

发表于 2025-7-29 18:30:03 | 显示全部楼层
wait fork会阻塞当前thread以及其子thread,你的代码
1. initial begin/end是一个thread,命名为thread_0
2. b0在thread_0, b1为thread_0的子thread
3. task不是一个thread,因此task test里的所有均在test被调用的thread里,即thread_0
4. 综上,wait fork wait的是thread_0的所有fork及其子thread,所以b1会被阻塞
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-8-9 09:33 , Processed in 0.015624 second(s), 4 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表