作为UVM的用户,我们需要相信在绝大部分情况下这些机制本身是没有问题的。因此,从顶层获得有效的调试信息就非常关键,比起潜入到内部要高效得多。
UVM将不同机制的调试功能封装成了命令行参数。在运行仿真的时候带上这些参数,就可以在仿真日志中打印出来对应的详细调试信息。本节将这些命令行参数都梳理出来,并附有仿真日志截图。
(资料图片仅供参考)
+UVM_CONFIG_DB_TRACE: 打开访问Config_db的追踪(tracing)功能,可以看到config_db的set和get操作在什么时间由什么组件发起。
+UVM_PHASE_TRACE:打开Phase执行的追踪功能,可以看到不同phase的执行顺序。
+UVM_OBJECTION_TRACE:打开Objection相关活动的追踪功能,可以清晰地呈现出objection在运行中的状态。
+UVM_VERBOSITY:设置打印信息的冗余程度,有效地控制不同重要性信息的打印和屏蔽。
除了命令行参数,UVM还提供了很多内置打印函数。这些函数可以在验证环境中被调用,调用后会将对应的数据结构按照强可读性的格式打印到仿真日志中,为环境调试工作提供极大的便利。
uvm_root::print_topology():打印整个验证环境的组件拓扑结构
uvm_component::print_config():打印当前组件可见视角下的所有配置资源信息
uvm_component::print_override_info():打印当前组件的工厂重载信息
uvm_factory::print():打印全局工厂中注册的类型以及instance和type重载信息
uvm_factory::debug_create_by_type():打印工厂根据参数实际会创建的类型
uvm_port_base::debug_connected_to():打印当前端口连接的下游端口网络,包括port/export/imp
参考资料
[1] Accellera Systems Initiative. "Universal Verification Methodology (UVM) 1.2 Class Reference" (2014).
关键词:
版权与免责声明:
1 本网注明“来源:×××”(非商业周刊网)的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,本网不承担此类稿件侵权行为的连带责任。
2 在本网的新闻页面或BBS上进行跟帖或发表言论者,文责自负。
3 相关信息并未经过本网站证实,不对您构成任何投资建议,据此操作,风险自担。
4 如涉及作品内容、版权等其它问题,请在30日内同本网联系。