formality: 形式验证流程
formality工具作用于设计开发过程中验证逻辑功能是否产生变化,不考虑layout与timing,可以作为动态仿真的替代品。受制于设计规模,仿真的时间与其输入向量的多寡有关,而formal verification不需要输入向量。
1.formality的使用场景
综合后: rtl网表与门级网表做对比,插入dft前后做对比。
后端设计后: 使用综合网表与后端布局布线后的网表做对比,eco前后做对比。
这里有两个概念,reference design和implement design,前者作为参考设计,后者作为修改过的设计。
2.formality验证流程
formality支持两种工作环境,formality shell和formality GUI。
2.1 formality GUI
1) Load Guidance
添加svf文件(记录综合优化过程的文件),如果对比综合与后端网表,或者后端eco的网表的话一般不需要svf文件。
2) Load Design
读取reference design和implement design,以及相关的timing library文件,然后link。
read design file > verlog > load files
读取db文件,read DB libraries> DB > load files
设置top cell name并link design ,set top design > set top
添加implement design过程与reference design过程类似。
3) Performing Setup
读取设计后,需要设置formal verification环境。比如插入dft以后,做function验证时,不需要考虑scan mode/test mode(对应sdc中的set_case_analysis),或者针对人为创建的port,需要给这些port设置一个常量告诉工具不去检查。另外使用tcl脚本去运行fm_shell的各种set_app_var都在"TCL Variables"中设置。
4) Matching Compare Points
检查 reference design 和 Implemention design 的比较点是否匹配:match>run matching
出现unmatched points也不都会导致verification失败,比如插antenna cell也会产生unmatched points,所以跑formality时候通常会跳过match这一步(看个人习惯)。
5) Verifing the Design and Interpreting Results
验证功能是否一致,verify> verify
出现"Verification succeeded!"就意味着成功了,如果有失败,就需要进行下一步,debug。
6) Debugging Verification
如果功能不一致,使用debug功能进行分析。
debug时会遇到一个logic cone的定义,logic cones是指从一个design object往回回溯,到另一个design object为止的中间所有的组合逻辑。
logic cones的起始点是formality中的compare point:
primary outputs, internal registers, black box input pins, or nets driven by multiple drivers where at least one driver is a port or blackbox。
logic cones的终止点是:
primary inputs or compare points。
2.2 formality shell
命令: fm_shell -f formality.tcl
set_app_var verification_clock_gate_hold_mode any
#允许implement design优化加入新的icg(高电平有效和低电平有效皆可),如果设置set_app_var verification_clock_gate_edge_analysis true的话,set_app_var verification_clock_gate_hold any就失效了。
set_svf xx.svf
#综合过程文件,如果用插入dft之后的网表和原始网表对比就需要加svf文件。
set synopsys_auto_setup true
#会给undriven设成X属性,对于不检查的点可以设set_dont_verify_point {r: xx}比如某些pin的属性是inout,检查不过的情况。
read_db {
std.db \
mem.db \
…
}
read_sverilog -r $gloden_verilog
set_top r:/WORK/$top_cell_name
read_s verilog -r $imp_verilog
set_top i:/WORK/$top_cell_name
set_constant r: /WORK/top_cell_name/atpg_mode 0 -type port
set_constant i: /WORK/top_cell_name/atpg_mode 0 -type port
…
…
…
set_constant I:/WORK/top_cell_name/PEN_VDD_OPT 0 -type port
#这里给scanmode相关的port做了set_constant,因为scan的logic不做分析,还给一个opt的net做了set constant因为,这个net和对应的port是pr自己创建的,原始网表里没有,所以只在imp.v里设set_constant。
match
verify
analyze_points -failing
formality: 形式验证流程相关推荐
- Formality形式验证教程
Formality形式验证主要验证综合后,生成的网表文件功能和之前的verilog文件功能是否一致, 需要两个文件,一个verilog文件,一个是网表文件 1.新建一个文件夹,把verilog文件和网 ...
- formality形式验证里的案件分析
在当前的形式验证的领域,主要有两个工具,一个就是Cadence的conformal,另外一个就是Synopsys的formality(以下简称FM). 通常情况下,形式验证的工具的主战场,是在RTLv ...
- SYNS formality 形式验证常见debug 步骤
formality 是synopsys 用来验证两个design是否等价的工具,也是IC实现中sign off tool,常用在design ECO 验证,tptg 前后由于design hierar ...
- 数字IC设计学习笔记_Formality 形式验证
数字IC设计学习笔记 Formality 形式验证 1. 基本特点 2. Reference Design 和Implementation Design 3. container 4. 读入共享技术库 ...
- 形式验证 formality的设置及fm_shell使用
形式验证进阶(二):Setup阶段的约束信息&说说formality中比较点匹配 2018-10-26 芯司机 公众号:chipdriver 之前的文章导读 <形式验证入门之基本概念 ...
- uvm 形式验证_谈一谈IC flow中的形式验证
By definition, formal verification is the use of tools that mathematically analyze the space of poss ...
- Formal equivalence verification 形式验证之等价验证 FEV 第8章
目录 一.要检查的等价类型 1.组合等价 2.序列等价 3.基于事务的等价 二.FEV用例 1.RTL -- netlist FEV 2.RTL--RTL FEV 1)参数化 2)序列修复--逻辑再分 ...
- IC设计- 浅谈各种验证 - 功能验证,形式验证,原型验证
浅谈逻辑仿真,形式验证及硬件仿真 随着硬件设计复杂性的不断增加,为了能够最大程度的使得验证收敛,验证方法也越来越多,今天我们针对常见的几种验证方法做一些简单的分析,指出它们的常用应用环境以及一些优缺点 ...
- Formal Verification (一) 形式验证的分类、发展、适用场景
资料分享:百度网盘 提取码:csdn Definition Formal Verification:利用数学分析的方法,通过算法引擎建立模型,对待测设计的状态空间进行穷尽分析的验证. Kinds of ...
最新文章
- 魔与道的反复较量 反垃圾邮件技术
- Android之linux基础教学之八 内核同步介绍
- 全栈工程师薪水_2019Java 全栈工程师 进阶路线图!一定要收藏!
- 【报告分享】2021人才资本趋势报告:重塑时代-BOSS直聘.pdf(附下载链接)
- 第十章:内核同步方法
- 双足机器人的平衡控制
- 战地一的服务器在哪个文件夹,战地1怎么加入服务器 战地1加入服务器方法
- 第十三届蓝桥杯A组Python组心得分享
- 安装mysql中error nr.1045_windows10安装mysql提示error Nr.1045的解决方法
- vue+croppr.js 裁剪圆形图片
- 使用Sbert预训练的TTS模型《Expressive Text-to-Speech using Style Tag》
- JUC:6_1集合类并发问题、集合类并发不安全解决方案1:list
- 搞定java面试系列--jvm3 gc垃圾回收
- OpenCV-Python:图像的几何变换(平移、旋转、仿射变换等)
- 什么是数据中心核心交换机?与普通交换机有什么区别?
- springboot+vue+安卓二手交易平台源码
- IOS navigationController详解
- tar gz bz bz2 等各种解压文件使用方法
- 全产业链模式的竞争优势
- TIA西门子博途软件中如何让程序段自动显示注释?
热门文章
- 网络浏览器 Vivaldi 32/64 位 v2.9.1705.31 中文便携版
- 2014年4月微软MVP当选名单揭晓!
- 大学生性价比计算机推荐,快开学了 大学生该如何选择一款高性价比电脑?
- 做shopify收款方式有哪些
- IOS微信后台运行时候倒计时暂停问题
- scrapy爬虫之爬取百度手机助手app信息并保存至mongodb数据库(附源码)
- html支持es6,ie不支持es6语法 浏览器怎么使用ES6的Proxy
- CAD关于图层隐藏图层操作(com接口c#语言)
- 鸢尾花决策树分类及可视化
- git官网下载不了或下载很慢的解决办法!