打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Ispatial | Early clock Flow
userphoto

2023.10.27 上海

关注

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
手把手教你如何在Innovus中分析clock tree质量
【学术论文】Multi-Tap FlexHtree在高性能CPU设计中的应用
Clock Tree Synthesis---2
博客推荐:静态时序优化策略“三十六计”
CTS的前世今生
Standard Cell 介绍——CK & DCCK Cell
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服