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

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

3天内不再提示

systemverilog随机约束implication的概率分析

sanyue7758 来源:验证芯发现 2023-05-04 18:24 次阅读

在此我们以绿皮书中的例子为说明。

rand bit x;
rand bit[1:0] y;

without order, solve before的概率分布

在此设计三种不同的随机先后顺序,分析x和y取值的其概率分布。

1. without order:

8503e39c-e6d0-11ed-ab56-dac502259ad0.png

在x和y互相耦合的约束下,{x,y}的合法取值共有5种,每种取值的概率分别为1/5。

850d84ba-e6d0-11ed-ab56-dac502259ad0.png

因此,x=0的取值概率为:0.2,y=0的取值概率为:0.2+0.2=0.4,y=1,2,3的取值概率都是0.2。这种分析方式也是符合SV语法手册的说明,参见SV语法手册第18.5.10小节的说明。

注:这种概率的分布和绿皮书中的分析并不相同,这是由于绿皮书中采用vcs仿真器不同版本的差异造成的。在较新的vcs版本中,有ntb_solver_mode仿真选项,在设置ntb_solver_mode=1时,可以得到绿皮书中的结果;ntb_solver_mode=2或者使用默认设置,得到的就是上面的分析结果。

2. solve x before y:

85240a32-e6d0-11ed-ab56-dac502259ad0.png

solve-before并没有改变合法解的空间,只是改变了概率分布,由于x先于y求解,因此x的随机不受y取值的影响,其概率分布如下:

852b441e-e6d0-11ed-ab56-dac502259ad0.png

因此,x=0和1的取值概率都是0.5,y=0的取值概率为:0.5+0.125=0.625,其余取值概率都为0.125。

3. solve y before x:

853913a0-e6d0-11ed-ab56-dac502259ad0.png

和第2点类似,概率分布如下:

8547876e-e6d0-11ed-ab56-dac502259ad0.png

因此,y的取值是均匀分布,都是0.25,x=0的取值概率都是0.125,x=1的取值概率为:0.25*3+0.25*0.5=0.875。

上述三种约束,使用vsim仿真,提取x和y的取值概率分布如下:

85546d94-e6d0-11ed-ab56-dac502259ad0.png

因此,无论是选择哪一种约束顺序,由于x和y之间存在耦合,二者的取值概率都不会同时满足各自的均匀分布,即x=0/1:0.5和y=0,1,2,3:0.25不能同时出现。

进一步,如果上述的约束中,如果指定了x或者y的概率分布,结果又会如何?

指定x的概率分布:without order, solve before的差异分析

添加x的dist概率分布,分别对without order,solve_before方式进行测试。

without order:

85618f7e-e6d0-11ed-ab56-dac502259ad0.png

solve x before y:

85735e5c-e6d0-11ed-ab56-dac502259ad0.png

solve y before x:

857f0374-e6d0-11ed-ab56-dac502259ad0.png

测试结果如下:

858b2046-e6d0-11ed-ab56-dac502259ad0.png

上表实测结果的理论分析值如下:

85a9df90-e6d0-11ed-ab56-dac502259ad0.png

从中可以看出:

(1)在without order和solve x before y条件下,x的dist概率分布会得到满足;

(2)在solve y before x的条件下,优先满足solve before顺序,y是均匀分布;

指定y的概率分布:without order, solve before的差异分析

添加x的dist概率分布,分别对without order,solve_before方式进行测试。

without order:

85b764ee-e6d0-11ed-ab56-dac502259ad0.png

solve x before y:

85c229ce-e6d0-11ed-ab56-dac502259ad0.png

solve y before x:

85cf7278-e6d0-11ed-ab56-dac502259ad0.png

测试结果如下:

85db6862-e6d0-11ed-ab56-dac502259ad0.png

上表实测结果的理论分析值如下:

85ed3ff6-e6d0-11ed-ab56-dac502259ad0.png

从中可以看出:

(1)在without order和solve y before x条件下,y的dist概率分布会得到满足;

(2)在solve x before y的条件下,优先满足solve before顺序,x是均匀分布;

同时指定x和y的概率分布:without order, solve before的差异分析

添加x的dist概率分布,分别对without order,solve_before方式进行测试。

without order:

85fbde44-e6d0-11ed-ab56-dac502259ad0.png

solve x before y:

860ad700-e6d0-11ed-ab56-dac502259ad0.png

solve y before x:

8622d198-e6d0-11ed-ab56-dac502259ad0.png

测试结果如下:

86377198-e6d0-11ed-ab56-dac502259ad0.png

上表实测结果的理论分析值如下:

8648d03c-e6d0-11ed-ab56-dac502259ad0.png

从中可以看出:

(1)solve before 仍会优先得到满足;

(2)在同时指定dist概率分布时,without order的概率理论值分析方法暂时没有确定,同时也没有和测试值吻合。

总的来看,使用->或者if-else时,参数的概率分布会变得复杂且不易理解,尤其涉及到多条件蕴含时,某些参数的概率分布很难做出预期,因此更加需要后续的功能覆盖率加以分析,找出不合理的约束。






审核编辑:刘清

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

    关注

    14

    文章

    1018

    浏览量

    83739
  • Verilog
    +关注

    关注

    28

    文章

    1351

    浏览量

    110091

原文标题:systemverilog 随机约束implication的概率分析

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

收藏 人收藏

    评论

    相关推荐

    概率随机数生成【子模块】

    本帖最后由 ZHZJK 于 2014-1-7 17:04 编辑 你还在用系统自带的随机数生成函数吗你还在为模拟数值虚假而烦恼吗而个人编写了一个按照概率生成的随机数子模块将会解决这一系列问题它将
    发表于 12-31 16:49

    设计验证中的随机约束

    随机约束在现代集成电路验证中已得到国际IC 设计业界的普遍认可,并逐渐开始普及。与传统的定向测试比较,它在验证效率、验证覆盖率等方面具有诸多优势。最新公布的Sys
    发表于 12-14 09:54 13次下载

    M序列伪随机码在测距回答概率控制中的应用

    摘要:通过对机载测距询问器检测中测距回答概率控制的工作特性的分析,提出一种基于m序列伪随机码的具有可设定测距回答概率功能及随机回答特性的测距
    发表于 06-20 15:07 1206次阅读
    M序列伪<b class='flag-5'>随机</b>码在测距回答<b class='flag-5'>概率</b>控制中的应用

    添加时序约束的技巧分析

    一般来讲,添加约束的原则为先附加全局约束,再补充局部约束,而且局部约束比较宽松。其目的是在可能的地方尽量放松约束,提高布线成功
    发表于 11-25 09:14 2605次阅读

    基于CNN与约束概率矩阵分解的推荐算法

    基于CNN与约束概率矩阵分解的推荐算法
    发表于 06-17 16:36 7次下载

    概率统计与随机过程期末试卷及答案下载

    概率统计与随机过程期末试卷及答案下载
    发表于 09-06 16:12 0次下载

    如何利用SystemVerilog仿真生成随机

    采用SystemVerilog进行仿真则更容易生成随机数,而且对随机数具有更强的可控性。对于随机变量,在SystemVerilog中可通过r
    的头像 发表于 10-30 10:33 1.1w次阅读
    如何利用<b class='flag-5'>SystemVerilog</b>仿真生成<b class='flag-5'>随机</b>数

    简述SystemVerilog随机约束方法

    上一篇文章介绍了SystemVerilog的各种随机化方法,本文将在其基础上引入SystemVerilog随机约束方法(constrain
    的头像 发表于 01-21 17:03 2097次阅读

    使用SystemVerilog解决数组问题

    数独是一种非常流行的游戏,数独本质上也是一个约束问题,所以我们可以让SystemVerilog约束求解器来帮助我们解决。 约束求解器的精妙之处就是,我们只描述
    的头像 发表于 03-08 14:06 1594次阅读

    一些有趣的数组相关的SystemVerilog约束

    我们在工作中常常会针对数组施加各式的约束,下面列举一下有趣的Systemverilog数组约束示例。
    的头像 发表于 03-08 13:12 970次阅读

    SystemVerilog中“软约束”与“硬约束”的应用示例

    示例中采用的是“硬约束”,因为定义在类中的约束随机时指定的内嵌约束“矛盾”,所以导致约束解析器解析随机
    发表于 03-15 16:56 4745次阅读

    列举一下有趣的Systemverilog数组约束示例

    上面是最先想到的写法,但是会报错,因为SV约束语法不允许使用size()或任何其他随机值作为索引。
    的头像 发表于 05-04 17:35 1041次阅读

    一些有趣的数组相关的SystemVerilog约束

    我们在工作中常常会针对数组施加各式的约束,下面列举一下有趣的**Systemverilog数组约束**示例
    的头像 发表于 05-30 11:13 793次阅读

    SystemVerilog随机约束方法

    上一篇文章《暗藏玄机的SV随机化》介绍了SystemVerilog的各种随机化方法,本文将在其基础上引入SystemVerilog随机
    的头像 发表于 09-24 12:15 1729次阅读

    SV约束随机化总结

    constraint 约束随机化类中的变量 在main_phase 之前就已经提前产生一个变量的随机值。 用法:一般在类中定义一个rand 类型的变量, 然后根据需求写约束
    的头像 发表于 12-14 14:30 893次阅读
    SV<b class='flag-5'>约束</b><b class='flag-5'>随机</b>化总结