5. 复用自适应参数化IP验证环境
5.1 垂直复用(Veritical reuse)
垂直复用意味着复用是从IP级到SoC级。
(A) AMBA SVT VIP 复用
AMBA SVT VIP是由驱动器代理(driver agent)、监视器(monitor)以及协议检查器(protocol checker)组成;在IP级,所有以上三部分都是工作在active模式下的。当AMBA SVT VIP 被复用到SoC级,驱动器代理可以被配置成passive模式去工作,意味着它就不能产生master 请求或者slave 响应激励去驱动RTL信号;监视器和协议检查器工作在active模式。
(B) UVM事物序列复用(UVM sequence reuse)
至于事物序列,一般的事物序列是很难拿来复用的,因为它粘黏着接口协议;寄存器模型序列可以直接从IP级复用到SoC级,其中关键的一点是对于不同的协议去实现相应的寄存器适配器(register adapters)。
(C) 连接性复用(connection reuse)
自适应参数化IP验证环境在一下三个层面来处理连接性。
第一,如何把静态的RTL端口信号和动态的AMBA VIP连接起来?我们在静态的RTL世界里实例化真正的AMBA接口,在AMBA VIP中声明虚的AMBA接口,并且使用全局的uvm_resource_db去连接真实的AMBA 接口到虚的AMBA接口。如所示:
第二,如何直接从IP级到SoC级复用连接性?我们绑定了真实的接口实例到RTL模块,当IP RTL 被复用到SoC级时,模块通常在IP级和SoC级保持相同,因此连接性绑定可以直接从IP级到SoC级被复用;而且绑定方法从RTL代码分割了验证环境代码,我们可以得到干净整洁的RTL代码去用任何的EDA工具去检查。
第三,如何让连接性自适应端口信号的变化?正如第三部分的描述,当设计参数变化时,端口信号可以被改变过来。
5.2 水平复用(Horizontal reuse)
水平复用意味着复用是从一个项目到另一个项目。
整个IP模块通用验证组件可以直接被复用到不同的项目,因为对于IP设计参数来说它是自适应的。
然而,在一个新的项目中,用户可以扩展AMBA SVT VIP 内建的包,修改一些内容去适应新的项目需求。并且使用UVM工厂机制中的应用编程接口(API)set_type_override_by_type()或者set_inst_override_by_type()在仿真时候去替换旧的包。
6. 结果(result)
本文描述了一个使用AMBA VIP 的高可配置UVM验证环境。用这种方法,slaves个数、存储器寻址范围、地址和数据总线宽度以及端口名称都是IP设计参数,这些都可以在不同的项目中被修改。整个UVM验证环境对于那些IP设计参数的变化来说是自适应的。
因此,当IP设计参数改变时,仅仅只需要最小的精力投入就可以更新整个验证环境。模块通用验证组件(module UVC)通过新的参数直接自动化地创建正确合适的组件。预测器对于新的参数也是适应它自身的功能。测试平台的连接性自动化地增加或者删除端口。功能覆盖率和断言相对于新的IP设计参数来说也是自适应的。
整体来说整个UVM验证环境都是支持垂直复用和水平复用。
7. 结论(conclusions)
该方法改善了参数化IP验证效率,并且在UVM组件创建、UVM配置性、激烈序列约束、计分板、预测器、断言、功能覆盖组以及测试平台连接的灵活性。通过项目实施显示,当IP设计参数改变时,该方法减少了30%的额外资源需求。
8. 参考文献