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