Clock_gating之浅见番外
扫描二维码
随时随地手机看文章
上次的Clock_gating之浅见的文章发表后,得到了一些热心朋友的反馈,这里就以下几个问题来做进一步的探讨:
1:clock gating max_fanout的限制
在DC里边的命令set_clock_gating_style有一个-max_fanout的选项,这个变量的意思是在创建clock-gating的时候,工具对clock-gating的fanout的一个限制,如果使用如下命令:
set_clock_gating_style -max_fanout 32
如果设计里边的clock_gating有 50个fanout,那么工具最多只会让每一个CG后边带32个fanout,工具后会创建出一个新的CG,来驱动另外的18个fanout,如下图:
这个和SDC里边的set_max_fanout没有关系,这里的设定也不会影响set_max_fanout的配置。
在默认情况下,用户如果不设定这个选项:-max_fanout,DC会使用一个非常大的值来进行限定,据查,这个值是:2147483647。所以,在默认情况下,只要你的register bank不超过这个值,DC都只会使用一个CG来驱动fanout。如果在多负载的情况下出现了max_transition、max_capcitance的DRC violation,工具会构建buffer tree来解决,但不会产生更多的CG cell。
2:CG在一致性验证下的处理
在RTL阶段,我们是没有CG结构的,那么综合的网表多出来的CG需要折回RTL的结构来进行比较,否则会有大量的CG not-mapped的问题,这里需要使用如下命令来在Conformal里边解决这个问题:
工具在做module flatten 的时候,会把CG的结构转回成RTL的结构,来做比较一致性比较
3:关于面积和功耗
在上一讲中,谈到了在使用CG个时候面积的变化,
虽然增加了一个CG ,但是由于组合逻辑的整合,整个面积还减少了3.3%
这样,可以看到在这个design里边,整个combination logic可以省掉1.1172的面积,相较于8.3790的原始面积,还是很可观的(13.3%),具体面积信息如下图所示:
功耗的理论大家都知道的,如果cell 的 数量和面积减少,无论是动态功耗、短路功耗还是漏电功耗都是可以降低的。
除过减少面积的功耗提高外,就原先的FF而言,由于clk的变化频率降低,导致了FF的internal power也会降低,所以从功耗上讲,在打开CG后会有以下的变化,
其中:
P_orig_all : 原始的网表全部功耗,不带CG优化
P_cg_all : 新引入的CG所带来的功耗
P_combin_save_all: 逻辑整合后被优化掉的组合逻辑的功耗
P_reg_bank_internal: 被CG驱动的FF上的internal power
P_cg_insetion_all: 带CG的综合网表的最终功耗





