0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Clock Gating的特點(diǎn)、原理和初步實(shí)現(xiàn)

冬至子 ? 來(lái)源:艾思后端實(shí)現(xiàn) ? 作者:艾思后端設(shè)計(jì) ? 2023-07-17 16:50 ? 次閱讀

當(dāng)下這社會(huì),沒(méi)有幾萬(wàn)個(gè)Clock Gating,出門(mén)都不好意思和別人打招呼!

現(xiàn)在的深亞納米工藝的設(shè)計(jì)中,低功耗已經(jīng)是一個(gè)日漸總要的主題了,尤其是移動(dòng)市場(chǎng)蓬勃發(fā)展起來(lái)之后,功耗的要求越來(lái)越嚴(yán)格,據(jù)傳,在高級(jí)的手機(jī)系統(tǒng)開(kāi)發(fā)的過(guò)程中,系統(tǒng)架構(gòu)的設(shè)計(jì),已經(jīng)精確到每一個(gè)服務(wù)模塊的毫安時(shí)(mAH)的級(jí)別,所以如果你的芯片功耗控制不下來(lái),很有可能會(huì)被手機(jī)生產(chǎn)廠家踢出局。

在低功耗的世界里,我們有很多方法可做,譬如提高設(shè)計(jì)工藝(工藝節(jié)點(diǎn)越高,功耗就越?。︰PF策略,代碼優(yōu)化等等。其中的clock gating方法就是一個(gè)解決內(nèi)部功耗的有效辦法

Clock gating從原理上講,就是在FF的clock 的輸入通路上,加入額外的邏輯,來(lái)使得FF在不發(fā)生變化的情況下,clock端沒(méi)有反轉(zhuǎn),如果不采取這個(gè)策略,那么FF的clock pin是長(zhǎng)時(shí)間翻轉(zhuǎn)的,在D/Q都不翻生變化的時(shí)候,帶來(lái)了額外功耗消耗,采用clock gating就可以有效境地這種損耗

從用途上講,一般將Clock gating分為如下兩類(lèi):
1:RTL實(shí)例化的clock gating cell
在很多的前端設(shè)計(jì)中,我們都會(huì)認(rèn)為的實(shí)例化primitive clock gating cell,這里是按照前端的設(shè)計(jì)要求來(lái)的,一般這樣的GC都是接近于clock 的源頭,譬如一個(gè)模塊的輸入clock,我們使用一個(gè)實(shí)例化的GC來(lái)作為這個(gè)clock 的控制端,在不需要的時(shí)候,可以直接使用寄存器把他關(guān)斷,從而達(dá)到節(jié)省模塊級(jí)power的目的

image.png

這種GC結(jié)構(gòu),在結(jié)構(gòu)上后端是不用干預(yù)的,但是由于這種GC的fanout 都很大,在某種情況下可能會(huì)引起比較悲觀的setup violation。這個(gè)我們會(huì)在后邊仔細(xì)描述
2:綜合工具推斷出(inferred )clock gating cell
這種推斷出的CG是基于綜合器對(duì)RTL的理解,首先,我們的設(shè)計(jì)需要遵循一定得大媽風(fēng)格(coding style),這是工具分析的基礎(chǔ),我們來(lái)看下面這段代碼

image.png

藍(lán)色箭頭所指是clock的edge檢測(cè),這里是一個(gè)if 語(yǔ)句的開(kāi)始,而后如橙色箭頭所指,在clock edge的這個(gè)function里邊,使用EN來(lái)做判別,如果EN為1的時(shí)候,產(chǎn)生賦值操作,這是一個(gè)標(biāo)準(zhǔn)的帶同步enable的寄存器語(yǔ)法。
綜合器會(huì)按照約定的規(guī)則來(lái)解析rtl code,然后產(chǎn)生對(duì)應(yīng)的網(wǎng)表。按照通常的綜合結(jié)果(compile_ultra),會(huì)得到下面這個(gè)結(jié)果

image.png

模塊輸入端的clock port會(huì)直接連接到所有的FF clock pin 上邊,通常的器件庫(kù)里邊,沒(méi)有帶EN端的DFF,這是一種簡(jiǎn)化設(shè)計(jì),因?yàn)樗械腇F EN pin,都可以和D pin做組合邏輯,從而達(dá)到控制輸出的結(jié)果。從土里可以看到,這里的EN也是被拉到了FF’D pin前級(jí)的組合邏輯的輸入端,從而達(dá)到控制FF輸出的結(jié)果。

這個(gè)時(shí)候,是沒(méi)有clock gating的設(shè)計(jì)的,工具嚴(yán)格遵守RTL的設(shè)計(jì)產(chǎn)生了這段網(wǎng)表結(jié)構(gòu)。

如果在綜合的時(shí)候,打開(kāi)inferred clock gating 選項(xiàng)(compile_ultra –gate_clock),這個(gè)時(shí)候會(huì)得到下面的這個(gè)結(jié)構(gòu)。

image.png

這個(gè)時(shí)候的網(wǎng)編結(jié)構(gòu)發(fā)生了變化,在緊跟clock port的后面,多了一個(gè)CG,EN的port 從之前的鏈接到各個(gè)FF 的D pin,到現(xiàn)在只連接到了clock gating cell的en pin上,通過(guò)控制FF的clk pin,來(lái)達(dá)到僅在EN使能的時(shí)候翻轉(zhuǎn)clock來(lái)刷新FF的輸出,從而達(dá)到省電。

由于在沒(méi)有使用CG之前,由于FF需要不停地刷新,DC為了保障FF的輸出在EN端非使能的時(shí)候保持當(dāng)前狀態(tài),所以一定有一條從Q到D的回路來(lái)保證FF的輸出保持不變,類(lèi)似下圖

image.png

FF’D pin 前面的是一個(gè)四輸入與或門(mén),在EN為0的時(shí)候,F(xiàn)F會(huì)把Q的值反復(fù)刷新,盡管輸出Q不改變,但是短路功耗是少不了的。
在使用了gate clock 以后,F(xiàn)F的結(jié)構(gòu)變成了

image.png

可以看到,這里的FF的D輸入端,變得更為簡(jiǎn)單了,以為所有前后級(jí)都被掛載到了同樣的CG下面,只有當(dāng)CG有輸出clock的時(shí)候,這些FF才進(jìn)行工作,工具就不用創(chuàng)建那些組合邏輯來(lái)考慮EN不使能的情況了。
就相同設(shè)計(jì)的面積比較,采用inferred CG策略的結(jié)果還可以節(jié)省面積

Area with CG: 8.0997
Area without CG: 8.3790

在一個(gè)3M gate-count的完整設(shè)計(jì)里邊,可以看到,當(dāng)打開(kāi)gate_clock選項(xiàng)的時(shí)候,會(huì)增加大約7k的CG cell,時(shí)序邏輯大概增加了6%的面積,但是整個(gè)設(shè)計(jì)的std-cell的面積(組合加時(shí)序)反而降低了4%,從這方面看,綜合器的這個(gè)功能對(duì)絕對(duì)面積和功耗都是有貢獻(xiàn)的

討論完CG的好處后,我們?cè)賮?lái)看一下Clock gating 的類(lèi)別:

先看一下這個(gè)表格。通常上來(lái)講,CG分為兩類(lèi),一種是帶latch的,另外一種是不帶latch的,由組合邏輯構(gòu)成。

image.png

這里的模型規(guī)則如下

Posedge:
o Latch based:clk負(fù)沿敏感的latch
o None-latch:非或門(mén)結(jié)構(gòu)的CG
Negedge:
o Latch based:clk正沿敏感的latch CG
o None-latch:與門(mén)結(jié)構(gòu)CG
Pre-control:
o Latch based : latch的EN輸入前插入一個(gè)或門(mén),從而帶入TE的管控
o None-latch: 在組合邏輯的EN輸入側(cè)插入一個(gè)或門(mén),從而帶入TE的管控
Post-control:
o Latch based : latch的output輸出后插入一個(gè)或門(mén),從而帶入TE的管控
o None-latch: 不支持
Observe:
o 再有pre/post control的設(shè)計(jì)中監(jiān)控與門(mén)中非TS管控測(cè)的信號(hào)

借用新思的電路圖來(lái)給大家詳細(xì)的示例(侵刪)

image.png

由于clock是敏感信號(hào) ,一般推薦使用latch-based gating CG,這要可以有效地過(guò)濾EN上的毛刺。

有了上邊的知識(shí),那么工具是如何識(shí)別和插入CG的的呢?

在綜合的時(shí)候,需要在你的綜合環(huán)境里邊定義工具自動(dòng)插入時(shí)可已使用的CG cell類(lèi)型,然后喚起compile_ultra命令即可完成CG插入:

set_clock_gating_style -pos {integrated:CG_CELL_NAME} -control_point before -num_stages 4
compile_ultra –gate_clock

用戶可以在compile結(jié)束后,使用report_clock_gating命令來(lái)查看數(shù)據(jù)庫(kù)里邊的CG情況。
這個(gè)報(bào)告很有意思,他可以打印出數(shù)據(jù)庫(kù)里所有被CG控制的FF的情況,同時(shí)也會(huì)列出來(lái)沒(méi)有被CG控制的FF的情況,并且會(huì)生成一些比率報(bào)告,有興趣的同學(xué)可以仔細(xì)了解一下。

此外,這里邊的CG_CELL_NAME,這個(gè)cell是一個(gè)真實(shí)存在在你的std-cell庫(kù)里的實(shí)際CG,并且這個(gè)lib_cell必須要有一個(gè)特殊的屬性:

image.png

DC只有看到這個(gè)屬性的時(shí)候,才會(huì)認(rèn)為這是一個(gè)真實(shí)可信的CG。而后按照他后邊屬性說(shuō)明來(lái)進(jìn)行inferred CG insertion,后面的屬性無(wú)外乎我們前面表格里邊羅列的那些屬性,具體名詞如下:

image.png

當(dāng)然,DC也支持一些組合邏輯的CG的創(chuàng)建,如果你使用如下命令,DC會(huì)插入相應(yīng)的none-lath結(jié)構(gòu)的CG

set_clock_gating_style -pos {buf nand inv}

在同步設(shè)計(jì)的架構(gòu)下,不推薦使用這樣的gating 結(jié)構(gòu),由于這是拿兩三個(gè)蘇合邏輯器件搭乘的,后期的timing closure是很難做的,推薦使用library里邊latch-based的CG。

上邊用了一定的篇幅講述了一下CG的特點(diǎn)、原理和初步實(shí)現(xiàn)。但是這還沒(méi)有結(jié)束,應(yīng)為還有l(wèi)ayout的實(shí)現(xiàn)要考慮

Clock_gating作為clock tree的一部分,在做layout的時(shí)候,有更多的因素需要考量
首先,所有的latch based CG都有一組setup/hold timing arc,就是clk –> EN的timing check
其次,在CTS的時(shí)候,clock-gating被當(dāng)作了一個(gè)none-stop pin而非一個(gè)stop pin如下圖示例:

image.png

工具會(huì)balance 后面四個(gè)被gating 驅(qū)動(dòng)的FF(stop pin)之間的skew,但是CG是它們的clock 的driver,不難想象,CG EN的latency(T_latch)一定小于CG fanout FF的clock latency(T_FF),這是一個(gè)永遠(yuǎn)不能改變的事實(shí)。在某些情況下會(huì)帶來(lái)CG setup violaoiton,如下圖:

image.png

如果有一條正面這樣的data path存在,那么launch clk (FF) 一定是晚于capture clk (CG),在高頻和復(fù)雜datapath的情況下,這樣的timing是很難修復(fù)的
所以要在CTS之前解決或者簡(jiǎn)化這個(gè)問(wèn)題,

解決這個(gè)問(wèn)題的關(guān)鍵就是,讓CG clock latency(T_latch)和fanout FF clk latency(T_FF) 盡可能的足夠小。

要讓前后兩級(jí)的clock latency的差值足夠小,其中有一個(gè)方法就是讓他們的擺放足夠近,在綜合結(jié)束后,通過(guò)report_clock_gating的report可以看到所有CG和他的fanout的列表,這個(gè)時(shí)候,我們通過(guò)第一版的CTS結(jié)果,可以評(píng)估出那些FF-CG的timing是有困難的,這些FF以及他們的CG使用relative placement的方法,讓工具在place 的階段就把他們擺放的足夠近,從而在物理距離上來(lái)解決這個(gè)CG 的setup 問(wèn)題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 驅(qū)動(dòng)器
    +關(guān)注

    關(guān)注

    53

    文章

    8263

    瀏覽量

    146703
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5359

    瀏覽量

    120816
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    385

    瀏覽量

    59878
  • CTS
    CTS
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    14121
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    DFT設(shè)計(jì)實(shí)戰(zhàn)案例解讀

    test_mode接TE的缺點(diǎn)是capture mode下無(wú)法測(cè)試到functional clock-gating logic,就是functional clock-gating logic完全被
    的頭像 發(fā)表于 01-16 13:49 ?7950次閱讀
    DFT設(shè)計(jì)實(shí)戰(zhàn)案例解讀

    RTL實(shí)例化的clock gating cell淺見(jiàn)

    現(xiàn)在的深亞納米工藝的設(shè)計(jì)中,低功耗已經(jīng)是一個(gè)日漸總要的主題了,尤其是移動(dòng)市場(chǎng)蓬勃發(fā)展起來(lái)之后,功耗的要求越來(lái)越嚴(yán)格,據(jù)傳,在高級(jí)的手機(jī)系統(tǒng)開(kāi)發(fā)的過(guò)程中,系統(tǒng)架構(gòu)的設(shè)計(jì),已經(jīng)精確到每一個(gè)服務(wù)模塊的毫安時(shí)(mAH)的級(jí)別,所以如果你的芯片功耗控制不下來(lái),很有可能會(huì)被手機(jī)生產(chǎn)廠家踢出局。
    的頭像 發(fā)表于 07-14 10:14 ?2180次閱讀
    RTL實(shí)例化的<b class='flag-5'>clock</b> <b class='flag-5'>gating</b> cell淺見(jiàn)

    clock-gating的綜合實(shí)現(xiàn)

    在ASIC設(shè)計(jì)中,項(xiàng)目會(huì)期望設(shè)計(jì)將代碼寫(xiě)成clk-gating風(fēng)格,以便于DC綜合時(shí)將寄存器綜合成clk-gating結(jié)構(gòu),其目的是為了降低翻轉(zhuǎn)功耗。
    的頭像 發(fā)表于 09-04 15:55 ?1952次閱讀
    <b class='flag-5'>clock-gating</b>的綜合<b class='flag-5'>實(shí)現(xiàn)</b>

    淺析clock gating模塊電路結(jié)構(gòu)

    ICG(integrated latch clock gate)就是一個(gè)gating時(shí)鐘的模塊,通過(guò)使能信號(hào)能夠關(guān)閉時(shí)鐘。
    的頭像 發(fā)表于 09-11 12:24 ?2436次閱讀
    淺析<b class='flag-5'>clock</b> <b class='flag-5'>gating</b>模塊電路結(jié)構(gòu)

    FPGA的時(shí)鐘門(mén)控是好還是壞?

    queries regarding clock gating. from what i've read/learnt - clock gating can be used for l
    發(fā)表于 02-21 10:21

    天啟物聯(lián)網(wǎng)星座實(shí)現(xiàn)初步組網(wǎng)運(yùn)行

    國(guó)內(nèi)首個(gè)物聯(lián)網(wǎng)星座初步實(shí)現(xiàn)組網(wǎng)運(yùn)行。
    的頭像 發(fā)表于 08-20 09:11 ?3128次閱讀

    通常有兩種不同的時(shí)鐘門(mén)控實(shí)現(xiàn)技術(shù)

    constrained,mobile端不能夠充更多的電就只能盡可能地降低功耗了(無(wú)法開(kāi)源只能節(jié)流呀),也因?yàn)闀r(shí)鐘門(mén)控是降低芯片動(dòng)態(tài)功耗最簡(jiǎn)單,最常用的方法之一。 時(shí)鐘門(mén)控技術(shù)分類(lèi):通常,有兩種不同的時(shí)鐘門(mén)控實(shí)現(xiàn)技術(shù)。 combinational clock
    的頭像 發(fā)表于 06-13 16:48 ?2669次閱讀

    低功耗設(shè)計(jì)基礎(chǔ):Clock Gating

    大多數(shù)低功耗設(shè)計(jì)手法在嚴(yán)格意義上說(shuō)并不是由后端控制的,Clock Gating也不例外。
    的頭像 發(fā)表于 06-27 15:47 ?1859次閱讀
    低功耗設(shè)計(jì)基礎(chǔ):<b class='flag-5'>Clock</b> <b class='flag-5'>Gating</b>

    AND GATE的clock gating check簡(jiǎn)析

    一個(gè)cell的一個(gè)輸入為clock信號(hào),另一個(gè)輸入為gating信號(hào),并且輸出作為clock使用,這樣的cell為gating cell。
    的頭像 發(fā)表于 06-29 15:28 ?3217次閱讀
    AND GATE的<b class='flag-5'>clock</b> <b class='flag-5'>gating</b> check簡(jiǎn)析

    低功耗之門(mén)控時(shí)鐘設(shè)計(jì)

    clock gating和power gating是降低芯片功耗的常用手段,相比power gating設(shè)計(jì),clock
    的頭像 發(fā)表于 06-29 17:23 ?4091次閱讀
    低功耗之門(mén)控時(shí)鐘設(shè)計(jì)

    ASIC的clock gating在FPGA里面實(shí)現(xiàn)是什么結(jié)果呢?

    首先,ASIC芯片的clock gating絕對(duì)不能采用下面結(jié)構(gòu),原因是會(huì)產(chǎn)生時(shí)鐘毛刺
    發(fā)表于 08-25 09:53 ?1062次閱讀
    ASIC的<b class='flag-5'>clock</b> <b class='flag-5'>gating</b>在FPGA里面<b class='flag-5'>實(shí)現(xiàn)</b>是什么結(jié)果呢?

    時(shí)鐘子系統(tǒng)中clock驅(qū)動(dòng)實(shí)例

    都要早期,因此clock驅(qū)動(dòng)是在內(nèi)核中進(jìn)行實(shí)現(xiàn)。 在內(nèi)核的 drivers/clk 目錄下,可以看到各個(gè)芯片廠商對(duì)各自芯片clock驅(qū)動(dòng)的實(shí)現(xiàn): 下面以一個(gè)簡(jiǎn)單的時(shí)鐘樹(shù),舉例說(shuō)明一個(gè)
    的頭像 發(fā)表于 09-27 14:39 ?835次閱讀
    時(shí)鐘子系統(tǒng)中<b class='flag-5'>clock</b>驅(qū)動(dòng)實(shí)例

    什么是Clock Gating技術(shù)?Clock Gating在SoC設(shè)計(jì)中的重要性

    隨著集成電路技術(shù)的不斷發(fā)展,芯片中的晶體管數(shù)量呈現(xiàn)出爆炸性增長(zhǎng)。為了提高性能,降低功耗,SoC設(shè)計(jì)中采用了各種優(yōu)化技術(shù)
    的頭像 發(fā)表于 10-07 11:39 ?2976次閱讀

    IC設(shè)計(jì):clock-gating綜合實(shí)現(xiàn)方案

    當(dāng)CK為0時(shí),ECK 恒定為0, q值為E:如果E為1,則q為1,如果E為0,則q為0。 當(dāng)CK為1時(shí),ECK 恒定為q(n),即對(duì)應(yīng)的上一次CK為0時(shí),鎖存的E值。 因此最終的效果就是,只要E配置成了0,那么ECK會(huì)在CK的下降沿跳變成0,隨后只要E保持為0,那么ECK一直為0。
    發(fā)表于 10-16 09:43 ?1830次閱讀
    IC設(shè)計(jì):<b class='flag-5'>clock-gating</b>綜合<b class='flag-5'>實(shí)現(xiàn)</b>方案

    SOC設(shè)計(jì)中Clock Gating的基本原理與應(yīng)用講解

    SOC(System on Chip,片上系統(tǒng))設(shè)計(jì)中,時(shí)鐘信號(hào)的控制對(duì)于整個(gè)系統(tǒng)的性能和功耗至關(guān)重要。本文將帶您了解SOC設(shè)計(jì)中的一種時(shí)鐘控制技術(shù)——Clock Gating,通過(guò)Verilog代碼實(shí)例的講解,讓您對(duì)其有更深入的認(rèn)識(shí)。
    的頭像 發(fā)表于 04-28 09:12 ?2383次閱讀