什么是門控時鍾?
Clockgating:在數據無效時,將寄存器時鍾關閉的技術,能夠有效降低功耗, 是低功耗設計的重要方法之一。門控時鍾其實就是一個邏輯模塊,在寄存器的輸入數據無效時,將寄存器的輸入時鍾置為0,而此時寄存器值保持不變,此時沒有時鍾翻轉,避免了動態功耗。
如何生存門控時鍾?
在IC設計中,編寫RTL代碼的時候,只要采用合理規范的編碼風格,即可以通過EDA工具自行產生門控時鍾模塊。
舉例如下:
推薦風格:可生成門控時鍾
always@(posedge clk or negedge rst_n) if(!rst_n) data_out<=8’b0; else if(data_vld) data_out<=data_in;
不推薦:無法生成門控時鍾
always@(posedge clk or negedge rst_n) if(!rst_n) data_out<=8’b0; else if(data_vld) data_out<=data_in; else data_out<=8’b0;
推薦的風格代碼在else分支忽略,此時意味着在data_vld無效時data_out保持不變,此時狀態與clock保持為0一致,因此具備生成門控時鍾的條件,而不推薦風格代碼,在data_vld無效時data_out為0,不符合門控時鍾的狀態,因此無法生成門控時鍾。
上圖兩個電路圖均為推薦風格代碼的映射電路圖,右側為采用門控時鍾設計的電路圖。采用推薦風格代碼的代碼即可以通過EDA工具自行插入門控時鍾。
由於門控時鍾邏輯具有一定的開銷,因此數據寬度過小不適合做clockgating。一般情況下,數據寬度大於8比特時建議采用門控時鍾。
實際芯片使用的門控時鍾模塊是后端廠家專門設計的模塊單元,而不僅僅是圖上的簡單設計。
---------------------
作者:IC小鴿
來源:CSDN
原文:https://blog.csdn.net/icxiaoge/article/details/80792819
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!