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