【从零开始のIC学习笔记】形式验证(Formality)

形式验证是IC设计中确保RTL代码与综合后网表功能一致的过程,通过比较参考设计和待比较设计的等价性。它涉及读取RTL和网表、设置约束、匹配和比对步骤,使用比较点来检查输出是否正确。形式验证在设计更改、综合、DFT和物理优化前后都需要进行,以保证设计的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是形式验证?

在IC设计中,需要通过DC工具将设计的RTL代码转换为网表,为了验证所生成的网表与RTL的功能是否一致,需要进行形式验证,形式验证是一种等价性检查

形式验证需要什么东西?

  • 参考设计(Reference Design)                    一般情况下指RTL
  • 待比较设计(Implementation Design)        指综合后的网表
  • 容器(Containers)        
    • 放入“r” -参考设计
    • 放入“i” -待比较设计
    • formality相关约束

什么时候需要做形式验证?

只要设计发生改变(对代码进行改动)

  • 综合前后                -RTL比对DC综合网表
  • DFT前后                - DC综合网表比对DFT网表
  • 物理优化前后(PR)  -DFT网表比对PR网表

形式验证是如何比较两个设计是否等价?

使用比较点(Comparie Point):比较输出是否正确

例如:输入10bit,即查看1024个输入对应的输出是否都正确相等

形式验证的流程

Step0-引导(Guidance):添加综合产生的.svf文件(在DFT前后与PR前后,不需要该步)

svf文件记录了综合所有的信息,包括:

  • Object name change
  • Constant register optimizations
  • Duplicate and merged refisters
  • Multiplier and divider architecture types
  • Datapath transformations
  • FSM re-encoding(Must be abled in Formality to be used)
  • Retimming
  • Register phase inversion

Step2a-读RTL(Read Referenece Dseign and Libs),并设置顶层

Step2b-读网表(Read Implementation Dseign and Libs),并设置顶层

Step3-设置约束(Set up),例如一些路径只走1端,就设置不走0,特别是DFT后,如dft_mode之类的引脚应当对于i文件和r文件都置0

Step4-匹配(Match)

Step5-比对(Verify)

形式验证工具

形式验证需要在fm_shell环境下进行,相关基本指令如下:

Typical Formality TCLK Script execation

fm_shell -f runme.fms |tee runme.log

Staring the GUI for UNIX

formality
或者
fm_shell -gui -f runme.fms |tee runme.log

 Staring the GUI  within  a batch seession

fm_shell -f (setup) > star_gui

To view other invocation options

fm_shell -help

形式验证脚本

#step_1:Guidance
set_svf    default.svf

#step_2a:Read Reference Design
read_verilog -r xxx.v
read_db -r xxx.db
set_top -r     xxx

#step_2b:Read Implementation Design
read_db -i xxx.db
read_verilog -i xxx.0.v   
set_top -i  xxx.v


#step_3:set up
set_constant i:WORK/XXX/DFT_MD 0     #设置i文件的端口常0
set_constant r:WORK/XXX/DFT_MD 0     #设置i文件的端口常0

set__dont_verify_point i:/WORK/xxx/xx/xx    #设置i文件中不需要verify的点

#step_4 & 5:Match and verify
match
report_matched -status unread > ../log/unread.rpt
report_unmatched > ../log/unmatched.rpt
report_balck_boxes > ./balck_box

verify
report_failing > ../log/failing.rpt
save_session ./formal -replace  

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值