带切换功能的Verilog随机函数

问题描述

如何使用随机函数但只有50%的位切换来生成Verilog测试向量 例如:Address [7:0]的值在0到255之间变化->要生成的地址,例如01010101、00001111、11110000、10101010等

解决方法

您可以通过计算将随机值与其前一个值进行异或时设置的位数来限制更改的位数

 class req;
     rand bit[7:0] Address;
     constraint toggle_bits {$countones(Address ^ const'(Address)) == 4; }
 endclass

完整示例,您可以尝试here