数字逻辑综合工具实践-DC-07

——综合优化(二)和RTL coding 和DFT

主要内容:
1、 Pipeline优化
2、 RTL设计时的一些注意事项
3、 DFT简介
(DFT是后端里很重要的一步)

【流水线寄存器】

组合路径过长,timing不满足,可根据经验插入寄存器。


(三级流水线)
并不是拆的越散越好。
代价:DFF的面积和初始化的延迟。
【set_optimize_registers true】

专门对流水线寄存器做优化的选项(必须要用Compile_Ultra)
(跟Retime很像)

把前一级的violation很后面的slack匀一下

set_optimize_registers 和 -retime 可以同时设置,set_optimize_registers 对流水线寄存器更专一。
!](https://img-blog.csdnimg.cn/20191023164954233.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzY1NjQ3,size_16,color_FFFFFF,t_70)
【pipeline怎么写?】**

左:组合逻辑堆一起,输出再堆一坨寄存器
右:输入堆一坨寄存器,组合逻辑堆一起
(比较省事儿的做法,也可以人为地插进去。)
(这种结构要用set_optimize_registers去调整,如果忘了加那个命令就完了(有可能写代码的人和做综合的人不是同一个))

另外:针对这些纯粹的Pipeline结构,只要控制信号做的好,reset端可以不要。


1、 插进去,做最小时序的优化
2、 做最小面积的优化
3、 逻辑优化(时序均衡)

v
可以针对某一个设计去指定流水线寄存器的优化。


调整了之后,寄存器会重新命名,S#表示是流水线的第多少级
这些调整信息都会放入default.svf文件,交给后端的Formality,做形式验证。
【set_dont_retime】

希望保持寄存器输出,timing budget会比较好算。
如果是组合逻辑输出,会引入毛刺。
要指定:哪一个寄存器不允许做retime的变动。

【多核】

服务器上可能由很多的核,为了做并行的工作,减少运行的时间,可以使用命令set_host_options -max_cores # 申请多核工作。
(只是申请,不一定能给到。)
report_host_options可以查看主机的核的个数。

更多的核需要更多的license,也就是说要付更多的钱……

多核工作也可以取消掉,设为1即可。

!](https://img-blog.csdnimg.cn/20191023165042776.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMzY1NjQ3,size_16,color_FFFFFF,t_70)
【综合后报告】

违规要关注几点:
1、 Timing违规:如果是后端的hold time violation,不是什么大问题,很容易被优化掉。如果是setup violation,如果优化不掉,需要人为手动地去解决。
2、 DRC的违规一定不能有
3、 面积违规的问题不大。

【report_timing】

【增量综合】

1、第一次做综合:不要边界优化、不要打散模块、加入扫描链寄存器……
2、综合之后,查看一下timing有没有问题,查看一下violation是不是很大。
3、把最差的那条路经拿出来,权重设高一点。
4、-incremental做增量编译(在逻辑优化和gate level之间做循环优化,不会做结构级优化)。

【如果还是有violation怎么办】

【Coding Style】


DC能做的其实没有多少,要想做好的电路,需要好的RTL设计。

【资源共享】

节省面积。
但是DC不一定能帮你做这些优化。

比如SEL前面接了一堆逻辑,DC分析出来SEL的时序很差,从SEL到SUM是一条关键路径,这个时候DC不会把左边变到右边。


这么写,compile DC不会做优化,但是compile_ultra会!

(强制资源共享:先做选择、再做加法)
写代码的时候很容易想不起来…

顺序重排,路径差的安排得离输出端口近一些。


通过加一些括号,compile不会帮你做调整了。
但是compile_ultra还是会……(可牛逼了(插腰))

【for循环】

(8个加法器和一个选择器)

(8个选择器和一个加法器)

【Design for Test】

芯片是交给代工厂去生产的,但是不能保证完全没有灰尘。有灰尘就坏掉了,如何检测出来故障(短路开路)?
(一定是由机器去做的。)

在同样的激励条件下,结果不一样——有问题。
这样的测试设备叫ATE(自动测试设备)。
生成输入激励和检测信号的设备叫ATPG(这个设备只负责生成模拟,不负责物理上的测试)。

【Stuck-at fault(SAF)】

比如这是一个反相器,假如在生产的过程中,掉入了一个灰尘,把输入端和地短路了——停滞在某一个状态。

不管B怎么变化,U1的输出都是0。
如何检测出这样的错误?
A接1,C、D接0,那么在正常情况下Z=~B
如果出现了图中的故障,B输入0,那么Z=0。

加上这个激励的目的是——让这个故障的影响能够传递到输出端口去!

discrepancy算法(差异算法)。


如果有一堆寄存器在里面,想办法把寄存器串成一个链,做成移位寄存器!组合路径中的错误就能测出来了。
=>用mux做成扫描链
(在做综合的时候要考虑做DFT插入扫描链会不会有问题——-scan选项的用处)
要真正形成一个链,需要用DFT Compiler工具去做。
参考大规模芯片测试。

数字逻辑综合工具实践-DC-07 ——综合优化(二)和RTL coding 和DFT相关推荐

  1. 数字逻辑综合工具实践-DC-08——静态时序分析(STA)

    数字逻辑综合工具-DC-08 时序分析 综合结束之后,如何确定这个网表能不能用. [Timing Reports] report_timing Incremental 信息包含了Net 和 Cell一 ...

  2. 数字逻辑综合工具实践-DC-10——CDC约束

    [分频时钟input delay] (找短的间隔) [多时钟output delay] 记得要用add_delay 也是找短的 [时钟之间的uncertainty] 模仿两个时钟之间的偏移量 要用-f ...

  3. 数字逻辑综合工具-DC-06——综合优化过程

    数字逻辑综合工具-DC-06 --综合优化过程 编译的策略:Top-down (做设计有两种策略:top-down 和 bottom-up) 设计一定是一种层次化的结构,一层一层地去例化 Top-do ...

  4. 数字逻辑综合工具-DC-04 ——怎样增加时序约束(Timing Constraints)

    数字逻辑综合工具-DC-04 --怎样增加时序约束(Timing Constraints) 逻辑综合的过程为:转化 优化 映射 另外还有环境约束和面积约束 时序有三个大的方面 input logic ...

  5. DC课程笔记-数字逻辑综合工具-DC Environment Attributes

    文章目录 课程内容笔记46:57开始至末尾 本节来源网络视频笔记 主要介绍DC的时序timing约束 课程内容笔记46:57开始至末尾 移除设计 remove_design -hierarchy 查看 ...

  6. 数字逻辑综合工具-DC-11——一些其它命令和综合之后的文件

    对于reset 和clock这种大扇出的信号来说,必须要人为设置为ideal network,不要让DC动它,因为线负载模型对于这些大扇出的情况估算不准. 如果不添加don't touch属性的话,D ...

  7. DC课程笔记-数字逻辑综合工具-DC Synthesis Optimization Techniques

    文章目录 课程内容笔记00:00开始至 本节视频来源于DC视频教程,本节主要约束环境 课程内容笔记00:00开始至 芯片的输出端口要驱动一个负载,如何在DC综合时候就模仿在流片回来后的输出管脚的负载, ...

  8. DC基础学习(四)综合优化的三个阶段

    Design Compiler(以下简称DC)是Synopsys公司用于做电路综合的核心工具,可以将HDL描述的电路转换为基于工艺库的门级网表.本系列主要介绍综合相关的知识以及DC工具的使用. DC进 ...

  9. 逻辑综合工具DesignCompiler使用教程

    逻辑综合工具Design Compiler使用教程 图形界面design vision操作示例 逻辑综合主要是将HDL语言描述的电路转换为工艺库器件构成的网表的过程.综合工具目前比较主流的是synop ...

最新文章

  1. AI犯错谁之过?切勿盲目相信之
  2. 04_有序清单无序清单
  3. ubuntu_常用命令_01
  4. 西安圈子聚会心得分享
  5. sqlserver 微信 读取_Sql Server使用链接服务器远程取数据_sqlserver
  6. (138)FPGA面试题-Verilog HDL中function和task的区别(二)
  7. guid主分区表损坏_固态硬盘用mbr还是guid
  8. Linux中删除文件夹和文件的命令
  9. 面向对象15:单例设计模式、main方法的使用
  10. psasp和matlab,PSASP与Matlab/SimPowerSystems联合仿真接口方法研究
  11. HTC HD2解锁详细教程
  12. cad计算机画图标准,CAD高级绘图员鉴定标准
  13. android win7共享文件夹,win7系统共享文件夹如何用手机看电脑里面的电影
  14. 【python pcl】Windows 10 python pcl 安装与测试
  15. 【操作系统安装与引导】CSM与安全启动对UEFI引导的影响与处理
  16. 10G家庭光纤网络如何部署?
  17. Java学习笔记(五):Java多线程(细致入微,持续更新)
  18. 在CAD里怎么测量面积?
  19. LTE网络有关系统消息(MIB/SIB)深度解析
  20. cms概述 。比较shopex和ecshop区别 。smarty模板引擎的入门

热门文章

  1. P1508 Likecloud-吃、吃、吃(C++_dp)
  2. NLP:文本情感分析快速入门
  3. Windows编程之Window介绍
  4. [康宁]浅论亚里士多德对柏拉图“理念论”的批判与继承
  5. HDU 1290:献给杭电五十周年校庆的礼物
  6. 一张图读懂PBN飞越转弯衔接DF航段计算
  7. 这个代码很神秘自用(别点开,你看不明白的)
  8. 软件架构场景之—— BFF:如何处理好微服务之间千丝万缕的关系?
  9. Exchange Server 2010部署(一)部署Windows Server 2008 R2域控制器
  10. flickr php,phpFlickr并从Flickr获取图像