温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
UVM
报文
验收
滤波
模块
验证
方法
第 31 卷 第 3 期厦门理工学院学报Journal of Xiamen University of TechnologyVol.31 No.32023 年 6 月Jun.2023基于UVM的报文验收滤波模块验证方法史雷萌,左石凯*,黄新栋,吕鑫,周犇,叶圣哲(厦门理工学院光电与通信工程学院,福建 厦门 361024)摘 要针对当前芯片验证平台搭建速度慢和验证覆盖率收集困难的问题,提出一种基于通用验证方法学(UVM)的报文验收滤波模块验证方法。该方法利用Python脚本语言搭建UVM平台框架结构,引入随机事件种子并结合可约束随机测试技术收集验证覆盖率,实现报文验收滤波模块的验证。测试结果表明,该方法收集模块功能的验证覆盖率为100%,与Verilog语言搭建的验证平台相比,代码数据量减少94%,缩短验证平台搭建时间。关键词滤波模块;验证方法;通用验证方法学(UVM);Python脚本;重用性;覆盖率中图分类号TN402 文献标志码A 文章编号1673-4432(2023)03-0017-05A Verification Method for UVM-Based Message Acceptance Filtering ModulesSHI Leimeng,ZUO Shikai*,HUANG Xindong,L Xin,ZHOU Ben,YE Shengzhe(School of Optoelectronic&Communication Engineering,Xiamen University of Technology,Xiamen 361024,China)Abstract:A verification method based on a universal verification methodology(UVM)is proposed to address the problems of slow building speed and difficulty in collecting verification coverage data for the current chip verification platform.The method builds the framework structure of the generic verification methodology platform using the Python scripting language,and collects verification coverage data with random event seeds combined with constrainable random testing techniques to achieve the verification of the message acceptance filtering module.Verification results show that the method has 100%coverage of verification for module functions collected and reduces the amount of code data by 94%compared to the verification platform built in Verilog language,thus reducing the time in building the verification platform.Key words:filter module;verification methods;universal verification methodology(UVM);Python scripts;reusability;coverage早期的集成电路(integrated circuit,IC)芯片开发工作复杂度较低,采用Verilog语言编写测试激励的方式能够满足大部分验证需求。随着IC芯片电路规模的增大,为了确保待验证模块功能的正确doi:10.19697/ki.1673-4432.202303003收稿日期:20220923 修回日期:20221115基金项目:厦门市产学研科研项目(2022CXY0422);福建省自然科学基金项目(2022J01130358,2020J01295)通信作者:左石凯,男,讲师,博士,研究方向为图像处理、嵌入式系统等,E-mail:。引文格式:史雷萌,左石凯,黄新栋,等.基于UVM的报文验收滤波模块验证方法 J.厦门理工学院学报,2023,31(3):17-21.Citation:SHI L M,ZUO S K,HUANG X D,et al.A verification method for URM-based message acceptance filtering modules J.Journal of Xiamen University of Technology,2023,31(3):17-21.(in Chinese)厦门理工学院学报2023 年性,需要使用更多激励进行测试,导致构建Verilog验证平台耗时增加。同时,覆盖率要求确保待测模块所有可能情况都被测试,但使用Verilog验证平台收集会花费大量的时间和精力,故验证覆盖率的收集较为困难1。为了解决上述问题,学者们提出不同的解决方法:杨金鑫2使用Verilog语言验证系统级芯片内的控制器模块时,利用脚本文件语句定向约束参考模型的方式验证被测设备,该方法虽然能够增加验证激励,但并未对覆盖率指标进行收集,导致验证项的遗漏。王凯等3通过Systemverilog语言验证图像采集芯片的功能,并划分验证环境结构,同时遵循面向对象的思想搭建验证平台,虽然验证平台的搭建速度增快,但平台结构繁琐且重用性不高,无法提高验证的效率。为此,本文提出一种基于通用验证方法学(universal verification methodology,UVM)的报文验收滤波模块验证方法,使用Python脚本语言自动化搭建UVM验证平台以加快平台搭建的速度,并采用可约束的随机化测试技术,利用随机时间种子产生不同的测试激励,提高测试的覆盖率。1报文验收滤波模块工作原理报文验收滤波(acceptance filter,AF)模 块 是 控 制 器 局 域 网(controller area network,CAN)总线上处理报文数据的模块,由CAN规范ISO11898-14可知,当接收报文的识别位和预设定位值相同时,模块即接收此帧信息5。AF模块根据CAN规范分为基础(basic)模式和扩展(peli)模式6,且在 peli模式中,根据滤波器的个数分为单滤波模式(single mode)和双滤波模式(dual mode)。本文需验证的报文验收滤波模块由 4个 验 收 代 码 寄 存 器(acceptance code register,ACR)与 4 个验收掩码寄存器(acceptance mask register,AMR)组成,且支持基础和扩展2种工作模式。模块接收到总线上的报文后,通过Mode信号进入对应工作模式,ACF_Mode 信号选择不同滤波模式滤波验收报文。报文滤波验收模块运行流程图如图1所示。运行过程中,首先,平台通过Mode信号高低电平判断模块进入何种模式,若Mode信号为0,进入basic模式验收标准帧报文;若Mode信号为 1,则 进 入 Peli 模 式。其 次,判 断ACF_Mode 信 号 的 高 低 电 平 状 态。若ACF_Mode 信号为 0,进入 dual 模式;若ACF_Mode 信号为 1,进入 single 模式。最后,判断报文的种类。对标准帧和扩展帧报文采取不同的模式进行滤波验收,并输出ACF_Pass_o信号的高低电平状态作为滤波验收模块的结果。模块验收滤波结果波形示意图如图2所示。图2中:红色线段为高电平,表示通过验收;黄色线段为低电图 1报文滤波验收模块运行流程图Fig.1Workflow of message filtering acceptance module图 2模块验收滤波结果波形示意图Fig.2Waveform of module acceptance filtering results18第 3 期史雷萌,等:基于UVM的报文验收滤波模块验证方法平,表示不通过验收。2UVM验证方法设计2.1UVM验证平台构建UVM验证方法学引入类作为基础单元,集成标准化模块语句规范仿真流程。利用脚本语言帮助验证人员快速构建验证平台,缩短待测设备(DUT)移植时间7-9。本文利用Python脚本语言的mako库模板语句,自动化搭建UVM验证平台10-12。将UVM验证平台需要高重用度的部分提取出来,使用$agent_name 关键字动态替换。当脚本运行时,关键字通过render函数进行替换。脚本运行完毕后,在目录文件夹下生成验证平台代码。UVM验证平台的结构示意图如图3所示。顶层(Top)组件包括需要验证的 DUT 和基础测试(BaseTest)组件。基础测试组件内包括环境(Env)组件、代理(Agent)组件和计分板组件。代理组件是验证的主要模块,其中包含封装监视器(monitor)、激励器(sequencer)和驱动器(driver)组件。为了加强组件之间的耦合性,通过接口(interface)组件连接 DUT 和驱动器组件,并使用 phase 机制管理任务执行顺序和时间,确保测试环境的正确运行。验证 DUT 的激励由事务组件产生,在 激 励 器 和 驱 动 器 之 间 通 过seq_item_export和seq_item_port端口交换数据。当激励产生事务之后由激励器同意传递给驱动器进行驱动。本文创建监视器After和监视器Before组件收集驱动器得到的激励数据,提高代理组件的利用率,增强验证平台代码耦合的能力。监视器After组件收集驱动器的输入数据,将收集的输入数据施加到参考模型组件中,得到参考模型运算的结果。其结果使用事务级建模通信机制经过mon_ap端口传递给计分板。监视器Before组件则收集驱动器的输出数据,通过mon_ap端口直接传递给计分板。计分板对比上文2个端口传递的数据,由于监视器Before需通过DUT产生数据结果,在计分板接收数据时会落后一个时钟周期,因此代码中存在2个循环来收集监视器After和监视器Before的数据。通过UVM的域自动化(field_automation)机制,计分板对数据进行比较,数据相同则是成功,不相同则是失败。2.2验证激励规划模块功能的正确与否是决定验证工作成功的关键,因此需要了解模块工作原理,依照工作原理规划验证激励。本文遵循第1节所述原理,针对滤波验收模块工作模式、滤波模式及帧种类的差异编写验证激励条目,如表1所示。使用VCS编译工具仿真验证激励时,通过default_sequence宏定义启动不同验证激励文件。即在编译命令的关键字 UVM_TESTNAME 后输入表 1 中对应的激励功能名。验证激励运行后,由starting_phase提起进程(raise_objection)。根据事务组件注入随机事件种子,产生随机数据。多次迭代后,再由starting_phase结束进程(drop_objection)。通过随机事件种子约束数据,运行不同激励,逐渐提高验证的完备性。图 3UVM验证平台结构示意图Fig.3UVM validation platform19厦门理工学院学报2023 年2.3覆盖率收集策略收集验证激励的覆盖率是检测待测模块功能是否完备的手段。本文根据2.2规划的验证激励,通过更新随机事件种子的值并运行仿真,收集验证激励的覆盖率。反复迭代此操作,直到达到验证目标为止。覆盖率类型包括代码覆盖率和功能覆盖率。代码覆盖率统计待测模块的代码执行情况,包括行覆盖率、分支覆盖率和表达式覆盖率。功能覆盖率统计待测模块的功能测试情况,通过功能覆盖组中存在的功能覆盖点数量来计算功能覆盖率。功能覆盖点包含事务组件的数据属性,包括帧类型、帧标识符等信号。仿真时,在同一时刻采样信号并收集覆盖率。本文在VCS仿真软件的编译命令中执行-cm语句进行覆盖率收集,编译仿真结束后,使用dve-full64-covdir*.vdb&命令通过DVE图形工具查看覆盖率,并生成html网页记录。此外,待测模块中的MaskData0、MaskData1这2信号持续为低电平,无须收集覆盖率,故编写屏蔽文件取消收集。在每个激励运行结束后,覆盖率统计信息会存入指定的文件夹内,当所有激励验证完毕后,通过merge命令合并覆盖率结果。2.4平台搭建速度指标利用字节统计命令wc-c*.sv能够收集验证平台的代码数据量,统计基于Verilog语言的验证平台和UVM验证平台的代码量数据,并进行验证平台搭建速度分析。3仿真结果及分析使用不同值的随机事件种子进行多次重复仿真,直到覆盖率数值趋于稳定。图4为仿真输出的log文件示意图。表1验证激励条目Table 1Incentives to validate序号1234567激励功能名ACF_case_SingleModeSFACF_case_SingleModeEFACF_case_DualModeSFACF_case_DualModeEFACF_case_BasicModeACF_COV_SingleSomeFrameACF_COV_DualSomeFrame激励功能扩展工作模式下滤波模式单滤波模式验收标准帧扩展工作模式下单滤波模式验收扩展帧扩展工作模式下双滤波模式验收标准帧扩展工作模式下双滤波模式验收扩展帧基础工作模式下滤波模式验收标准帧扩展工作模式下单滤波模式随机接收报文帧扩展工作模式下双滤波模式随机接收报文帧图4仿真输出log文件示意图Fig.4Simulation output log file20第 3 期史雷萌,等:基于UVM的报文验收滤波模块验证方法编译时更改随机事件种子值并多次仿真、收集代码覆盖率和功能覆盖率结果。表2为多次功能覆盖率收集的结果,由表2可见,功能覆盖率达到100%,覆盖率收集结果均符合预期。仿真过程中,其中一次仿真的代码覆盖率为97.22%,行覆盖率97.26%,分支覆盖率98.3%,表达式覆盖率94.2%。多次仿真后,逐渐提升至100%。如图5所示,代码覆盖率收集了待测模块的覆盖率程度,表明对滤波验收模块已完成验证。同时,使用字节统计命令分别对Verilog验证平台和UVM验证平台进行代码数据量统计发现,基于Verilog语言的验证平台代码数据量为806 114 B,而使用UVM验证方法搭建的验证平台代码数据量为 46 514 B,后者减少 94%的代码数据量,能够缩短验证平台构建时间。4结 论针对Verilog验证平台搭建速度慢、验证覆盖率收集困难的问题,本文提出一种基于UVM的报文验收滤波模块验证方法。该方法采用Python脚本语言自动生成UVM验证平台,在验证平台中使用接口组件整合模块信号端口,并采用可约束的随机化测试技术,利用随机时间种子产生不同的测试激励。同时对验证模块输出数据进行监控,收集测试的覆盖率。仿真结果表明,相比Verilog搭建的验证平台,本文提出的验证平台能够减少94%的代码数据量,缩短验证平台构建时间,且收集模块的覆盖率为100%。参考文献1 张强.UVM实战:卷M.北京:机械工业出版社,2014:100.2 杨金鑫.基于ARM多核处理器的SoC系统设计与验证D.西安:西安电子科技大学,2020.3 王凯,王骞,符云越,等.基于SystemVerilog的图像采集压缩卡芯片验证平台设计J.电子测量技术,2021,44(20):29-36.4 ISO.Road vehicles:Controller area network(CAN):Part 1:Data link layer and physical coding sublayer:ISO 11898-1:2003S.Switzerland:Internaional Organization for Standardization,2003:60.5 KIRK B.Using software protocols to mask CAN bus insecuritiesC/IEE Colloquium on Electromagnetic Compatibility of Software.London:IET,1998:5.6 周晓乐,慈彬彬,耿双利,等.基于SJA1000的CAN总线通信的FPGA设计J.中国集成电路,2022,31(6):51-55,59.7 马鹏,刘佩,张伟.基于UVM的AMBA总线接口通用验证平台J.计算机系统应用,2021,30(7):57-69.8 廖少华,黄嵩人.基于UVM的JTAG控制器模块验证J.电子世界,2021(17):23-24.9 徐春琳,倪伟,宋宇鲲.基于UVM的AXI4-Stream可重用验证平台设计J.合肥工业大学学报(自然科学版),2020,43(12):1 639-1 645.10 龙可,吕良庆.星载CAN总线即插即用解决方案J.计算机工程与设计,2021,42(6):1 763-1 771.11 刘雨欣.高精度低功耗的RTC子系统的设计及其UVM和Python验证D.杭州:浙江大学,2022.12 王国华,许永建,董晗,等.嵌入式操作系统自动化测试方法研究J.电子元器件与信息技术,2022,6(9):252-256.(责任编辑 李宁)表 2功能覆盖率收集结果Table 2Functional coverage data collected单位:%仿真次数123覆盖率随机测试57.679.281.7基础测试90.592.095.8总功能100100100图 5代码覆盖率统计报告示意图Fig.5Statistics of the code coverage21