我正在使用system-verilog,我想随机化一个大小为100的位向量 但我希望只有10个单元格的值为1。 我试图在约束中使用countones()但不可能。
所以我没有想法。
感谢您的帮助!
答案 0 :(得分:6)
我尝试了这个代码,它在Incisve中运行:
package some_package;
class some_class;
rand bit[99:0] vec;
constraint just_10_ones {
$countones(vec) == 10;
}
endclass
endpackage
module top;
import some_package::*;
initial begin
static some_class obj = new();
obj.randomize();
$display("vec = %b", obj.vec);
end
endmodule
根据我的记忆,过去一些供应商并不支持这样的约束,其中随机变量被用作方法的输入。如果他们确实支持它,则在启动randomize()
时变量的值用于输入,但此约束不会影响其结束值。