1.业界两种门控时钟的做法
门控时钟用于低功耗设计。但是业界通常有两种做法,一种是在所有always块中加enable信号(如下所示);另一种是专门写个门控时钟模块,这个模块输出新的时钟信号,然后再驱动其他模块。
always@(posedge clk)
if(enable)
Q <= D;
很显然,如果所有always块都加上enable,那工作量实在是太大了。用第二种方法的话,模块设计人员不用在设计的时候考虑enable信号(写代码的时候,写着写着就很容易遗忘)。
2.DC对于第一种做法是可以自动识别的,在compile命令执行之前,需要用两个命令才能识别出来(如下)。
先来看下,不自动识别成门控时钟和识别成门控时钟这两种情况的电路结构有什么区别:

由上面的图可以看出,插入门控时钟单元后,原有电路中的MUX就不需要了,如果数据位宽是多bit的,插入clock_gating后,电路面积可能会减少;但如果数据是单bit信号,那么节省的功耗就比较少。
因此,工具可以根据位宽来决定是否增加门控时钟。如果位宽很小,那么插入的clock_gati

最低0.47元/天 解锁文章
9463

被折叠的 条评论
为什么被折叠?



