路科验证的个人空间 https://blog.eetop.cn/1561828 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

参数化IP验证的高度可配置UVM环境

已有 4112 次阅读| 2016-6-25 23:20 |个人分类:验证前沿资讯

参数化的IP设计是一种不断加速的工业趋势,同样的,在有着不同设计参数的SoC工程中使用同一个IP设计也是一种趋势。这些趋势大大推动了IC设计的发展。但与此同时,也需要一种验证方法来适应这种趋势。


一个参数化的IP就是指IP的参数是可以自由配置的,这就意味着在不同的SoC上,IP设计有着不同的参数。设计的参数可以是端口协议、端口数目、端口名和内部逻辑。不同的IP参数会影响验证环境的基础设施,这些基础设施包括验证平台(test bench)的连接、激励器(driver)、 监视器(monitor)、激励序列(stimulus sequence)和功能覆盖率(function coverage)。当去验证用不同参数配置的设计,是一项重要挑战。根据新的设计参数,去手动更新验证环境,是一项复杂的工作。这包括了改变test bench的连接、增加或减少driver、monitor和scoreboard的数目、更新配置对象、重写stimulus sequence、以及调整功能覆盖率和断言。这些都是非常麻烦的事情。


 一个普遍使用的方法是使用宏去区分不同的设计参数。这样我们的项目将会有一些宏定义,但是这样当工程多起来的时候,test bench的debug和维护就变得相当复杂。


所了减以为少验证花费的力气,验证的环境一定是高可配置的,而且要易被复用。所以我们要推荐一篇文章——Highly Configurable UVM Environment for Parameterized IP Verification。这篇文章介绍一种参数化IP验证的高度可配置UVM环境。


在这篇文章里,用于举例的参数化的IP设计是一个AMBA(advanced microcontroller bus architecture)。这个微控制器总线结构连接了一组AXI、AHB、APB的主从结构。它的端口位宽、端口协议、端口数目、内部寄存器基址、计数器初值都会随设计参数不同而改变。


自适应的参数化IP验证环境结构


IP_PREPROCESS          

这里的IP_PREPROCESS把所有的IP设计参数放到一个组里,在这些组经过预处理之后,一个可用于设计方法的参数化文件就生成了,同时一个可用于验证方法的全局的Ruby数组@@FEATURES也生成了。全局的Ruby数组@@FEATURES 储存了所有的IP设计参数,一旦IP参数改变,全局的Ruby序列也在VCS仿真器运行之前自动更新。


IP_TEST_BENCH         

IP_TEST_BENCH包括了一个IP模块UVC (UVM Component) 、一个feature Ruby程序、一个绑定Ruby程序的模块和一个断言Ruby程序。这三个Ruby程序在VCS仿真之前执行,自动捕捉IP设计参数。

  1. IP模块UVC主要的功能是模拟行为,具体是通过产生随机约束的traffic  、监视DUT的响应、确保DUT的功能正确工作、检查协议的合法性,以及收集覆盖率这些行动。

  2. feature Ruby程序把IP设计参数转换成System Verilog特征类的一些属性,这些属性储存了所有的IP设计参数。

  3. Ruby绑定程序用于连接DUT和test bench。

  4. 断言Ruby程序把IP设计参数传递给一个与IP设计模块功能相关的类型断言。这些断言是依据IP设计要求产生的,而且断言属性使用了其时序表达式里的本地变量,所以也是自适应的。


IP_MODULE_UVC

IP_MODULE_UVC是从包含了AMBA SVT VIP (verification IP) 、预测器(predictor)、记分板(scoreboard)、监测器(monitor)、IP模块UVC配置对象、基础的测试序列(basic sequence)和全局的虚拟序列发生器 (global virtual sequencer ) 的UVM环境延伸出来的。

  1. AMBA SVT VIPs。Synopsys AMBA SVT VIPs 是一个包含了主从代理(master and slave agents)、驱动器(driver)、序列发生器(sequencers)、协议检查器(protocol checker)、功能覆盖组 (functional covergroups)、随机约束序列(constrained random sequences)和事务包(transaction packets)的UVC。

  2. 自适应预测器(predictor) 与计分板(scoreboard)。predictor从AMBA UVC TLM端口获取事务包,把预测的事务通过TLM端口输出。由计分板来判断事物的正确性。如下图所示,每一个slave 都有一个计分板,predictor TLM端口数目和计分板端口数目都是随着IP设计参数变化而变化的,他们是动态队列的数据结构。当设备的数目减小时,计分板的数目和TLM端口的数目也自动减少;当设备数目增多,计分板的数目和TLM端口数目自动增多。

  3. 自适应的basic sequence:basic sequence 用于提供激励。可以试验IP设计参数来控制sequence的产生和开启。

  4. 自适应的功能覆盖率。Synopsys AMBA SVT VIP提供了内部的AXI、AHB和APB功能覆盖率,用户直接在VIP的架构类上使用就可以。Synopsys AMBA SVT VIP也为IP设计自覆盖(IP design self coverage)提供了覆盖率回调函数。可以用IP设计参数控制功能覆盖率。

自适应的参数化IP验证环境的复用


垂直复用

垂直复用是指从IP层次到SoC层次的复用。

  1. AMBA SVT VIP复用。 AMBA SVT VIP 由驱动器代理(driver agent)、监视器和协议检查器组成。在IP层次上,这三个部分都是主动工作的。但是当AMBA SVT VIP被复用在SoC层次上时,driver agent被配置为被动方式工作,不再产生master请求和slave回应激励去驱动RTL信号。而监视器和协议检查器仍然是主动工作的。

  2. UVM sequence复用。对于sequence而言,普通的sequence是难以复用的,因为它们是和接口协议紧密相关的。而寄存器模型的sequence可以直接从IP层次到SoC层次复用,关键点在于为不同的协议实现注册适配器。

  3. 连接的复用。自适用的参数化IP验证环境主要从以下3个方面解决连接的复用问题。

    • 把静态的RTL端口信号连接到动态的AMBA VIP接口:   可以在静态的RTL中实例化真实的AMBA接口,在AMBA VIP中声明虚拟的AMBA接口,如下所示,使用全局的 uvm_resource_db 连接真实的AMBA接口和虚拟的AMBA接口。

    • 直接复用从IP层次到SoC层次的连接:   我们将真实的接口实例绑定到RTL模块,在SoC层次中复用IP RTL时,SoC层次和IP层次的RTL模块是相同的,所以从IP层次到SoC层次的连接可以被直接复用。

    • 信号变化的情况下实现连接的自适应:  使用本文提出的方法,端口信号会随着设计参数的变化而变化。

水平复用

水平是指从一个工程项目到另一个工程项目的复用。

因为整个IP模块UVC都可以随参数IP设计参数自动适应调整,所以IP模块UVC可以直接被不同的项目复用。

 

所以,这种高可配置UVM环境是很有价值的。虽然在不同的工程项目里像设备的数目、内存、地址、数据总线以及端口名这些参数都是改变的,但是UVM验证环境确实对这些变化都是自适应的。Sequences 和 drivers 会自动给出适当的激励;UVC会根据设计新的设计参数自动创建正确的组件;predictor会根据新的设计参数调整功能;test bench 的连接也会自动增加或减少端口;功能覆盖率和断言也是会根据新的设计参数自动更新的。这样只需要极少的精力去更新验证环境,并且这种验证环境还是可垂直和水平复用的


您可以在手机移动端同步关注订阅号“路科验证”。

如需转载请联系路科验证,并注明出处“路科验证”。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 253

    粉丝
  • 25

    好友
  • 33

    获赞
  • 45

    评论
  • 访问数
关闭

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

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

GMT+8, 2024-4-27 14:34 , Processed in 0.017775 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部