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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3151|回复: 6

[求助] systemverilog中wait中的变量值变化问题

[复制链接]
发表于 2020-6-9 21:49:00 | 显示全部楼层 |阅读模式

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

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

x
fork
     begin
           wait(state == A);
           $display("here1");
     end
     begin
           while(state != A) #10;
           $display("here2");
     end
join
运行后发行,只打印出“here2”, “here1”没有打印出来,这是怎么回事,在wait中的state值应该是跟着一起变化的啊
发表于 2020-6-10 11:14:36 | 显示全部楼层
这里只打印here2,说明state一直都不等于A,但是不能说明state就等于A吧。
 楼主| 发表于 2020-6-10 22:20:44 | 显示全部楼层


精武英雄 发表于 2020-6-10 11:14
这里只打印here2,说明state一直都不等于A,但是不能说明state就等于A吧。


能打印出here2,说明state等于A成立了啊,不然会一直在while循环里头啊
感觉wait里头的state值就刚开始刷新了一下,后面就没有跟着变化一样
发表于 2020-6-15 10:15:36 | 显示全部楼层


xiuxing056 发表于 2020-6-10 22:20
能打印出here2,说明state等于A成立了啊,不然会一直在while循环里头啊
感觉wait里头的state值就刚开始刷 ...


把变量的定义也发出来一下呢。
发表于 2020-6-15 16:44:23 来自手机 | 显示全部楼层
或许是===和!==的问题。
 楼主| 发表于 2020-6-19 19:27:26 | 显示全部楼层


精武英雄 发表于 2020-6-15 10:15
把变量的定义也发出来一下呢。


virtual task start();       state = standby;

       fork
            begin
                   get_packet();
            end
            while(1) begin
                   packet_response();
            end
       join
end

virtual task get_packet();
       get_next_packet(p);
       if(p.use == initate )
           std::randomize(state) with {state == initiating };
       else if
       ...
endtask

virtual task packet_response();
     wait(state != standby);
     $display("here 1");
     ...
endtask

大概就是这样,state已经不等于standby了,但是“here 1”就是打印不出来

现在问题找到了,就是使用了std::randomize(state) with这一句,如果直接赋值如state = initiating;这样就不会出问题,但是什么原因一直搞不清楚



 楼主| 发表于 2020-6-19 19:29:00 | 显示全部楼层


saipolo 发表于 2020-6-15 16:44
或许是===和!==的问题。


不是这个原因,这里没有用到这个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-13 23:10 , Processed in 0.019411 second(s), 7 queries , Gzip On, Redis On.

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