
UVM
seabeam
这个作者很懒,什么都没留下…
展开
-
SV(UVM)实现多phase pipeline driver建模
在平台的搭建中,需要关注的重点一是平台的结构,怎么样便于复用,怎么样便于使用,不需要知道内部层次结构就可以很好的配置和使用。另一点就是实现了,驱动怎么实现?monitor怎么实现?sequence怎么实现?这些在VIP里都是加密的,都是“核心机密”。而其他结构agent, coverge collector, scoreboard等等结构基本大同小异。本文主要讨论“实现”这一方面的一小部分内容,有原创 2014-11-14 10:42:47 · 3388 阅读 · 1 评论 -
uvm_config_db使用注意
uvm_config_db将数据存入数据库中供set, get, 注意这里存进去了就是一个半全局的变量,如果有一处改变了就会对其他使用了相同值的变量造成影响,和全局变量效果是一样的。因此尽量单向使用uvm_config_db get到的对象/变量,不要对其赋值(virtual interface除外,本来就希望要驱动DUT).原创 2014-12-24 16:56:31 · 8528 阅读 · 0 评论 -
uvm_config_db性能权衡
根据mentor的推荐,尽量少用uvm_config_db,因为uvm_config_db是一个数据库,使用正则表达式匹配所有结果,如果数据库过大会影响验证平台性能。但是同时也提到性能与方法学乃至OOP有一个trade off.这里几个减少uvm_config_db的方法:(1) 数据结构粒度不要太小,如下代码:uvm_config_db #(int)::set::(this, "*"原创 2015-01-22 10:09:44 · 1792 阅读 · 0 评论 -
关于UVM中不能自定义uvm_printer_row_info的追踪
UVM printer中会使用这个结构体,但是因为是struct, 所以不能重写。Justin Refice大神补充在未来会增加一个新的对象uvm_printer_element以及uvm_printer_element_proxy以满足新的需求。参考资料:uvm_printer doesn't provide mechanism for interacting "per row"原创 2015-03-30 15:26:21 · 976 阅读 · 0 评论 -
怎样在INCISIVE里跑UVM1.2
UVM1.2已经上市许久,估计很多cadence的用户现在还没跑起来,以为代码有bug,其实是老版本IES自带的库不兼容造成的。注:下文中提到的$UVM_HOME是linux下设置的环境变量,指向UVM 1.2 lib所在的路径,需要自行设置如果是INCISIVE 13.2,那么使用命令:irun -uvmhome $UVM_HOME -uvmnocdnsextra如果是INCIS原创 2015-03-30 15:34:41 · 3532 阅读 · 0 评论 -
UVM 1.2正式release
不愿去官网下的稍后放出csdn下载传送门原创 2014-06-25 11:46:00 · 2410 阅读 · 1 评论 -
UVM中保存指定ID或report severity为log文件的方法
当然可以尝试grep,如果两者都要筛选可以用更复杂的语法。这里只讨论UVM原生的处理方法。 那就是使用set_report_severity_*_hier系列方法,不带hier的版本对本模块有效,如果希望对子模块有效就得用hierarchy系列。几点注意事项: 1.set系列函数最好放在build phase,且在children例化之后,这一点在源码里可以看到的,ref里没提。根据需要调用def原创 2015-05-27 22:10:48 · 2236 阅读 · 0 评论