文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2017.01.016
中文引用格式: 喻賢坤,姜爽,王磊,等. 數(shù)字集成電路門控時鐘可靠性研究[J].電子技術(shù)應(yīng)用,2017,43(1):60-63,67.
英文引用格式: Yu Xiankun,Jiang Shuang,Wang Lei,et al. Research on the reliability of clock-gating clock in digital integrated circuits[J].Application of Electronic Technique,2017,43(1):60-63,67.
0 引言
對于超大規(guī)模集成電路來說,功耗指標是最重要的技術(shù)參數(shù)之一。為了降低功耗,研究出來許多行之有效的方法,包括靜態(tài)多電壓(MV-Design)、動態(tài)電壓頻率縮放(DVFS)[1]、門控電源(Power-Gating)、門控時鐘(Clock-Gating)等。其中門控時鐘技術(shù)是最早發(fā)展起來,并且是采用最多的低功耗設(shè)計技術(shù),甚至可以使得電路功耗降低一半以上,具有實現(xiàn)簡單、高效的特點。
門控時鐘技術(shù),是通過在時鐘路徑上增加邏輯門對時鐘進行控制(Gating),使得電路的部分邏輯在不需要工作時停止時鐘樹的翻轉(zhuǎn),而并不影響原本的邏輯狀態(tài)[2]。
如圖1所示,在插入門控時鐘前,前級寄存器輸出經(jīng)過組合邏輯產(chǎn)生控制信號EN,EN選擇后級寄存器組的輸入是DATA IN還是其自身的Q,即選擇更新還是保持數(shù)據(jù),可以看出后級寄存器組即使保持數(shù)據(jù),其CLK仍在不停地翻轉(zhuǎn)。插入門控時鐘后,首先后級寄存器組的輸入不再有其自身的Q,而只有DATA IN,其次增加了門控邏輯,EN連接到了門控邏輯,不再用于控制數(shù)據(jù)端,而是用來控制時鐘端。當需要更新數(shù)據(jù)時,門控打開,用門控后的時鐘ENCLK來采集新數(shù)據(jù);而當不需要更新數(shù)據(jù)時,門控關(guān)閉,后級寄存器組的時鐘是靜止的,并能保持原有數(shù)據(jù)。而當一個芯片中有許多類似的邏輯,并且不是每周期都更新數(shù)據(jù)時,門控時鐘結(jié)構(gòu)對于降低功耗的貢獻是非常大的。
1 門控時鐘設(shè)計的風險和影響
時鐘是集成電路內(nèi)部最重要的邏輯組成部分,是數(shù)字集成電路的命脈。門控時鐘是對時鐘路徑的修改、控制,因此在門控時鐘設(shè)計時,必須充分考慮門控時鐘帶來的風險和影響。
1.1 門控時鐘帶來功能錯誤的風險
門控時鐘控制的對象是寄存器、存儲器等時序邏輯的時鐘,一旦控制不得當,會造成時鐘出現(xiàn)高低電平寬度不足(corruption),甚至出現(xiàn)毛刺(glitching),帶來時序問題甚至功能錯誤。
如圖2所示,一種典型的門控時鐘結(jié)構(gòu)的基本組成部分包括:門控信號EN、被門控時鐘CLK,二者經(jīng)過鎖存器latch和與門and的邏輯,形成了門控后時鐘ENCLK。在這個典型結(jié)構(gòu)中,latch在LG(CLK)為低電平時導(dǎo)通,在LG(CLK)為高電平時關(guān)閉。在CLK為低電平期間,and與門輸出結(jié)果一直為0;在CLK為高電平期間,and與門打開,但是此時latch已經(jīng)鎖定,EN信號上即使有意外翻轉(zhuǎn)或者毛刺也不會通過latch傳遞給ENL而造成ENCLK的污染。
從時序角度來講,發(fā)生風險的地方在CLK電平轉(zhuǎn)換的時刻附近,此時如果EN發(fā)生變化,latch從低變高的過程會把EN鎖存在latch中,并產(chǎn)生有效的ENL;由于CLK變高,就把ENL發(fā)生的變化傳遞給ENCLK,ENCLK上將會出現(xiàn)本不應(yīng)出現(xiàn)的毛刺,導(dǎo)致功能錯誤。不滿足時序情況下的門控時鐘時序圖如圖3所示。
如果產(chǎn)生EN的時鐘與ENCLK后級邏輯的時鐘是同一個時鐘,或是同一時鐘域的時鐘,圖3中描述的情況是不會發(fā)生的,因為在滿足時序約束的情況下,同步電路不允許存在這種違反建立保持時間的路徑,如圖4所示。反之,如果EN信號來自于異步時鐘域或端口,則這種情況是一定存在的。
1.2 門控時鐘對測試覆蓋率的影響
在當前超大規(guī)模數(shù)字集成電路設(shè)計中,可測性設(shè)計是必備的設(shè)計流程之一??蓽y性設(shè)計的原理就是通過特意設(shè)計的邏輯,使得電路的內(nèi)部節(jié)點從輸入端口可控制,并且通過特意設(shè)計的測試向量來激活內(nèi)部潛在故障,然后通過輸出端口可觀測,從而大幅度提高電路的測試覆蓋率。
而門控時鐘天然對可測性設(shè)計不友好,因為在測試狀態(tài)下,增加了門控邏輯的寄存器的時鐘往往是不可控的。門控時鐘導(dǎo)致被門控邏輯時鐘不可控的示意圖如圖5所示。
在測試狀態(tài)下,由于產(chǎn)生EN邏輯的前級寄存器無論是否被串入掃描鏈,寄存器中的值都是由原始輸入值和串行掃描數(shù)據(jù)決定,無法受端口直接控制,因此門控時鐘的打開和關(guān)閉無法受端口直接控制,進而導(dǎo)致門控時鐘的后級寄存器因為不符合可測性設(shè)計規(guī)則而無法串入掃描鏈,降低測試覆蓋率。
因此在門控時鐘設(shè)計中必須采取相應(yīng)的措施,最大程度地消除門控對于可測性設(shè)計的不良影響。
1.3 門控時鐘對時序的影響
由于門控邏輯在時鐘路徑上額外增加了邏輯,也就額外增加了延時,會對時鐘樹本身造成影響;同時,門控邏輯通常包含latch、or、and等邏輯結(jié)構(gòu),這些邏輯結(jié)構(gòu)本身也有時序檢查要求。門控時鐘對時序的影響,相應(yīng)地分為3個方面:
(1)由于門控時鐘的加入,導(dǎo)致設(shè)計最終無法時序收斂;
(2)門控時鐘本身邏輯,最終無法時序收斂;
(3)由于約束不嚴,導(dǎo)致盡管時序收斂,但實際上仍然存在風險。
2 門控時鐘優(yōu)化技術(shù)
針對前文提出的門控時鐘對電路功能、可測性和時序3方面的風險和影響,下文將逐一提出可實現(xiàn)的解決方案,通過腳本語言、設(shè)計約束、設(shè)計優(yōu)化等多種手段,規(guī)避門控時鐘帶來的風險,最大程度降低門控時鐘對于可測性和時序的影響,并最終實現(xiàn)功耗最優(yōu)化。
2.1 異步門控時鐘和端口門控時鐘的優(yōu)化技術(shù)
從圖3中可以看出,當門控信號和被門控時鐘存在不確定的相位關(guān)系時,就可能出現(xiàn)問題,這類門控信號有兩個可能來源:異步時鐘域和端口。為了避免此種現(xiàn)象的發(fā)生,有兩個方法:
(1)采用LEDA、CDC等工具進行跨時鐘域信號檢查,確認不存在異步時鐘域間的數(shù)據(jù)交互;如果必須采用異步時序,則在異步界面上增加兩級同步寄存器,消除亞穩(wěn)態(tài);
(2)在邏輯綜合或時序分析工具中,利用腳本語言(例如Tcl)將設(shè)計中所有產(chǎn)生門控信號的前級邏輯的時鐘、被門控時鐘抓取出來。具體操作:采用all_fanin -to [get_pins -hierarchical -filter "full_name =~ */clk_gate*_reg*/EN"] -flat -startpoints_only抓取所有門控信號EN的前級寄存器的時鐘,采用get_pins -of [get_cell $latch_name/main_gate] -filter "full_name =~ */B"抓取被門控時鐘[3]。
如果產(chǎn)生門控信號的時鐘、被門控的時鐘不是同一個時鐘,或同一個時鐘的不同沿,或產(chǎn)生門控信號的是端口輸入,則為異步或端口門控時鐘。如果存在圖6中的情況,則立即可以發(fā)現(xiàn)。
在第一次綜合結(jié)束后,通過命令確認上述3種極有可能造成邏輯錯誤的門控時鐘情況后,采用綜合工具的命令(set_clock_gating_registers -exclude_instances),將上述門控邏輯屏蔽掉,重新進行綜合。經(jīng)過上述流程,可以保證所有門控邏輯:門控信號和被門控時鐘永遠保持穩(wěn)定的、合法的時序關(guān)系,門控時鐘后級邏輯可以穩(wěn)定正常地工作,不會因為被門控時鐘上的毛刺而產(chǎn)生功能錯誤,極大地提高了設(shè)計的可靠性。
2.2 門控時鐘可測性設(shè)計的優(yōu)化技術(shù)
門控時鐘可測性設(shè)計的優(yōu)化技術(shù)包含兩方面:
(1)在沒有加入可控制邏輯的情況下,門控時鐘驅(qū)動的后級寄存器的時鐘在測試狀態(tài)下不可控。針對此問題,在門控時鐘插入過程中,增加門控時鐘旁路結(jié)構(gòu),使得門控時鐘在測試狀態(tài)下保持常通,如圖7所示。
在門控邏輯上增加了一個輸入管腳TE和一個旁路的或門,TE通常連接頂層的測試模式信號test_mode。在測試狀態(tài)下,test_mode為固定高電平,因此latch的輸入LD為固定高電平,ENL為固定高電平,CLK直接傳遞給ENCLK。因此在測試模式下,ENCLK與CLK保持一致,門控邏輯被旁路掉了,時鐘從外部輸入端口可控,不會對可測性造成影響。
(2)選擇最優(yōu)化的門控時鐘可控制邏輯,實現(xiàn)可測性的最優(yōu)化。提高門控時鐘可測性的方法,也可以在latch的LQ端進行旁路,并且采用頂層的scan_enable進行控制,如圖8所示。
對比圖7和圖8可以看出,or邏輯在latch之前還是之后,對于旁路時鐘的作用沒有區(qū)別,但是考慮到or邏輯在latch之前可以多一次同步,因此一般把or邏輯放在latch之前,通過命令set_clock_gating_style-control_point before實現(xiàn);在控制信號方面,test_mode在測試狀態(tài)中都是固定的,而scan_enable信號在shift和capture下會出現(xiàn)翻轉(zhuǎn),對于激活故障是有利的,能夠有效地提高測試覆蓋率,因此選擇scan_enable作為控制信號,通過命令set_clock_gating_style -control_signal scan_enable實現(xiàn)。
通過上述門控時鐘可測性設(shè)計的優(yōu)化技術(shù),可以明顯提高具有門控時鐘邏輯的電路的測試覆蓋率,具有現(xiàn)實的工程意義。
2.3 門控時鐘時序的優(yōu)化技術(shù)
針對前文提出的門控時鐘對于時序影響的3個方面,本論文提出了一套針對整個設(shè)計流程的不同階段的優(yōu)化方法:
(1)代碼設(shè)計階段
在代碼設(shè)計階段,盡量避免多級門控時鐘。因為多級門控時鐘會逐級增加時鐘樹延時,相比于其它沒有門控邏輯的時鐘節(jié)點出現(xiàn)差異,可能會導(dǎo)致在綜合階段出現(xiàn)時序優(yōu)化問題。建議采用合并多級門控邏輯的設(shè)計方法,如圖9所示。
(2)邏輯綜合階段
在邏輯綜合階段,由于尚未形成時鐘樹,時鐘網(wǎng)絡(luò)是0延時的理想網(wǎng)絡(luò)。為了預(yù)估門控邏輯在后續(xù)設(shè)計階段可能帶來的時序影響,需要提前留出裕量,可以通過set_clock_gate_latency來實現(xiàn)。
此外,一般工藝庫中,組合邏輯默認的建立保持時間都是0,對于門控邏輯中的and與門來說,意味著在門控信號和被門控的時鐘沿同時翻轉(zhuǎn)的情況下,工具也不會報出時序違例。針對此種情況,通過邏輯綜合的set_clock_gating_style和時序分析的set_clock_gating_check命令來加嚴約束[4]。
(3)布局布線階段
在布局布線階段,對于時序非常緊張的門控單元,需要將這些單元緊密排列,在布局布線工具中應(yīng)當設(shè)置布局限制約束,例如ICC中的placement bound等命令[5];此外,如果意外地將門控時鐘的層次打平,需要防止布局布線工具把門控的latch當作時鐘樹的終點來調(diào)整skew,從而造成扇出的被門控邏輯的時鐘樹超長。
3 結(jié)語
通過本文提出的對于門控時鐘功能穩(wěn)定性、可測性、時序3方面的優(yōu)化技術(shù),可以實現(xiàn)進行門控時鐘設(shè)計時不會產(chǎn)生毛刺、芯片故障覆蓋率最大化、以及時序最優(yōu)3方面的目標,為超大規(guī)模數(shù)字集成電路的功耗優(yōu)化設(shè)計提供了完整的解決方案和優(yōu)化手段,并已經(jīng)在數(shù)字專用集成電路的設(shè)計過程中進行了充分的工程化應(yīng)用,取得了良好的效果。
參考文獻
[1] CHOI K,SOMA R,PEDRAM M.Dynamic voltage and frequency scaling based on workload decomposition[M].ACM International Symposium on Low Power Electronics and Design.2004.
[2] 卜愛國,余翩翩,吳建兵,等.基于自適應(yīng)門控時鐘的CPU功耗優(yōu)化和VLSI設(shè)計.東南大學學報(自然科學版).2015,45(2):219-223.
[3] Power Compiler User Guide.Synopsys.2014.
[4] PrimeTime User Guide.Synopsys,2014.
[5] IC Compiler Implementation User Guide.Synopsys.2014.
作者信息:
喻賢坤,姜 爽,王 磊,王 莉,彭 斌
(中國航天科技集團第九研究院第七七二研究所,北京100076)