SystemVerilog----随机

本文介绍了SystemVerilog中的随机化技术,包括random类、randc类型、约束(constraint)及其应用,如randomize()函数、pre_randomize()和post_randomize()函数、随机化函数(如random()、dist_exponential()等)。此外,还讲解了约束的权重分布、inside操作符、隐式约束、等价约束、solve...before语句、约束继承、内联约束、外部约束、rand_mode()和constraint_mode()函数,以及随机数发生器的线程稳定性和对象稳定性。文章通过示例解释了如何在SystemVerilog中实现和控制随机化过程。
摘要由CSDN通过智能技术生成

random class 随机类

rand        每次随机化这个类,这些变量都会赋一个值。

randc      随机化这个类,但是具有周期性。

constraint      约束,关系表达式,所选择的变量值必须为真。

例如:

        变量src和dst为rand类型变量,随机值在[0,7]随机取值;变量kind为randc类型,随机值也是在[0,7]之间,但是只有将0-7内全部的值随机完成后在随机出原来的值。其中所随机的值必须符合约束constraint c中表达式。

        既可以随机化2-status,可以随机化4-status,但是随机化生成的仅为2-status。

 randomize()----随机化方法

        randomize() 随机变量产生随机值,randomize是一个虚拟函数,它为对象中的所有活跃随机变量产生随机值,产生的随机值必须符合约束。

pre_randomize()和post_randomize()

        每个类都包含了内建的pre_randomize()和post_randomize()函数,它们在计算新的随机值之前和之后被randomize()自动调用。所以在随机化过程中,pre_randomize、randomize和post_randomize函数的调用顺序为,pre_randomize---->randomize---->post_randomize

        pre和post函数都可以被重写,但是pre和post并不是虚函数。pre函数执行对象被随机化之前的初始化和预处理,包括修改非随机值,例如权重和上下限等;post函数执行对象被随机化之后的清除和后处理,其中也可以包括对随机值随机之后的一些修改。

 随机化函数

random()                        平均分布,返回有符号的32位的值。

urandom()                        平均分布,返回一个无符号32位的值、

urandom_range()                平均分布,但不能超过范围,例如urandom_range(seed,5,10)

dist_exponential()                指数分布 ,dist_exponential(seed,mean),mean为单位时间内事件发生的次数

dist_uniform()                        平均分布,dist_uniform(seed, start, end)

dist_normal()                        正态分布,dist_normal(seed, mean,std_dev), mean为期望,std_dev为标准差

dist_poisson()                        泊松分布,dist_poisson(seed, mean),mean为期望。

约束 constraint

1. 简单表达式

        约束中的表达式只能包含一个操作符,例如<=, ==, >=, <, >。

2. 等式表达式

        仅仅包含表达式,不能使用赋值, 使用等价运算符将一个随机变量设置为一个值,例如,len==42。

  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值