门控时钟主要是降低功耗,举个例子
always (posedge clk or negedge rstn)
if (!rstn) a <= 0;
else if (en) a <= a_pre;
else a <= a;
类似这样有显式或隐含a<= a;这样语句的寄存器,可以插入icg,因为a <= a的时候寄存器值不变,不插入icg的话,虽然值不变,但是时钟还是在翻转,而时钟翻转的功耗在电路中占比中比较大,插入icg之后,在a<=a的分支上,时钟是不翻转的,这样可以降低功耗,但是并不改变function,具体icg可以查查资料,用icg的目的都是降低功耗