ljm_147258mei的个人空间 https://blog.eetop.cn/1768385 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

innovus时序优化的一些方法

已有 213 次阅读| 2024-8-13 11:54 |个人分类:innovus|系统分类:芯片设计

1、难收敛的半周期(负沿)的timing check,violation较大的情况

     设置单独group path去优化,避免影响内部其他path时序优化

     使用ostrich软件(innovus安装包中自带这个工具)把需要对比的两个阶段的spef文件进行对比,得出rc scale,

      在pr阶段设置上让工具根据更趋近于际net delay的值去计算timing,看到违例更好的优化

  update_rc_corner -name CMAX_m40c
     -pre_route_res $a
     -post_route_res {1 1 1}
     -pre_route_cap $b
     -post_route_cap {1 1 1}
     -post_route_cross_cap {1 1 1}
     -pre_route_clock_res 0
     -pre_route_clock_cap 0
     -post_route_clock_res {1 1 1}
     -post_route_clock_cap {1 1 1}
     -temperature -40
     -qrc_tech $qrc_file


3、对于两个skew group的时钟,如果两个时钟之间有check,可通过命令对这两个group做balance

  #在create_ccopt_clock_tree_spec之后使用
  create_ccopt_skew_group -name SG -balance_skew_groups {CLK1/func CLK2/func}


4、手动做短树,把工具用于垫树的cell(cdb)删掉,inv注意要删偶数个,删完要看一下位置,距离远的摆一下,避免trans

  setEcoMode -batchMode true -honorDontTouch false -honorDontUse false 
  setEcoMode -honorFixedNetWire false -honorFixedStatus false -LEQCheck false
  setEcoMode -updateTiming false -refinePlace false
  
  ecoDeleteRepeater -inst {xxx xxx}
  #ecoAddRepeater -inst
  
  setEcoMode -reset
  ecoRoute

5、common tree做短,可手动将common path的inv/buffer摆放并固定

   placeInstance cell_name location -fixed

6、通过place前设置guide/region/fence对module或指定的hier的inst进行优化时序,根据数据流的走向摆放guide/region,人工控制module的摆放位置,减少物理距离,guide约束力最低,fence约束力最强,一般控制工具摆放用region会相对合适些


7、优化reg2cg的时序,可通过clone icg,当func setup和shift hold有冲突的时候,可通过clone mux

   create_inst -base_cell ref_name -name full_name
   create_net
   disconnect_pin
   connect_pin


8、early clock flow,在place阶段提前发现问题,也会对时序有较好的作用

#ECF#
setDesignMode -flowEffort extreme
#setOptMode -usefulSkewPreCTS true
set_ccopt_property clone_clock_gates true
set_ccopt_property clone_clock_logic true
#set_ccopt_property auto_limit_insertion_delay_factor 1.6
#setUsefulSkewMode -macroOnly false
#setUsefulSkewMode -delayPreCts true
setLimitedAccessFeature innovusEarlyClockFlow 1
setDesignMode -earlyClockFlow true

##
设置ndr rule

设置cts需要用的cell


9、对于block level的模块,端口时序优化in2reg/reg2out,最好在cts时打开update_io_latency

     原因:如果不打开update_io_latency(即不给端口补树),则cts后由于reg做了树,此时in2reg的setup就会变得很乐观,reg2out的setup很悲观,工具就不会对in2reg做优化,导致in2reg的datapath可能会走很长,而block合到top后,由于top level对这个port做了树,再加上我们内部datapath走的很长,很大可能会出现setup违例,导致返工的可能性,因此对于block level要打开update_io_latency,port(不管是否update_io_latency)都是从0开始,但对reg会补一个负的平均树长后,再评估in2reg setup是否有违例,是否要优化

评论 (0 个评论)

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 0

    评论
  • 20

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-9-27 07:24 , Processed in 0.013254 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部