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: 形式验证流程相关推荐

  1. Formality形式验证教程

    Formality形式验证主要验证综合后,生成的网表文件功能和之前的verilog文件功能是否一致, 需要两个文件,一个verilog文件,一个是网表文件 1.新建一个文件夹,把verilog文件和网 ...

  2. formality形式验证里的案件分析

    在当前的形式验证的领域,主要有两个工具,一个就是Cadence的conformal,另外一个就是Synopsys的formality(以下简称FM). 通常情况下,形式验证的工具的主战场,是在RTLv ...

  3. SYNS formality 形式验证常见debug 步骤

    formality 是synopsys 用来验证两个design是否等价的工具,也是IC实现中sign off tool,常用在design ECO 验证,tptg 前后由于design hierar ...

  4. 数字IC设计学习笔记_Formality 形式验证

    数字IC设计学习笔记 Formality 形式验证 1. 基本特点 2. Reference Design 和Implementation Design 3. container 4. 读入共享技术库 ...

  5. 形式验证 formality的设置及fm_shell使用

    形式验证进阶(二):Setup阶段的约束信息&说说formality中比较点匹配 2018-10-26  芯司机  公众号:chipdriver 之前的文章导读 <形式验证入门之基本概念 ...

  6. uvm 形式验证_谈一谈IC flow中的形式验证

    By definition, formal verification is the use of tools that mathematically analyze the space of poss ...

  7. Formal equivalence verification 形式验证之等价验证 FEV 第8章

    目录 一.要检查的等价类型 1.组合等价 2.序列等价 3.基于事务的等价 二.FEV用例 1.RTL -- netlist FEV 2.RTL--RTL FEV 1)参数化 2)序列修复--逻辑再分 ...

  8. IC设计- 浅谈各种验证 - 功能验证,形式验证,原型验证

    浅谈逻辑仿真,形式验证及硬件仿真 随着硬件设计复杂性的不断增加,为了能够最大程度的使得验证收敛,验证方法也越来越多,今天我们针对常见的几种验证方法做一些简单的分析,指出它们的常用应用环境以及一些优缺点 ...

  9. Formal Verification (一) 形式验证的分类、发展、适用场景

    资料分享:百度网盘 提取码:csdn Definition Formal Verification:利用数学分析的方法,通过算法引擎建立模型,对待测设计的状态空间进行穷尽分析的验证. Kinds of ...

最新文章

  1. 魔与道的反复较量 反垃圾邮件技术
  2. Android之linux基础教学之八 内核同步介绍
  3. 全栈工程师薪水_2019Java 全栈工程师 进阶路线图!一定要收藏!
  4. 【报告分享】2021人才资本趋势报告:重塑时代-BOSS直聘.pdf(附下载链接)
  5. 第十章:内核同步方法
  6. 双足机器人的平衡控制
  7. 战地一的服务器在哪个文件夹,战地1怎么加入服务器 战地1加入服务器方法
  8. 第十三届蓝桥杯A组Python组心得分享
  9. 安装mysql中error nr.1045_windows10安装mysql提示error Nr.1045的解决方法
  10. vue+croppr.js 裁剪圆形图片
  11. 使用Sbert预训练的TTS模型《Expressive Text-to-Speech using Style Tag》
  12. JUC:6_1集合类并发问题、集合类并发不安全解决方案1:list
  13. 搞定java面试系列--jvm3 gc垃圾回收
  14. OpenCV-Python:图像的几何变换(平移、旋转、仿射变换等)
  15. 什么是数据中心核心交换机?与普通交换机有什么区别?
  16. springboot+vue+安卓二手交易平台源码
  17. IOS navigationController详解
  18. tar gz bz bz2 等各种解压文件使用方法
  19. 全产业链模式的竞争优势
  20. TIA西门子博途软件中如何让程序段自动显示注释?

热门文章

  1. 网络浏览器 Vivaldi 32/64 位 v2.9.1705.31 中文便携版
  2. 2014年4月微软MVP当选名单揭晓!
  3. 大学生性价比计算机推荐,快开学了 大学生该如何选择一款高性价比电脑?
  4. 做shopify收款方式有哪些
  5. IOS微信后台运行时候倒计时暂停问题
  6. scrapy爬虫之爬取百度手机助手app信息并保存至mongodb数据库(附源码)
  7. html支持es6,ie不支持es6语法 浏览器怎么使用ES6的Proxy
  8. CAD关于图层隐藏图层操作(com接口c#语言)
  9. 鸢尾花决策树分类及可视化
  10. git官网下载不了或下载很慢的解决办法!