[验证百花筒] 聊聊模块级寄存器模型如何复用到系统级
1. 引言
这篇文章主要应某位粉丝的要求写的,主要从应用角度讲解如何把模块级的寄存器模型复用到系统级,就不去细究UVM源码的实现原理了,所以就没有放在[UVM源代码分析]的专栏里。
寄存器模型有个很基础的概念,就是寄存器模型本身是与接口协议无关的,它只跟spec定义的寄存器地址位宽、读写属性、默认值相关,所以同样一套寄存器模型可以用在多种接口实现上,接口的类型主要体现在uvm_reg_adapter的实现上。所以我们在做SOC开发时,模块级的寄存器实现可能是通过apb或者mdio等串口进行访问的,但是到了系统级的访问接口有可能就换成了AHB或者AXI等高速接口,但是对于寄存器模型本身而言不需要做任何的修改可以直接复用,只需要把对应的adapter换掉即可。
本文以ahb2apb_adapter的环境为例,介绍下sub_system的环境中,如何将模块级的两个子环境spi和uart的模块级寄存器模型复用到sub_system中。
2. 验证环境背景介绍
本sub_system验证环境分别包含了3个模块级的验证环境,分别spi、uart和ahb2apb_bridge,其中spi和uart定义了自己模块的寄存器,需要使用寄存器模型,ahp2apb_bridge模块只做接口ahb到apb的转换,没有定义寄存器,不需要寄存器模型。
2.1 模块级验证环境
图1-图3分别为三个模块级验证环境的框图。
图1 spi验证环境

图2 uart验证环境

本文介绍了如何在UVM环境下,将模块级的寄存器模型复用到系统级,通过改变adapter、调整地址映射和顶层寄存器模型的设计,实现在不同接口间的无缝切换,同时强调了package复用和良好编程习惯的重要性。
最低0.47元/天 解锁文章
3146

被折叠的 条评论
为什么被折叠?



