微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > 随机类内部随机类成员不能randomize的问题

随机类内部随机类成员不能randomize的问题

时间:10-02 整理:3721RD 点击:
legacy 的code, 遇到问题,不知道该如何解决,恳请各位大牛看看,谢谢!
class B extends uvm_object;
rand int ...
rand bit ...
endclass
class C extends uvm_object;
rand int ...
rand bit ...
endclass
class A extends uvm_object;
rand B m_b;
rand C m_c;
rand int ....
.....
endclass
testcase
rand A m_a;
现在的问题是,当我在testcase里面assert m_a.randomize() with {} 的时候,m_b不能被randomize,而m_c可以。但是在m_a.post_randomize()里面却可以单独assert m_b.randomze()....这是为什么呢?VCS没有报告任何constratin()的冲突。就是m_b.xxx都是0.没有随机值。

自己做实验不就知道了。

这样的代码恐怕别人很难重现你的现象

代码信息量太小,至少看不错为什么m_b不能而m_c能随机。

难发现原因,就是因为code太多,无法贴出来,要好几屏。也很难debug。有什么方法可以追踪内嵌randomize函数里面的行为?

这种用法在做cfg的类很常见。想确认一下有没有在new函数或者pre_randomize函数中对m_b和m_c进行create或new。

在 A 的 new()里面,create的m_b和m_c。

你自己说过constraint里可以加$display的吧

那就有点奇怪了,可以试试gui的方式进行debug,直接加入watch列表试试,看来是不是都是可以随机的。

谢谢回复。主要 非in line randomize,无法设置断点啊。一闪而过。


是的,因为有一个constraint里面有条display语句,被执行了,在那个可以被randomize的类成员里面。因为项目催的紧。不得不采用外面inline randomize()的方式,先work round过去了。以后有时间再看看能否debug吧。关键问题还是无法直接debug randomize()这个内嵌函数。

单步调试不行的,我之前说过。你先把inline删掉看能不能正常工作。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top