IC设计中的形式验证formality

形式验证的目的是比较功能的一致性,比对综合后的网表(netlist)和RTL设计的功能是否一致,比对PR后的网表和综合后网表功能是否一致。两处比对一致则代表最终PR后的网表功能符合设计者意图。在所有的IC设计中,想要最终成功的设计者都不会放弃做形式验证,且至少需要两次形式验证,第一次是RTL和综合后的网表的比对(这次比对简记为前FM),第二次是综合后的网表和PR后的网表的比对(这次比对简记为后FM)。

1 FM的逻辑框架

不论是前FM还是后FM,做形式验证的思路是一样的,需要的东西如下:

1 参考文件,就是那个被定义为永远正确的文件,这里用ref来表示,这里的ref文件就是RTL设计文件;(原因:RTL经过功能仿真验证,被认为RTL是符合设计者意图的正确设计)

2 用于比较的文件,这里用imp来表示,这里imp文件就是综合后的网表文件;(原因:在综合过程中,综合软件会对设计进行优化,有些地方的优化可能不符合设计者意图,从而导致功能错误)

3 明白ref文件和imp文件的底层表达,ref文件是RTL的代码文件,而imp文件是用具体器件表示的网表,因此两者之间需要读入具体的器件的db文件,软件才能明白文件具体想表达的意思。与此同时,在综合过程中进行了优化,也需要把优化的记录文件(.svf文件)读入,软件才能比对优化处的功能;

2 FM的简单实现

下面给出一个简单的FM的脚本,在进行复杂的芯片验证时,可在此基础框架上增删修改。

步骤1:设置顶层文件名字(这个可以给自己提示该脚本是用于那个项目/模块的)

set top_design_name top_design_name

步骤2:设计FM的约束条件(最开始约束条件可以不用设置,用默认设置,debug的时候可以加上。约束条件还有很多或者多种用法,可参见使用手册和使用man指令)

set verification_failing_point_limit 0

set hdlin_warn_on_mismatch_message {FMR_ELAB-147 FMR_VLOG-091}

set verification_clock_gate_hold_mode any

set hdlin_ignore_full_case false

set hdlin_ignore_parallel_case false

set hdlin_unresolved_modules black_box

……

步骤3:读入相应的db文件

read_db "../../xxx.db"

步骤4: 读入综合后的优化文件

#set_synopsys_setup true

set_svf  ../../../../xxxx.svf

步骤5:读入RTL设计文件到-r container里

read_verilog -container r -libname WORK {module_a.v module_b.v module_c.v}

set_top r:/WORK/$design_top_name

set_refernce r:/WORK/$design_top_name

set hdlin_unresolved_modules black_box

步骤6:读入网表文件到-i container里

read_verilog -i libname WORK -05 ../../xxxxx.vg

set_top i:/WORK/$design_top_name

set_implementation i:/WORK/$design_top_name

步骤7:将i-container和r-container里的内容进行匹配比对

match

report_unmatched_points

set_dont_verify {r:/work/xxx/xxx/xx/xxx/shift_x_reg70/\*dff.00.7\*}

verify 

analyze_points failing

report_constants

report_dont_verify_points

report_failing_points > ../rpt/failing_points.rpt

report_aborted_points > ../rpt/aborted_points.rpt

report_unverified_points ? ../rpt/unverified_points.rpt

注1:查找使用的命令用man,比如 man read_verilog,就会出来具体命令的使用方法

注2:关于formality的使用手册可在eetop社区里找到,如下链接,简单的应用框架在第81页。

Formality® User Guide 2022-03 - 后端资料区 - EETOP 创芯网论坛 (原名:电子顶级开发网) -

注3:formality的用户手册里可以找到相应的脚本模板

3 start_gui(debug工具)

可以通过FM的gui界面进行debug,这个界面上存在问题分析、可能原因定位、电路的比较图,对于debug很友好。

用户手册里也有很大的篇幅介绍debug的方法技巧,可直接学习用户手册。

笔记一定要及时整理啊,不然时间久了,真的会忘记的………………笔记就简单整理到这里,如有不妥之处,欢迎大家批评指正

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 形式验证是一种通过数学方法来证明软件或硬件系统的正确性的技术。它可以帮助开发人员在设计和实现过程发现和纠正错误,从而提高系统的可靠性和安全性。而debug则是指在软件或硬件系统发现并修复错误的过程。在软件开发形式验证和debug都是非常重要的步骤,可以帮助开发人员确保系统的正确性和稳定性。 ### 回答2: Formality形式验证Debug是一种在计算机科学广为使用的技术。它有助于确保我们所编写的代码符合我们所期望的结果,并能够在特定条件下正确地运行。 在编写代码过程,我们经常会发现错误,这些错误可能是语法错误、逻辑错误或者是程序运行的错误。而在程序运行时发现和修复这些错误非常困难并且耗时,因此我们需要一种更好的方法来检查和修复这些错误。 Formality形式验证Debug是一个解决这个问题的方法。它基于形式化验证技术来实现程序的正确性证明。简单来说,这种验证是基于数学原理的,可以帮助我们通过计算机验证我们所编写的程序在所有可能情况下都能正确地运行。 在Formality形式验证Debug,我们需要将程序输入到一个验证工具,该工具会自动分析程序的结构和逻辑,并生成一个证明来证明程序的正确性。这个证明可以用来确保该程序能够达到预期目标并且不出现错误。 值得注意的是,Formality形式验证Debug并不能完全避免所有的错误,但是它能大大减少可能出现的错误,并为我们提供更高效、更可靠的方法来开发代码和保证代码的正确性。 总之,Formality形式验证Debug是一种高效且可靠的方法来确保我们编写的程序能够正确运行。它可以极大地减少程序在运行时出现的问题,提高程序的质量,并使我们更加自信地将程序发布到生产环境。 ### 回答3: 在软件开发formality形式验证debug是一种基于形式方法的软件验证技术,它可以通过形式化推理,对软件的正确性进行证明。formality形式验证debug的流程通常包括如下几个步骤: 1.形式规约:首先对软件系统进行形式化建模,确定其规范行为,包括输入、输出、状态转换等。这个步骤主要是为了在后续的验证过程,建立正确的推理模型。 2.形式化推理:这一步骤是formality形式验证debug的核心步骤,它通过基于逻辑和数学的严格推理,对软件系统进行验证。具体的,可以用定理证明的方法,将规约后的软件系统描述成数学公式,然后利用逻辑推理对它们进行分析和验证。 3.错误定位:如果在验证过程发现了错误或不一致,需要进一步定位错误和修复错误。在定位错误时,需要通过调试技术对代码进行追踪和分析。 4.验证结果:形式验证debug的最终结果是一个数学证明或反证,用来证明软件系统的正确性或者指出错误。如果发现了错误,需要进行相应的修改和验证,直到软件系统达到正确性标准。 总的来说,在软件开发过程formality形式验证debug能够极大地提高软件的正确性和可靠性,避免因为代码漏洞而导致的系统崩溃或者严重的安全问题,同时,它也能够为软件开发人员提供更高效的开发手段和优化程序的方向。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值