EETOP 创芯网论坛

找回密码

  登录   注册  

搜帖子
汽车电子资料大全(下载奖励300信元)
查看: 8868|回复: 62

[讨论] 论uvm寄存器模型的重要性。

[复制链接]
发表于 2016-10-13 20:16:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
以前在两个公司都有使用uvm进行过验证,但是基本上都没有使uvm的寄存器模型。可能是验证负责人觉得作用不大,使用起来太麻烦,不想去研究吧。我想它即然存在而且那么多人推荐,肯定有他的道理,所以在项目空闲时就研究了下,并且花时间写了个从excel表格生成寄存器模型的脚本,自己也在自己的笔记本上搭了个平台去做一些简单实验。 

 发现寄存器模型确实能带来不少好处,个人总结主要有以下几点,各位大侠可以补充:  1,首先在寄存器模型自带的各种访问函数,能让验证开发人员在UVM环境内更方便的获得DUT内各寄存器的值或改写寄存器
  2,不需要在UVM环境内显式的使用绝对路径的方式来访问寄存器,使得验证环境的可移值性更强;

  3,方便了DUT配置sequence的编写,只需要调用寄存器的write()函数就行,另外寄存器模型自带的一些check sequence也能减少验证开发人员的一些工作;
  4,寄存器的mirror()函数能check寄存器预期值和实际值是否一致,所以还带有一定的check功能。

发表于 2016-10-14 07:44:07 | 显示全部楼层
回复 1# chensong0007


    请教,如果寄存器
某地址可能不带参数,也可能带一字节或多字节参数,这样的情况用uvm寄存器模型怎么建模?
不带参数的寄存器就是命令式的,触发式的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-14 08:53:14 | 显示全部楼层
本帖最后由 chensong0007 于 2016-10-18 10:20 编辑

回复 2# chenfengrugao

抱歉,那个参数我没太搞懂什么意思。你那个不带参数是不是指DUT内部并没有存在对应的寄存器,只要有访问该寄存器的行为,就触发相应的动作这个意思是吧。我觉得没有对应的物理存在的寄存器,那就可以不用寄存器模型。这只是我个人的看法,因为我没遇到过这种行为,所以我的看法比较片面。希望有相关经验的人给个比较贴切的解释。(红色部分说法欠妥,其实还是可以用寄存器模型的,只是没有物理存在的寄存器,那么只用前门访问就行,只是有些功能放弃不用)
回复 支持 反对

使用道具 举报

发表于 2016-10-14 10:37:35 | 显示全部楼层
回复 3# chensong0007

对,不带参数就是你理解的意思。

一般一个地址对应一字节数据,我遇到的情况会出现数据长度不固定。比如
Addr     data
01        0x56
02        0x1234
03        0x12345678
04        0x123456789a
05        0x123456789abcdef0   
就是说寄存器里存放的位宽不一定,多的可能有16*8bit

这种怎么建模呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-14 10:54:28 | 显示全部楼层
回复 4# chenfengrugao
你这是不是每一个地址都是16*8bit宽,只是有些位不用。我建议你也可以抽象成这样的格式,并且增加一个有效byte来指定那几byte有效。
回复 支持 反对

使用道具 举报

发表于 2016-10-14 11:13:20 | 显示全部楼层
回复 5# chensong0007

按最宽的来也行。只是跟实际的不太一样。

其实寄存器样子看起来是这样的:
Addr Date[7:0]
0x01D0[7:0]
0x02D1[7:0]
D2[7:0]
0x03D3[7:0]
D4[7:0]
D5[7:0]
0x04D6[7:0]
0x05D7[7:0]
D8[7:0]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-14 11:18:54 | 显示全部楼层
那实际上,总线上是怎么访问的呢,比如总线位宽,是一次写入,还是分多次写入。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-14 16:00:54 | 显示全部楼层
回复 6# chenfengrugao

我想知道寄存器的写总线是怎么样对齐的,看看定义等宽的寄存器,adapter好不好实现。
回复 支持 反对

使用道具 举报

发表于 2016-10-14 22:03:38 | 显示全部楼层
回复 6# chenfengrugao


    能大概介绍一下寄存器位宽设置成这样有什么好处吗?
RTL内部要实现这样的寄存器配置应该要比规范的2byte要麻烦啊
    之前做过一下RAL的寄存器,你这种总线模型应该是不能实现的,每个寄存器有不同的byte数目,UVM内部内有存放这样数据的地方
回复 支持 反对

使用道具 举报

发表于 2016-10-16 14:19:54 | 显示全部楼层
本帖最后由 chenfengrugao 于 2016-10-16 14:26 编辑

回复 7# chensong0007


    多字节是分多个时钟写进去的。
有一个信号dc(data or command)。当dc低电平时,时钟上升沿传命令,也就是就是寄存器的地址。当dc为高电平时,时钟上升沿传数据(就是寄存器的内容)。地址和数据共用总线,总线是8比特的。
一个地址对应多个字节参数时,就是dc高电平保持多个时钟宽度,分多个时钟写进寄存器
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

小黑屋| 关于我们| 联系我们| 在线咨询 |  EETOP 创芯网 ( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2020-2-19 04:10 , Processed in 0.074675 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表