当前位置: 首页 > news >正文

时钟门控ICG单元的timing问题

除in2reg、reg2reg、reg2out、in2out类型路径外,我们会经常看到reg2cgate的setu/hold检查,即clock gate上enable信号要比clock信号提前到达一段时间setup和保持一段时间hold。

在 STA sign off分析时,经常会碰到clock gating cell(默认全是ICG)的setup timing violation,而且很难修。那么如何保证ICG中Latch的时序呢?本文总结一下下吧。

低功耗之门控时钟设计

数字IC中后端ICG(Integrated Clock Gating)的Enable信号路径容易发生Setup违例,如下图,由于reg1&reg2在同一skew group下,工具默认会做平这两个sink点,所以T1就约等于T2+T3。但是中间插着ICG cell所以到达ICG CK端的capture lantency T2是一定会<T1。这样一来在检查ICG时序(这里讨论setup)的时候就会出现Setup违例。

Tskew = T2-T1 为负,减小了setup slack,不易满足setup需求。

ICG enable timing violation这个问题是很常见的,通常是pre-CTS还好好的,post-CTS就冒出来了,因为ICG不是clock tree中的sink却是timing path的endpoint, 默认流程中其latency会比sink端的latency小(比ICG enable timing path的startpoint小)。

如下图所示,pre-CTS的时候默认latency1=latency2=latency3=0,但是做完CTS后latency1=latency2+latency3

既然通常clock gate上的setup较难收敛,那么解决办法呢?

  • 尽量让ICG 在reg2附近,这样一来T3就~=0 即 T1约等于T2。
  • 采用set_clock_gating_check,加大对clock gating时序约束。

对于clock gating cell,synthesis时就会插入,和CTS没太大关系,一般只要确保clock timing check打开的就行。

详解set_clock_gating_style命令

  • 把clk lantency1 做短lantency3
    在place阶段,在ICG的CK pin设置一个负的latency,这个负的latency的值可以大概等于CTS之后lantency3的delay大小;这样就可以让tool在给reg1生成时钟树时,会尽力将lantency1 (即reg1的launch path)做短至少lantency3(ICG→reg2的时钟树长度)的大小。Place阶段工具也会考虑时钟树skew引入的时序问题,ICG cell尽可能的靠近reg2并且不要在path上过多插入delay。

    高性能CPU的ICG Latency设置


report_timing -path_type full_clock


请问这里SDC为何约束到了ICG的CP端外,还约束了ICG的Q端?假设注释掉Q端的约束,如下图,会有什么问题?


去掉后,timing报告如下,明显setup timing变差了很多。


report_timing -path_type full_clock


因此,约束ICG的latency为-400ps,目的是把ICG从reg拉开400ps,如果不约束ICG的Q,那么工具为了minimize skew,会默认ICG后面所有的reg的CLK的latency和ICG是一样的-400ps。此时,时钟还是是理想的。因此需要给ICG的Q端也约束上latency,此处约束为-50ps。不经过这个ICG的CLK pin默认latency为0。
注意,ICG本身容易setup violation,默认icg 和reg 越近越好。

  • place 阶段Innovus命令:
    set clock latency -0.500 [get pins ICG/CK]在CTS阶段,在reg1的CK pin上设置一个insertion delay,这就是所谓的floating pin,这个insertion delay的值大概也等于CTS后T3(ICG→reg2的时钟树长度)的大小。Innovus命令:set ccopt property insertion delay 0.500 -pin reg1/CK

注意,查看DC user guide你会发现:

有的同学会认为“set_clock_gating_check只是单纯用于组合逻辑实现的gating,例如直接把时钟和EN 拉到一个与门上,才需要用这个命令,而ICG不是set_clock_gating_check这个命令的范围”。这观点是错误的!

实战一下:set_clock_gating_check约束在ICG cell上

report_clock_gating_check:

set_clock_gating_check U_FIFOMEM/clk_gate_mem_reg[15]/latch/EN -setup 10

可见,set_clock_gating_check约束在ICG cell上是成功的!

dc_shell> get_cells U_FIFOMEM/clk_gate_mem_reg[15]/latch

总之,gating cell一般出现在clock path的中间,而且往往比较靠近clock source,其latency 较小,在CTS(clock tree synthesis)综合时钟树的时候,ICG不会被看作sink因此并不会作为balance对象。

也就是说:

  • 当check gating cell 的timing 时,其sink point 是在gating cell的CK端;
  • 当CTS时,sink point是在gating cell后面的register;

而set_clock_gating_check是一种过约,是除了uncertaintly之外额外加在REG2CGATE路径上的约束。以使得ICG尽量摆在离后面寄存器更近一点。

另外,set_clock_gating_check约束通常只会在place阶段设置,在CTS及其以后取消掉。

在Place之前:

set_clock_gating_check

在CTS之后:remove_clock_gating_check

另外,CTS工具会对其做clone、declone操作。

  • ICG cell Clone: 同一个ICG单元控制的寄存器较多或者分布不均匀时,就会导致ICG时钟连线过长,可通过clone ICG cell进行优化;
  • ICG cell De-Clone: 同一个ICG单元控制的寄存器较少,导致ICG cell数量过多,可通过De-clone ICG cell进行优化;

http://www.dtcms.com/a/467593.html

相关文章:

  • 2.8 提示词调优编码实战(三)
  • 不注册公司可以做网站吗做瞹免费视频网站
  • 做淘宝客网站难吗好用的h5制作软件
  • 给公司做网站多钱五金表带厂东莞网站建设
  • 上海做网站设计黑龙江建设厅网站 孙宇
  • 苏州工程网站建设网站建设服务便宜
  • 手机网站空间代发关键词包收录
  • 垫江网站建设无锡公共建设中心网站
  • 广安发展建设集团公司网站培训机构网站开发
  • 建筑建材网站设计费用广州网站建设易企
  • 寻找新一代跨境数据传输解决方案
  • AMD显卡驱动怎么安装 详细教程分享
  • 网站的制作成品电子商务公司的经营范围有哪些
  • 网站微信建设方案三字顺口公司名字
  • 如何免费注册网站平台专业建站公司费用
  • 品牌网站都有哪些建设通查询
  • 网站关键词排名100做展示类网站
  • 深入应用层协议定制:从确定通信内容到选择数据组织方式的完整攻略
  • 苍山做网站网站上做旅游卖家要学什么
  • 怎样制作一个个人网站建设一个网站的硬件要求吗
  • 面向MCP协议API的智能测试框架:多源数据融合与协议自适应研究
  • 医疗设备控制系统中同步与异步通信的架构设计
  • 怎么上传网站iis世界500强企业名单排名
  • 怎么做游戏网站编辑建设一个网站多少钱呢
  • 建设网站dns如何设置做网站需要那些东西
  • 服务器配置isaacsim报错没有图形化窗口/串流方案
  • 中英文网站开发费用Python电影网站开发
  • ui设计公司官网昆明seo网站排名优化
  • tp3.2.3网站开发实例本地服务类网站成本
  • 网站开发中的文档公司网站建设价格