当前位置:首页 > > 艾思后端实现


上次的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的综合网表的最终功耗

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭