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

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

日志

从VHDL到UVM验证平台转变的优点评估

已有 3625 次阅读| 2016-7-30 22:14 |个人分类:验证前沿资讯

由于功能变得难以理解,通过肉眼检查波形来验证FPGA设计变得越来越困难。作为一个顶级油田服务公司,Baker Hughes主要设计小规模FPGA设计,通常少于10万门。但是在尺寸大小和复杂程度上一直在增加。同时,这些FPGA设计是需要很长集成时间的更复杂系统的一部分。


由于上述原因,我们的FPGA设计和验证需要找到不依赖于肉眼检查,缩短集成测试时间,标准化验证平台,使我们功能验证更稳健的新方法。

VHDL是我们RTL设计和验证平台的语言,但是验证平台没有标准化或鲁棒性,不能被重复使用。UVM提供验证平台标准化,这就是我们研究采用基于UVM流程的原因。


为了验证从VHDL到UVM 验证平台的转变,我们做了一个评估来比较三种不同验证平台的优缺点,即简单的VHDL验证平台,高级的VHDL 验证平台和UVM 验证平台。评价它们的标准是代码覆盖率,验证平台组件重复使用率和产生不同激励的难易度。


先前的设计和验证流程

我们的大部分设计是在实验室集成测试时调试的。设计和验证流程是开始于RTL设计和VHDL建立的验证平台。我们给DUT(design under test)提供简单的激励,然后通过仿真器肉眼观察波形。当对肉眼观察结果有足够信心时,我们会进实验室,下载代码到FPGA并集成到整个通常包含数个PCB的设计中。如果发现FPGA在集成过程中不能正常工作,我们会修改验证平台然后再次肉眼检查波形。我们重复这一循环直到没有新的bug发现,通常需要花费数周或数月时间。


我们的大部分设计都用于汽油或天然气提取工具,需要在高温、振动环境下使用。所以当我们挑选一个组件,比于FPGA,在工作环境下我们使它通过一系列合格检验程序。一旦FPGA通过检验,我们做板级的验证,然后做系统级验证直到最终的工具可以被使用。


特别需要注意的是FPGA的失败都是在系统级测试中发现的。所以在检验FGPA的同时,会有特别多的组件需要被检验。整个系统级别的验证需要一年到两年时间。如果我们能大程度的减少验证时间,增加FPGA调试的彻底度,这会积极影响我们整体产品开发计划


设计和验证平台的评估

对于这个评估,我们使用了小型的FPGA设计,有三个接口: GPIO,ADC和UART接口。 GPIO和ADC是DUT的输入,UART是输出。验证平台从GPIO和ADC口发激励,从UART口读取数据。

    图1:设计模块的评估。

 

首先建立简单的VHDL验证平台,然后过渡到高级的VHDL验证平台,最终过渡到UVM验证平台。


通过这一个过渡过程,三个验证平台在模型方面保持一致。尽管代码覆盖率是评估指标之一,但是并没有采用具体的改变来提高覆盖率,因为这样会影响三种验证平台比较的公正性。


简单的VHDL验证平台使用RTL-style 过程。高级的VHDL验证平台GPIO,ADC,UART transcation采用record,激励和检查采用procedure。 UVM验证平台中agent 被用于GPIO,ADC和UART接口。我们搭建的UVM环境的一个关键方面是用于产生激励的sequence是隔离独立的。


验证平台1:简单VHDL验证平台

在这个验证平台中,DUT, stimulus和check 是通过RTL-style 过程建模的。Check 通常是在实验室调试之后建模的。


我们建立一组简单的测试然后肉眼检查结果。在我们肉眼检测结果之后会插入几个断言,但是一个完整的验证平台需要长时间的实验室测试才能搭建起来。

对于验证DUT来说这是一个高互动率的过程。每当在集成测试时发现问题,都需要修改验证平台,重现引起这个错误的bug,修复设计,然后重回实验室测试它。


简单VHDL验证平台的结构图显示了三个接口。每个接口都有很多个process : GPIO有4个process,ADC 有3个process,UART有2个process。Check分布在各处。这反映了缺乏组织性。所有的process和check都是在每次集成测试发现bug之后添加的,使得甚至对于创建验证平台的人来说都很难知道将会遵循什么。

    图2:简单VHDL验证平台结构图。

 

 

从上述评估中我们认识到需要大量时间来建立简单的VHDL验证平台,而且这一平台严重缺乏组织性,极难维护。同时,我们的关注点在产生激励,而不是checks。但我们需要的是对两者都关注。

 

验证平台2:高级VHDL验证平台

我们不想忽略搭建高级VHDL验证平台直接从简单的VHDL验证平台跳到UVM验证平台。 大家都知道UVM使用 transaction -level建模,所以我们试着使用record和procedure来建立高级VHDL验证平台。每个DUT接口都连接给record,类似于SystemVerilog的接口。然后增加激励或记录record的procedure。procedure被封装在只调用这个procedure的process中。自检验部分(在UVM中叫做scoreboard)在不同的checker procedure中建模。有三个process来产生激励,记录总线活动,另一个process验证结果。

    图3: 高级VHDL验证平台结构图。

 

因为只有四个process,高级VHDL验证平台比简单VHDL验证平台的process少。每个stimulus process会把它所产生的送给check process。这将会检查UART packet是否与GPIO或ADC process 激励产生一致,并检查是否与scoreboard一致。所有check 都在一个process中,使得这一验证平台更具有组织性。更具组织性的结构使得维护更简单,且更容易理解和读懂代码。


研究发现这一验证平台具有更好的代码组织性,但是对于不同的test sequences要改变激励依然很困难,需要重写procedure,并对driver做巨大改动procedure和record可以放在package中重复使用,但是没有标准化方法来遵循。这个验证平台依然庞大


验证平台3:UVM

UVM验证平台使用sisytem verilog 语言和UVM库搭建。DUT的接口被分为几个不同的类,例如driver,monitor, agent。每个接口会创建agent,agent是激励的容器,也是接口的验证组件。因此,agent对于代码的重复使用很重要。


验证平台环境包含所有的agents和scoreboard。Scoreboard是用来自检验结果的。一个顶层的测试类包含测试环境和测试sequence(见图7)。

    图7:UVM验证平台

上图所示,DUT在中心,有三个接口。不同的是,agent是连接在接口上。GPIO和ADC 每个agent 都有driver 和monitor。 UART agent只有一个monitor是因为DUT只在UART接口上传输。GPIO在驱动DUT的同时,也通过monitor观察DUT。Monitor 捕捉并发送信息给scoreboard.


在UVM验证平台中,接口的信息在系统级别是通过transaction传递的。这些transaction由test sequence产生。 Test sequence 由ADC和GPIO的不同的测试激励产生。Transaction产生并传递给agent,再传递给DUT。一组相同的transaction会传递给scoreboard. Scoreboard总会自动检查UART packet是否 与ADC和GPIO的transaction一致。


更关键的是,test sequence是和agent与验证平台环境隔离的。这点非常重要因为当需要改变test sequence时,不需要改变agent driver。


与VHDL的验证平台比较,只有当你在实验室发现bug时,才需要对drivers, procedures和process做大量改动。


这是UVM验证平台一个巨大的优势。因为在UVM中,test sequence是隔离独立的,可以很快的创建新的测试。在这种情况下,只通过改变测试sequence,代码覆盖率就可以从79%提高到85%。在UVM环境下改变测试sequence,重跑代码覆盖率花费时间少于一天。同比于VHDL验证平台需要花费数周来达到相同的改善。


我们可以从中学到,UVM中test sequence和验证平台是隔离独立的,使得我们可以更好的控制激励而不需要重新设计agent. 改变测试sequence可以简单高效提高代码覆盖率。UVM支持工业标准,这会促进验证平台标准化。对于VHDL来说没有验证平台工业标准。此外,UVM通过OOP(面向对象编程)的特点(例如继承)以及使用覆盖组件提高了重复使用率。这些都是UVM的额外好处。


总结和结果

三种不同验证平台的比较可以总结为以下几点:

  • VHDL不太支持约束随机激励, 而System Verilog则支持,因此在UVM验证平台中ADC和GPIO可以带约束随机。

  • 非常少的简单VHDL验证平台可以被重用。通过创建package,高级VHDL验证平台可以被重用。但是因为没有标准的方法,连接到一个新的验证平台并不直观。Package是结构性的,它只组织代码。此外,数据定义和函数定义(package 主体)被分离开。OOP会将这两者结合起来以便更好维护。UVM 验证平台因为OOP特点会更从容处理这些,使得验证组件和结构具有很高重用率。

  • 两个VHDL验证平台迫使工程师侧重于创建激励而不是check。但我们所需要的是对两者都重视,这点在UVM中实现了

  • 简单VHDL验证平台的代码覆盖率是78%, 高级VHDL验证平台是74%。回想起从简单到高级VHDL的转变不是为了提高代码覆盖率本身,其目的是使用先进的结构(即record和procedure)并更具组织性。当使用有次序的test sequence时,UVM的代码覆盖率是79%,而当使用随机化的test sequence时,代码覆盖率提高到85%。代码覆盖率的改善难易程度在这里很重要。

  • UVM增加了功能验证的鲁棒性,允许创建灵活的,适应性强的,可扩展性的验证平台。它提供了量化的,可测量的进展,同时通过改变test sequence可以方便增加代码覆盖率

  • UVM会降低工具集成时间,从而允许我们达到减少实验室集成周期的终极目标。

  • 最后,UVM重点不是肉眼检查波形,这点非常重要,因为FPGA变得越来越大,对于肉眼检查越来越困难。



因此,我们最终将使用UVM来验证FPGA

    图8:验证平台的比较



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

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


Advantages of Moving from a VHDL to a UVM Testbench

https://verificationacademy.com/verification-horizons/march-2016-volume-12-issue-1/An-Evaluation-of-the-Advantages-of-Moving-from-a-VHDL-to-a-UVM-Testbench


点赞

评论 (0 个评论)

facelist

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

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

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 253

    粉丝
  • 25

    好友
  • 33

    获赞
  • 45

    评论
  • 访问数
关闭

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

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

GMT+8, 2024-3-28 17:19 , Processed in 0.016277 second(s), 11 queries , Gzip On, Redis On.

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