VC Formal FPV 启动脚本简单模板

本文介绍了如何使用Synopsys的VCF工具进行FPV(FormalPropertyVerification)。FPV利用断言属性进行静态分析,能遍历所有输入可能性,相比动态仿真验证更具优势。启动FPV的命令为`vcf-f./start_fpv.tcl`,GUI模式则是`vcf-verdi-f./start_fpv.tcl`。通过`start_fpv.tcl`脚本设置工作模式、读取源文件、创建时钟和复位、定义常量、运行模拟、保存初始状态和执行断言检查。断言模块通过bind方式与DUT连接,实现内部信号绑定。

VC Formal(下简称VCF)工具是Synopsys厂开发的一个用于静态分析验证的商业EDA工具。

VCF有很多种应用模式,比如FRV(Formal Register Verification), FPV(Formal Property Verification), FCA(Formal Coverage Analysis), SEQ(Sequential Equivalence Checking)等等。

本文主要介绍FPV的启动脚本。FPV是基于断言属性的静态检查。相对于动态仿真验证,其优势在于能够遍历所有的输入可能性。

启动命令:vcf -f ./start_fpv.tcl 如果想要GUI模式启动,可以用vcf -verdi -f ./start_fpv.tcl启动

================ start_fpv.tcl ================

set_app_var fml_mode_on true  ## 设置VCF工作模式

read_file -top dut -format sverilog -sva -vcs {-full64 -sverilog -f ../filelist/dut.f -f ../filelist/tb.f +define+......}  ## 读取源文件进行编译

create_clock LCLK -period 833  ## 创建时钟

create_clock FCLK -period 555

create_reset RESETn -low ## 创建复位

set_constant PWROK -value 1  ## 设置常量信号

sim_run -stable  ## 让Formal run若干个cycle, 达到稳定的初始状态

sim_save_reset  ## 保存初始状态

check_fv ## 开始做断言属性静态检查

report_fv -list  ## 报告静态检查的情况

s

在数字电路设计中,复位域(Reset Domain)是定义在设计中具有相同复位信号的逻辑部分。复位域的配置和使用对于确保设计的正确性、可测试性和可综合性能至关重要。VC Formal 是 Synopsys 提供的一种形式验证工具,用于验证设计的功能正确性,特别是在复位域的交叉(Reset Domain Crossing, RDC)验证中发挥重要作用。 在使用 VC Formal 进行复位域分析时,需要明确以下关键点: ### 复位域的定义与配置 复位域通常由一个或多个复位信号定义,这些信号控制设计中特定模块或逻辑区域的复位行为。在 VC Formal 中,复位域可以通过命令或脚本进行定义和配置。例如: ```tcl reset_domain -create -name RST_F2 -reset_signal rst_n -reset_type synchronous ``` 此命令定义了一个名为 `RST_F2` 的同步复位域,复位信号为 `rst_n`。类似地,异步复位域可以使用 `asynchronous` 类型进行配置。通过这种方式,设计中的不同模块可以被分配到不同的复位域中,从而实现更精确的验证和分析。 ### 复位域交叉(Reset Domain Crossing, RDC) 当信号从一个复位域传输到另一个复位域时,可能会出现复位域交叉问题。如果未正确处理这些交叉,可能导致信号在复位释放时处于未知状态,进而引发功能错误。VC Formal 可以自动检测这些交叉路径,并验证是否存在潜在的同步机制(如同步FIFO或两级同步器)来确保信号的稳定性。 例如,在复位释放过程中,如果一个信号从异步复位域传输到同步复位域,VC Formal 可以识别这种跨域传输,并检查是否使用了适当的同步逻辑来避免亚稳态问题。 ### 复位域验证的关键检查点 1. **复位信号的同步**:在异步复位域中,复位信号通常需要同步释放,以避免复位信号与时钟信号之间的竞争条件。VC Formal 可以验证复位信号是否通过同步器正确释放。 2. **跨域信号的处理**:对于跨越不同复位域的信号,VC Formal 可以检查是否采用了适当的同步机制,如两级触发器或FIFO缓冲区,以确保信号在目标域中的稳定性。 3. **复位域的隔离**:在某些设计中,复位域之间可能需要隔离机制,以防止复位信号传播到不需要的区域。VC Formal 可以验证这些隔离逻辑是否正确实现。 4. **复位域的覆盖率**:VC Formal 可以提供复位域的覆盖率报告,确保所有复位域都被正确分析,并且没有遗漏的复位域交叉路径。 ### 复位域的使用场景 复位域的使用场景广泛,尤其在以下几种情况下尤为重要: - **多时钟域设计**:在涉及多个时钟域的设计中,复位域的交叉问题尤为突出。VC Formal 可以帮助识别和验证这些交叉路径。 - **低功耗设计**:在低功耗设计中,某些模块可能在特定条件下被关闭或复位,而其他模块保持运行状态。复位域的正确配置可以确保这些模块在重新启用时能够正确初始化。 - **复杂SoC设计**:在系统级芯片(SoC)设计中,复位域的管理变得尤为重要,因为设计中通常包含多个独立的子系统,每个子系统可能具有不同的复位策略。 ### 示例代码:复位域的定义与交叉检查 ```tcl # 定义复位域 reset_domain -create -name RST_CPU -reset_signal cpu_rst_n -reset_type synchronous reset_domain -create -name RST_GPU -reset_signal gpu_rst_n -reset_type asynchronous # 检查复位域交叉 check_rdc -from_domain RST_CPU -to_domain RST_GPU ``` 在上述示例中,首先定义了两个复位域 `RST_CPU` 和 `RST_GPU`,分别使用同步和异步复位信号。然后,使用 `check_rdc` 命令检查从 `RST_CPU` 到 `RST_GPU` 的复位域交叉路径,确保信号在跨域传输时得到正确处理。 ###
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值