DSMA工具修setup hold的方法

发布时间:2024年01月17日

DSMA :distributed multi-scenario analysis

在修时序的过程中,dsma的flow中最重要的指令是fix_eco_timing,下面讲讲如何使用这个指令修时序 。

在开始修setup的时候用:

fix_eco_timing -type setup -method size_cell -cell_type {combinational sequential} \

-slack_lesser_than 0.0 -setup_margin 0.0 -hold_margin 0.0? -verbose

这里是进行正常的修setup,setup在工具中一般是通过size_cell来修的。

修hold:

fix_eco_timing -type hold -methods {insert_buffer size_cell} -cell_type {combinational sequential}? -buffer_list {BUFX2 DLYX2} -slack_lesser_than 0 -setup_margin 0.0 -hold_margin 0.0 -verbose

修hold一般使用插buffer的方式多一点,后期可以把size_cell选项删掉。

每次修完用report_global_timing报时序,并查看详细的setup hold时序报告。

如果修不动,有哪些情况:

1.可能就是setup_margin或者 hold_margin太紧了,可以适当调松,调成负值是调松,再在工具里多修几轮setup和hold。

2.修hold的时候用的delay cell用的阈值比较高,它对setup太敏感了,如果后期使用,尽量用LVT的delay cell。其他的cell同理尽可能用低阈值的cell。

3.用-crosstalk报cell的串扰,串扰会使setup和hold一同变差,可以把串扰的位置抓出来单独处理。(size_cell,跳层,ndr,插buffer修trans)

4.有的寄存器用的HVT的cell,他对setup的影响很大,换成LVT会好很多(后期修不动的情况)

5.垫树,看前后级是否可以借,如果launch没用cdb的cell,那么说明树已经是最短,只能垫长来运用skew修时序,垫长也要看report_timing -from 看end点是否有margin,有就可以垫长。

5.在后期setup hold互卡的时候,如果不管hold,只修setup,而又都是最高驱动低阈值,可以使用-methods {remove_buffer}这个选项修setup,删去多余的buffer。

6.如果要指定只修reg2reg上面的可以选则-path_selection_options {-delay_type max -group reg2reg -max_path 10000 -nworst 500 }

文章来源:https://blog.csdn.net/qq_47912980/article/details/135596347
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。