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

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 7307|回复: 9

[讨论] 使用systemverilog的wait(event.triggered)遇到的疑惑

[复制链接]
发表于 2020-11-20 16:20:19 | 显示全部楼层 |阅读模式

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

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

×
最近无意中翻到了路桑写的书里面对于wait(event.triggered)的一条限制,有点颠覆了自己的认知,原话大致是”对于线程多次通知的需求,应使用@,而无法使用wait(event.triggered)。这是由于,当一个event被触发时,它的状态使event.triggered一直保持为true(1'b1)“。

为此自己还特意做了一个小实验,实验内容大致是这样,
        fork
            begin
                #100ns;
                ->sync;
                `uvm_info("thread1","----- sync event trigger -----",UVM_NONE);
            end
            begin
                for(int k=0;k<3;k++)begin
                    #90ns;
                    wait(sync.triggered);
                    `uvm_info("thread2","----- get event -----",UVM_NONE);
                end
            end
            begin
                for(int i=0;i<3;i++)begin
                    #10ns;
                    wait(1);
                    `uvm_info("thread3","----- get event -----",UVM_NONE);
                end
            end
        join

实验结果如下,打印完这几句以后,仿真就hang住了,看起来像是hang在wait(sync.tiggered)的地方。倘若按照路桑这哥们的说法,事件sync触发然后被wait(sync.triggered)捕捉到以后,sync.triggered的状态就一直为1了,那么就会像thread3一样,thread2接下来就会继续执行剩余的两次,但是事实并非如此。所以到底是我理解错了,还是这书上的东西写错了,有没有同仁指点一下?
        [thread3] ----- get event -----
        [thread3] ----- get event -----
        [thread3] ----- get event -----
        [thread1] ----- sync event trigger -----
        [thread2] ----- get event -----

image.png
 楼主| 发表于 2020-11-21 15:37:28 来自手机 | 显示全部楼层


   
dullman 发表于 2020-11-21 01:44
我不知道书上是怎么写的,实际应该是:一个event被触发,event.triggered变成TRUE,并一直保持到这个timesl ...


嗯,这也是解决了race问题的本质
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-23 10:41:04 | 显示全部楼层


   
saipolo 发表于 2020-11-21 11:38
我只讲一点,用forever begin wait(1== evt.triggered);  end仿真会卡死,而用forever begin @evt;  end就 ...


呵呵,这个就要取决于自己怎么看带官方手册和书籍了,我的看法是官方发布的手册可以看作是字典,有需要的时候就去查,但是既然是字典的东西,肯定就是全而杂。别人写的书可以看作是经验总结,既然是总结,肯定就难免存在笔误或者见解上的差异。一个优秀的工程师应该是遵循“去其糟粕取其精华”的原则,然后消化为自己适用的东西。路桑这本书我个人觉得确实写得不太好,大段大段贴源码,或者是翻译手册,真正属于自己的见解并不是很多。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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


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

GMT+8, 2025-9-21 09:57 , Processed in 0.022080 second(s), 5 queries , Gzip On, Redis On.

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