“有些人相信,我们缺乏能够描述这个完美世界的编程语言……”
——– 《黑客帝国》,1999
硬件验证语言(Hardware Verification Language,HVL)与硬件描述语言(HDL)相比,具有以下典型性质:
- 受约束的随即激励生成
- 功能覆盖率
- 更高层次的结构,尤其是面向对象的编程
- 多线程及线程间的通信
- 支持HDL数据类型,如Verilog的四状态数值
- 集成了事件仿真器,便于对设计施加控制
基本概念
硬件设计:创建一个基于设计规范并能完成特定任务的设备。
硬件验证:确保该设备是对规范的一种准确表达。
测试平台的功能:
- 产生激励
- 把激励加到DUT上
- 捕捉响应
- 校验正确性
- 对照整个验证目标测算进展情况
验证方法学的基本原则:
- 受约束的随即激励
- 功能覆盖率
- 使用事务处理器的分层测试平台
- 对所有测试通用的测试平台
- 独立于测试平台之外的个性化测试代码
- 图:覆盖率收敛过程
测试平台构件
- 总线功能模块(BFM):AMBA、USB、PCI、SPI总线等
###分层的测试平台
- 信号层:待测设计和把设计连接到测试平台的信号
- 命令层:驱动器、监视器、断言
- 驱动器:驱动了待测试设计的输入
- 监视器:检测信号变化并按命令分组
- 断言:监视独立信号,寻找穿越整个命令的信号变化
- 功能层:代理、计分板、校验器
- 代理:也称事务处理器,接收上层事务,分解成独立命令
- 计分板:预测事务结果
- 校验器:比较来自监视器和计分板的命令
- 场景层:发生器
- 测试层:测试、功能覆盖率
- 图:分层测试平台
###仿真环境的阶段
- 建立(build)
- 生成配置
- 建立环境
- 复位待测设计
- 配置待测设计
- 运行(run)
- 启动环境
- 运行测试
- 收尾(wrap-up)
- 清空
- 报告