uvm1.2中uvm_info打印的时间精度不够,该如何解决

文摘   科技   2024-09-09 00:00   上海  

1.前言

最近有小伙伴反映说,uvm1.2中uvm_info打印的时间精度不够,从而导致波形定位很不方便如下右边是display出来的realtime.

而uvm1.1-d中uvm_info打印的时间精度就符合预期,这到底是怎么一回事儿呢?

2. 原因分析
对比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.2uvm_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库,参考该公众号的另外一篇文章:

如何为仿真器指定不同的UVM版本库
付费文章汇总(截止2024年06月02日)
欢迎加入知识星球。每天都会解答大家提出的技术问题。欢迎加入知识星球,助您快速成长。
最后,由于TX修改规则,为了不错过后续内容,欢迎加入QQ群,

另外,由于微信群已经超过200人,添加小编的微信,拉你进入WX学习群。

最后的最后,如果对您有帮助,希望点个“在看”。好好学习,天天向上

芯片验证日记
分享芯片验证相关的知识。
 最新文章