SystemVerilog断言(SVA)是一种强大的形式验证技术,通过在RTL代码中嵌入声明性检查点,能够实时、自动地监控设计行为,尤其擅长捕捉接口协议违规、时序错误和跨时钟域问题。本文旨在提供一份实战指南,帮助FPGA工程师将SVA高效集成到模块接口验证流程中,实现从快速上板到深度验证的平滑过渡。
Quick Start
- 步骤一:在Vivado或Quartus中创建一个新的FPGA工程,并添加一个待验证的模块(例如一个简单的AXI-Lite从机接口模块)。
- 步骤二:在顶层测试平台(testbench)或待测模块(DUT)的接口处,创建一个独立的断言检查模块(例如
sva_checker.sv)。 - 步骤三:在断言模块中,使用
property和assert关键字,为接口的关键协议点编写第一个断言。例如,检查AXI-Lite的awvalid在awready拉高后,必须在下一个时钟周期拉低。 - 步骤四:在仿真工具(如QuestaSim、VCS或Vivado XSim)中,编译包含SystemVerilog断言支持的库(通常需要指定
-sv或启用断言选项)。 - 步骤五:在测试平台中实例化断言检查模块,并将其连接到DUT的对应接口信号上。
- 步骤六:运行仿真。如果接口行为符合协议,仿真应正常通过,断言检查器保持静默。如果违反协议,仿真工具会立即报告断言失败(assertion failure),并定位到违规的仿真时间和代码行。
- 步骤七:故意在测试平台中注入一个协议错误(例如,让
awvalid持续有效两个周期),重新运行仿真,确认断言能够成功捕获该错误。 - 步骤八:观察仿真日志和波形,理解断言触发的具体条件和上下文。这是验证断言有效性的关键一步。
- 参数化断言IP:将本文的AXI4-Lite断言封装成可配置的IP,参数化数据宽度、地址宽度、最大等待周期等,便于在不同项目中复用。




