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组员工作区.
随机推荐
- 【C++复习】第六章 数组、指针、字符串
1.数组 1.1 基本数组 数组声明int a[10]; 声明时方括号内是元素个数.下标从0开始. 第一个元素是a[0],最后一个元素是a[9] a[n]表示的是第n+1个元素 二维数组int b[3 ...
- Hadoop YARN与MapReduce
YARN架构 ResourceManager 负责整体资源的管理 (Scheduler and ApplicationsManager)NodeManager 向ResourceMa ...
- JS的有关递归的知识点(数据无限级联的实现)
所用测试数据: 1 const data = [ 2 { 3 "area_id": 5, 4 "name": "广东省", 5 " ...
- 恢复Gitee删除的文件
在Gitee仓库中删除了某文件,发现idea里面的该文件也没有了,恢复方法: 1.在diea中找到被删掉文件所在的文件夹右键. 2.点击Local History再点击Show History. 3. ...
- SAP MD04屏幕显示增强
需求 在看物料MRP结果的时候,业务人员想要看到工单批次,工单批次是我们这边工单下达后传输到其他系统,然后由其他系统回传回来的. 开发步骤 主要使用二代增强出口:M61X0002 创建增强项目 事务码 ...
- element+Vue el-form组件进行查询时,当输入框仅有一项时,回车自动提交表单,浏览器会刷新页面
vue的写法就是el-form上添加阻止默认事件 @submit.native.prevent <el-form ref="queryForm" label-width=&q ...
- ibatis批量数据入库sql
ibaits 批量数据入库sql <insert id="waiter.insertBatch" parameterClass="java.util.List&qu ...
- Lua中创建新的文件夹
如下: os.execute('mkdir 文件夹名称')
- 防止IO持续信号
List<int> list = new List<int>() { 1,11, 2,3, 4,5, 6,22, 7, 8,9,10 };//产品:双数为ng 单数为ok bo ...
- rabbitmq的Exchange类型案例
一.direct(将消息转发到指定Routing key的Queue上,Routing key的解析规则为精确匹配) publish代码 consumer代码,绑定了另一个队列 优先启动publish ...