劉廣東,石國帥,徐浩然
(北京計(jì)算機(jī)技術(shù)及應(yīng)用研究所,北京 100854)
雙核SoC芯片掃描鏈測試設(shè)計(jì)與實(shí)現(xiàn)
劉廣東,石國帥,徐浩然
(北京計(jì)算機(jī)技術(shù)及應(yīng)用研究所,北京 100854)
針對芯片生產(chǎn)過程中可能引入短路和斷路等制造缺陷的問題,實(shí)現(xiàn)了基于掃描鏈測試的雙核SoC芯片可測性設(shè)計(jì)電路;根據(jù)雙核SoC中DSP硬核、CPU軟核特點(diǎn)采用不同的掃描鏈設(shè)計(jì)方案:利用DSP硬核中已有掃描鏈結(jié)構(gòu),將DSP測試端口復(fù)用到芯片頂層端口,在CPU軟核和其它硬件邏輯中插入新的掃描鏈電路;掃描鏈測試支持固定型故障測試和時(shí)延相關(guān)故障測試;針對時(shí)延故障測試,設(shè)計(jì)了片上時(shí)鐘控制電路,利用PLL輸出高速時(shí)鐘脈沖進(jìn)行實(shí)速測試;采用自動測試向量生成工具產(chǎn)生測試向量,結(jié)果表明,芯片固定型故障的測試覆蓋率可以達(dá)到97.6%,時(shí)延故障測試覆蓋率可以達(dá)到84.9%,滿足芯片測試覆蓋率要求。
可測性設(shè)計(jì);掃描鏈測試;雙核;片上時(shí)鐘控制
在芯片制造過程中,各種隨機(jī)因素及生產(chǎn)線自身缺陷都可能導(dǎo)致芯片制造故障,使芯片不能正常工作,故需要對生產(chǎn)出的芯片進(jìn)行測試[1]。單個(gè)芯片上可以集成多個(gè)處理器核,內(nèi)部IP越來越多,其時(shí)序結(jié)構(gòu)也更加復(fù)雜,對芯片的測試難度大大增加。為了達(dá)到測試目標(biāo),必須采用可測性設(shè)計(jì)(DFT)技術(shù),通過增加測試邏輯和測試引腳,解決芯片的有效和自動測試問題??蓽y性設(shè)計(jì)技術(shù)主要包括掃描鏈測試(Scan),存儲器內(nèi)建自測試(MBIST)和邊界掃描測試(BSD)等[2]??蓽y性設(shè)計(jì)關(guān)系到芯片的測試成本及良率,需要以較短的測試時(shí)間和較低的測試成本來獲得較高的測試覆蓋率和測試質(zhì)量[3]。在0.13 μm工藝和以下,與時(shí)序相關(guān)故障所占比例越來越大,而通常由測試機(jī)提供慢速時(shí)鐘的測試無法覆蓋時(shí)序相關(guān)的故障,由于這些原因,實(shí)速(at-speed)測試已成為一種必需的測試手段。
SoC芯片為一個(gè)大規(guī)模的時(shí)序電路,其電路可以通過組合網(wǎng)絡(luò)和觸發(fā)器的反饋建模,如圖1所示。這些觸發(fā)器的值代表電路的狀態(tài),但由于很難控制或觀測觸發(fā)器值,故難以直接對時(shí)序電路產(chǎn)生測試向量。掃描鏈測試技術(shù)就是把普通觸發(fā)器修改為掃描觸發(fā)器,并通過掃描輸入端口將觸發(fā)器串聯(lián)成掃描鏈。根據(jù)是否將所有觸發(fā)器替換成掃描觸發(fā)器,掃描設(shè)計(jì)分為“全掃描設(shè)計(jì)”和“部分掃描設(shè)計(jì)”。掃描鏈測試向量通過掃描鏈測試輸入管腳輸入,對掃描觸發(fā)器值進(jìn)行控制,掃描測試結(jié)果通過芯片掃描輸出管腳輸出,可以觀測掃描測試結(jié)果。通過掃描移位,掃描觸發(fā)器值既是測試數(shù)據(jù)的輸入,又可以作為測試響應(yīng)的輸出。掃描鏈測試分為掃描移位階段、捕獲階段和掃描輸出階段,掃描移位階段是將測試向量通過掃描觸發(fā)器串行地輸入掃描鏈,捕獲階段是通過觸發(fā)器捕獲組合邏輯輸出的狀態(tài),掃描輸出階段是將捕獲的組合邏輯輸出值通過掃描鏈輸出,通過比較掃描鏈輸出與期望結(jié)果判斷芯片內(nèi)部是否出現(xiàn)故障。
圖1 時(shí)序電路模型圖
掃描鏈測試分為基于固定型故障的測試(stuck-at測試)和基于時(shí)延故障的測試(實(shí)速測試),兩者的區(qū)別僅在于捕獲階段不同,stuck-at測試捕獲階段使用的時(shí)鐘為慢速的掃描移位時(shí)鐘,時(shí)鐘頻率通常為數(shù)十MHz,只需要一個(gè)時(shí)鐘脈沖,而實(shí)速測試捕獲階段使用高速功能時(shí)鐘脈沖,通常為數(shù)百兆赫茲甚至數(shù)吉赫茲,捕獲階段需要2個(gè)及以上捕獲時(shí)鐘脈沖。
異構(gòu)雙核SoC芯片是一款系統(tǒng)級超大規(guī)模集成電路,芯片架構(gòu)框圖如圖2所示。SoC芯片內(nèi)部集成了CPU軟核,DSP硬核、存儲器、總線系統(tǒng)、數(shù)據(jù)處理和通信模塊及多種IO接口,各模塊通過片內(nèi)互聯(lián)總線通信。由于SoC芯片內(nèi)部模塊的類型及來源多種多樣,需要采用不同的可測性設(shè)計(jì)方法。SoC芯片需采用的DFT測試方法包括:掃描鏈測試[5]、存儲器內(nèi)建自測試和邊界掃描測試[6],本文主要針對掃描鏈測試進(jìn)行研究。
圖2 異構(gòu)雙核SoC架構(gòu)框圖
綜合生成網(wǎng)表后即需要進(jìn)行掃描鏈測試插入掃描鏈設(shè)計(jì),由于雙核SoC中的DSP采用的是硬核設(shè)計(jì),硬核內(nèi)部已經(jīng)插入掃描鏈結(jié)構(gòu),掃描測試的端口也已經(jīng)引出到硬核端口上,故不需要對DSP硬核進(jìn)行專門的插掃描鏈設(shè)計(jì),只需要將硬核的掃描端口通過pad復(fù)用或分配專用pad的方式引出到SoC的頂層端口上即可。對于CPU軟核和硬件邏輯,采用掃描鏈插入工具采用自頂向下的方式插入掃描鏈。
由于實(shí)速測試需要使用較高的測試時(shí)鐘頻率,而一般測試機(jī)提供的時(shí)鐘無法達(dá)到要求的頻率,使用可以提供高頻時(shí)鐘的測試機(jī)又往往成本昂貴,故需要設(shè)計(jì)一種專門的時(shí)鐘結(jié)構(gòu)電路,使實(shí)速測試不必由測試機(jī)提供高速時(shí)鐘,而是使用芯片內(nèi)部PLL輸出的高速時(shí)鐘。芯片可測性設(shè)計(jì)中采用一個(gè)專用片上時(shí)鐘控制電路(OCC)解決實(shí)速測試的時(shí)鐘問題。掃描鏈測試采用全掃描設(shè)計(jì),合理劃分可測性設(shè)計(jì)的控制端口和掃描鏈數(shù)目,通過掃描測試模式選擇信號控制時(shí)鐘和復(fù)位信號的可控性。同時(shí),通過增加掃描寄存器,將內(nèi)部不可控和不可觀測的陰影邏輯修改為可控和可觀測邏輯,增加內(nèi)部邏輯的可控性和可觀測性,可以提高掃描鏈測試的覆蓋率。SoC芯片內(nèi)部的高速時(shí)鐘域包括CPU時(shí)鐘,DSP時(shí)鐘和AXI總線時(shí)鐘,在每個(gè)時(shí)鐘源處插入一個(gè)OCC控制電路可以實(shí)現(xiàn)全芯片的實(shí)速測試,SoC芯片掃描鏈設(shè)計(jì)信息和控制接口設(shè)計(jì)分別見表1和表2。
表1 掃描鏈設(shè)計(jì)信息表
表2 掃描鏈控制接口表
3.1 固定型故障測試掃描鏈設(shè)計(jì)實(shí)現(xiàn)
3.1.1 DSP掃描鏈測試設(shè)計(jì)
DSP硬核內(nèi)部已經(jīng)包含有掃描鏈結(jié)構(gòu),將DSP集成到SoC內(nèi)部時(shí)將DSP的掃描鏈控制接口復(fù)用到芯片頂層的端口實(shí)現(xiàn)掃描控制和測試向量輸入,測試使能信號、掃描使能信號、壓縮模式信號和Shift_clk時(shí)鐘采用芯片專用管腳,掃描鏈輸入和輸出管腳通過復(fù)用芯片頂層功能管腳實(shí)現(xiàn)。管腳復(fù)用完成后將頂層端口的控制端口信息加入到DSP的測試向量中,即可實(shí)現(xiàn)用SoC端口和DSP硬核自身的測試向量實(shí)現(xiàn)DSP的掃描鏈測試。
3.1.2 CPU掃描鏈測試設(shè)計(jì)
CPU和其余硬件邏輯的掃描鏈測試設(shè)計(jì)包括兩部分內(nèi)容:掃描鏈插入和測試矢量生成[4]。其中,掃描鏈插入具體的步驟為:
1)讀入設(shè)計(jì)文件:讀入的文件可以是DC綜合后的Verilog格式或DDC格式的網(wǎng)表文件。
2)創(chuàng)建測試協(xié)議:創(chuàng)建測試協(xié)議需要定義測試相關(guān)的信號,包括定義時(shí)鐘信號、復(fù)位信號、常量、測試模式、測試壓縮信號、掃描端口信號(SI,SO,SE等)和掃描單元類型等,采用DFT Compiler工具腳本創(chuàng)建spf格式的測試協(xié)議文件。
3)設(shè)計(jì)規(guī)則檢查(DRC):掃描鏈測試要求電路中的每個(gè)節(jié)點(diǎn)處于可控制和可觀測狀態(tài),只有這樣才可以保證其可替換為相應(yīng)的掃描單元,并且保證故障覆蓋率。為了保證電路中的每個(gè)節(jié)點(diǎn)都符合設(shè)計(jì)需求,在掃描鏈插入前會進(jìn)行掃描設(shè)計(jì)規(guī)則的檢查并根據(jù)DRC檢查結(jié)果修改設(shè)計(jì)?;驹O(shè)計(jì)規(guī)則包括:
(1)使用同種類掃描單元進(jìn)行替換,選擇帶多路選擇器的掃描觸發(fā)器;
(2)在原始輸入端必須能夠?qū)λ杏|發(fā)器的時(shí)鐘端和異步復(fù)位端進(jìn)行控制;
(3)時(shí)鐘信號不能作為觸發(fā)器的輸入信號;
(4)三態(tài)總線在掃描輸入模式處于非活躍狀態(tài);
(5)ATPG無法識別的邏輯應(yīng)加以屏蔽和旁路;
(6)門控時(shí)鐘或者門控異步輸入端設(shè)計(jì)規(guī)則。
除了以上基本規(guī)則,其它設(shè)計(jì)規(guī)則還包括:
(7)盡量避免異步時(shí)鐘設(shè)計(jì);
(8)限制不同時(shí)鐘域的數(shù)量;
(9)對于多時(shí)鐘域的設(shè)計(jì),處于同一時(shí)鐘域的觸發(fā)器最好連接在同一根掃描鏈上;
(10)對于扇出比較多的端口,如ScanEn信號,在綜合的時(shí)候需要注意;
(11)對于存儲器,模擬電路等不可綜合的邏輯加入適當(dāng)?shù)母綦x旁路結(jié)構(gòu);
(12)避免過長的掃描鏈,設(shè)置加入掃描壓縮電路;
(13)盡量減少額外邏輯帶來的面積、功耗的增大;
(14)通過復(fù)用引腳,減少掃描測試對引腳的要求。
4)插入掃描鏈:為了使得掃描鏈長度更加均衡,設(shè)計(jì)對掃描鏈鏈加入mix_clock功能;
5)插入掃描鏈后執(zhí)行DRC檢查;
6)生成測試協(xié)議文件和網(wǎng)表文件,用于后續(xù)的自動測試向量生成。
3.2 實(shí)速測試掃描鏈設(shè)計(jì)實(shí)現(xiàn)
實(shí)速測試用于檢測時(shí)延故障,其掃描鏈結(jié)構(gòu)和測試流程與普通的掃描鏈測試一致,不同之處在于在掃描鏈捕獲階段的時(shí)鐘不同。SoC芯片內(nèi)部主要包含CPU時(shí)鐘、DSP時(shí)鐘、AXI時(shí)鐘和APB時(shí)鐘4個(gè)時(shí)鐘域,其中CPU時(shí)鐘、DSP時(shí)鐘和AXI時(shí)鐘為高速時(shí)鐘,APB為48MHz低速時(shí)鐘。為實(shí)現(xiàn)實(shí)速測試,在異構(gòu)雙核SoC芯片內(nèi)部高速時(shí)鐘設(shè)計(jì)片上時(shí)鐘控制電路。片上時(shí)鐘控制電路的作用為在掃描鏈的捕獲階段輸出2個(gè)或多個(gè)高速的捕獲脈沖,寄存器通過高速捕獲脈沖寄存組合邏輯的輸出值并通過掃描鏈輸出,在掃描輸出端口與期望測試結(jié)果比較即可判斷芯片內(nèi)部是否存在時(shí)延故障。片上時(shí)鐘電路的結(jié)構(gòu)如圖3所示。
圖3 片上時(shí)鐘控制電路的結(jié)構(gòu)圖
片上時(shí)鐘控制電路包括:模式控制模塊、時(shí)鐘鏈模塊、信號同步模塊和時(shí)鐘輸出模塊。信號同步模塊輸入移位時(shí)鐘shift_clk和高速時(shí)鐘PLL_clk,shift_clk時(shí)鐘由芯片外部輸入,用于實(shí)速測試中掃描寄存器的移位,PLL_clk時(shí)鐘由芯片內(nèi)部PLL產(chǎn)生,用于芯片功能時(shí)鐘或?qū)嵥贉y試捕獲時(shí)鐘。通過寄存器同步方式對掃描使能信號ScanEn進(jìn)行同步化,為保證同步后的ScanEn_syn信號可以正確的被shift_clk和PLL_clk時(shí)鐘的上升沿采樣,采用下降沿同步的方式。由于移位時(shí)鐘Shift_clk的頻率較低,故采用Shift_clk時(shí)鐘對ScanEn信號進(jìn)行一級寄存器同步,而PLL輸出的時(shí)鐘頻率較高,采用PLL_clk時(shí)鐘對ScanEn信號進(jìn)行三級寄存器同步。
時(shí)鐘鏈模塊通過移位寄存器移位的方式將高速時(shí)鐘使能信號移入由10個(gè)觸發(fā)器組成的移位寄存器組,當(dāng)觸發(fā)器輸入ATPG工具生成的二進(jìn)制測試向量‘0’表示不產(chǎn)生高速時(shí)鐘使能信號,‘1’表示產(chǎn)生高速時(shí)鐘使能信號。測試向量中1的個(gè)數(shù)控制時(shí)鐘鏈模塊輸出的高速時(shí)鐘脈沖使能信號的個(gè)數(shù)。由于實(shí)速測試捕獲階段至少需要一個(gè)發(fā)射時(shí)鐘和一個(gè)捕獲時(shí)鐘,測試向量中1的個(gè)數(shù)為2-10個(gè),故時(shí)鐘鏈模塊可以產(chǎn)生2到10個(gè)高速時(shí)鐘使能信號。
模式控制模塊包括狀態(tài)機(jī)跳轉(zhuǎn)模塊和狀態(tài)機(jī)輸出模塊。狀態(tài)機(jī)跳轉(zhuǎn)模塊根據(jù)3個(gè)控制信號決定當(dāng)前電路的時(shí)鐘模式,3個(gè)控制信號分別為測試模式信號TestMode,旁路信號Bypass和掃描使能信號ScanEn。只要信號TestMode=0時(shí),電路就處于功能模式;當(dāng)信號TestMode=1并且Bypass=1時(shí),電路處于旁路模式;當(dāng)信號TestMode=1、Bypass=0、ScanEn=1時(shí),電路處于移位模式;當(dāng)信號TestMode=1、Bypass=0、ScanEn=0時(shí),電路處于捕獲模式。狀態(tài)機(jī)跳轉(zhuǎn)模塊控制狀態(tài)機(jī)產(chǎn)生state狀態(tài)信號,狀態(tài)機(jī)輸出模塊根據(jù)state值輸出內(nèi)部時(shí)鐘inner_clk信號。
時(shí)鐘輸出模塊根據(jù)當(dāng)前的時(shí)鐘模式,控制選擇器輸出相應(yīng)的時(shí)鐘。當(dāng)TestMode為0時(shí),輸出高速時(shí)鐘PLL_clk;當(dāng)TestMode為1,Bypass 為0,ScanEn為1時(shí),輸出shift_clk;當(dāng)TestMode為1,Bypass 為0,ScanEn為0時(shí),輸出inner_clk;當(dāng)TestMode為1,Bypass 為1時(shí),輸出移位時(shí)鐘shift_clk。
通過片上時(shí)鐘控制電路,可以產(chǎn)生芯片實(shí)速測試需要的高速時(shí)鐘,進(jìn)而實(shí)現(xiàn)芯片的實(shí)速測試,檢測芯片的時(shí)延故障。
3.3 自動測試向量生成設(shè)計(jì)實(shí)現(xiàn)
異構(gòu)雙核SoC掃描鏈的ATPG設(shè)計(jì)的目的是產(chǎn)生測試向量并進(jìn)行覆蓋率評估。ATPG使用synopsys公司的tetramax軟件,版本為J-2014.09;通過tetramax工具可以查看掃描鏈?zhǔn)欠癫迦氤晒?,另外,通過對測試覆蓋率的評估,可以評判可測試性設(shè)計(jì)的優(yōu)劣。ATPG設(shè)計(jì)實(shí)現(xiàn)過程如下:
1)讀取測試協(xié)議spf文件:其中,對于剛剛從design_compiler中生成的spf而言,需要在test_seup階段啟動時(shí)鐘信號,通常還會配置復(fù)位信號;
2)讀取帶掃描鏈的網(wǎng)表設(shè)計(jì)文件;
3)讀入tetramax使用的庫文件:讀取工藝廠的庫文件,變成tetramax可以識別的庫文件;
4)構(gòu)造ATPG模型;
5)DRC檢查,如果DRC檢查沒有通過,通過tetramax可以分析原因,通常的原因是時(shí)鐘、異步復(fù)位和測試控制信號不受控;
6)設(shè)置故障類型,覆蓋率目標(biāo)等參數(shù);
7)運(yùn)行ATPG,生成測試向量和對應(yīng)的測試激勵(lì);
8)通過VCS仿真生成的測試向量。
異構(gòu)雙核SoC采用全掃描測試設(shè)計(jì),芯片共含有83000多個(gè)觸發(fā)器,另外,異構(gòu)雙核SoC內(nèi)部共有64條掃描鏈,平均長度約為1 296。通過ATPG工具生成測試向量,stuck-at測試向量個(gè)數(shù)為9 352個(gè),固定型故障測試覆蓋率為97.6%;實(shí)速測試生成測試向量個(gè)數(shù)10 380個(gè),時(shí)延故障測試覆蓋率為84.9%,滿足芯片的測試故障覆蓋率要求。
針對雙核SoC的特點(diǎn),給出了一種有效的掃描鏈測試方案,并設(shè)計(jì)了片上時(shí)鐘控制電路,實(shí)現(xiàn)了芯片實(shí)速測試。結(jié)果表明,芯片的固定故障和時(shí)延相關(guān)故障測試覆蓋率滿足要求。
同時(shí),設(shè)計(jì)的片上時(shí)鐘控制電路可以方便的移植到不同的芯片掃描鏈測試設(shè)計(jì)中。
[1] 周 妮,喬 飛,譚斯斯,等.32位MIPS處理器可測性設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué),2010, 40(6):782-791.
[2] 成 立,王振宇,高 平,等.VLSI電路可測性設(shè)計(jì)技術(shù)及其應(yīng)用綜述[J].半導(dǎo)體技術(shù),2004,29(5):21-23.
[3] IEEE Standard Test Access Port And Boundary-Scan Architecture,IEEE Std 1149.1-1990[S].
[4] 徐勇軍,張 伸,張志敏,等.SoC設(shè)計(jì)中的掃描測試技術(shù)[S].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2005,17 (12): 2685-2689.
[5] Steininger A. Testing and built-in self-test A survey[J]. Journal of Systems Architecture, 2000,46:721-747.
[6] 徐智偉,張盛兵.SoC的可測性設(shè)計(jì)策略[J].計(jì)算機(jī)測量與控制,2008,16(8):1095-1098.
Design and Implementation of Scan Based Test for Dual-core SoC
Liu Guangdong, Shi Guoshuai, Xu Haoran
(Institute of Beijing Computer Technology and Application,Beijing 100854, China)
In order to detect the defect of manufacturing such as short and open circuit, the scan based DFT circuit of dual core SoC is realized. The scan structure has been inserted into the hard-core DSP, so the DSP’s test ports are connected to the SoC chip leads. Scan chains are inserted into the CPU core and other hardware logic. Scan based test supports stuck-at fault and transition fault test. According to the transition fault, an on-chip clock control circuit is designed to use high speed PLL clock for at-speed test. The ATPG tool is used to generate test vectors, the result shows that the stuck-at fault test coverage rate can reach 97.6%, transition fault test coverage rate can reach 84.9%, meet the test coverage requirements of the chip.
design for testability; scan based test; dual-core ; on chip clock
2016-10-24;
2016-11-22。
劉廣東(1985-),男,山東省單縣人,碩士研究生,工程師,主要從事SoC可測性設(shè)計(jì)方向的研究。
1671-4598(2017)04-0015-03
10.16526/j.cnki.11-4762/tp.2017.04.005
TN407
A