(参考:https://mp.weixin.qq.com/s/XznSbJBlAdZvtAIpyzajAA)
一、formality简介

在现在的数字集成电路设计流程中,有很多步骤都需要进行验证。随着数字集成电路的规模、复杂度,以及在验证过程中需要的仿真矢量的不断增加,用传统的仿真器进行验证越来越成为整个设计过程中的瓶颈之所在。

所谓形式验证,就是通过比较两个设计在逻辑功能上是否等同的方法来验证电路的功能。这种方法的优点在于它不仅提高了验证的速度,可以在相当大的程度上缩短数字设计的周期,而且更重要的是,它摆脱了工艺的约束和仿真testbench的不完全性,更加全面地检查了电路的功能。

Formality是Synopsys的形式验证工具,你可以用它来比较一个修改后的设计(如ECO)和它原来的版本,或者一个RTL级的设计和它的门级网表,再或者综合后的门级网表和做完布局布线及优化之后的门级网表在功耗上是否一致。

二、formality验证流程

  1. 启动方式
    formality有两种启动方式:图形用户界面GUI和命令行界面。

GUI界面启动命令:formality;

命令行启动命令:fm_shell;

  1. 接下来的步骤以GUI界面为例。
    打开终端,输入formality命令后回车,打开软件的GUI界面,如下图所示:


软件的验证流程按照软件上的顺序依次执行,下面分别介绍。
0. Guidance

  1. Reference
  2. Implementation
  3. Setup
  4. Match
  5. Verify
  6. Debug
    1)Guidance
    其中0.Guidance用来选择DC在进行逻辑综合时产生的.svf文件,该文件记录了DC在逻辑综合时所做的一些优化。

选择“Guidance”进行添加即可。添加完成后点击“Load Files”即可在右侧的Currently Loaded窗口中看到该文件,下侧的log一栏显示“1”即表示设置成功,上方0.Guidance上也会显示一个绿色的小对勾,如下图所示。

注意:如果设计非常小,并在网表中并未做什么优化,可以不用执行该操作。



2)Reference
设置Reference design,点击formality图形界面的“1.Reference”按钮,可以看到有3个步骤需要依次执行,如下图所示。分别是:1.Read Design File ,2.Read DB Libraries ,3.Set Top Design。

a. Read Design File
首先需要读取自己设计的RTL级的Verilog文件。点击“1.Read Design File”之后选择 “Verilog”按钮,出现添加Verilog文件的对话框。选中所有的rtl级文件,点击Open按钮,打开Verilog源代码。如下图所示:

如果RTL代码中用到了某些Design Ware库中的一些IP,还需要设置搜索目录,如果没有用到的话可以跳过该步。

设置搜索目录,点击option按钮,出现Set Verilog Read Option对话框,如下图所示。选择Variable,在DesingWare root directory (hdlin_dwroot)出输入选择DC的软件安装目录,设置完成后点击OK按钮。
之后点击点击“Load Files”完成添加rtl级文件。

b. Read DB Libraries
如果RTL代码中例化了一些IO或者Macro,或者还直接例化了标准单元库中的Tie high/low Cells,那么需要读取它们的DB文件。由于本设计中直接例化了标准单元库中的Cells并且含有IO,所以需要读取标准单元库和IO的.db文件。

点击“2.Read DB Libraries” 后选择“DB”按钮,选取IO的.db格式文件和标准单元库的.db文件,点击open打开,之后点击Load Files。

c. Set Top Design
点击“3.Set Top Design”按钮,设置Reference中的顶层设计,本实例中的顶层文件是top.v。

在1.Choose a library中选择WORK;
在2.Choose a design中选择top(顶层设计的模块名);
在3.Set and link the top design中点击Set Top,指定顶层设计,设置完成后在1.Reference按钮上出现绿色的对号符。

注意:设置top文件过程中可能会遇到报以下错误:

参考论坛(http://bbs.eetop.cn/thread-867168-1-1.html?_dsign=084d94be),在下侧输入框加入下述语句:(意思是对这些问题只报warning, 不作为错误处理),重新设置top即可设置成功。

set_mismatch_message_filter -suppress {FMR_ELAB-147 FMR_ELAB-130}


3) Implementation
点击“2.Implement”按钮,设置Implementation Design,可以看到也是有3个步骤需要依次执行,如下图所示。分别是:1.Read Design File ,2.Read DB Libraries ,3.Set Top Design。

a. Read Design File
在“1.Read Design Files”中点击Verilog,出现Add verilog files对话框,选择DC综合导出的verilog网表文件top.mapped.v,如下图所示。 之后点击“Load Files”加载网表文件。

b. Read DB Libraries
点击“2.Read DB Libraries”,这里添加门级网表中用到的相关.db文件,由于本设计所需所有.db文件在之前已经读入过了,所以可以跳过该步。

c. Set Top Design
点击“3.Set Top Design”按钮,设置Reference中的顶层设计:

在1.Choose a library中选择WORK;

在2.Choose a design中选择top(顶层设计的模块名);

在3.Set and link the top design中点击Set Top,指定顶层设计,设置完成后在“2.Implementation”按钮上出现绿色的对号符。

4) Setup
设置环境,在这一步主要是设置常量,比如对应一些增加了SCAN扫描链和JTAG链的设计,需要设置一些常量,使这些SCAN和JTAG等功能禁止。如果设计中采用了门控时钟技术,也需要进行一些相应的设置。

由于本实例的综合中没有添加SCAN和JTAG链,且设计中没有采用门控时钟技术,故可以省略这一步。

5) Match
检查reference design和Implemention design的比较点是否匹配:

点击“4.Match”按钮,选择“Run Matching”按钮,进行匹配检查。
出现下图所示结果:没有不匹配的比较点,可以进入下一步。

6) Verify
前面的Reference和Implementation环境都已搭建好,下面可以验证RTL级代码和门级网表功能是否一致。
选择“5.Verify”按钮,进行形式验证,如下图所示:

验证结束,结果出现“Verification succeeded!”的对话框,如下图所示,这说明两种功能一致。到此,完成形式验证。

7) Debug
如果验证失败,系统直接进入Debug工作区。在Failing Points的报告工作区里显示两设计的出不一致的比较点,在Failing Points的报告工作区内点击鼠标右键,选择Show All Cone Size,在Size栏里显示每个compar point所包含的cell的数目。一般调试是从cell数目最小的compare point开始。选择Reference中的cell数目最小的compare point,点击鼠标右键,选择菜单中的view Logic Cones,出现Logic Cones View窗口。在这个新窗口里显示的是reference design 和Imeplemention design的原理图,可以在这个原理图中进行Debug。

formality软件使用教程相关推荐

  1. 汇编程序设计与计算机体系结构软件工程师教程笔记:内联汇编与宏

    <汇编程序设计与计算机体系结构: 软件工程师教程>这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译.中文版是2019年出版的.个人感觉这本书真不错,书中介绍了 ...

  2. 汇编程序设计与计算机体系结构软件工程师教程笔记:函数、字符串、浮点运算

    <汇编程序设计与计算机体系结构: 软件工程师教程>这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译.中文版是2019年出版的.个人感觉这本书真不错,书中介绍了 ...

  3. 汇编程序设计与计算机体系结构软件工程师教程笔记:指令

    <汇编程序设计与计算机体系结构: 软件工程师教程>这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译.中文版是2019年出版的.个人感觉这本书真不错,书中介绍了 ...

  4. 汇编程序设计与计算机体系结构软件工程师教程笔记:处理器、寄存器简介

    <汇编程序设计与计算机体系结构: 软件工程师教程>这本书是由Brain R.Hall和Kevin J.Slonka著,由爱飞翔译.中文版是2019年出版的.个人感觉这本书真不错,书中介绍了 ...

  5. ad域推送软件_Python3.6.4 软件安装教程

    Python-3.6.4 软件安装教程 01 Python-3.6.4 软件安装教程 软件介绍 Python-3.6.4(32/64)位 Python的设计目标之一是让代码具备高度的可阅读性.它设计时 ...

  6. vb6 combo根据index显示_VB6.0软件安装教程及学习资源

    阿布分享君 ❤  abushare ① 简介 VB的中心思想就是要便于程序员使用,无论是新手或者专家.VB使用了可以简单建立应用程序的GUI系统,但是又可以开发相当复杂的程序.VB的程序是一种基于窗体 ...

  7. 利用WindowsPhone7_SDK_Full.rar_for_xp,在xp下安装sdk,部署xap软件的教程

    很多朋友都在苦恼xp下无法安装sdk,进而无法在xp下部署软件. 结合本人实测经验,总结了一下最简单的方法. 1.下载dotNetFx40_Full_setup,并安装. 官方下载地址: [ hide ...

  8. ad软件侵权律师函_Aspen Plus 9 软件安装教程

    Aspen Plus 9 软件安装教程 01 Aspen Plus 9 软件安装教程 软件介绍 Aspen 提供最新资产性能管理.工程.制造和供应链软件版本.更好地提高产能,提高利润,降低成本,提高能 ...

  9. 软件设计师考c语言,软件设计师教程考点精讲之C语言三大定律

    2016下半年软考软件设计师报名即将开始,同学们是否在学习过程中遇到了一些困难,下面由希赛软考学院为打算参加下半年考试的你们准备了一些软件设计师教程考点精讲之Java编程性能措施,希望对大家有所帮助. ...

最新文章

  1. mysql导入分卷_php实现mysql备份恢复分卷处理的方法_PHP
  2. 第二阶段团队项目冲刺第七天
  3. C#窗体中的textBox怎么设置为密码框
  4. easyui框架前后端交互_Easyui Datagrid增删改及后台交互(java)
  5. SAP WebIDE 里开发 SAP UI5 应用时,使用 Ctrl + Space 实现代码自动完成功能
  6. C++编程调试秘笈(第1次阅读)
  7. MySQL进阶之索引
  8. BGP 同步 黑洞 peergroup rr 联邦 full-mesh
  9. Python3匿名函数字典排序、生成式与生成器、装饰器简介
  10. django访问mysql数据库--模型(model)
  11. ES10新特性_Object.fromEntries---JavaScript_ECMAScript_ES6-ES11新特性工作笔记057
  12. 揭秘富人见不得光的第一桶金都是怎么来的
  13. 浙江省二级计算机试题,2015浙江省计算机等级考试试题 二级ACCESS考试题库
  14. SQL注入-04-(最后有实战教学)关系注入逻辑注入
  15. php中table是什么意思,table标签是什么意思
  16. 微信24小时客服热线电话/如何转到人工服务办理
  17. qconf 配置中心 php,QConf
  18. dvwa之 file upload (low)一句话木马和中国菜刀
  19. 如何用python实现一个简单的自动评论,自动点赞,自动关注脚本?
  20. 物联网毕业设计选题大全

热门文章

  1. 【图像超分辨率重建】——HAN论文精读笔记
  2. java服务端用到的javase的基础知识_javase基础篇知识归纳
  3. 2015-12-12 java hibernate 微信表情昵称保存
  4. 阿里云 云速美站 --快速搭建个人网站
  5. 【魔方攻略】五魔方教程(原创)
  6. 前端程序员快速画原型的方法在这里
  7. Matlab图片预处理——截取图片中有效部分保存在其余文件夹下
  8. Android定位功能(二)
  9. 第四篇:读《穷查理宝典》
  10. 龙,中国,不是dragon