Systemverilog(绿皮书)第六章——随机化(三)随机函数

我们更希望把随机变量用rand和randc修饰,之后把它们封装到 一个类里面。类是 一些变量的自洽体,可以把一些相关的变量放到这个软件的变量盒子中,变量 与变量之间的约束关系也可以放到类中。

如果我们在调用randomize时候,给randomize函数中添加一些参数,来指定随机化哪些变量。这时只有写进参数列表中的变量会被随机化,其他变量 都会被当做状态不会被随机化。其它变量即便有rand修饰符依然 

此不行。所有约束依然有效, 只有使用constraint 关掉之后才失效。

同时,randomize()函数 中的参数不管 有没有被rand修饰都会被随机化。

class Rising;
    byte low;        //未被随机约束变量
    rand byte med, hi;    //随机化的变量,8位有符号值
    constraint up
        {    low < med; med < hi;}
endclass

initial begin
    Rising r;
    r = new();
    r.randomize();        //    随机化hi,但是不改变low
    r.randomize(med);     //    只随机化med
    r.randomize(low);     //    只随机化low
end

上述代码中,例化了r之后,先调用r.randomize(low),那么low,med和hi的组合值可能是下面哪一组?

(A)low = -1,med=0, hi=0
(B)low = -1,med=1, hi=2
(C)low = 报错,med=0, hi=0
(D)low = 报错,med=null, hi=报错

此时 只随机low,而med和hi不被随机。 C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值