第二章环境搭建

分析设计(Analyze)

analyze 命令读取并编译 HDL 源文件和属性文件:

# 分析 Verilog 文件
analyze -verilog rtl_file1.v rtl_file2.v

# 分析 VHDL 文件
analyze -vhdl rtl_file1.vhd rtl_file2.vhd

# 分析 SystemVerilog(含 SVA)
analyze -sv {rtl_file.sv}
analyze -sva {bindings.sva}

# 分析 PSL 属性
analyze -psl {properties.psl}

# 混合语言:Verilog + VHDL + SVA 可在同一项目中使用
analyze 命令需要在 elaborate 之前执行。多个文件按依赖顺序列出,顶层文件在最后。

细化设计(Elaborate)

elaborate 命令解析设计层次、解析参数、构建证明数据库:

# 基本用法
elaborate -top top_module

# 带参数
elaborate -top top_module -parameter WIDTH=32

# 重置设计(清除之前的 elaborate 结果)
elaborate -reset

指定全局时钟

# 单时钟
clock clk

# 多时钟(gated clock)
clock clk -module submodule
clock clk2

时钟信号是同步设计的基础。JasperGold 使用时钟来确定采样边沿,所有断言都在时钟边沿评估。

指定全局复位

# 高有效复位
reset rst

# 低有效复位(使用 ~ 或 !)
reset ~rstN

# 指定复位周期数
reset ~rstN -n 2

复位信号定义了设计的初始状态。JasperGold 会在复位期间不检查断言,复位结束后开始证明。

证明参数设置

基本引擎设置

# 设置最大 trace 长度(时间边界)
set_max_trace_length 20

# 设置证明时间限制
set_prove_time_limit 60s

# 选择引擎模式
set_engine_mode {K I N}
# K = K-Induction, I = Interpolation, N = Bmc

高级引擎设置

# 为特定属性设置引擎
set_prove_per_property_time_limit 30s

# 启用/禁用特定引擎
set_engine_mode {B L}  # B=Bmc, L=Pdr

# 设置多线程
set_prove_threads 4

配置捕获与复用

完成环境配置后,可以将设置保存为 Tcl 脚本,供后续复用:

# 在 GUI 中:File → Save Setup Script
# 或使用命令
save_setup_script setup.tcl

多 Session 管理

JasperGold 支持在同一个数据库中创建多个 Session(会话),每个 Session 可以有不同的证明配置:

# 创建新 Session
create_session session2

# 启动新 Session(带已细化的设计)
launch_session -elaborated

界面截图

环境配置界面(第 58 页)
环境配置界面(第 60 页)

时钟复位建模原则

时钟选择原则

时钟声明告诉形式引擎设计的同步边界,直接影响状态空间的构建。以下是关键原则:

经验法则:elaborate 后第一件事就是打开 Clock Viewer 检查工具自动检测到的时钟域是否正确。

复位建模

复位建模决定了形式验证的初始状态:

黑盒策略

黑盒(Blackbox)将模块替换为接口完全自由的壳,是控制复杂度的重要手段:

新手常犯错误:为了让 prove 快速通过而过度黑盒化。黑盒掉关键控制逻辑会让验证结果毫无意义——形式引擎会"证明"一个被抽空了逻辑的设计满足属性。每个黑盒都应该有明确理由。

来源文档

  • jaspergold_apps_userguide.pdf Ch.3