将平台验证环境迁移到SystemVerilog
将平台验证环境迁移到SystemVerilog
会议: SNUG India 2008
作者: Anand Shirahatti, Nitin Agrawal, Rakshit Singhal, Sankara Narayanan R N (NVIDIA, Bangalore)
页数: 12
源文件: SNUG_2008_India_Narayanan_Platform_Verification_Paper_paper.pdf
摘要
跨多个项目使用的平台验证环境包含各种组件——Verilog、C、C++ 以及复杂的内存 PLI 框架作为记分板。该环境已用于多个项目并在较长时间内构建。然而随着复杂性增加,该环境在灵活性、可扩展性和调试功能方面存在限制。经确认 SystemVerilog 和 VMM 验证方法学手册的收益后,决定增量式迁移环境,同时利用遗留组件的复用。
本文描述了迁移的关键方面:使用 VMM 开发多层协议系统总线模型、添加功能覆盖率、有效使用 SV 数据结构表示复杂状态表、处理事件竞争。
目录
1.0 引言 2.0 平台验证环境 3.0 系统总线 BFM 开发 4.0 迁移到 SystemVerilog 5.0 迁移到 VMM 方法学 6.0 迁移到 SV 功能覆盖率 7.0 建模挑战(复杂状态表/事件竞争处理) 8.0 结论 9.0 参考文献 10.0 附录
1.0 引言
平台验证环境演进为包含许多独立开发的组件,使用 Verilog、Vera、C/C++ 和 PLI 的组合。这导致维护困难、调试复杂和可扩展性差。SystemVerilog 提供了统一的语言,结合了硬件描述和验证能力。VMM 提供了标准化的验证方法学。
2.0 平台验证环境
原始环境包括:Verilog 测试台、C/C++ 参考模型、PLI 内存记分板、总线功能模型(BFM)。主要限制是缺乏受约束随机激励生成、功能覆盖率收集困难、以及多语言环境的调试复杂性。
3.0 系统总线 BFM 开发
使用 VMM 方法学开发多层协议系统总线 BFM(Bus Functional Model)的关键需求包括:支持多层协议、事务级接口、可配置时序、错误注入能力。
4.0-6.0 迁移到 SystemVerilog/VMM/功能覆盖率
- 增量迁移方法:从最关键的组件开始逐步替换 - VMM 方法学:使用 vmm_env、vmm_channel、vmm_xactor 等基类 - 功能覆盖率:使用 covergroup 和 coverpoint 替换原有的覆盖率收集机制 - 数据结构:使用 SV 关联数组、队列和动态数组表示复杂状态表
7.0 建模挑战
7.1 复杂状态表表示
使用 SystemVerilog 关联数组表示多维状态转换表,相比原 Verilog 实现更加灵活和可维护。7.2 事件竞争处理
迁移过程中遇到的事件竞争问题:由于 SV 引入了新的调度语义(如 program block、clocking block),需要仔细处理模块间的事件同步。解决方案包括使用 clocking block 和合理的 #0 延迟。8.0 结论
逐步迁移到 SystemVerilog 和 VMM 方法学成功改善了平台验证环境的可扩展性、可维护性和调试能力。利用功能覆盖率和受约束随机激励显著提升了验证质量。
图片索引
共 4 张图片,存放于对应 _images/ 目录。