​数字IC后端设计中Hold违反的修复方法

本文转自:自己的微信公众号《集成电路设计及EDA教程》

 

数字IC设计,只有CTS之后开始考虑修复hold,下面按照从前到后的流程逐一讲解每个阶段如果出现Hold违反该如何解决。下面用到的命令,主要针对的是Synopsys公司的布局布线工具ICC。还有需要注意的是,hold的修复不用做到每一个阶段都是Clean的,比如说,对于比较老的0.18 um工艺,CTS之后有0.1 ns左右的WNS违反还是可以接受的,毕竟后边还有布线的操作,线延迟也是有益于hold的;布线之后存在非常少量,且量级在0.01左右的违反也是可以接受的,可以通过focal_opt来解决。

focal命令使用讲解:ICC中的focal_opt命令讲解

 

解决hold违反最常用的方法就是在组合逻辑路径上插入Buffer了,举个例子:

>insert_buffer [get_pinscoeff_in_block*/C] [get_lib_cells */BUFHSV2] -no_of_cells 2

同样我们也可以像修setup那样,手工采用usefull skew来修,但是这样太麻烦了,不建议采用,可以用CCD的功能让ICC自己去修。

下面按照时间先后顺序讲解修复Hold的自动以及手动方法。

 

1、CTS之后,布线之前:

>psynopt -only_hold_time

psynopt命令有两种功能:

执行增量时序驱动的逻辑优化;

Legalizes placement

 

2、布线阶段:

2.1 可以用CCD来修复:

>set_concurrent_clock_and_data_strategy

>route_opt -concurrent_clock_and_data

 

2.2 通过指定布线优化选项来修复:

>route_opt -incr -only_hold_time

 

3、chipfinish阶段:

3.1 可以用CCD来修复:

>focal_opt -concurrent_clock_and_data\

    -hold_endpoints all

 

3.2可以让软件自动对所有hold endpoints来修复:

>focal_opt -hold_endpoints all \

    -effort high

其实可以指定某些hold endpoints来单独对它们进行优化,但是自己尝试发现没有什么用,没有PT效果那么好。

 

3.3 指定REG2REG路径进行修复

如果违规都集中在REG2REG的路径上,那么用下面的命令更好:

>focal_opt -hold_endpoints all \

    -register_to_register

 

3.4 手工ECO修复

如果在某个具体阶段,用命令进行自动修复的方法无法将Violation修复,且违反的值很大的话,就需要手动插入buffer或者delaycell来解决了,即采用ECO的方法来手工解决。在插入之前要确保没有插入Core filler,或者有Filler的话要remove,需要注意的是不用全部remove,在放置eco cell的命令的后边会有移除部分filler的选项哟,这个非常棒。

ICC中插入buffer或者delay cell的命令举例:

>insert_buffer [get_pins coeff_in_block*/C] \

    [get_lib_cells */BUFHSV2] \

    -no_of_cells 2

插入的Burffer是随便放置的,可能和其他Cell重合了,或者没有放置在Row上面,需要将其摆放在合理的位置上:

>legalize_placement -cells {xxx aaa} \

    -remove_filler_references “$FILLER_CELL”

或者用:

>place_eco_cells -eco_changed_cells \

    -leaglize_only \

    -remove_filler_references “$FILLER_CELL”

插入的buffer是没有连线的,需要用ECO来对其连线:

>route_zrt_eco -reroutemodified_nets_first_then_others

这个做完之后要检查是否有违反,如果都解决了的话可以重新插入Filler了

 

3.5 用PT进行ECO修复

当然这些也是可以不用手工ECO的方法,而将整个设计的网表、spef导入PT,让PT自己修复,然后导出ECO的脚本,然后将脚本导入ICC进行修复,不过感觉这个过程挺麻烦的,还不如手工来的方便,具体方法可以参见ICC ECO流程那一部分。

相关历史推文:

ECO(Engineering Change Order)

PT ECO教程及tcl脚本分享

 

公告

本公众号在网易云课堂上线了,名为“随芯所欲”,最近新出了《Calibredrv教程-提高流程自动化》《搭建IC设计的EDA虚拟机/服务器》,谢谢关注与支持。

链接:https://study.163.com/course/introduction/1005909004.htm

网易云课堂

《Calibredrv教程-提高流程自动化》

 

  《搭建IC设计的EDA虚拟机/服务器》

 

 

 

 

posted @ 2020-02-12 16:24  Horizon00  Views(3535)  Comments(0Edit  收藏  举报