0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

std::randomize随机结果不符合预期?

sanyue7758 来源:验证芯发现 2023-10-29 15:57 次阅读

在近期的一个testcase调试中,遇到一个std::randomize随机结果不符合预期的现象。

在testcase中设计一个结构体队列,然后使用std::randomize对结构体中的某个参数进行随机赋值,randomize的使用是std::randomize(s_item_list[i].AA) with {...}, code抽象如下:

9e6d25c0-762f-11ee-939d-92fbcf53809c.png

使用VCS编译仿真后得到结果如下:

9e7cca70-762f-11ee-939d-92fbcf53809c.png

从结果可以看到,虽然约束了结构体里参数AA的范围是大于等于1,小于3,但仍出现了随机结果为0的情况。这显然不符合预期。

思绪良久,没看出问题所在。只能打开SV手册来查阅,针对std::randmozie的说明可参考SV语法手册的18.12小节。从中还是发现了一些可疑之处:

The scope randomize function, std::randomize(), enables users to randomize data in the currentscope without the need to define a class or instantiate a class object.

...

The std::randomize() with form of the scope randomize function allows users to specify randomconstraints to be applied to the local scope variables.

看起来像是和scope有关系,因此又设计了class内普通变量,结构体变量,结构体队列变量,class变量,class队列变量,进行测试。设计的测试代码如下:

9e810644-762f-11ee-939d-92fbcf53809c.png

仿真的结果如下:

9e8f5e60-762f-11ee-939d-92fbcf53809c.png

总结规律,randomize(VAR),

当VAR是结构体里的变量(s_item.AA)、class里的变量(c_item.AA)、普通变量(int,bit)时,randomize行为正常;

当VAR是结构体队列中某个元素的变量(s_item_list[i].AA)、class队列中某个元素的变量(c_item_list[i].AA),randomize随机行为不符合预期。

随机结果不符合预期,EDA工具却没有给出warning或者error。为了确认其原因,就换了XRUN工具,看看是否能够复现该问题。

切换XRUN工具后,直接在编译阶段fail;

9e94c9fe-762f-11ee-939d-92fbcf53809c.png

XRUN给出了原因说明:The argument to scope randomize must be a simple identifier of integral.

所以在std::randomize的使用时,需要主要传入的参数需要是普通型变量,避免队列中元素的索引







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • EDA工具
    +关注

    关注

    4

    文章

    264

    浏览量

    31697
  • 仿真器
    +关注

    关注

    14

    文章

    1016

    浏览量

    83615
  • STD
    STD
    +关注

    关注

    0

    文章

    36

    浏览量

    14340
  • VCS
    VCS
    +关注

    关注

    0

    文章

    78

    浏览量

    9586

原文标题:std::randomize,没那么简单

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用TL071B设计电流检测电路,直流传输特性曲线一直不符合预期,是什么原因?

    大家好,请教个问题,使用TL071B设计电流检测电路,电流0-1A,输出电压对应0-1V,直流传输特性曲线一直不符合预期,是什么原因?
    发表于 08-02 07:47

    使用该电路进行放大电路仿真,其放大倍数与公式不符合,为什么?

    1.当我使用该电路进行放大电路仿真,其放大倍数与公式不符合,为什么?2.我调整R1阻值之后,在洞洞板上进行焊接之后,发现输出只有直流偏置,交流消失,与仿真结果不符合,为什么?希望大哥们指导
    发表于 08-14 07:46

    用tina进行ths4271的单电源仿真,结果与datesheet不符合,为什么?

    用tina进行ths4271的单电源仿真,结果与datesheet不符合,求指教!!
    发表于 09-05 06:41

    MULTISIM测量的电流怎么不符合KCL定律呀

    MULTISIM测量的电流怎么不符合KCL定律呀??小弟刚学电子,拜托指点迷津。见图。根据KCL电流定律,从NPN三极管流出来的电流应该是基极加集电极等于发射极,可是用MULTISIM测量出来的基极
    发表于 01-14 14:05

    modelsim仿真结果不符合逻辑

    modelsim仿真verilog代码 发现结果不符合逻辑代码里面两个信号相与结果出来的信号竟然是不定态这是什么原因?试了好几次都没找到原因代码和仿真结果如下:
    发表于 05-01 15:07

    modelsim仿真结果不符合逻辑

    modelsim仿真verilog代码 发现结果不符合逻辑代码里面两个信号相与结果出来的信号竟然是不定态这是什么原因?试了好几次都没找到原因代码和仿真结果如下:
    发表于 05-01 15:19

    求教功放电路结果失真,参数不符合要求

    这是一个功放的题目,然后我用这个电路图做,结果失真有点严重,还有就是有些基本参数不符合要求,请问要怎么修改这个电路图,或者有哪些其他的方案?
    发表于 06-05 18:48

    捕获结果不符合预期

    嘿,我有我的捕获代码。我相信我的捕获是正确的,但我想是我决定结果和输出我有一个问题。我正试图监测一个轴的速度(目前连接在一个演习的测试)我的捕获有溢出,因为速度太慢,以获得捕获没有Time1翼(见
    发表于 03-04 15:32

    CCC厂检常见的不符合项及对应的整改方案,看这一篇就够了!

    加工特点,建立相应的质量保证能力。下面安磁小编为大家介绍一下CCC认证检测时工厂检查过程中,常见的不符合项,以及对应的整改方案。希望厂家们可以避开这些地方的雷区,顺利通过CCC认证厂检并取得证书。1
    发表于 05-07 09:11

    ADS8699数据手册Output Data Word与实际输出不符合

    在使用ADS8699芯片的时候,按照芯片手册配置相关寄存器后。实际输出与数据手册不符合D[9:6]是ADC input rangeD[5:4] AVDD alarm flagsD[3:2] Input alam flags
    发表于 06-21 07:56

    E类功率放大电路,仿真波形输出不是方波而是三角波?与预期幅值、波形等方面都不符合

    `如图所示,E类功率放大电路,在功率管IRFP460的栅极接入一个460kHZ,幅值为4V的方波开关信号,为何仿真波形输出不是方波而是三角波?而且供电电压为25V直流的情况下,预期幅值等方面都不符合?`
    发表于 06-24 16:19

    传博通收购高通谈判破裂 博通报价不符合高通股东最佳利益

    近日有消息透露,关于博通收购高通谈判似乎有破裂的预兆。博通的提议未获高通董事会的认同,认为博通的收购报价不符合高通股东的最佳利益。
    发表于 02-13 10:02 814次阅读

    索尼移动业务不符合预期,已找到症结所在

    索尼今天公布的企业中期策略中,涉及了公司所有业务在未来三年的计划和调整。有趣的地方在于,虽然索尼官方并未改变移动业务的预期,但已经找到了过去几年移动业务不符合预期的症结所在。其中一张幻灯片写道:没有更快地改进其产品线,特别是在超
    发表于 05-25 13:42 1116次阅读
    索尼移动业务<b class='flag-5'>不符合</b><b class='flag-5'>预期</b>,已找到症结所在

    美国SEC拒绝创建比特币ETF 不符合防欺诈和市场操纵标准

    SEC周三在一份声明中说,Bitwise Asset Management和纽约证交所Arca拟议中的比特币交易所交易基金(ETF)不符合防止欺诈和市场操纵的标准。
    的头像 发表于 10-10 14:57 1250次阅读

    python如果不符合条件重新输入怎么办

    Python 是一种功能强大的编程语言,可以用于解决各种问题。在编写程序时,我们通常需要处理各种用户输入并对其进行验证。如果用户的输入不符合预期的条件,我们需要重新提示用户输入,直到满足条件为止
    的头像 发表于 11-29 16:56 1917次阅读