Formal connectivity Application

一、背景

Formal connectivity Application(接下来简称CC),通常用于SOC level,用来检查顶层连接性,用来收集toggle 覆盖率。其实对于IP端而言,很多时候也有一些连接性测试,之前博主都是通过force 将源信号拉高,再拉低,去check 目的端是否跟随拉高或者拉低,以此来收集一些非功能信号线的toggle 覆盖率。接下来,介绍一种通过formal CC工具去验证连接线,再将formal CC产生的vdb文件merge到动态仿真产生的vdb文件中,从而实现覆盖率的提升。

二、Formal CC工具介绍

        CC这个工具可以用来检查两种连接性,一种是带延迟的,一种是不带延迟的。

        2.1不带延迟的连接性

                

如图所示就是一个mux的输出端根据sel 的不同,输出与d0/d1同步,这种情况比较简单,就不做赘述。

        2.1带延迟的连接性

        

如图所示当en拉高时,in2的信号会传导到out端,但会有3个clk的延时,这就是带延迟的连接性。注意Formal CC中的延时都是以clk 为单位的,而不是真实的物理延时。

2.3 Formal CC的参考真值

我们在动态仿真的时候都会建立一个参考模型,以这个参考模型的输出值作为真值去check dut的输出值,Formal CC 也不例外,它需要用户提供一个excel 表,这个表格每一行最多有9个要素,如下所示:

1、name:也就是这个property的name,不然工具没法告诉你那个property pass了,哪个又fail了。

2、src: 也就是信号的初始端(源端)

3、dest:信号的终点(目的端)

4、enable:src与dest需要联通所需的enble 信号表达式

5、path_delay:路径延时,如2.2中的路径延时就是3

6、enable_hold

7、enable_delay:enable 信号相对于src信号的延时

8、offset_delay

9、clock:寄存器的时钟

2.4Formal CC的编译与运行

1.将所需要测试的信号写入csv 文件中,保存为cctest.csv

2.之后创建tcl 脚本

脚本中内容如下所示

set_fml_appmode CC          //使能CC App mode

set_app_var fml_cc_coverage_analyzer true //打开覆盖率收集选项

set design chip_top             //指定DUT的顶层

read_file -top $design -format verilog \

-vcs{vcs的编译命令}                           //这里是CC编译DUT

load_cc_set_param csv_enable "%1%"      //将csv的第一列读取成enable信号

load_cc_set_param csv_from "%2%"        //将csv的第二列读取成src信号

load_cc_set_param csv_to "%3%"               //将csv的第三列读取成dest信号

load_cc_set_param csv_prop_name "%4%" //将csv的第四列读取成property name

load_cc_set_param csv_start_line "2"          //从第二行开始测试

load_cc -format csv cctest.csv                       //load csv文件

sim_save_reset

check_fv -block

compute_cc_cov -block

save_cc_cov_results                                  //保存覆盖率文件

report_fv

2.5运行结果

会告知那些property是对的,哪些是错的,然后就可以打开波形去分析,为何会出现错误,然后更正。也会生成一个默认名为cc_tgl_cov.vdb的文件,用verdi 打开就可以看到pass的property的信号的toggle覆盖率都收集完成了,如果想将这个vdb文件merge到动态仿真的vdb文件,比较简单粗暴的就是直接将cc_tgl_cov.vdb/snps/coverage/db/testdata/test_vc_cov_0文件夹复制到目标vdb文件中。

这里再介绍一个打开vdb文件的一个option -tests <test_list>,这个test_list中每一行是vdb_name/test_name,这样当你想看指定单个case或者某些case的覆盖率的时候,只要将这个case的name加入到test_list文件中就行了。

  • 25
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 正式验证(formal verification)是指通过严格的数学证明或形式化验证方法来验证计算机程序或系统的正确性和可靠性。与传统的测试方法相比,正式验证能够全面地覆盖程序或系统的所有执行路径,从而可以发现所有可能存在的错误或漏洞。正式验证在高可靠性和高安全性的计算机系统和软件开发中得到了广泛应用。 ### 回答2: 正式验证(formal verification)是指对计算机系统或软件系统进行全面、精确和自动化的验证方法。在软件和硬件开发领域中,正式验证是一种非常重要的技术,能够帮助开发人员验证设计的正确性并确保系统可以在安全和可靠的环境中运行。 正式验证主要利用数学和形式化方法对系统进行分析和验证。这里的数学方法指的是逻辑、自动机理论、代数和图论等。利用这些数学方法,设计人员可以将系统的规范和要求转化为可计算的形式,然后利用计算机工具来进行分析和验证,以确定系统的正确性和安全性。 正式验证可以帮助设计人员避免由于错误或故障导致的系统问题。在开发软件或硬件系统时,错误和故障是难以避免的。这些问题可能导致系统失效,造成数据损失或其他安全问题。通过使用正式验证技术,设计人员可以对设计进行全面的检查,以确保系统满足所有规范和要求,并且能够进行正确的操作。 正式验证技术还可以为设计人员提供高效、可复用和可扩展的工具集。通过使用这些工具,设计人员可以轻松地对不同类型的系统进行验证,同时也可以快速定位和解决系统中的问题。这使得正式验证在软件和硬件开发领域中得到了广泛的应用。 总之,正式验证是计算机系统和软件系统开发过程中一项非常重要的技术。通过利用数学和形式化方法对系统进行分析和验证,设计人员可以保证系统的正确性和安全性,并避免由于错误或故障导致的问题。这种技术的广泛应用,具有极高的实用性和可行性,使得它被广泛用于软件和硬件开发等领域。 ### 回答3: 形式验证(formal verification)是一种严谨的数学方法,用于验证硬件或软件系统的正确性。它使用形式化的语言和数学工具来证明系统的设计符合特定规范或要求,并且排除了设计中可能存在的任何错误或漏洞。这些规范可以是严格的数学规则,也可以是用户的需求文档或其他设计规范。 形式验证可以在不运行实际代码或硬件设计之前发现错误,而不是依靠测试和修复错误。这种方法能够提高系统的质量和安全性,特别是在关键系统中,如航天、医疗、安全和金融领域的系统等。 形式验证的主要方法包括模型检查、定理证明和符号执行等。模型检查是一种自动化的技术,它为系统设计创建一个形式化模型,并使用模型检查工具验证设计符合特定规范。定理证明是使用数学证明技术来证明系统的正确性,它需要人工编写证明,但能够提供高度保证和严谨性。符号执行是对程序的具体执行路径进行符号计算,从而发现程序执行中可能存在的漏洞。 形式验证虽然具有高度的保证和可靠性,但也存在困难和挑战。其中一个是形式规范的编写,需要精确和详尽的描述系统的要求和目标;另一个是应对系统规模和复杂性的挑战,需要使用高效的算法和工具,以及强大的计算资源。 总之,形式验证技术是一种重要而严谨的方法,用于确保系统的正确性,保障关键系统的安全和可靠性。它是未来软硬件设计的重要趋势之一,将在越来越多的领域得到广泛应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值