關(guān)于 clock gating 已經(jīng)寫過:《clock gating | 從 ICG cell 在 library 中的定義說起》《clock gating | Gating 的插入與驗(yàn)證》《clock gating | clock gating 的 timing check》《clock gating | ODC-based Clock Gating》。最近在學(xué)習(xí) Joules 20.1 update training 時(shí)又接觸到了兩個(gè)新概念:combinational clock gating 跟 sequential clock gating, 觍著老臉去問研發(fā)大爺這是啥,大爺說:你丫不能自己谷歌一下嗎?于是在 ElectronicDesign 上找到了一篇好文章,深入簡出地描述了兩者的區(qū)別。
概括來說,combinational clock gating 就是通常所說的 clock gating, 它不改變電路的邏輯功能,對(duì)設(shè)計(jì)實(shí)現(xiàn)影響沒有,但是它只能省掉 clock 的多余 toggle.
Sequential clock gating 的搜索空間更大,在時(shí)序路徑多級(jí)寄存器之間進(jìn)行分析,找到所有冗余的翻轉(zhuǎn),該類 Gating 通常有兩種:
- 基于可觀察性的時(shí)鐘門控,對(duì)寄存器的寫操作在下游是不可觀察的。以下是第一種類型的示例,在某些情況下,在設(shè)計(jì)輸出端永遠(yuǎn)不會(huì)觀察到對(duì)寄存器的寫操作。如果信號(hào) vld_2 在特定周期中為低電平,則寄存器 dout 會(huì)保留其較早的值。這意味著在寄存器 d_2(回退一個(gè)周期,在 d_1,兩個(gè)回退周期)中發(fā)生的寫操作是多余的。基于可觀察性的時(shí)鐘門控可識(shí)別此冗余寫入,并基于 vld 信號(hào)添加合適的門控條件。
- 基于穩(wěn)定性的時(shí)鐘門控,寫入要求對(duì)設(shè)計(jì)進(jìn)行多周期分析。以下顯示了第二種類型的冗余寫入的示例。這是在連續(xù)的時(shí)鐘周期內(nèi)將相同的值寫入寄存器的地方。當(dāng)信號(hào) vld_1 和 vld_2 為低電平時(shí),寄存器 f_1 和 g_1 保持其先前保持的值。因此,在下一個(gè)時(shí)鐘周期寫入寄存器 f_2 和 g_2 的值與在前一個(gè)周期寫入寄存器 f_2 和 g_2 的值相同。基于穩(wěn)定性的時(shí)鐘門控可識(shí)別冗余寫入,并使用針對(duì) f_2 的 vld_1 的一個(gè)周期延遲版本(以及類似地針對(duì) g_2 的 vld_2 的一個(gè)周期延遲版本)來添加合適的門控條件。
下面一部分原文照辦,包括:
如何分析設(shè)計(jì)找到可以插入 Sequential clock gating 的點(diǎn)。
Sequential clock gating 可以多省哪些 power.
Sequential clock gating 對(duì)設(shè)計(jì)驗(yàn)證有哪些影響。
目前業(yè)界如何做 Sequential clock gating.
識(shí)別順序時(shí)鐘門控機(jī)會(huì)
組合時(shí)鐘門控已成為 RTL 綜合工具的一部分,并已成為優(yōu)化功率的可靠工具。綜合工具很少會(huì)錯(cuò)過組合的時(shí)鐘門控機(jī)會(huì)。但是,在某些情況下,對(duì)寄存器的自分配使用復(fù)雜的邏輯(跨越多個(gè)設(shè)計(jì)層次結(jié)構(gòu)或編寫為單獨(dú)的函數(shù)),這可能會(huì)導(dǎo)致 RTL 綜合工具難以識(shí)別組合時(shí)鐘門控。在這種情況下,設(shè)計(jì)人員可以簡化復(fù)雜的邏輯,并將其重寫為寄存器分配的“ if”語句,從而簡化 RTL 綜合工具的工作。但是,確定順序時(shí)鐘門控機(jī)會(huì)不在 RTL 綜合工具的范圍內(nèi)。具有功耗意識(shí)的設(shè)計(jì)人員嘗試分析寄存器的冗余訪問(不可觀察或穩(wěn)定的寫入),并尋找可以關(guān)閉此類訪問的條件。沒有一個(gè)已知的方法可以實(shí)現(xiàn)這一目標(biāo),并且隨著時(shí)間的推移,設(shè)計(jì)師大多會(huì)發(fā)展這種專業(yè)知識(shí)。即使這樣,在沒有適當(dāng)幫助的情況下,該過程也可能非常繁瑣且容易出錯(cuò)。向市場推出的順序時(shí)鐘門控工具可以幫助手動(dòng)探索順序時(shí)鐘門控機(jī)會(huì),也可以自動(dòng)進(jìn)行。設(shè)計(jì)人員可以根據(jù)自己的計(jì)劃和工具的舒適性來選擇所需的方法(手動(dòng)還是自動(dòng))。該工具必須滿足一些要求,以使 RTL 設(shè)計(jì)人員的工作更輕松,無論它是在自動(dòng)還是手動(dòng)探索模式下使用:
- 通過消除對(duì)寄存器的冗余寫入來獲得關(guān)于可能的總節(jié)電的早期反饋時(shí)鐘門控表達(dá)式以及有關(guān)如何將其放入 RTL 的說明,此外,還提供了一種更改表達(dá)式的方式,以便用戶可以對(duì)其進(jìn)行配置以滿足自己的要求(易于時(shí)鐘門控表達(dá)式的節(jié)電和面積成本的準(zhǔn)確估算如果工具錯(cuò)過了創(chuàng)建一些時(shí)鐘門控表達(dá)式的時(shí)間,則必須向用戶提供有關(guān)潛在節(jié)電和更改的信息(RTL,工具約束等),用戶可以用來幫助實(shí)現(xiàn)這些表達(dá)式
這樣的流程將使設(shè)計(jì)人員盡早通知設(shè)計(jì)中是否存在巨大的功耗優(yōu)化潛力。如果不是這樣,則設(shè)計(jì)人員可以只專注于目標(biāo),例如面積和性能。范圍級(jí)別還將指示應(yīng)該為功耗優(yōu)化付出多少努力。由于設(shè)計(jì)人員了解每種潛在更改的功率影響(包括時(shí)鐘門控表達(dá)式,RTL 或約束更改,具有最大節(jié)電潛力的寄存器等),因此設(shè)計(jì)人員可以根據(jù)交貨時(shí)間表確定更改的優(yōu)先級(jí)。在順序時(shí)鐘門控工具運(yùn)行完成后,設(shè)計(jì)人員將知道該設(shè)計(jì)已實(shí)現(xiàn)了多少潛在的總功耗節(jié)省。
順序時(shí)鐘門控對(duì)功率的影響
估計(jì)組合時(shí)鐘門控表達(dá)式的省電潛力相對(duì)容易。在降低驅(qū)動(dòng)寄存器的時(shí)鐘網(wǎng)絡(luò)的開關(guān)活動(dòng)之后,計(jì)算時(shí)鐘門控寄存器的功率變化。設(shè)計(jì)中存在禁用時(shí)鐘網(wǎng)絡(luò)的信號(hào),通過使用組合開關(guān)活動(dòng)傳播技術(shù),很容易計(jì)算出其對(duì)時(shí)鐘網(wǎng)絡(luò)開關(guān)的影響。但是,順序時(shí)鐘門控會(huì)改變?cè)O(shè)計(jì)的順序特性。例如,為了對(duì)圖 2 所示的電路執(zhí)行基于可觀察性的時(shí)鐘門控,信號(hào) vld_1 將用于選通即將進(jìn)入寄存器 d_2 的時(shí)鐘。這不僅會(huì)改變時(shí)鐘切換,而且還會(huì)改變寄存器 d_2 輸出上的切換活動(dòng),進(jìn)而會(huì)影響寄存器 d_2 整個(gè)扇出的切換活動(dòng)。下圖顯示了由于時(shí)序時(shí)鐘門控寄存器 d_2 而開關(guān)活動(dòng)將改變的區(qū)域(陰影)。如果僅報(bào)告對(duì)寄存器功率的影響,則可能會(huì)拒絕潛在的良好時(shí)鐘門控表達(dá)式(因?yàn)樗梢怨?jié)省大量的數(shù)據(jù)路徑功率)。
因此,為了計(jì)算準(zhǔn)確的功率,需要計(jì)算所有受影響信號(hào)和新信號(hào)的開關(guān)活動(dòng)。在做出優(yōu)化決策或向用戶展示機(jī)會(huì)時(shí),該工具必須考慮到連續(xù)時(shí)鐘門控更改對(duì)實(shí)際節(jié)電的影響。自動(dòng)化工具必須評(píng)估成千上萬個(gè)這樣的門控表達(dá)式,因此功效計(jì)算必須非???,同時(shí)不應(yīng)影響計(jì)算的準(zhǔn)確性。
驗(yàn)證影響
組合時(shí)鐘門控的行為不會(huì)改變?cè)O(shè)計(jì)中寄存器的功能,因此,傳統(tǒng)的邏輯等效檢查器(LEC)可用于驗(yàn)證此類時(shí)鐘門控變換的正確性。另一方面,順序時(shí)鐘門控會(huì)改變?cè)O(shè)計(jì)的順序特性。例如,如果使用信號(hào) vld_1 對(duì)圖 2 中的寄存器 d_2 進(jìn)行門控,則其輸出將不再與原始設(shè)計(jì)相同。但是,設(shè)計(jì)輸出保持不變。傳統(tǒng)的 LEC 工具無法驗(yàn)證這些更改的等效性,因?yàn)樗鼈円蟊或?yàn)證的兩個(gè)設(shè)計(jì)的寄存器行為相同。市場上的順序邏輯等效檢查器(SLEC)可以幫助驗(yàn)證對(duì)設(shè)計(jì)進(jìn)行的順序更改的正確性(例如流水線,重新定時(shí),重新計(jì)劃,時(shí)鐘門控等)。)。可以部署此類工具來驗(yàn)證順序時(shí)鐘門控更改的正確性。用戶必須了解以下要求,以驗(yàn)證時(shí)鐘選通更改的正確性:
優(yōu)化工具本身無法聲稱其所做更改的正確性
驗(yàn)證工具應(yīng)能夠獨(dú)立驗(yàn)證對(duì)設(shè)計(jì)進(jìn)行的順序更改的正確性(通過自動(dòng)化或手動(dòng)方式)
驗(yàn)證應(yīng)快速而正式
基于仿真矢量的驗(yàn)證不能保證順序更改的正確性,因?yàn)樵撳e(cuò)誤可能會(huì)深入幾個(gè)周期,并且可能未被發(fā)現(xiàn)
設(shè)計(jì)流程支持
在所有 RTL 綜合工具中,組合時(shí)鐘門控已作為內(nèi)部優(yōu)化步驟出現(xiàn)。RTL 綜合工具本身支持各種設(shè)計(jì)流程要求:自下而上,工程變更單(ECO)等。但是,順序時(shí)鐘門控仍然是設(shè)計(jì)流程的中間階段。設(shè)計(jì)人員是手動(dòng)執(zhí)行此操作,還是自動(dòng)化工具正在對(duì) RTL 進(jìn)行此類更改。對(duì)于自動(dòng)化工具,編寫更改的 RTL 的要求包括:全面支持所有 HDL(SystemVerilog,Verilog,VHDL 等)及其混合;對(duì) RTL 的最小更改(保留所有用戶注釋,格式和預(yù)處理程序)指令,例如宏,定義,包含等);書面 RTL 的全面可配置性,以支持特定于各個(gè)設(shè)計(jì)公司的 Lint 規(guī)則要求;
如果順序時(shí)鐘門控工具處于自動(dòng)化設(shè)計(jì)流程中,則它需要為 ECO 提供完整的支持。RTL 中的 ECO 更改可能會(huì)使自動(dòng)化工具進(jìn)行的某些優(yōu)化無效。用于 ECO 支持的自動(dòng)化工具的要求是??:
只刪除無效的那些優(yōu)化,不再更多
輸出 RTL 應(yīng)該與上一次運(yùn)行的 RTL 輸出相同(除了使某些優(yōu)化無效所需的更改之外)
關(guān)于如何在門級(jí)網(wǎng)表中實(shí)現(xiàn)某些優(yōu)化無效的明確指令
與 RTL 綜合工具配合使用,以在門級(jí)實(shí)現(xiàn)所需的 ECO
其他一些注意事項(xiàng)也很重要。例如,優(yōu)化必須了解時(shí)序,并且必須有一種方法可以將所使用的特定 RTL 綜合工具的反饋考慮在內(nèi)。
優(yōu)化不應(yīng)引入任何違反時(shí)鐘域的行為。最后,必須有自動(dòng)化來覆蓋優(yōu)化的各個(gè)方面,例如發(fā)現(xiàn)時(shí)鐘門控表達(dá)式,評(píng)估其節(jié)能效果并將其自動(dòng)插入 RTL 中,以及處理設(shè)計(jì)流程中的其他階段。后者包括驗(yàn)證,時(shí)鐘域檢查以及順序時(shí)鐘門控工具與主流 RTL 綜合工具的集成。
結(jié)論
順序時(shí)鐘門控可節(jié)省大量功率,因?yàn)??它不僅可以關(guān)閉去往寄存器的時(shí)鐘,而且可以關(guān)閉門控寄存器的扇出中的數(shù)據(jù)路徑邏輯。但是,RTL 綜合工具無法識(shí)別順序的時(shí)鐘門控機(jī)會(huì)。幸運(yùn)的是,最近推出的順序時(shí)鐘門控工具可以自動(dòng)執(zhí)行此過程,或者有助于手動(dòng)探索順序時(shí)鐘門控機(jī)會(huì),從而幫助 RTL 設(shè)計(jì)人員實(shí)現(xiàn)低功耗設(shè)計(jì)。時(shí)序時(shí)鐘門控在功耗估算,驗(yàn)證和設(shè)計(jì)流程支持方面都面臨著獨(dú)特的挑戰(zhàn),而自動(dòng)工具必須解決所有這些挑戰(zhàn),以在最短的時(shí)間內(nèi)提供最佳的節(jié)能效果。