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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

[讨论] systemVerilog中randomize()中if...else的使用

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

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

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

x
class p;
    ...;
    rand bit [15:0] remain;
endclass

p.randomize() with {
     if (txData.size() > A)
           remain == A;
     else
          remain == txData.size();
}
运行后发现,remain的值根本就没有按照预期的取txData.size和A的较小值,而如果改成下面两种之一都可以
p.randomize() with {
     if (txData.size() > A) {
           remain == A;
      }
     else  {
          remain == txData.size();
     }
}


p.randomize() with {
     txData.size() >= A  -> remain == A;
     txData.size() < A    -> remain == txData.size();
}

这个什么原因,if else后面只有一句都需要加{}吗?
发表于 2020-6-19 09:29:04 | 显示全部楼层
那可能就是哪里出错饿了
 楼主| 发表于 2020-6-19 19:13:00 | 显示全部楼层


A1985 发表于 2020-6-19 09:29
那可能就是哪里出错饿了


不太明白原因,systemverilog中if...else后面只有一句语句的话是可以不加大括号的呀
发表于 2020-6-23 08:16:52 来自手机 | 显示全部楼层


xiuxing056 发表于 2020-6-19 19:13
不太明白原因,systemverilog中if...else后面只有一句语句的话是可以不加大括号的呀
...


assert断言本身不是sv固有的,后来貌似是OpenVera还是Specman e捐赠给Accellera组织的,加{}表示语句是断言描述性质的语句,而begin…end就是sv/v的语句,else语句只有一句实际是省去了begin…end,实际上还是sv/v语句。
类似的还有随机化时用foreach给数组初始化值也要加{}。
 楼主| 发表于 2020-6-23 22:12:35 | 显示全部楼层


saipolo 发表于 2020-6-23 08:16
assert断言本身不是sv固有的,后来貌似是OpenVera还是Specman e捐赠给Accellera组织的,加{}表示语句是断 ...


谢谢
发表于 2020-6-24 15:54:22 | 显示全部楼层
forum.jpg
为什么我做了个简单实验是可以的呢?
example.jpg
 楼主| 发表于 2020-6-24 20:46:01 | 显示全部楼层


ppeezz 发表于 2020-6-24 15:54
为什么我做了个简单实验是可以的呢?


不知道什么原因,我那个确实不行!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-4-20 10:05 , Processed in 0.036110 second(s), 7 queries , Gzip On, Redis On.

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