比如:为了增强代码的可读性,我们通常会将顶层和底层的seq变量定义为相同名称,在顶层top_vseq中启动底层sub_seq时,'uvm_do_on_with(sub_seq,{a == a});这个约束是无法生效的。
1、约束不生效的原因
从编译器的角度出发,它不知道两个变量a有什么不同,并且会把它做为sub_seq作用域中的两个相同变量,这就导致约束失效。
2、解决方案
将顶层变量和底层变量定义成不一样的名称,比如:顶层变量定义为a,底层变量定义为rand_a,然后执行’uvm_do_on_with(sub_seq,{rand_a == a});这样约束就会生效。
UVM验证:uvm_do_on_with函数随机化约束问题及解决方案
于 2021-12-22 13:10:08 首次发布