首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ispatial | Early clock Flow

Ispatial | Early clock Flow

作者头像
老秃胖驴
发布2020-04-27 10:59:14
5.3K0
发布2020-04-27 10:59:14
举报
文章被收录于专栏:陌上风骑驴看IC陌上风骑驴看IC

Genus Ispatial flow 自2019 年推出以来,广受客户青睐,AE 们接客接到腰酸腿软颈椎弯。Ispatial flow 除了跟Innovus 更好的correlation 之外还有两大特点,其一是CRR: Critical region restructure, 也就是逻辑重构;其二就是Early clock flow, 为了知其然老驴研读了几天Early clock flow, 今天以一篇appNote 为参考,做个学习小结。

Early Clock Flow 是个啥?


Early Clock flow 是前几年Innovus 中的一项技术革新,其呈现是在Placement 的时候做clock tree; 其思路同样是『早发现早治疗』;其做法是在place_opt_design 时调用CCOpt 的fast clock tree clustering 来build clock tree; 其好处大致有二:其一是可以及早看到CTS cell 对congestion 的影响, 其二是可以及早精确看到ICG 相关的timing. Early Clock flow 自面世以来已经过上千个设计的检验,虽然Early Clock flow 跟设计强相关,但是对大部分设计都大有裨益,尤其是时钟简单的高性能核。此外Early Clock flow 跟CCOpt 的useful skew 相结合可以进一步改善PPA.

Early Clock Flow 怎么用?


因为Early Clock Flow 是在place_opt_design 中调用fast CCOpt CTS clustering, 所以必须在place_opt_design 之前将CTS 的设置设上,如:

然后在place_opt_design 中将Early Clock Enable:

在Innovus 里做CTS 需要clock tree spec, 可以读入一个已有的spec 或用命令create_ccopt_clock_tree_spec 创建一个spec. 如果没有读入也没有创建spec, Innovus 在place_opt_design 的时候会自己创建一个spec 并且在place_opt_design 结束时将其删除。在log 中可以找到如下信息:

如果db 中已有了spec 则会在log 中找到如下信息:

place_opt_design 创建了CTS spec 之后,先会做一次global placement, 然后build clock tree. 在log 中找DAG (Directed Acyclic Graph) 可得到:

  • Number and type of buffers and inverters used for the clock tree
  • Clock tree wire lengths for top
  • trunk and leaf nets
  • clock net violations
  • skew group summary together with its minimal, maximal insertion delay, skew, skew targets

Clock Tree build 好之后,工具会在如下步骤间多次迭代:

  • incremental placement
  • timing optimization
  • useful skewing
  • congestion repair
  • power optimization

在log 中会看到如下信息:

Early Clock Flow 结果呈现


如果enable 了Early Clock Flow 在place_opt_design 的log 中会找到许多跟CCOpt 相关的信息,在place_opt_design 结束时会将useful skew advancing 和Delaying 的信息写到log 中,也可以用report_ccopt_pin_insertion_delays 报出相应信息。

如果同时enable 了Early Clock Flow 和Useful Skew, place_opt_design 结束时会生成一张如下的summary table:

同样可以在log 中找到insertion Delay 的信息:

如果enable了 Early Clock Flow, place_opt_design 之后report timing 展开clock path 会看到在clock path 上已经有了真正的clock tree cell. 但是由于clock network 是ideal 的所以在timing report 中看到的clock cell delay 都是0. insertion delay 会用命令set_clock_latency 以latency 的形式写到下面文件中:

<DB>/mmmc/views/<view>/latency.sdc

如果enable 了Early Clock Flow, 在ccopt_design 之前不要做reset_cts_config 或reset_ccopt_config, 否则前面的insertion delay 值会被删掉。Innovus 读入latency.sdc 后,会将set_clock_latency 转化成命令set_ccopt_property insertion_delay. 但是需要注意的是,在set_clock_latency 命令中,负值表示往前推clock, 正值表示往后推clock; set_ccopt_property insertion_delay 正好相反,负值表示往后推clock,正值表示往前推clock, 其对应关系是:

ccopt_design 会将place_opt_design Early Clock Flow 中插入的clock tree cell 都删掉,并重新build tree. 如果在run ispatial flow 时enable 了Early clock flow, 在Innovus 中不论是netlist handoff 的full place_opt_design 还是db handoff 的incremental place_opt_design 都不会删掉前面build 的clock tree cell, 数据交互同样是用set_clock_latency.

举个栗子


这是一个简单的设计,这个设计没有congestion 问题,但是有ICG timing 的问题。

  • run1 without Early Clock Flow
  • run2 with Early Clock flow

place_opt_design 之后可以用clock tree debugger (CTD) 来显示clock tree 及insertion delay.

最后一点


在Ispatial flow 里除了Early Clock Flow 也有useful skew 的控制,useful Skew 在place_opt_design 中默认是开启的,可用如下变量控制:

Early Clock Flow 跟useful skew 是相对独立的。


驴说IC

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陌上风骑驴看IC 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档