UVM reg model 常见问题记录
1.仿真log中报出大量的"include_coverage not located, did you mean ***"?
(1) user在构建register model或者集成register model的过程中,可能会调用uvm_reg::build_coverage(), uvm_mem::build_coverage(), uvm_reg_block::build_coverage();而在build_coverage()函数内,会调用uvm_resource_db::read_by_name()函数,该函数又会调用get_by_name()函数,接着调用uvm_resource.svh中的get_by_name()函数与lookup_name()函数,lookup_name()函数在特定条件下,会调用spell_check()函数,而"include_coverage not located, did you mean ***"正式spell_check()函数报出来的;
(2) 其实,问题很简单!当调用uvm_resource_db::read_by_name()函数时,uvm会检查name字符串(该处指"include_coveage")是否有在相应的关联数组rtab中记录过,如果没有就会报错;如果在调用uvm_resource_db::read_by_name()前,进行过uvm_resource_db::set()对name字符串进行记录,则不会报该类错误!
(3) 该种情况中,大概率是调用了build_coverage函数,该函数会读取resource,但是没有调用include_coverage()进行resource的set;
2.调用regmodel前门配置寄存器的过程中,发生了hang的情况,hang在uvm_reg_map do_bus_write函数内的bus_req.end_event.wait_on()处;
(1) hang的原因是define了UVM_DISABLE_AUTO_ITEM_RECORDING;
(2) 具体原因为:
(2.1) bus_req.end_event.wait_on()需要在bus_req.end_event的触发下,才能结束; 而bus_req.end_event.trigger则在uvm_transaction的function end_tr内发生;
(2.2) uvm_component的function end_tr内会调用uvm_transaction.end_tr()函数;
(2.3) uvm_sequence_base的task start()以及finish_item()都会调用uvm_component的task end_tr(); 但是uvm_reg_map采用的是uvm_sequence.finish_item(); 所以研究uvm_sequence的finish_item() task; 该task内在调用sequencer.end_tr()之前会先检测sequencer.is_auto_item_recording_enabled()函数的返回值,因为当前场景下定义了UVM_DISABLE_AUTO_ITEM_RECORDING,导致is_auto_item_recording_enabled()的返回值为0,所以hang;
注1:https://bbs.eetop.cn/thread-863236-1-1.html这个帖子遇到了同样的问题;
3.在使用uvm后门函数时,遇到”UVM_ERROR: set:unable to write to hdl path(...) You may not have sufficient PLI/ACC capabilites enabled for that path“;
(1) 出现这个问题是可以简单的理解为VCS缺乏权限造成的,需要在编译选项中加上-debug_all,打开所有权限即可解决这个问题。
(2) 来源:https://bbs.eetop.cn/thread-886462-1-1.html;
4.使用uvm后门方式(本质调用uvm_hdl_deposit())配置寄存器失败?
(1) int uvm_hdl_deposit(string path, uvm_hdl_data_t value): 将path指定的信号,设定为value值;($deposit函数及其与force的区别见vcs user guide-后续的仿真事件会覆盖掉deposit的值,force则不然);
(2) 寄存器模型后门写时,需要注意如果在reset期间后门写一个reg类型变量(尤其是seq内后门写寄存器时,如果seq内寄存器配置的时机不合适),可能不会达到预期结果; 原因就在于deposit和force不同,当信号值受其他因素影响而改变时,会覆盖deposit值; reset期间, reg类型变量可能会在always块内被赋值为0,进而覆盖deposit值;
UVM reg model 常见问题记录的更多相关文章
- 帝国CMS常见问题记录
1.第一次安装,为什么找不到"增加信息"的地方?因为你未增加栏目,请先增加栏目,然后再增加信息(终极栏目下方可增加信息). 2.为什么信息管理的"信息栏目"列表不变?缓存问题,解决方法如下两种:1." ...
- ios学习之常见问题记录
使用Core Data的好处和缺点? 首先这是apple官方极力推荐的,使用它而不是SQLite.好处有大概这么几点:1.减少你model层的代码量,减少50%-70%.无需测试和优化.2.提供了内存 ...
- Win10常见问题记录
基本信息 记录我在使用win10过程中遇到的一些问题 我所使用的两个win10系统 Win10 企业版 1607(家里电脑) Win10 专业版 1806(公司电脑) win10 开启Sets 请问您 ...
- 关于PaddleSharp GPU使用 常见问题记录
在安装NVIDIA驱动过程中遇到一系列问题,记录如下! 附上PaddleSharp地址,大家喜欢可以关注 根据PaddleSharp官方说明需要安装驱动如下 CUDA 和 cuDNN 和 Tensor ...
- VMware下Debian开发环境部署之常见问题记录
本文讲介绍windows作为宿主机,linux虚拟机作为编译环境的开发环境搭建中最常用到的三个问题,详细描述了解决过程. 目录: 1.网路配置: 2.分辨率设置: 3.共享网盘设置: 1.网络设置,V ...
- Mui中常见问题记录
1.mui中A标签如果有这个class="mui-control-item"时,a标签点击链接是没有反应的,那么可以用以下方式实现 : mui.init(); mui('body' ...
- layui常见问题记录
1.用js选中checkbox,没有效果 解决方式:加入 form.render(); 重新渲染表单 $(this).prop('checked', true); //在新版本的jquery中,如果是 ...
- python Scrapy 常见问题记录
ImportError: No module named win32api 处理办法 windows系统上出现这个问题的解决需要安装Py32Win模块,但是直接通过官网链接装exe会出现几百个错误,更 ...
- SpringBoot 常见问题记录
问题一 Error starting ApplicationContext. To display the auto-configuration report re-run your applicat ...
- svn 常见问题记录
One or more files are in a conflicted state 情景:A组员新增文件并提交,B组员更新出现如下图情况. 解决方案:直接拷贝到B组员工作区.
随机推荐
- Camera | 5.Linux v4l2架构(基于rk3568)
上一篇我们讲解了如何编写基于V4L2的应用程序编写,本文主要讲解内核中V4L2架构,以及一些最重要的结构体.注册函数. 厂家在实现自己的摄像头控制器驱动时,总体上都遵循这个架构来实现,但是不同厂家.不 ...
- LeetCode-1705 吃苹果的最大数目
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-number-of-eaten-apples 题目描述 有一棵特殊的苹果树,一连 ...
- SVN提交到服务器退回至指定版本(撤销操作)
一.撤销已提交内容如果不小心把修改错误的文件提交到服务器上去了 可对其进行复原(指定单个文件撤销) 解决方法: 查看修改的日志 查看错误提交的文件 可以查看到这个文件改了什么 复原此版本作出的修改 然 ...
- Tensorflow1.0版本与以前函数不同之处
大部分是Api版本问题: AttributeError: 'module' object has no attribute 'SummaryWriter' tf.train.SummaryWriter ...
- sparksql的join有哪些及实现原理
sparksql的3种join实现 1.Broadcast Join (小表对大表) 在数据库的常见模型中(比如星型模型或者雪花模型),表一般分为两种:事实表和维度表. 维度表一般指固定的.变动较少的 ...
- python读取Excel整列或整行数据
单元格拆分 def get_index(capital): """ 大写字母(Excel列头)转数字 :param capital: 'A' --> 0, 'AA' ...
- 【vite+pinia】
vite 轻量快速热重载,开发环境中不需要打包操作,可以快速冷启动 按需编译,不需要等待整个应用编译完成 pinia 支持vue2和vue3,是vue专属的状态管理库,允许跨组件或者页面 共享状态 与 ...
- 【随手记】Burp Suite 设置HTTP2
Burp Suite 设置HTTP2
- springboot中实现逆向工程
如果这篇文章能给你带来帮助 不胜荣幸,如果有不同的意见也欢迎批评指正,废话不多说直接上代码.(参考文档:https://www.cnblogs.com/kibana/p/8930248.html) 第 ...
- matlab简单区间列频数统计输出
最近的一个作业要有这个输出计算,直接拿来用的函数没怎么找到,合计着就编一个吧,没多少时间仔细编,但能用. 程序支持:Matlab2019b,以往的版本应该也能用. function [d,zb1,ps ...