正式验证Skill formal-verification

正式验证技能是一种用于FPGA(现场可编程门阵列)和硬件设计的自动化验证方法。它通过形式化方法(如模型检验和属性验证)对设计进行数学上的穷尽性检查,无需依赖传统的仿真测试。核心功能包括编写系统Verilog断言(SVA)、配置约束、分析反例、执行有界/无界模型检验,并与JasperGold、VC Formal等专业工具集成。该技能能确保硬件设计在功能、安全性和活性方面完全符合规范,尤其适用于验证时钟域交叉(CDC)、复杂控制逻辑和关键安全属性,是提高芯片设计可靠性和缩短验证周期的关键技术。 关键词:FPGA验证,正式验证,模型检验,属性验证,SVA断言,JasperGold,VC Formal,硬件验证,形式化方法,反例分析,约束配置,CDC验证,有界模型检验,RTL验证

嵌入式软件 0 次安装 0 次浏览 更新于 2/25/2026

name: formal-verification description: FPGA设计的正式属性验证与模型检验技能 allowed-tools:

  • Read
  • Write
  • Edit
  • Glob
  • Grep
  • Bash

正式验证技能

概述

用于正式属性验证和模型检验的专家级技能,无需仿真即可对FPGA设计属性进行穷尽性验证。

能力

  • 编写用于正式验证的属性
  • 配置正式工具约束
  • 分析正式反例
  • 应用有界模型检验
  • 配置覆盖和假设指令
  • 调试正式验证失败
  • 将正式验证与仿真流程集成
  • 支持JasperGold和VC Formal流程

目标流程

  • sva-development.js
  • cdc-design.js
  • constrained-random-verification.js

使用指南

属性类型

  • assert property: 必须始终成立
  • assume property: 环境约束
  • cover property: 可达性目标
  • restrict property: 强约束

正式验证方法

  • 有界模型检验: 检查最多N个周期的属性
  • 无界证明: 在可能的情况下进行完整验证
  • 归纳法: 用于活性属性的K-归纳
  • 抽象化: 为可扩展性降低复杂性

编写有效属性

// 安全性属性
assert property (@(posedge clk) disable iff (rst)
  req |-> ##[1:5] gnt);

// 活性属性(有界)
assert property (@(posedge clk) disable iff (rst)
  req |-> s_eventually gnt);

// 正式验证的假设
assume property (@(posedge clk)
  $onehot0(req_vec));

约束开发

  • 建模输入协议约束
  • 约束不现实的场景
  • 避免过度约束
  • 对复杂约束使用辅助逻辑
  • 记录约束原理

反例分析

  • 加载反例追踪
  • 识别根本原因
  • 区分错误与缺失约束
  • 根据反例创建回归测试
  • 更新约束或修复RTL

工具集成

  • 配置引擎选择
  • 适当设置证明边界
  • 使用证明加速技术
  • 与回归流程集成
  • 归档证明结果

依赖项

  • 正式工具认知(JasperGold, VC Formal)
  • SVA专业知识
  • 模型检验理论知识