开篇:润墨网以专业的文秘视角,为您筛选了一篇基于UVM验证方法学的RF基带模块验证范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
引言
验证最基本的目的在于测试被测对象DUT的正确性,其最常用的方法就是给D U T施加各种不同的激励,并观测DUT的输出结果,把此结果与期望值相比较,判断DUT正确与否。近年来,随着集成电路设计向超大规模发展,芯片验证工作变得越来越复杂和困难,根据许多业内文献报道,验证的工作量已经占到整个芯片开发的70%左右,因此提高芯片验证的效率已变得至关重要。UVM验证方法学由Accelera组织于2010年推出,它以OVM(Open Verification Methodology)为核心,吸收了AVM(AdvancedVerification Methodology)、OVM和VMM(Verification MethodologyManual)等诸多主流验证方法学的优点,并新增了一些新技术如Phasing等。UVM采用了最好的验证框架去实现覆盖率驱动验证,其有效结合了自动测试产生、自检查平台和覆盖率度量等特点,能大大缩减验证时间。
作为芯片的非接触式通信控制部分,该RF基带模块采用ISO/IEC 1444 3A协议,工作频率为13.56MHz,通信速率最高支持106kb/s,并支持7字节长的两级抗冲突。它具有高度的数据完整性:16位CRC、奇偶校验、位编码和位计数。本文将以R F基带模块作为验证对象,使用U VM验证方法学,对其进行调制和解调过程的验证。
UVM验证环境
UVM class library提供了所需的基本单位,以便于快速开发用SystemVerilog描述的具有良好结构的、可重用的验证组件(verificationcomponent)和测试环境。UVM验证平台是由称为验证组件的可重用验证环境组成。对于接口协议、设计子模块或者全系统而言,验证部件是一个封装成型、易于使用、可配置的验证环境。每个验证部件都拥有固定的结构,包括了一套完整的元件去完成针对某一特定协议或设计的仿真、检查和覆盖项信息收集。验证组件用在被测对象以验证协议实现或设计架构。
图1所示为一个使用class library基本类的典型UVM环境。在uvm_env中,它例化了一个monitor组件,一个config模块和四个agent组件。monitor组件负责验证环境的功能覆盖项监测;config模块完成对验证环境中各个组件的配置;四个agent组件各自完成不同的验证功能,每个组件中都有独立的sequencer、driver和monitor。在每一个agent组件中,sequencer通过传输级模型TLM将随机约束好的sequence发送给driver,driver将这些sequence按照一定的协议标准驱动验证对象的输入信号,同时monitor会按照相应的协议标准对验证对象的输入输出信息进行采样,并将采样的结果传输给uvm_env外的比对组件。通常比对组件会采用一定的方式对采样数据的正确性进行判断。
功能覆盖率是用来衡量那些设计特征已经被测试程序测试过的一个指标,它可以是面向控制时域的覆盖率,也可以是面向数据信息的覆盖率。从设计规范着手,创建一个验证计划,详细列出要测试什么、如何进行测试以及相应的测试用例。功能覆盖率通常在UVM验证环境的monitor组件、interface或者验证顶层中进行采样。面向控制的覆盖率可贯穿于各个测试用例,面向数据的覆盖率常用于采集在验证平台或者DUT内部信号的数据覆盖情况。
RF基带模块
本RF基带模块的结构图如图2所示。命令解释器通过命令参数寄存器,将输入的串行数据变换成并行,以便于处理,另外它对命令字进行解调,得到输入的命令编码。根据ISO/IE C 14443A,抗冲突功能允许在场内同时操作多个非接触式卡,抗冲突算法分别选中每个非接触式卡并能确保被选中的芯片能够正确工作,并没有受到场内其他卡的数据损坏。EEPROM接口模块提供了与EEPROM的通信,包括数据、地址和控制信号的交互。
根据ISO/IEC 14443A协议,RF基带模块的解调信号采用修正的Miller编码方式,该方式定义了三种序列,如图3所示。
序列X:一个PauseA在半个位周期后产生。它用来表示逻辑“1”。
序列Y:在整个位周期间,不产生调制。一般用它来表示逻辑“0”。
序列z:在位周期的开始处,产生一个PauseA。有些例外情况需用它来表示逻辑“0”。
调制返回信号采用Manchester编码方式,该方式也定义了三种序列,如图4所示。
序列D:在位宽度的前半部(50%),载波被副载波调制。它用来表示逻辑“1”。
序列E:在位宽度的后半部(50%),载波被副载波调制。它用来表示逻辑“0”。
序列F:在整位宽度内载波不被副载波调制。它用来表示通信结束。基于uvm的RF基带模块验证平台搭建
1 RF基带模块验证策略
该R F基带模块验证的基本思路是使用随机约束激励与自动检测比较的思路,验证策略如图5所示。首先将RF基带模块数据项目中的变量做随机约束,然后将该数据项目传输给Rddriver组件;Rd driver组件使用随机约束好的数据分别驱动RF基带模块及其参考模型的输入信号;而后DUTmonitor组件采样RF基带模块的输出信号,Model monitor组件采样参考模型的期望数据,它们各自打包发送给Scoreboard组件;最后Scoreboar姐件通过比较两者的一致性来判断结果的正确性。
2 基于LWM的RF基带模块验证平台
基于UVM验证方法学的R F基带模块验证平台如图6所示。DUT是待测对象,Ref model为待测对象的参考模型,它们均通过rd_if和rd env实现输入激励信息的驱动和采样,通过mod_if和mod env实现输出结果的收集。rd_env例化了一个配置为active类型的agent,它内部包括sequencer、driver和monitor,其中driver将随机约束激励转化为信号级并用于驱动DUT和Ref model,monitor用于采样激励信息的覆盖情况。mod_env例化了两个配置为passive类型的agent,其中mod_duCagent中的monitor用于将DUT的信号级输出转化为传输级输出,并通过TLM发送给ctrl_env的monitor中,同时用于检查输出覆盖情况;mod_refagent中的monitor用于获得Ref model的传输级输出,并通过TLM发送给ctrl env的monitor。ctrlenv内的monitor将DUT和Ref model传来的数据再发送给scoreboard,scoreboard用于比较两者结果是否一致,coverage用于检查DUT特定内部信号的覆盖情况。
rf基带模块的测试用例(testcase)库通过例化uvm_test而来,它包含了用户编写的各测试用例,这些测试用例可以调用virtualsequencer中对应的序列对DuT数据项目做随机约束,从而得到预期激励。还可以根据后续的需求进一步扩充测试用例库的用例,RF基带模块的基本测试用例列举如表1所示。
RF基带模块的数据项目定义了需要激励的各输入变量,这些基本变量如表2所示。
RF基带模块的仿真读写操作时序如图7所示,在可靠上电后,芯片依次并行从EEPROM读取工作模式、系统参数配置等信息,上电周期结束后进入相应的工作模式,图中payload_pcd为指令的随机约束激励,它通过rddriver和rd_if进一步发送给芯片的正/负级RF端口rf_p、rf_n。片内RF基带模块的解调信号datain接收到符合修正的Miller编码的序列,正常情况下会产生符合Manchester编码的调制返回信号dataout,读指令时将dataout返回数据读至EEPROM,写指令时通过擦写时序将数据写入EEPROM。UVM验证平台会分别收集DUT和参考模型的返回数据,然后通过Scoreboard组件对它们做一致性地比较。
3 验证结果分析
以active_1测试用例分析仿真结果,此测试用例通过REQA指令先使芯片工作在READY1状态,再通过READ Ox00指令使芯片跳换至A CTIVE状态,随后执行写读等操作验证返回结果正确与否。此处的读写地址被定义为rand类型,可通过constraint对它们的随机地址加以约束,使它们处于有效的地址范围。
从仿真日志文件看到,此测试用例比对成功。在此处仿真过程中总共打印了140条仿真信息,没有警告、一般错误或者致命错误信息,在RNTST、SCRBD、TEST_DONE等处分别打印了测试用例、比对结果、测试结束等信息。若测试用例失败,这些打印信息便是至关重要的调试参考信息。
另外,各测试用例跑仿真后会产生相应的覆盖数据文件,然后用EDA工具对这些文件进行合并,并对结果进行检查分析。此处面向控制的功能覆盖项涉及各指令的FDT、EEPROM擦写时序、PauseA等共30项,面向数据的功能覆盖项涉及各指令及其parity、CRC的覆盖组合、返回各标志信息等共175项。从报告结果来看,所列的覆盖检查项均有所涉及。结束语
本文的RF基带模块验证利用了UVM验证的随机约束、可重用性、覆盖率驱动验证等优点,极大提高了验证的效率、完备性和易控制性。学习并掌握好UVM验证方法学和SystemVerilog语言,对于提高集成电路开发人员的验证效率和技术水平无疑是非常有益的。