赞
踩
使用内嵌约束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
内嵌约束和类里约束不能冲突,冲突会导致
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。