1 task object[.random_variable]::rand_mode( bit on_off ); 2 or 3 function int object.random_variable::rand_mode(); 1. 2. 3. AI检测代码解析 1 program rand_mode_ex; 2 class frame_t; 3 rand bit [7:0] src_addr; 4 rand bit [7:0] dst_addr; 5 task print(); 6 begin 7 $...
rand bit[7:0] length; p.length.rand_mode(0); //设置包长为非随机值 约束的开关控制: p.c_short.constraint_mode(0); //句柄+约束块+mode,控制这个约束块mode p.constraint_mode(0); //句柄+mode,控制整个句柄的mode 对数组的约束: 1)constraint d_size { d.size inside {[1:10]} ; d.sum...
post_randomize() 2.1 constraint_mode() constraint_mode():控制随机约束的开启,初始状态都是激活的; 1taskobject[.constraint_identifier]::constraint_mode( bit on_off );2or3functionintobject.constraint_identifier::constraint_mode(); View Code 2.2 rand_mode() 控制随机的开启,初始状态都是激活的;rand_...
-rand_name:随机变量的名称 note: randc(random-cyclic), 如果randc 替代rand , 则在随机化中,变量值不会重复一个随机值,直到所有可能的值都被赋值。 产生随机值 : 可使用方法randomize()产生随机值。 随机化的方法: pre_randomize/post_randomize/rand_mode() 1.1.8.2 约束 定义约束: constraint<constraint_...
rand_mode()可以用来控制激活或关闭一个随机变量。并且它们的值会被求解器当作状态变量。所有的随机变量最初都是激活的。 通过使用randomize()…with结构,用户可以在randomize()方法的调用点上声明约束块 某个变量在父类、子类都被约束时,子类继承父类的约束并且取所有该变量约束的交集,如果一个继承类中的约束与它...
2)所有的类的属性,包括内部用于进行随机操作的状态(用于随机操作的内部状态包括:随机数生成器状态,约束的constraint_mode状态,随机变量的rand_mode状态和randc随机变量的循环状态)和coverage都被复制到了新的对象中。类中包含的对象的句柄也被复制了,包括covergroup对象的句柄。嵌入的covergroup是个例外(在class内部定义的...
对于其他情况,例如跟胡不同需求,来选择使能哪些约束块,禁止哪些约束块,可以使用内建函数constraint_mode()打开或者关闭约束。 class packet;rand int length;constraint c_short {length inside {[1:32];}}constraint c_long {length inside {[1000:1032];}}endclass//---packet p;initial beginp =new ()...
rand int data; rand bit[1:0] mode; constraint data_cond { if (mode == 0) data > 0 && data < 100; else if (mode == 1) data > 100 && data < 200; else data > 200 && data < 300; } ``` 上述例子中,我们定义了一个名为`data_cond`的约束,根据`mode`的值为变量`data`指定了...
一个类里可以包含多个约束块。可以根据不同的测试条件使用不同的约束块。在运行期间可以使用constraint_mode()函数打开或关闭约束。 例1 class Packet; rand int lenth; constraint c_short{length inside {[1:10]};} constraint c_long {length inside {[1000:2100]};} ...
一个类里可以包含多个约束块。可以根据不同的测试条件使用不同的约束块。在运行期间可以使用constraint_mode()函数打开或关闭约束。 例1 class Packet; rand int lenth; constraint c_short{length inside {[1:10]};} constraint c_long {length inside {[1000:2100]};} ...