物联传媒 旗下网站
登录 注册
RFID世界网 >  技术文章  >  其他  >  正文

基于覆盖率驱动的高频RFID芯片验证平台设计

作者:王国军,景为平
来源:电子技术应用
日期:2016-10-26 14:15:27
摘要:提出了一种采用覆盖率驱动激励产生算法的验证技术,设计了一套完整的验证平台,成功地验证了一款高频RFID(射频识别技术)芯片。该技术的核心思想是在验证过程中,通过分析功能覆盖率和代码覆盖率,得出未覆盖的边界条件,进而修改激励产生的约束条件,产生测试激励,验证边界条件,以有效地提高验证覆盖率。现该验证平台所验证的芯片已经成功流片,且测试性能优异。

  0 引言

  随着芯片设计复杂度的不断提升,验证工作占据了越来越多的开发时间。为了能够尽快将产品推向市场,有效的验证方法就显得越来越重要。所谓有效的验证方法,即能够在较短的时间内,利用精确的测试激励,尽可能验证芯片的正确性和发现设计中深层次的设计缺陷。所以如何产生精确高效的测试激励就成为了验证工作当中的关键挑战[1]。

  1 覆盖率驱动激励产生算法的验证技术

  根据测试激励产生的方法,可以将测试激励分为定向测试激励和随机测试激励。定向测试激励是验证工程师针对被测设计(Design Under Test,DUT)期望验证的功能点进行人工编写的激励,这种方法直接、准确,但是对于较大规模的设计来说,工程师很难发现所有的边界条件。而随机测试激励可以容易地产生大量的测试激励,且可以击中一些工程师很难发现的边界条件,但是随机测试激励容易产生测试激励冗余,这造成了大量的验证资源浪费[2]。随着验证技术的发展,受约束的随机激励越来越受验证工程师亲睐。目前,各大EDA公司的仿真器基本均支持约束求解器。验证工程师根据需求编写约束,约束求解器将会对验证工程师所做的约束进行求解,然后产生满足约束的随机激励。

  本文使用VMM(Verification Methodology Manual)验证方法学,设计了一个含激励产生算法的验证平台。该激励产生算法以覆盖率为导向,在验证过程中,通过对覆盖率的分析,发现未验证的边界条件,及时调整激励的产生,以获得更为满意的覆盖率。

  2 DUT说明

  该验证平台的DUT为一款满足国际标准ISO/IEC-15693协议的高频RFID芯片,该芯片包含模拟电路、存储器、数字电路3个部分。其中,模拟电路负责射频信号的解调、调制以及提供芯片工作的时钟和电源。存储器负责存储芯片信息。数字电路负责芯片的编解码、逻辑控制以及与存储器交互数据。该验证平台将主要对数字电路部分的功能进行仿真验证。

  支持ISO/IEC-15693协议的阅读器(Vicinity Coupling Device,VCD)和标签芯片(Vicinity Card,VICC)的通信采用命令帧交互。表1为VCD到VICC的请求命令帧格式,帧格式包括帧头SOF(Start of Frame),请求标志(Flag),命令码(Command),若干参数(Parameter)与数据(Data),CRC(Cyclic Redundancy Check)校验,最后是帧尾EOF(End of Frame)。根据每条命令的不同,帧格式中的参数和数据也不同。VICC到VCD的响应帧格式比请求帧格式中少了命令码,其余部分格式相同[3]。

基于覆盖率驱动的高频RFID芯片验证平台设计

  3 验证平台

  针对DUT,采用VMM验证方法学的层次化思想[4],设计出该验证平台的整体架构。同时,在该验证平台中使用了本文所提出的以覆盖率驱动激励产生算法的验证技术,并将验证平台应用于一款高频RFID芯片验证,通过验证结果,检验该验证技术的可行性和优越性。本文着重介绍该验证平台的激励产生算法和覆盖率分析方法。

  3.1 激励产生算法

  对于测试激励的产生,该验证平台设计了一套激励产生算法。该算法依据覆盖率统计分析,对激励的产生做出决策,即通过对覆盖率报告分析,算法决策出下一步该如何产生测试激励。该算法中含有一个序列个数计数器,用来计数一轮测试中激励的序列个数。对于单命令测试,序列个数初始值为1,当进行多命令场景测试时,就需要一连串的测试激励产生,这时候序列个数初始值将会大于1。

  算法的流程图如图1所示。验证平台启动复位后,激励产生器通过编写的随机激励约束,产生测试激励,随后检查产生的测试激励是否为期望的有效测试激励,如果不是,则重新产生,否则将测试激励送给事务处理器,由事务处理器将测试激励建模为事务级的命令帧,随后序列个数减去1。当序列个数不小于1时,说明为场景测试,还需要继续产生激励,于是激励产生器将会继续产生测试激励,并送给事务处理器建模。否则检验器将会做响应检查,一旦发现错误,验证平台将会记录激励,并Dump出波形,产生Bug日志文件,待设计人员修复Bug后重新验证。如果检验器检验正确无误,验证平台将会自动收集验证结果,形成验证日志文件,并收集覆盖率,产生覆盖率报告。验证人员分析覆盖率,如果覆盖率没有满足要求,则根据报告中未覆盖的边界条件,修改激励约束,以增加测试用例,并继续验证,直到得到满意的覆盖率,验证结束。

基于覆盖率驱动的高频RFID芯片验证平台设计

  3.2 覆盖率分析

  由于本验证平台采用完全黑盒的验证方法,只能对DUT系统的顶层信号,即芯片唯一的响应信号进行验证,所以此处引入断言覆盖率分析的意义不大。因此该验证平台着重对功能覆盖率和代码覆盖率进行了分析。通过对二者的分析,可以有效地检验测试激励是否完备,以及功能设计是否完善,以此来判断是否需要增加新的测试激励,以及如何产生新的激励。

  3.2.1 功能覆盖率分析

  功能覆盖率是验证工程师从设计意图的角度来衡量验证的完备性,所以也被称为规范覆盖率,它可以检测到设计中存在的缺陷[5]。因而在收集功能覆盖率时,通过对验证的测试点进行分析,罗列功能点,编写功能覆盖组以及功能覆盖点,如命令帧中的Flag、Command、Parameter等都需要编写覆盖组。此处以Command为例,在该DUT中,除了测试命令外,共有25条有效命令,所以该验证平台为这25条命令分别设置了25个仓(bins),所有测试命令归为一个仓,其余所有的非法命令归为一个仓,这样就总共就为Command建立了27个仓。功能覆盖代码编写如下[4]:

  covergroup covport;

  coverpoint dri.Command{

  bins Inventory={8’h01};

  bins Stay_quiet={8’h02};

  bins Rd_sgl_blk={8’h20};

  bins Wt_sgl_blk={8’h21};

  bins Lock_blk={8’h22};

  ……

  bins Error_cmd=default;

  }

  endgroup

  在验证收集覆盖率后,可以在覆盖率报告中查看仓分组情况和仓命中情况,如图2所示。当Command的每个仓都被命中时,就说明对于Command的覆盖达到了100%,该测试点得到了完善的测试。如果有未被覆盖的仓,则通过修改约束,增加测试用例,最终使得功能覆盖率达到100%。

基于覆盖率驱动的高频RFID芯片验证平台设计

  其余的功能点也通过同样的方式进行覆盖分析,不断完善,最终得到了如图3所示的功能覆盖率报告,从图中可以看出,总功能覆盖率达到了100%,符合预期效果。这说明设计期望的功能点均被验证覆盖到,且功能设计正确。

基于覆盖率驱动的高频RFID芯片验证平台设计

  3.2.2 代码覆盖率分析

  代码覆盖率是验证工程师从设计代码的角度来衡量设计被验证的充分性。代码覆盖率的收集不需要特殊的程序编写,只需要对仿真器参数做必要的设置即可。通过对代码覆盖率的分析,可以有效地判断设计中还有哪些没有被验证到,以此来增加测试激励,充分验证设计。图4为代码覆盖率报告,从报告中可以清楚地看到各种覆盖率以及总代码覆盖率的覆盖情况。

基于覆盖率驱动的高频RFID芯片验证平台设计

  覆盖率报告中块(block)覆盖率包含了语句(statement)覆盖率和分支(branch)覆盖率。其中语句覆盖率指的是设计代码语句被执行过占总代码语句数的比例。分支覆盖率体现的是if、case等布尔表达式是否在真和假的情况下各执行一次。所以当块覆盖率为100%时,说明所有的设计代码都被执行过了。如果没有达到100%,则可以通过覆盖率报告,查看哪些代码语句或者哪些分支情况没有被执行过,以此来完善测试激励,验证边界条件。上图报告中块覆盖率为98%,接近100%。

  表达式(expression)覆盖率用来检查布尔表达式验证的充分性。如if(chk_lock_en || easardmode_en)判断条件中,两个变量为真和假均被执行过,这样它的覆盖率就为100%。在报告中,可以看到表达式覆盖率较其他几项偏低,因为有许多情况在芯片的工作当中根本无法遇到,所以表达式覆盖率很难进一步提高,但是对于芯片设计的功能来说,已经完全得到验证。

  翻转(toggle)覆盖率指的是设计中的寄存器0和1的跳变情况,只有双向均做了跳变,覆盖率才达到100%。从报告中可以看出,翻转覆盖率也达到了较高的水平。

  状态机(fsm)覆盖率用于统计在验证过程中状态机发生了哪些跳转,这种分析可以防止某些状态在整个验证过程中从未发生跳转,从而造成设计隐患。从报告中可以看出,状态机覆盖率为100%,状态机得到了充分验证。

  在实际验证过程中,通过以上分析方法,不断调整激励约束,直到最终代码覆盖率达到了96%,满足预期效果。

  3.3 验证平台最终验证结果

  依据激励产生算法,通过对功能覆盖率和代码覆盖率的结合分析,不断修改激励产生约束,最终在较短的时间内,获得了满意的功能覆盖率和代码覆盖率。现该验证平台所验证的芯片已经成功流片,在对流片后的芯片测试中,芯片的各项功能正确,且性能优异,完全能够满足市场应用的要求。

  4 结论

  通过采用VMM验证方法学,以覆盖率驱动激励产生算法的验证平台与传统验证平台相比,具备更高的层次化。同时,本文所提出的验证技术为准确判定验证的完备性提供了一个有效的衡量标准。所以,验证平台采用的验证技术可以大幅度提高验证工作的效率和质量,为芯片的一次流片成功率提供了有力的保障。同时该验证技术也可以为其它工程项目的验证提供很好的借鉴意义。

  参考文献

  [1] Janick Bergeron,Eduard Cerny,Alan Hunter,et al.Verification methodology manual for system verilog[M].北京:北京航空航空大学出版社,2007:1-3.

  [2] 钟文枫.SystemVerilog与功能验证[M].北京:机械工业出版社,2010(8):118-119.

  [3] Identification cards-Contactless integrated circuit cards-Vicinity cards-Part 3:Anti-collision and transmission protocol[S].ISO/IEC 15693-3,2000-03-10.

  [4] VMM Standard Library User Guide, version D-2009.12,December 2009.

  [5] 克里斯·斯皮尔.System Verilog验证测试平台编写指南[M].北京:科学出版社,2009:248-250.