reg model使用篇-register seq(包含uvm内建register sequences)

资料来源:

(1) 《uvm cookbook》

1. register seq

1.1 register check seq

(1) reset test:根据get_reset方法获取reset值,并调用register.read方法获取read value,比较reset值和read value;

(2) write/read test: 随机write data,并调用register.write进行register写操作; 然后打乱register句柄队列,使用get方法获取register的镜像值,接着调用register.read,对比读操作返回值与镜像值;

(3) peek/poke test:与write/read test类似,不过使用的是backdoor access;

1.2 register seq using mirror

(1) mirror操作会引起读访问,会对register model中的镜像值进行更新,但不会返回read data;

(2) mirror操作可以用于register model与硬件状态的再同步;

(3) mirror操作可以和predict操作一起执行,用于检测register的读返回值与期望值是否匹配;只需在调用mirror操作时,将check field设置为UVM_CHECK; 如果check_field是默认值,mirror操作仅仅发起bus read cycle,并且导致external predictor更新mirror值,而不会进行检测;

1.3 built-in register seq

(1) 可以通过resource_db机制进行设置,当执行built-in register seq时,跳过对某个register的测试;

注1:由于uvm_reg_block和uvm_reg均是uvm_object类,而不是uvm_component类,所以可以使用uvm_resource_db来进行设置;

2. 寄存器测试seq示例

2.1 register check seq示例

(1) spi_bus_base_seq中的get_full_name属于uvm_object内的get_full_name,uvm_sequence_item中进行了get_full_name的override;

 

 

 

2.2 register seq using mirror示例

2.3 built-in register seq示例

 

posted on   知北游。。  阅读(884)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示