微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > register model的几种常用操作简单叙述

register model的几种常用操作简单叙述

时间:10-02 整理:3721RD 点击:
最近一直在研究RAL模型的各种使用方法。只是想说,UVM里提供的各种寄存器读写的方法实在是太多太多了,无法一一描述,总结了几个最常用的给大家分享一下
read & write(status, value, UVM_FRONTDOOR):
这个是针对于DUT的寄存器进行读写操作,采用的是前门访问,读写完毕以后,会对register model的desired value & mirrored value进行更新
peek & poke(status, value):
这个也是针对于DUT的寄存器进行读写操作,不同的是,peek & poke有点类似于强盗模式,也就是对DUT的寄存器进行强行读写操作,而不管该寄存器是否能够被读写,而且寄存器不会因为这种强盗模式的读写操作进行相关属性的处理。举个栗子~譬如一个WCRS的寄存器,如果是read & write操作以后,会分别对应其寄存器属性进行set & clear操作;但是,如果是peek & poke读写操作以后,其寄存器会被读取当前值 & 写入某一值,但是,不会触发其属性动作,也就是set & clear操作;
update(status, UVM_FRONTDOOR):
这个是针对DUT寄存器的操作。首先是对寄存器模型的desired value & mirrored value进行比较,如果不一致,将把desired value写入mirrored value中,并且,以UVM_FRONTDOOR的模式写入DUT的寄存器中;
mirror(status, UVM_NO_CHECK, UVM_FRONTDOOR):
这个是针对寄存器模型的操作。首先是对DUT的寄存器值 & mirrored value 进行比较,如果不一致,也不会进行error提示,以为设置了UVM_NO_CHECK;然后,把DUT寄存器的值以UVM_FRONTDORR的模式写入寄存器模型中的desired value & mirrored value。
才疏学浅,有错的话希望指出,谢谢~

感觉跟vmm的很像

不管是UVM 还是 VMM的 RAL,效率都太低,特别是规模比较大的片子, 一般来说都有上万的寄存器;
用C++来做shadow memory比较现实。

请问该怎么做shadow memory呢,UVM有办法实现么?

能详细说一下C++的方法么?

关键不是C++,而是有一个固定的寄存器描述文件和一个生成C++的脚本工具;
比如ralgen可以根据XLM格式的寄存器描述文件来生成vmm ral,这是类似的。

重要的不是C++,而是利用统一的寄存器描述文件如XML来生成C++文件以及.V和.VH文件,
用C++实现的shadow本身没什么特别的,无非就是一个大的case语句,以及一些用map、
vector等容器描述的registers

无法理解你所说的vmm对寄存器测试效率低的问题。

既然和ralgen类似,那效率高在什么地方呢?都要调用API啊

跟ralgen比为什么效率高很多呢?



不就是通过vmanger生成的吗 寄存器模型文件?

正在学习中

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top