System Verilog约束块constrain block控制和随机变量的随机属性控制
在一个对象中,可能会有很多的约束块,在实际使用时,我们希望一些随机块起作用,一些随机块不起作用,这就需要控制开关来控制约束块。在system verilog中提供了constrian_mode()函数来打开或关闭约束,同时也提供了随机变量的控制函数rand_mode()来控制变量的随机性,当随机变量的随机属性被关闭时,它就不在是一个随机变量,randomize()函数不会对其赋。
1、constrain_mode()函数
System Verilog中constrain_mode()方法的定义:
task object[.constraint_identifier]::constraint_mode( bit on_off );
或
function int object.constraint_identifier::constraint_mode();
当constrain_mode()作为task调用时,控制约束块的开启和关闭:
objec.constrain.constrain_mode(0);//关闭object的constrain约束块;
objec.constrain.constrain_mode(1);//打开object的constrain约束块;
当constrain_mode()作为function调用时,返回约束块的开启或关闭的状态:
ret = objec.constrain.constrain_mode();
//返回对象object的constrain的开启或关闭的状态