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

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: Hyan-1021

[求助] SV笔试问题,如何提前结束fork-join?

[复制链接]
发表于 2020-9-12 17:20:17 | 显示全部楼层
好像可以用break;
 楼主| 发表于 2020-9-13 15:07:31 | 显示全部楼层


vulture09 发表于 2020-9-12 17:20
好像可以用break;


break不是针对循环的嘛?
发表于 2021-12-23 16:02:06 | 显示全部楼层
用cadence的irun环境测试了下,join_any/join_none 之后的disable lable并不生效,也不报任何错误。所有的进程都会跑完
换做disable fork是可以的,未完成的进程确实会被中止。
再三确认了lable没写错,写错编译都过不去的。不知是否软件问题还是说需要加什么仿真选项才可以支持disable lable
发表于 2021-12-23 18:24:26 来自手机 | 显示全部楼层
本帖最后由 eaglezhang01 于 2021-12-23 19:57 编辑

这个题也就给新人做哦,没什么水平,就像前面有人说的,实际中很少会这么用,能用fork join_any轻松搞定的事非的费那么大的劲去想着用其他两种,有经验的工程师怎么可能会这么干,另外是用disable lable和直接disable fork,有经验的工程师也不会这么勇,这么用在大环境里万一误杀可能debug可能会很耗时,尤其是暴力disable fork,比较好的解决方法上面有人提了process kill,这个方法安全,但写起来有些麻烦,也不太常用,用的比较多的还是disable fork,只是不能暴力的直接就disable了,需要加些保护
发表于 2021-12-31 11:26:18 | 显示全部楼层
学习了
发表于 2022-1-6 17:23:37 | 显示全部楼层
本帖最后由 gp3f2y 于 2022-1-7 15:26 编辑

.................
发表于 2022-1-6 17:25:37 | 显示全部楼层
class test1_fork_join;
    initial begin
        int i = 0;
        fork
            begin
                do1();
                i++;
            end
            begin
                do2();
                i++;
            end
            begin
                do3();
                i++;
            end
        if(i)
        $display "done";
        disable fork;
        join
    end
endclass


class test2_fork_join_any;
    initial begin
        fork
            begin
                do1();
            end
            begin
                do2();
            end
            begin
                do3();
            end
            /*
            fork
                do1();
                do2();
                do3();
            join_any
            */  
        join_any
        $display "done";
        disable fork;
        end
    endclass


class test3_fork_join_none;
    initial begin
        fork
           fork
               do1();
               do2();
               do3();
           join_any
        $display "done";
        disable fork;
        join_none
        wait fork;
      
    end
---------------------------------------------
小白尝试着来写一下,还请交流指正。
发表于 2022-2-17 20:02:21 | 显示全部楼层


空白MAX 发表于 2020-8-16 19:39
task test();
  fork : tag
    begin


学习了
发表于 2022-2-26 15:36:11 | 显示全部楼层
这题目出得挺不错的。楼主的答案并不能满足题目要求:当执行到第17行if(ok1|ok2|ok3)  disable fork;的时候,需要fork-join里面的3个子进程都执行完。应该将17行分别复制到每一个子进程的最后,或者增加一个等待ok1/ok2/ok3触发的disable进程。2L是正确答案
发表于 2022-3-25 09:40:44 | 显示全部楼层


eaglezhang01 发表于 2021-12-23 18:24
这个题也就给新人做哦,没什么水平,就像前面有人说的,实际中很少会这么用,能用fork join_any轻松搞定的 ...


啥保护,请大佬讲解一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-15 00:23 , Processed in 0.022386 second(s), 6 queries , Gzip On, Redis On.

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