路科验证(Rocker IC)专注于验证系统思想和前沿工程资讯,拥有一支活跃的技术原创团队,为高校微电子相关专业学生与IC从业人员提供技术食粮。 您可以在手机移动端同步关注微信订阅号“路科验证”。如果您需要联系我们,请发送邮件至 rocker.ic@vip.163.com 或者 bin.rocker.liu@intel.com 。

高度可配置参数化UVM IP验证环境(上)

上一篇 / 下一篇  2017-07-30 11:18:45 / 个人分类:验证前沿资讯

摘要
      参数化的IP是可配置的,这意味着在不同的SOCIP设计可以有不同的设计参数,设计参数可以对应到协议、端口号、端口名称、以及内部逻辑。大量的IP设计参数非常影响验证环境的构建,比如testbench的连接、驱动器、监视器、仿真序列以及功能覆盖率的建立。
本文呈现出了一种使用UVM验证方法学构建基于高可配置性的高级微处理器总线架构(AMBA)的IP验证环境,其中会使用到Synopsys公司的AMBA VIPRuby脚本。该验证环境可以支持通过使用AMBA设计参数进行自动化的验证环境更新,包括IP preprocessIP  testbench以及IP MODULE UVC
  同时本文也会介绍如何去做testbench绑定连接的垂直复用和水平复用,验证IPVIP)、序列(sequence)的复用、UVM环境配置、记分板(socreboard)复用以及覆盖率(coverage)。
  通过项目最终结果表明,当参数化的IP改变它的设计参数并且集成到不同的SoC中时,使用该方法可以减少30%的额外资源需求。
 关键字:可配置化,水平复用,垂直复用,参数化IP,通用验证方法学(UVM
 
1.   简介
参数化的IP设计是加速行业的趋势。同样地,在不同的参数配置、不同的SoC项目中使用使用IP设计也是一个加速的趋势。这些趋势虽然提高了RTL的开发效率,但是也带来了许多新的验证要求。
Janick Bergeron曾写道在数百万门asicfpga的时代,可重用IP、系统级芯片(SoC)设计,验证花费约占70%项目周期[1]。验证通常来说是直接处在项目进度的关键路径上的,对于理解如何让一个验证环境自动地适应不同的IP设计参数,以及当IP设计参数变化后验证人员只需花费最少的努力是至关重要的。
      为了减少验证的时间消耗,验证环境必须做成高度可配置型以及易复用型,本文详细描述了如何开发可配置和可复用型的验证平台组件,以及如何通过设计参数自动化地配置它们。在本文中该方法被称为是一种自适应的IP验证环境。
 
2.   参数化IP验证的挑战
当设计需要在多参数配置的环境中验证时,共享参数就成为一个挑战[2]。手动在验证环境中更新新的设计参数是一件很复杂的工作。其中包括了修改验平台的连接关系;添加或者减少驱动器(driver)、监视器(monitor)、记分板(scoreboard)的数量;以及调整功能覆盖率(function coverage)和断言(assertion)等等。
通常使用的方法是使用红(`ifdef)去区分不同的设计参数。典型地,一个设计拥有一组宏,但是当项目规模不断的增长时,这种方法对于验证平台的调试以及后续的维护就变得非常复杂。
在下一部分我们将会介绍一个自使用的IP验证环境专门去应对这个挑战。

3.   自适应参数化IP验证环境架构
本文中,参数化的IP设计是一种高级的微处理器总线,它连接了一组AXI,AHB,APB   mastersslaves。端口的位宽和端口的协议、端口号、内部寄存器基址以及计数器初始值都可以被设计参数参数化控制。
如图1所示,这个自适应的IP验证环境包括了第三方IP的预处理、IP验证平台以及相对应IP模块的通用验证组件(UVC)。
3.1        IP预处理(IP_PREPROCESS
IP预处理机制需要将所有的IP设计参数都放入一个参数组中,之后这个组将会被预处理,为设计生成一个参数文件去使用,同时一个全局的ruby数组@@FEATURES也会被生成去给验证使用。本文主要关注的是验证这一部分:
 这个全局的Ruby数组@@FEATURES存储着所有的IP设计参数,无论什么时候IP设计参数被改变,这个全局的Ruby数组在VCS仿真运行之前会自动地更新。

3.2 IP 验证平台(IP_TESTBENCH
IP 验证平台是由一个IP模块UVM组件(UVC)、一个Ruby主程序、一个绑定结合了模块的Ruby程序以及一个断言Ruby程序,其中这三个Ruby程序均是在VCS仿真之前执行的,并且自动地扑获IP设计参数。
(A这个IP模块通用验证组件(UVC)的主要功能是通过生成带约束的随机事物去模拟一些行为场景,监视DUT的响应,确保DUT的功能工作正常,检查协议活动的有效性,并且收集覆盖率数据。这些内容将会在在第五部分详细描述。
(B这个Ruby主程序遍历了上面所讲的那个全局的Ruby数组@@FEATURES,并且将里面所有的IP设计参数都转换成一个SystemVerilog 类里面的属性---本文中ip组件的特性是实例化ip的特性,所有SV类中的属性储存着所有IP设计参数。代码如下所示,该UVC通过ip设计特性进行配置操作。
(C绑定Ruby程序的模块绑定其作用是连接DUT模块和验证平台(testbench)。下面的代码部分描述了Synopsys SVT AXI slave接口实例的数目是被IP设计参数”axi slave”所控制的,AXI slave接口信号wdataawaddr的连接使它能够过IP设计参数控制的:
本文使用了uvm_resource_db在一个顶层模块中进行接口实例的绑定:
之后UVM验证环境在动态的驱动器(driver)、监视器(monitor)类中通过使用虚接口(virtual interfaces)去访问静态接口[3],然后验证环境通过读取uvm_resource_db去检测取回绑定的接口实例:
这种接口绑定能够被直接复用到芯片级(chip level),因为IP设计模块名称在IP级验证环境和SoC整个芯片级验证环境中是保持一致的。
(D断言Ruby程序把IP设计参数传递给一种类型与设计模块功能相关的断言。这些断言通过IP设计说明书被创建,并且断言的属性在时许表达式中使用本地变量(local variables),因此它是自适应的。这些断言被放置在一个接口中,然后绑定到DUT模块。对于DUT模块可以被复用到SoC级和不同的项目,因此它们在垂直复用和水平复用都可以适用:
4. 自适应参数化IP模块通用验证组件(UVC)结构
IP_MODULE_UVC是从uvm_env扩展而来,其中包含了AMBA SVT VIPs,预测器(predictors)、计分板(scoreboards)、监视器(monitors)、IP模块通用验证组件配置对象(IP module UVC configuration object)、基本的事物序列(basic sequence)以及全局的虚的事物序列发生器(global virtual sequencer)。图3阐述了IP_MODULE_UVC
3-IP模块UVC结构
这个SystemVerilog特性的类-ip_component_features4.2部分将会被被生成,并且它是被初始化在名为ip_featuresIP模块UVC配置对象中。其中IP_MODULE_UVC中的每一个组件都可以通过IP设计参数进行配置和控制。

4.1 AMBA SVT VIPs
Synopsys AMBA SVT VIP 是一个通用验证组件其中包含了主代理(master agents 和从代理(slave agents)、驱动器(drivers)、生成器(sequencers)、监视器(monitors)、配置对象(configuration objects)、协议检查器(protocol checker)、功能覆盖组(functional covergroups)、约束随机序列(constrained random sequences)以及事务包(transaction packets)。
(A)        实例化AXIAHB以及APB SVT UVC
正如图2描述的那样,为了让环境中的agents自动地得到IP设计参数,本文中在IP_MODULE_UVC所创建的AXIAHB以及APB SVT UVC动态数组如下:
(B)        配置AXIAHB以及APB SVT UVC
AMBA SVT UVC配置类[4]在模块UVC配置对象中实例化并且被连接到同样的位置去捕获IP设计参数,在UVM配置机制中[5],AXI SVT UVC 以及APB SVT UVC 是通过IP设计参数在UVM build phase阶段被配置的。
4.2        自适应预测器以及计分板(self-adapting predictor and scoreboard
预测器从AMBA UVC TLM 端口接受了一个真实的事务包,经过处理之后在通过TML 端口将被预测的事物发送给计分板,让计分板去检查事物的正确性。
正如图3所示,每一个slave都有一个计分板,预测器TML端口编号和计分板编号对于IP设计参数--ip_feature来说是自适应的,它们都是动态数组数据结构。当slave的数目减少时,计分板数目以及TML端口数目会自动减少;当slaves数目增加时,计分板数目以及TMl端口数目会自动地增加。
4.3        自适应基本事物序列(self-adapting basic sequence
这些基本事物序列会提供激励源,本文中所提及的解决方案使用IP设计参数去控制事物序列的产生以及启动。
例如,当设计参数改变了一个AXI slave中的基址(base address)时,AXI地址激励会自动更新的。
4.4        自适应功能覆盖率(self-adapting functional coverage
Synopsys 公司的AMBA SVT VIP 提供内部的AXIAHB以及APB功能覆盖率;对于用户来说仅仅需要在VIP 卑职类中对它们做使能处理即可。
Synopsys 公司的AMBA SVT VIP对于IP设计自身的覆盖率也提供覆盖率回调操作。为了使用IP设计参数去控制功能覆盖率,本文延伸扩展了Synopsys公司的覆盖率回调类,在Synopsys覆盖率回调类中实例化ip_component_features,并且使用IP设计特性去配置覆盖点(cover point),因此覆盖点的自适应如下:
但是要在功能覆盖率中小心使用ip_feature,因为功能覆盖率应当一直来自于设计说明书(design spec),而不是直接来自于IP设计参数代码。
 


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

路科验证

路科验证

路科验证(Rocker IC)专注于验证系统思想和前沿工程资讯,拥有一支活跃的技术原创团队,为高校微电子相关专业学生与IC从业人员提供技术食粮。 您可以在手机移动端同步关注微信订阅号“路科验证”。如果您需要联系我们,请发送邮件至 rocker.ic@vip.163.com 或者 bin.rocker.liu@intel.com 。

日历

« 2017-08-23  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 47439
  • 日志数: 146
  • 建立时间: 2016-06-25
  • 更新时间: 2017-07-30

RSS订阅

Open Toolbar