【SystemVerilog 之 激励发生的随机化】~ 随即约束和分布、约束块控制、随机函数、数组约束、随机控制

1. 随即约束和分布

1.1 为什么要随机?

在这里插入图片描述

1.2 为什么要约束?

在这里插入图片描述

1.3 要随机什么?

在这里插入图片描述

1.4 声明随机变量的类

在这里插入图片描述
在这里插入图片描述

1.5 什么是约束?

在这里插入图片描述

1.6 权重分布

在这里插入图片描述
在这里插入图片描述

1.7 inside运算符

在这里插入图片描述

1.8 条件约束

在这里插入图片描述

1.9 双向约束

在这里插入图片描述
在这里插入图片描述

1.10 练习

在这里插入图片描述
答案:AC
解析:B错误,设计的结构它是静态的,形成于编译时,不可以随机化,而验证的结构发生在仿真时,可以随机化;D错误,输出不可随机化。

在这里插入图片描述
在这里插入图片描述
答案:AB
解析:C错误,month不符合条件,以为题中month是3位的,表示07,尽管约束范围是112,那最后只能出现在1~7;D错误,year范围不对。注意:同一个类中只要有一个成员变量随机失败,那整个随机就是失败的。

2. 约束块控制

2.1 打开或者关闭约束块

在这里插入图片描述

2.2 内嵌约束

在这里插入图片描述

2.3 练习

在这里插入图片描述
在这里插入图片描述
答案:A
解析:有多个约束并且没有禁止任何约束时,仿真时会报错,该题中p.length初始化为0,约束条件中不影响p.length,所以,最后还是0.
在这里插入图片描述

在这里插入图片描述
答案:C
解析:注意图中的soft,降低自己的优先级,所以只要满足题中的条件即可。

3. 随机函数

3.1 pre_randomize 和 post_randomize

在这里插入图片描述

3.2 随机数函数

在这里插入图片描述

3.3 随机化个别变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
答案:C
解析:这里只对low随机,那么其余的都是默认值0,不论怎么初始化,约束条件hi>med不满足,所以low没办法随机出来,故报错。

4. 数组约束

4.1 数组的大小

在这里插入图片描述

4.2 数组中每个元素

在这里插入图片描述
在这里插入图片描述

4.3 产生唯一元素值的数组

4.3.1 方式一

在这里插入图片描述

4.3.2 方式二

在这里插入图片描述

4.4 随机化句柄数组

在这里插入图片描述

4.5 练习

在这里插入图片描述
在这里插入图片描述
答案:D
分析:原因在于d[i]<=d[i+1],此时的i的取值无法满足,比如i==3,那么就要满足d[3]<=d[4],此时有d[4]吗?显然没有。

在这里插入图片描述
在这里插入图片描述
答案:B
分析:原因在于类RandStuff中value没有rand修饰,那它的值就是确定的,即为1;如果它要是被rand修饰,此时因为它是2位的,所以它的值在0~3都是对的;

拓展:如果类RandArray没有new的话,句柄数组就会是悬空的,此时他没有指定对象,所以这样做很危险。
总结:2个点===> 其一,一定要对该对象进行new,其二是一定要看句柄所指对象的变量有没有被rand修饰,有的话也要进行随机。

5. 随机控制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

声明

本人所有系列的文章,仅供学习,不可商用,如有侵权,请告知,立删!!!

本人主要是记录学习过程,以供自己回头复习,再就是提供给后人参考,不喜勿喷!!!

如果觉得对你有用的话,记得收藏+评论!!!

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值