UVM 验证工具
✅ 1. VCS
✉ VCS 指的是 Synopsys 的 Verilog Compiled Simulator 工具,其具备极快的仿真速度以及各种各样的 DEBUG 功能支持
✉ VCS 编译,指的是对用户的输入文件来进行编译,最终生成了可执行文件 simv 的编译过程
✉ VCS 仿真,指的是通过交互模式或者 BATCH 模式来操作可执行文件 simv 的仿真过程
✅ 2. VERDI
✉ VERDI 指的是 INC 的 HDL Debug & Analysis Tool 工具
✉ VERDI 最强大的功能在于其能够在 HDL SOURCE CODE + SCHEMATIC + FSM + WAVEFORM、SDB 之间实现快速 TRACE 功能,从而协助设计和验证工程师高效 DEBUG
✉ VERDI 本身是没有模拟器 SIMULATOR 的,必须连接外部的模拟器,如 Verilog XL/MODELSIM 等等来产生 FSDB 文件
- FSDB
✉ FSDB 文件指的是 Fast Signal DataBase,这是 VERDI 支持的波形文件
✅ 4. MAKEFILE
✉ MAKEFILE 核心是文件依赖性,通过一些语法来描述源程序与目标程序之间的依赖关系,同时自动维护编译工作
✉ MAKEFILE 功能是自动化编译,能够实现整个项目的自动化编译,极大地提高了开发者的效率。
UVM 验证技术
✅ 1. 验证的目的
✉ 为了证明 IC 设计的全部功能是否符合应用文档 SPEC 和设计文档 DESIGNSPEC 中描述的功能:可以通过定向测试和定向激励来验证基本功能和基本场景
✉ 为了证明 IC 设计的全部过程是否匹配算法层面 ALGORITHM 和软件层面 SOFTWARE:可以通过定向测试和定向激励来验证基本功能和基本场景
✉ 为了证明 IC 设计的全部场景是否存在状态卡死、组合环路、尖峰脉冲、资源配置等等的问题:可以通过覆盖率驱动、随机/边界/遍历测试以及随机/边界/遍历激励来验证特殊场景
✅ 2. 验证的目标
✉ 定向且随机:减小设计的缺陷和盲点
✉ 按时且保质:保证设计的时间和质量
✉ 完备且收敛:实现设计的交付和产出
✅ 3. 验证的输入
✉ 需求:验证的模块 + 验证的程度 + 验证的时间
✉ 规格:SPECIFICATION.doc
✉ 算法:ALGORITHM.c
✉ 协议:PROTOCOL.pdf
✉ 其它:如内部相关信号等等
✅ 4. 验证的输出
✉ 验证报告:验证的结论,平台的框架,驱动的流程,遍历的配置,随机的约束,注入的错误,收集覆盖率,以及 BUGLIST 记录等等
✉ 验证反标:确认每一项没有达到的检查点,重点标记,评审分析
✉ 覆盖概率:确认每一项没有覆盖到的原因,是否冗余,是否可删
✅ 5. 验证的流程
✉ 验证计划:输入需求之后,拆分 SPEC,分解测试点,规划 TEST CASE,理清平台框架,完成验证计划文档撰写,内部预审,组织评审 REVIEW
✉ 验证设计:按照平台框架和 SPEC 协议算法等设计平台组件,按照 TEST CASE 设计验证用例
✉ 验证实现:按照从简单到复杂的一系列过程,扩大设定范围,进行随机约束,验证待测代码,注入错误,CORNER CASE 仿真,以覆盖率和验证计划为目标,完成验证
✉ 验证结论:达到覆盖率目标之后,收敛补缺,反标计划,查缺补漏,逐条讨论,完成验证报告,讨论改进,直至可下结论
✅ 6. 验证的思想
✉ 流水线
✉ 自动化
✉ 约束发散
✉ 复用集成
✉ 资源集成
UVM验证技术是一种常用的硬件设计验证技术,它是基于SystemVerilog语言的一个开放源代码库,提供了一套验证方法和工具,用于验证硬件设计的功能正确性和性能。通过对UVM验证技术的经验进行分析,可以得出以下几点经验总结:
系统级的验证方法:UVM验证技术基于OVM(Open Verification Methodology)和VMM(Verification Methodology Manual)的验证方法而来,它提供了一种系统级的验证方法,可以模拟整个设计系统,并使用事务级的访问方式进行验证。这种方法可以更好地验证设计的功能正确性,并发现设计中的潜在问题。
重用性和可扩展性:UVM验证技术使用了面向对象的方法,通过使用类和继承的机制,可以实现代码的重用和可扩展。UVM提供了一套标准的类库和接口,可以在不同的项目中共享和重用验证代码,从而提高了验证的效率和可靠性。
高级仿真和调试功能:UVM验证技术提供了许多高级仿真和调试功能,如配置管理、交互式仿真、报告生成等。这些功能可以帮助验证工程师更好地分析和调试设计,提高验证效率。
并发性和可重用性:UVM验证技术支持并发验证,可以同时运行多个验证场景,从而加快验证速度。此外,UVM还提供了可重用的验证组件和测试用例,可以在不同的设计项目中共享和重用,提高了验证的效率和可靠性。
开源社区支持:UVM是一个开放源代码库,有着庞大的开源社区支持。这意味着可以通过与其他验证工程师和开发人员的交流和协作,分享和获取验证技术的最新进展和经验,提高验证的水平和效果。
综上所述,UVM验证技术是一种强大而灵活的验证方法,它可以提供系统级的验证功能、代码重用和可扩展性、高级仿真和调试功能、并发性和可重用性等优点。通过对UVM验证技术的经验进行分析,可以更好地应用这种验证技术,提高硬件设计的验证效率和可靠性。