当前位置:   article > 正文

System Verilog的内嵌约束和指定参数随机_randomize with

randomize with

1、内嵌约束randomize() with{}

使用内嵌约束randomize() with{},用户可以在调用randomize()方法的地方添加新的约束,这样可以避免频发修改类里的约束。添加的内嵌约束和类里的约束是等效,需要避免内嵌约束和类里的约束发生冲突,导致randomize()失败。

class buspkt;
	rand bit[31:0] addr,data;
	rand bit[4:0] len;
	constrain addr_c{
		addr inside {[20:80],[100:200]}
	}
endclass

buspkt bpt;
initial begin
	bpt=new();
	assert(bpt.randomize() with {addr > 50;addr<150;data inside {[20:50]}});
	$display("addr = %0h,data = %0h",addr,data);
	//addr 范围在50-80,100-150,data范围在20-50

	assert(bpt.randomize() with {addr == 40;data <20});
	//addr取值为40,data取值范围0-19
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

内嵌约束和类里约束不能冲突,冲突会导致

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/107112
推荐阅读
相关标签
  

闽ICP备14008679号