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

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

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

RTL實例化的clock gating cell淺見

sanyue7758 ? 來源:艾思后端實現(xiàn) ? 2023-07-14 10:14 ? 次閱讀

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

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

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

從用途上講,一般將Clock gating分為如下兩類:

1:RTL實例化的clock gating cell

在很多的前端設(shè)計中,我們都會認為的實例化primitive clock gating cell,這里是按照前端的設(shè)計要求來的,一般這樣的GC都是接近于clock 的源頭,譬如一個模塊的輸入clock,我們使用一個實例化的GC來作為這個clock 的控制端,在不需要的時候,可以直接使用寄存器把他關(guān)斷,從而達到節(jié)省模塊級power的目的

a72f8570-2195-11ee-962d-dac502259ad0.png

這種GC結(jié)構(gòu),在結(jié)構(gòu)上后端是不用干預(yù)的,但是由于這種GC的fanout 都很大,在某種情況下可能會引起比較悲觀的setup violation。這個我們會在后邊仔細描述

2:綜合工具推斷出(inferred )clock gating cell

這種推斷出的CG是基于綜合器對RTL的理解,首先,我們的設(shè)計需要遵循一定得大媽風(fēng)格(coding style),這是工具分析的基礎(chǔ),我們來看下面這段代碼

a73e6180-2195-11ee-962d-dac502259ad0.jpg

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

a7520438-2195-11ee-962d-dac502259ad0.jpg

模塊輸入端的clock port會直接連接到所有的FF clock pin 上邊,通常的器件庫里邊,沒有帶EN端的DFF,這是一種簡化設(shè)計,因為所有的FF EN pin,都可以和D pin做組合邏輯,從而達到控制輸出的結(jié)果。從土里可以看到,這里的EN也是被拉到了FF’D pin前級的組合邏輯的輸入端,從而達到控制FF輸出的結(jié)果。

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

如果在綜合的時候,打開inferred clock gating 選項(compile_ultra –gate_clock),這個時候會得到下面的這個結(jié)構(gòu)。

a76574be-2195-11ee-962d-dac502259ad0.jpg

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

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

a7786614-2195-11ee-962d-dac502259ad0.png

FF’D pin 前面的是一個四輸入與或門,在EN為0的時候,F(xiàn)F會把Q的值反復(fù)刷新,盡管輸出Q不改變,但是短路功耗是少不了的。

在使用了gate clock 以后,F(xiàn)F的結(jié)構(gòu)變成了

a79b57a0-2195-11ee-962d-dac502259ad0.png

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


Area with CG: 8.0997
Area without CG: 8.3790


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

討論完CG的好處后,我們再來看一下Clock gating 的類別:

先看一下這個表格。通常上來講,CG分為兩類,一種是帶latch的,另外一種是不帶

latch的,由組合邏輯構(gòu)成。

a7b28e34-2195-11ee-962d-dac502259ad0.png

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


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


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

a7befc46-2195-11ee-962d-dac502259ad0.jpg

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

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

在綜合的時候,需要在你的綜合環(huán)境里邊定義工具自動插入時可已使用的CG cell類型,然后喚起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命令來查看數(shù)據(jù)庫里邊的CG情況。

這個報告很有意思,他可以打印出數(shù)據(jù)庫里所有被CG控制的FF的情況,同時也會列出來沒有被CG控制的FF的情況,并且會生成一些比率報告,有興趣的同學(xué)可以仔細了解一下。

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

a7d59f14-2195-11ee-962d-dac502259ad0.png


DC只有看到這個屬性的時候,才會認為這是一個真實可信的CG。而后按照他后邊屬性說明來進行inferred CG insertion,后面的屬性無外乎我們前面表格里邊羅列的那些屬性,具體名詞如下:

a7e36f72-2195-11ee-962d-dac502259ad0.jpg

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


set_clock_gating_style -pos {buf nand inv}


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

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

Clock_gating作為clock tree的一部分,在做layout的時候,有更多的因素需要考量

首先,所有的latch based CG都有一組setup/hold timing arc,就是clk –> EN的timing check

其次,在CTS的時候,clock-gating被當作了一個none-stop pin而非一個stop pin如下圖示例:

a7f8f194-2195-11ee-962d-dac502259ad0.jpg


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

a80899a0-2195-11ee-962d-dac502259ad0.jpg


如果有一條正面這樣的data path存在,那么launch clk (FF) 一定是晚于capture clk (CG),在高頻和復(fù)雜datapath的情況下,這樣的timing是很難修復(fù)的

所以要在CTS之前解決或者簡化這個問題,

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

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




審核編輯:劉清

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

    關(guān)注

    112

    文章

    16419

    瀏覽量

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

    關(guān)注

    31

    文章

    5359

    瀏覽量

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

    關(guān)注

    1

    文章

    385

    瀏覽量

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

    關(guān)注

    0

    文章

    50

    瀏覽量

    13549
  • dff
    dff
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    3425

原文標題:Clock Gating之淺見

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Linux clock子系統(tǒng)及驅(qū)動實例

    在Linux驅(qū)動中,操作時鐘只需要簡單調(diào)用內(nèi)核提供的通用接口即可,clock驅(qū)動通常是由芯片廠商開發(fā)的,在Linux啟動時clock驅(qū)動就已經(jīng)初始完成。
    發(fā)表于 05-31 16:10 ?861次閱讀
    Linux <b class='flag-5'>clock</b>子系統(tǒng)及驅(qū)動<b class='flag-5'>實例</b>

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

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

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

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

    什么是In-cell及On-cell

    In-cell及On-cell的概念、原理、難點及技術(shù)實現(xiàn)。
    發(fā)表于 02-06 11:18 ?1.4w次閱讀

    in-cell panel_In-Cell觸摸屏原理

    in-cell 將觸摸面板功能與液晶面板一體。包括In-cell方法和On-cell方法。In-cell是指將觸摸面板功能嵌入到液晶像素中
    發(fā)表于 09-06 17:13 ?4482次閱讀
    in-<b class='flag-5'>cell</b> panel_In-<b class='flag-5'>Cell</b>觸摸屏原理

    分析clock tree的小工具——CCOPT Clock Tree Debugger(一)

    Collapse可以將Sink,ICG,Buffer等cell不展開顯示,只以一個簡單數(shù)字和虛線表示連接關(guān)系,下圖藍圈表示該buffer驅(qū)動了100個clock sink
    的頭像 發(fā)表于 05-19 16:20 ?1.1w次閱讀
    分析<b class='flag-5'>clock</b> tree的小工具——CCOPT <b class='flag-5'>Clock</b> Tree Debugger(一)

    低功耗設(shè)計之multi-bit cell技術(shù)簡介

    所謂multi-bit cell,可以理解成把多個完全相同的cell合并在一個cell里,如下圖所示,集成2bit的multi-bit cellc
    的頭像 發(fā)表于 02-12 10:52 ?5022次閱讀

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

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

    AND GATE的clock gating check簡析

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

    低功耗之門控時鐘設(shè)計

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

    clock gate時序分析概念介紹

    今天我們要介紹的時序分析概念是clock gate。 clock gate cell是用data signal控制clock信號的cell,
    的頭像 發(fā)表于 07-03 15:06 ?3111次閱讀
    <b class='flag-5'>clock</b> gate時序分析概念介紹

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

    當下這社會,沒有幾萬個Clock Gating,出門都不好意思和別人打招呼!
    的頭像 發(fā)表于 07-17 16:50 ?4469次閱讀
    <b class='flag-5'>Clock</b> <b class='flag-5'>Gating</b>的特點、原理和初步實現(xiàn)

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

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

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

    clock驅(qū)動實例 clock驅(qū)動在時鐘子系統(tǒng)中屬于provider,provider是時鐘的提供者,即具體的clock驅(qū)動。 clock驅(qū)
    的頭像 發(fā)表于 09-27 14:39 ?835次閱讀
    時鐘子系統(tǒng)中<b class='flag-5'>clock</b>驅(qū)動<b class='flag-5'>實例</b>

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

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