Systemverilog中Constrained random value generation的记录

SystemVerilog的约束随机化机制包括约束属性、变量赋值顺序、唯一性约束、蕴含关系、迭代约束、数组减少约束、全局约束、函数在约束中的使用、约束保护、软约束、随机化方法、作用域解析、随机变量的启用与禁用、约束启用与禁用、内联随机变量控制、内联约束检查、范围变量随机化、随机数系统函数和方法、随机稳定性属性以及随机加权选择和随机序列生成。这些特性使能高效和可控的仿真激励生成。

1. constraints的一些重要属性

  • constraints可以是任何包括整型variables或整型constant的expression,如:bit, reg, logic, integer, enum, packed, struct.
  • 求解存在时返回正确的值,如果constraint过约束而导致误解,返回error
  • constraints时双向的,所有的expression operators都认为是双向的,包含implication operator(->)
  • constraints只支持2-state value。4-state values(x/z)或4-state operators(e.g., ===, !==)都不支持,且会报错。
  • constraint_mode()可以用于enable或disable任何object中的named constraint block
  • rand_mode()可以用于enable或disable任何的random variable。如果一个random variable被disabled了,那么它的行为就是nonrandom variable的。
  • pre_randomize()和post_randomize()是sv内建的函数,它们分别会自动在randomize()之前和之后调用。
  • Randomize()是virtual类型的,因此它只看object类型,不管object handle是什么。

2. :=:/区别

3. Uniqueness constraints

一组variables可以用unique来进行约束,使得在该group中variables在randomization之后,没有任何两个members有相同的值。variables的类型可以是整型scalar variable、unpacked array variable的一个(leaf element)、一片(slice)或全部。

Leaf element的定义是:

例子如下:

4. implication

constraints为定义conditional(predicated) relations提供了两种结构:implication和if-else。两种定义如下:

implication使用(->)操作符来定义一个expression中蕴含着constraint。expression可以时任何的整数sv expression 。

Implication operator的布尔等式为:a->b 等价于(!a||b)。这表明如果expression(指的是a)为真,那么产生的随机数要受到该constraint的约束,否则,随机数是unconstrainted。总得来说:就是a为true,b也要受到constraint,a为false,b就任意的。

If-else约束中expression也要求为任何的整数expression。如果expression为真,那么if里的constraint_set就要满足,如果为false,那么else里的constraint_set要满足。

5. iterative constraints

Iterative constraints允许arrayed variables使用loop variables和indexing expression或者array reduction methods去约束。

foreach iterative constraints的语法:

foreach iterative constraints中也可以嵌套conditional(predicated) relations。

对于dynamic array和queue来说,array size也是可以被约束的,如果size constraint和iterative constraint同时发生,那么会先求解size constraints,然后求解iterat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷公子的藏经阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值