1.前言
最近有小伙伴反映说,uvm1.2中uvm_info打印的时间精度不够,从而导致波形定位很不方便,如下右边是display出来的realtime.而uvm1.1-d中uvm_info打印的时间精度就符合预期,这到底是怎么一回事儿呢?
对比uvm-1.1d和uvm-1.2官方的源码,如下图所示,让我们对比一下uvm-1.1d和uvm-1.2官方的源码中uvm_report_server.svh的内容。从下面的截图不难发现uvm-1.1d使用的是$realtime,而uvm-1.2使用的$time。这才是出现开头问题的root cause.
uvm-1.1d中uvm_report_server.svh的内容截图如下所示,
uvm-1.2中uvm_report_server.svh的内容截图如下所示,3. 使用VCS的解决方法:
如果你项目中使用的仿真器是VCS,并且使用的UVM库是VCS定制版的话,可以通过定义宏UVM_USE_REALTIME_IN_MSGS,来开启UVM的realtime精度,如下图所示,
其中VCS安装目录vcs/T-2022.06-SP2/etc/uvm-1.2/下有VCS定制版的uvm-1.2库,如下图所示
BTW, 至于如何指定使用哪个UVM库,参考该公众号的另外一篇文章:
如何为仿真器指定不同的UVM版本库
4. 使用Xcelium/xrun的解决方法:
如果你项目中使用的仿真器是Xcelium/xrun的话,可以通过定义宏UVM_REALTIME_ENABLE_MSG,来开启UVM的realtime精度,如下图所示,Xcelium23.09.071(含)以后的版本才支持该功能。
5. 总结
综上所述,VCS和Xcelium较新的版本都针对uvm库做了一些定制化,同时也在功能上做了一些增强,在实际的项目中可以根据需要选取使用哪个uvm库,至于如何指定使用哪个UVM库,参考该公众号的另外一篇文章:
欢迎加入知识星球。每天都会解答大家提出的技术问题。欢迎加入知识星球,助您快速成长。最后,由于TX修改规则,为了不错过后续内容,欢迎加入QQ群,
另外,由于微信群已经超过200人,添加小编的微信,拉你进入WX学习群。
最后的最后,如果对您有帮助,希望点个“在看”。好好学习,天天向上!