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示例
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .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吗?