Formality形式化验证脚本范本

1、验证带DFT网表:首先要disable scan logic和Bist功能

2、可以将所有的代码、网表,包括所有的子模块、顶层的全部读入,在read过程中针对top使用set_top,有关环境设置不急于读入,完成后,可以保存该阶段性为*.fss格式文件(下次restore_session该文件即可,库、网表、设计不需要重复读入)。

脚本主要过程如下:

source ./variable.tcl#设计顶层、路径等变量设置

source ./target_lib.tcl#设计中用到的所以库文件,可能需要lib2db,链接:#http://blog.csdn.net/a670449625/article/details/72459459

#脚本内容:read_db "$LIB_PATH/lib_name.db ... ..."

source ./read.tcl#读入ref和impl设计

#脚本内容:read_verilog -container r -libname WORK $REF_LIST

#set_top r:/WORK/TOP

#read_verilog i:/WORK/TOP

#save_seesion r_i_load.fss

#此时采用自底向上的策略,假设顶层TOP下有两个子模块A和B

#验证子模块A

set_reference_design r:/WORK/A

set_implementation_design i:/WORK/A

current_design r:/WORK/A

source ./ref_setup.tcl#针对ref container的一些设置,eg:constants、black_box、dont_verify_points等

current_design i:/WORK/A

source ./impl_setup.tcl#针对impl container的一些设置,eg:constants、black_box、dont_verify_points等,涉#及到DFT、时钟树方面的,设置方面会多余针对ref的设置

match

set result [verify]#此时会显示出:Reference deisgn is 'r:/WORK/A' Implementation design is 'i:/WORK/A'

if (result ==0)

analyze_points -all > ./analyze_points.log#分析所有failing points

source ./report.tcl#打印验证结果,包括:failing、pasing points、user constants、report_status等等

else

source ./report.tcl

#至此,子模块A的验证工作完成,此时对fm_shell来说,停留在verify mode下

setup#将模式更改为setup

set_reference_design r:/WORK/B

set_implementation_design i:/WORK/B

#之后步骤类似子模块A,在子模块B验证完成后,fm_shell仍停留在verify mode下

setup

set_reference_design r:/WORK/TOP

set_implementation_design i:/WORK/TOP

source ./top_setup.tcl#将子模块A和B设置为黑盒子、Interface only等

#剩余步骤跟子模块验证相同。






展开阅读全文

没有更多推荐了,返回首页