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

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

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

一文詳解門控時鐘

CHANBAEK ? 來源:數(shù)字IC與好好生活的兩居室 ? 作者:除夕之夜啊 ? 2023-03-29 11:37 ? 次閱讀

門控時鐘

當(dāng)寄存器組的輸出端沒有驅(qū)動或沒有變化時,可以關(guān)掉寄存器組的時鐘來減少動態(tài)功耗,此謂門控時鐘 (Clock Gating, CG) 技術(shù)。

最簡單的一個帶 EN 端的 D 觸發(fā)器的 Verilog 邏輯描述如下:

always @(posedge CLK)
    if (EN)
        Q <= D ;

當(dāng)不采用門控時鐘結(jié)構(gòu)時,DC 綜合時會在觸發(fā)器的輸入端增加為帶反饋端的多路選擇器電路,如下圖 (1) 所示。

當(dāng)采用門控時鐘結(jié)構(gòu)時,DC 綜合時僅會在觸發(fā)器的時鐘端增加一個時鐘門控單元 (CG cell),而沒有多路選擇器結(jié)構(gòu),如下圖 (2) 所示。

圖片

當(dāng)多個寄存器組共用一個控制端時,結(jié)構(gòu)上的優(yōu)化尤為明顯,如下圖所示:

圖片

綜上所述,門控時鐘的優(yōu)點有:

(1) 寄存器時鐘端翻轉(zhuǎn)率降低,動態(tài)功耗降低。

(2) 時鐘樹網(wǎng)絡(luò)開關(guān)率降低,動態(tài)功耗降低。

(3) CG 扇出越大,結(jié)構(gòu)上節(jié)省的選擇器越多,硬件資源消耗越少。

(4) 相比于 PG (Power Gating),CG 結(jié)構(gòu)相對簡單,在綜合時可自動插入。

產(chǎn)生門控時鐘

產(chǎn)生門控時鐘的條件為:

寄存器組共用同一個時鐘;

寄存器組的控制端都是同步的;

寄存器組都是由同一個變量中推斷而來的。

自動插入 CG

DC 綜合時,使用以下命令與參數(shù),設(shè)計中符合要求的寄存器便會被綜合成帶 CG 結(jié)構(gòu)的觸發(fā)器。

compile_ultra -gate_clk

DC 綜合時插入的 CG 又分為離散的 CG cell 與集成的 CG cell (ICG)。離散的 CG cell 使用 Latch 與基本邏輯門單元組合而成,集成的 CG cell 是工藝廠家提供的一個帶有時鐘門控功能的特殊單元。

DC 中插入離散的 CG 命令為:

# 使用帶 latch 結(jié)構(gòu)的離散的 CG
set_clock_gating_style -sequential_cell latch
# 離散的 CG 中指定具體的 latch cell "lib_cell"
set_clock_gating_style -sequential_cell latch:lib_cell

DC 中插入沒有 Latch 結(jié)構(gòu)的離散 CG 時,命令如下:

# 使用或門邏輯,生成上升沿工作的寄存器的時鐘門控
set_clock_gating_style -sequential_cell none -pos {or}

因為使用與門生成 CG 時在時鐘上升沿容易出現(xiàn)毛刺,使用或門生成 CG 時在時鐘下降沿容易出現(xiàn)毛刺,所以參數(shù) -pos 一般配合 {or} 使用,-neg 一般配合 {and} 使用。

# 使用與門邏輯,生成下升沿工作的寄存器的時鐘門控
set_clock_gating_style -sequential_cell none -neg {and}

假如 -sequential_cell 與 -pos/-neg 選項同時使用,那么兩個選項指定的 CG 電路結(jié)構(gòu)應(yīng)該保持一致,例如:

set_clock_gating_style -sequential_cell latch -neg {latch and}
set_clock_gating_style -sequential_cell none -neg {and}

DC 中插入 ICG 時,命令如下:

# 使用集成的 CG cell
set_clock_gating_style -negative_edge_logic {integrated}
# 指定使用具體的集成 CG cell "lib_cell"
set_clock_gating_style -negative_edge_logic {integrated:lib_cell}

手動插入 CG

如果設(shè)置了自動產(chǎn)生時鐘門控(-gate_clk),DC 綜合時會對 RTL 設(shè)計中符合要求的寄存器進(jìn)行時鐘門控。但如果在 RTL 設(shè)計中,人為的編寫時鐘門控邏輯,DC 對此不會插入 CG ,如以下 Verilog 描述。

assign gated_clk = clk & en ;
always @(posedge gated_clk or negedge rstn) begin
    if (!rstn)
        data_out <= 8'b0 ;
    else 
        data_out <= data_out + 1'b1;
end

人為編寫的時鐘門控邏輯中,時鐘很容易出現(xiàn)毛刺,增加了設(shè)計的不穩(wěn)定性。

為了消除人為編寫時鐘門控邏輯帶來的隱患,DC 中需要使用以下命令對手動編寫的 CG 進(jìn)行識別與替換。

replace_clock_gates

此命令實現(xiàn)的優(yōu)化結(jié)果示意圖如下:

圖片

禁止使用 CG

由于面積、時序等原因,需要禁止使用 lib 中的某一種 CG cell 時,可以使用以下命令:

#禁止使用指定的 CG cell:"lib_cell",
set_dont_use -power {lib_cell}

其中,-power 選項不可或缺,否則 ICG cell 的 dont_use 屬性會被忽略。

門控時鐘報告

可以使用以下命令,查看時鐘門控單元的插入情況,以便確認(rèn)是否需要對電路進(jìn)行修改。

report_clock_gating

但是如果 RTL 設(shè)計中,存在人為例化的 CG cell,命令 report_clock_gating 是不能識別的,需要設(shè)置以下命令:

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

    關(guān)注

    31

    文章

    5270

    瀏覽量

    119646
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1335

    瀏覽量

    109852
  • 功耗
    +關(guān)注

    關(guān)注

    1

    文章

    800

    瀏覽量

    31874
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    1992

    瀏覽量

    60976
  • 門控時鐘
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    8924
收藏 人收藏

    評論

    相關(guān)推薦

    XOR自門控時鐘門控的不同之處

    時鐘XOR自門控(Self Gating)基本思路和時鐘門控類似,都是當(dāng)寄存器中的數(shù)據(jù)保持不變時,通過關(guān)閉某些寄存器的時鐘信號來降低設(shè)計的動
    的頭像 發(fā)表于 01-02 11:34 ?1346次閱讀
    XOR自<b class='flag-5'>門控</b>與<b class='flag-5'>時鐘</b><b class='flag-5'>門控</b>的不同之處

    fpga門控時鐘問題

    我在個圖像項目里用來很多的門控時鐘來產(chǎn)生需要的時序波形,這樣程序很不穩(wěn)定,圖像晃動很大,我猜想是不是因為門控時鐘太多,程序不穩(wěn)定,但是又沒
    發(fā)表于 10-28 22:39

    什么是門控時鐘?

    什么是門控時鐘?
    發(fā)表于 11-05 07:26

    什么是時鐘門控?如何去實線時鐘門控的設(shè)計呢

    繁忙。它只需要用于分支指令。而浮點邏輯只需要用于浮點指令,等等。在下面的跟蹤波形中,大多數(shù)信號值是灰色的,表明它們沒有被使用。顯示時鐘門控的 CPU 波形如前所述,將時鐘信號驅(qū)動到觸發(fā)器會消耗總功率的很大
    發(fā)表于 12-19 17:09

    基于門控時鐘的CMOS電路低功耗設(shè)計

    闡述了如何運用門控時鐘來進(jìn)行CMOS電路的低功耗設(shè)計。分析了門控時鐘的實現(xiàn)方式,如何借助EDA工具在設(shè)計中使用門控
    發(fā)表于 11-19 11:49 ?22次下載

    門控時鐘時鐘偏移研究

    所謂門控時鐘就是指連接到觸發(fā)器時鐘端的時鐘來自于組合邏輯;凡是組合邏輯在布局布線之后肯定會產(chǎn)生毛刺,而如果采用這種有毛刺的信號來作為時鐘使用
    發(fā)表于 09-07 16:11 ?35次下載
    <b class='flag-5'>門控</b><b class='flag-5'>時鐘</b>與<b class='flag-5'>時鐘</b>偏移研究

    門控時鐘

    門控時鐘的資料,關(guān)于FPGA方面的資料。有需要的可以看看
    發(fā)表于 05-10 16:31 ?11次下載

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

    時鐘門控(Clock Gating)是種在數(shù)字IC設(shè)計中某些部分不需要時關(guān)閉時鐘的技術(shù)。這里的“部分”可以是單個寄存器、模塊、子系統(tǒng)甚至整個SoC。 為什么需要
    的頭像 發(fā)表于 06-13 16:48 ?2555次閱讀

    什么是門控時鐘 門控時鐘降低功耗的原理

    門控時鐘的設(shè)計初衷是實現(xiàn)FPGA的低功耗設(shè)計,本文從什么是門控時鐘門控時鐘實現(xiàn)低功耗的原理、推
    的頭像 發(fā)表于 09-23 16:44 ?1.3w次閱讀
    什么是<b class='flag-5'>門控</b><b class='flag-5'>時鐘</b> <b class='flag-5'>門控</b><b class='flag-5'>時鐘</b>降低功耗的原理

    門控時鐘實現(xiàn)低功耗的原理

    只有當(dāng)FPGA工程需要大量降低功耗時才有必要引入門控時鐘,若必須引入門控時鐘,則推薦使用基于寄存器的門控
    的頭像 發(fā)表于 07-03 15:32 ?2139次閱讀

    什么是門控時鐘?如何生成門控時鐘?

    由于門控時鐘邏輯具有定的開銷,因此數(shù)據(jù)寬度過小不適合做clockgating。般情況下,數(shù)據(jù)寬度大于8比特時建議采用門控
    發(fā)表于 12-05 12:28 ?2973次閱讀

    FPGA原型平臺門控時鐘自動轉(zhuǎn)換

    現(xiàn)代FPGA綜合工具會自動執(zhí)行門控時鐘轉(zhuǎn)換,而無需更改RTL代碼中的設(shè)計,然而,我們可能需要適當(dāng)?shù)厥謩又笇?dǎo)綜合工具執(zhí)行門控時鐘變換。
    的頭像 發(fā)表于 05-23 17:38 ?1679次閱讀
    FPGA原型平臺<b class='flag-5'>門控</b><b class='flag-5'>時鐘</b>自動轉(zhuǎn)換

    門控時鐘檢查(clock gating check)的理解和設(shè)計應(yīng)用

    通過門控方式不同,門控時鐘通??梢苑譃橄旅婊?,
    的頭像 發(fā)表于 06-19 16:49 ?3513次閱讀
    <b class='flag-5'>門控</b><b class='flag-5'>時鐘</b>檢查(clock gating check)的理解和設(shè)計應(yīng)用

    什么是時鐘門控技術(shù)?為什么需要控制時鐘的通斷呢?

    開始之前,我們首先來看下什么是時鐘門控(clock gating)技術(shù),顧名思義就是利用邏輯門技術(shù)控制時鐘的通斷。
    的頭像 發(fā)表于 06-29 15:38 ?2344次閱讀
    什么是<b class='flag-5'>時鐘</b><b class='flag-5'>門控</b>技術(shù)?為什么需要控制<b class='flag-5'>時鐘</b>的通斷呢?

    為什么需要時鐘門控?時鐘門控終極指南

    時鐘門控(Clock Gating)** 是種在數(shù)字IC設(shè)計中某些部分不需要時關(guān)閉時鐘的技術(shù)。這里的“部分”可以是單個寄存器、模塊、子系統(tǒng)甚至整個SoC。
    的頭像 發(fā)表于 06-29 15:58 ?1824次閱讀
    為什么需要<b class='flag-5'>時鐘</b><b class='flag-5'>門控</b>?<b class='flag-5'>時鐘</b><b class='flag-5'>門控</b>終極指南