孫 誠,邵 健
(中電科申泰信息科技有限公司,江蘇無錫 214000)
數(shù)字電路的復(fù)雜性決定了在測試中需要能夠訪問各種外設(shè)或內(nèi)核模塊,同時需要在測試時能夠把它們彼此隔離開且不得明顯增加測試成本的方法[1]。聯(lián)合測試工作組(Joint Test Action Group,JTAG)和電子與電氣工程師協(xié)會(The Institute of Electrical and Electronics Engineers,IEEE)共同提出了將串行測試數(shù)據(jù)移位輸出到一個電路板接口的一套規(guī)范,也被稱為邊界掃描[2]。由于省去了用物理探針探測被測組件引腳的過程,該方法提高了對數(shù)字電路內(nèi)部的可控性和可觀測性[3]。
JTAG標(biāo)準(zhǔn)的核心思想是在芯片管腳和芯片內(nèi)部邏輯之間增添移位寄存器組,被稱為邊界掃描寄存器(Boundary Scan Register,BSR)[4]。BSR的引入使得芯片在測試數(shù)據(jù)輸入(Test Data Input,TDI)端口和測試數(shù)據(jù)輸出(Test Data Output,TDO)端口之間形成一個掃描通道[5]。TDI端口用來將串行測試數(shù)據(jù)輸入芯片,并移入BSR內(nèi),TDO端口用于串行輸出測試數(shù)據(jù)[6]。
典型的BSR包括一組通用數(shù)據(jù)輸入輸出端口,以及TDI和TDO端口。非測試模式下,通用數(shù)據(jù)輸入輸出端口用于芯片內(nèi)部邏輯和輸入輸出(Input Output,IO)引腳的信號交互;測試模式下,測試數(shù)據(jù)通過TDI端口移入BSR,或者捕獲通用數(shù)據(jù)輸入端口的信號,通過TDO端口移出BSR[7]。
存在于IEEE 1149.1標(biāo)準(zhǔn)之下的多種BSR單元的設(shè)計,主要包括具有一組通用數(shù)據(jù)輸入輸出端口的BSR電路和具有兩組通用數(shù)據(jù)輸入輸出端口的BSR電路[8]。本文在此基礎(chǔ)上,對現(xiàn)有的BSR電路進(jìn)行優(yōu)化,在保持原有功能的情況下力求電路性能參數(shù)指標(biāo)最優(yōu)化,進(jìn)而構(gòu)建出最優(yōu)的BSR單元。
基本的邊界掃描鏈(Boundary Scan Chain,BSC)結(jié)構(gòu)如圖1所示,若干BSR通過串行移位的方式連接,測試數(shù)據(jù)通過TDI端口移入BSC,最終通過TDO端口移出數(shù)據(jù)。與此同時,BSC起到了連接IO引腳和內(nèi)部邏輯的作用,通過內(nèi)部的IO引腳方向復(fù)用邏輯確定將要測試的引腳功能,進(jìn)而實現(xiàn)引腳輸入或輸出功能的測試。
圖1 BSC結(jié)構(gòu)
傳統(tǒng)的BSR單元結(jié)構(gòu)如圖2所示,整個單元由2個多路選擇器和2個D觸發(fā)器組成。觸發(fā)器的時鐘和復(fù)位信號應(yīng)該與系統(tǒng)時鐘和復(fù)位保持一致。多路選擇器的選擇端信號應(yīng)受到如圖3所示的測試接入端口(Test Access Port,TAP)控制器的控制,在控制器狀態(tài)機(jī)處于某一狀態(tài)時,使能相對應(yīng)控制信號。
圖2 傳統(tǒng)BSR單元
在傳統(tǒng)BSR單元的基礎(chǔ)上,可以將傳統(tǒng)單元結(jié)構(gòu)進(jìn)行變形,根據(jù)設(shè)計需要增加或減少信號、門電路。本文參考Synopsys公司旗下的DesignWare系列電路單元,將其作為電路結(jié)構(gòu)優(yōu)化設(shè)計過程的初始電路單元。
基于傳統(tǒng)的BSR單元結(jié)構(gòu),Synopsys公司旗下DesignWare系列在邊界掃描領(lǐng)域提供了名為DW_bc_2的BSR電路單元。作為邊界掃描單元,由于其在結(jié)構(gòu)上依舊保持了傳統(tǒng)BSR電路具有一組通用數(shù)據(jù)輸入輸出端口和一組測試數(shù)據(jù)輸入輸出端口的特征,因此DW_bc_2可以作為一個系統(tǒng)輸入單元或一個輸出單元[9]。
DW_bc_2單元如圖4所示,在基本保持傳統(tǒng)的BSR單元結(jié)構(gòu)的基礎(chǔ)上,額外增加了2個多路選擇器,由capture_en和update_en信號作為各自的選擇端,并分別作為捕獲觸發(fā)器和更新觸發(fā)器的D端輸入。DataIn和DataOut、ScanIn和ScanOut即為一組通用數(shù)據(jù)輸入輸出端口和一組測試數(shù)據(jù)輸入輸出端口。增加多路選擇器的優(yōu)勢在于加強TAP控制器對邊界掃描仿真過程的可控性。電路圖中除了數(shù)據(jù)端口信號和時鐘信號,其余的信號均為多路選擇器的控制信號。其中shift_dr、capture_en和update_en信號都受到TAP控制器狀態(tài)機(jī)狀態(tài)的控制,在狀態(tài)機(jī)分別處于Shift_DR、Capture_DR和Update_DR狀態(tài)時,分別使能上述3個控制信號。該設(shè)計可以有效地控制仿真數(shù)據(jù)在電路中的流向,即在需要的時候,使能對應(yīng)的控制信號將仿真數(shù)據(jù)傳輸至下一單元,從而減少不必要的數(shù)據(jù)傳輸,降低不必要的靜態(tài)功耗。
圖4 DesignWare系列DW_bc_2單元
D觸發(fā)器在其輸入端接入2輸入多路選擇器的時候,可以選擇將兩者合并,使得原先的D觸發(fā)器具有一個使能信號,這種門電路的組合可以減少電路元件的數(shù)量,從而對整個電路的性能有所提升。所以在此基礎(chǔ)上可以將capture_en控制下的多路選擇器和capture_clk控制下的捕獲觸發(fā)器進(jìn)行合并,形成一個帶有低電平有效使能信號的D觸發(fā)器。
由于單一的4輸入多路選擇器能夠在電路性能上優(yōu)于2個2輸入多路選擇器的串聯(lián),亦可以將capture_en和shift_dr控制下的2個2輸入多路選擇器合并為一個4輸入多路選擇器。上述2種優(yōu)化電路如圖5、6所示,這2種單元結(jié)構(gòu)即為目前所存在的針對DW_bc_2單元的2種電路優(yōu)化形式。
圖5 帶有低電平有效使能信號D觸發(fā)器的DW_bc_2單元
圖6 帶有4輸入多路選擇器的DW_bc_2單元
綜上所述,可以基于最初的DW_bc_2單元,最大限度合并多路選擇器和觸發(fā)器,從而實現(xiàn)電路結(jié)構(gòu)的最精簡設(shè)計,即將capture_en、update_en控制下的多路選擇器分別和capture_clk、update_clk控制下的觸發(fā)器進(jìn)行合并,使得原先的觸發(fā)器增加使能信號,優(yōu)化之后的電路如圖7所示。值得注意的是,通過將原始的DW_bc_2單元經(jīng)過門電路合并的方式逐步優(yōu)化后,最終的電路結(jié)構(gòu)即為在傳統(tǒng)BSR單元基礎(chǔ)上,省略觸發(fā)器的復(fù)位信號,并將2個D觸發(fā)器分別添加使能信號。
圖7 DW_bc_2優(yōu)化電路
ScanIn和ScanOut表示測試數(shù)據(jù)的輸入和輸出端口信號,測試數(shù)據(jù)通過ScanIn串行移位進(jìn)入寄存器單元,并把數(shù)據(jù)通過ScanOut串行移出。信號DataIn和DataOut用于實現(xiàn)內(nèi)部邏輯和IO引腳的互聯(lián)。
非測試模式下,信號mode置為0,DataIn信號直接連接至DataOut,當(dāng)其作為一個系統(tǒng)輸入單元的情況下,DataIn信號與IO引腳的C端連接,DataOut信號與內(nèi)部邏輯輸入模塊相連接;當(dāng)其作為一個系統(tǒng)輸出單元的情況下,DataIn信號與內(nèi)部邏輯輸出模塊相連接,DataOut信號與IO引腳的I端連接。與此同時,可以利用DataIn和DataOut信號將內(nèi)部邏輯OEN復(fù)用單元與IO引腳的OEN端連接,進(jìn)而控制IO引腳的輸入輸出方向。
測試模式下,信號mode置為1,可通過使能shift_dr移位信號將測試數(shù)據(jù)從ScanIn經(jīng)過capture_clk控制下的捕獲觸發(fā)器,通過ScanOut輸出,并經(jīng)由update_clk控制下的更新觸發(fā)器將測試數(shù)據(jù)傳遞至DataOut。此時的測試數(shù)據(jù)可以用來控制IO引腳的輸入輸出方向,數(shù)值置為0時進(jìn)行輸出仿真,數(shù)值置為1時進(jìn)行輸入仿真。輸出仿真時,DataOut信號與IO引腳的I端連接,通過IO引腳PAD端輸出;輸入仿真時,IO引腳PAD端的數(shù)據(jù)通過C端進(jìn)入寄存器單元,從DataIn信號開始,經(jīng)過shift_dr和capture_en信號的使能,通過ScanOut輸出。以上2種仿真均實現(xiàn)了通過端口對仿真數(shù)據(jù)的可控性和可觀測性。
由上述分析可知,相同的DW_bc_2電路可以在IO引腳OEN端設(shè)置為不同的數(shù)值時實現(xiàn)不同的仿真功能,基于這一特點,Synopsys的DesignWare系列提供了名為DW_bc_7的BSR電路單元。此電路單元通過增加門電路和信號的數(shù)量,將DW_bc_2電路作為系統(tǒng)輸入單元和輸出單元的2種功能同時集中在1個電路中[9]。
DesignWare系列DW_bc_7單元如圖8所示,當(dāng)mode1和mode2信號同時設(shè)置為0時,電路處于非測試模式,2個2輸入多路選擇器的數(shù)據(jù)通路實現(xiàn)了內(nèi)部邏輯和IO引腳的數(shù)據(jù)交互。當(dāng)mode1信號設(shè)置為1時,2輸入與門的輸出信號恒為0,此時電路處于測試模式,當(dāng)IO引腳OEN端數(shù)值為0時,進(jìn)行輸出仿真,測試數(shù)據(jù)從ScanIn經(jīng)過capture_clk控制下的捕獲觸發(fā)器,并經(jīng)由update_clk控制下的更新觸發(fā)器,將測試數(shù)據(jù)傳遞至IO引腳的I端,通過IO引腳PAD端輸出;當(dāng)IO引腳OEN端數(shù)值為1時,進(jìn)行輸入仿真,此時mode2應(yīng)該設(shè)置為0,IO引腳PAD端的數(shù)據(jù)通過C端進(jìn)入寄存器單元,經(jīng)過shift_dr和capture_en信號的使能,通過ScanOut輸出。
圖8 DesignWare系列DW_bc_7單元
在上述結(jié)構(gòu)中,無論是非測試模式還是測試模式,mode2信號始終為0,經(jīng)由mode2控制下的多路選擇器的這條路徑下,數(shù)據(jù)流始終從IO引腳的C端至內(nèi)部輸入邏輯,因此可以省略該多路選擇器,簡化非測試模式下的數(shù)據(jù)通路。具體結(jié)構(gòu)如圖9所示,此種電路結(jié)構(gòu)即為目前所存在的針對DW_bc_7單元的簡化形式。
圖9 DW_bc_7簡化結(jié)構(gòu)單元
通過以上的電路分析可知,測試模式下的輸入功能和輸出功能仿真過程彼此獨立,2種仿真過程完全由IO引腳OEN端數(shù)值決定,即2種仿真過程不可能同時進(jìn)行。因此根據(jù)3.1節(jié)針對DW_bc_2優(yōu)化電路單元的仿真過程,可以將輸入功能仿真和輸出功能仿真過程的數(shù)據(jù)流向反映在電路圖中,電路輸出、輸入仿真功能下仿真數(shù)據(jù)流向如圖10、11所示。
圖10 基于DW_bc_2優(yōu)化電路輸出仿真功能下仿真數(shù)據(jù)流向
圖11 基于DW_bc_2優(yōu)化電路輸入仿真功能下仿真數(shù)據(jù)流向
基于上述對仿真過程的電路分析,可以在DW_bc_2優(yōu)化電路結(jié)構(gòu)的基礎(chǔ)上,同時保留以上2種仿真過程的數(shù)據(jù)流向,則shift_dr信號控制下的2輸入多路選擇器的A端應(yīng)該為PAD C端口信號,而mode信號控制下的2輸入多路選擇器的輸出端應(yīng)該為PAD I端口信號。在此基礎(chǔ)上,原先電路結(jié)構(gòu)中IO引腳和內(nèi)部邏輯復(fù)用單元之間的連線應(yīng)被截斷,分別形成內(nèi)部邏輯輸入復(fù)用和內(nèi)部邏輯輸出復(fù)用2個信號端口。
由于內(nèi)部邏輯輸出復(fù)用和IO引腳I端之間有mode信號控制下的2輸入多路選擇器單元,即可通過mode信號的配置,完成非測試模式和測試模式之間的轉(zhuǎn)換。而IO引腳C端和內(nèi)部邏輯輸入復(fù)用之間未設(shè)置任何電路單元,這種結(jié)果導(dǎo)致在電路進(jìn)入測試模式時,IO引腳C端仍然將數(shù)據(jù)傳輸至內(nèi)部邏輯輸入復(fù)用單元,從而引起不必要的功耗?;诖朔治觯梢栽?個信號之間加入mode信號控制的三態(tài)門電路,當(dāng)mode信號為0,電路處于非測試模式,三態(tài)門等價于緩沖器,IO引腳C端可將數(shù)據(jù)傳輸至內(nèi)部邏輯輸入復(fù)用單元,當(dāng)mode信號為1,電路處于測試模式,三態(tài)門處于高阻態(tài),即可切斷2個信號之間的數(shù)據(jù)通路。DW_bc_7優(yōu)化電路如圖12所示。
圖12 DW_bc_7優(yōu)化電路
第3節(jié)所有的DW_bc_2和DW_bc_7 BSR單元電路均具有不同的電路結(jié)構(gòu),故針對門數(shù)量、面積、延遲和靜態(tài)功耗這4種參數(shù)指標(biāo)進(jìn)行電路性能比較。為了統(tǒng)一工藝庫和corner標(biāo)準(zhǔn),所有門電路的各種參數(shù)指標(biāo)數(shù)據(jù)均采用 TSMC工藝庫中TCBN28HPCPLUSBWP35P140_SSG0P81VM40C為基準(zhǔn),所有數(shù)據(jù)來源均出自TSMC公司有關(guān)電路單元的性能標(biāo)準(zhǔn)參考手冊TCBN28HPCPLUSBWP35P140 TSMC N28HPC Standard Cell Library Datasheet[10]。延遲指標(biāo)選擇傳輸延遲(Propagation Delay),其中需要分別考慮輸入信號從高電平轉(zhuǎn)化為低電平時輸出信號從高電平跳變至低電平所需要的延遲時間,記為tpHL,以及輸入信號從低電平轉(zhuǎn)化為高電平時輸出信號從低電平跳變至高電平所需要的延遲時間,記為tpLH。所有DW_bc_2和DW_bc_7 BSR單元電路中使用到的全部門電路的參數(shù)指標(biāo)如表1所示。
表1 門電路參數(shù)指標(biāo)[10]
傳輸延遲的計算方式采用上述TSMC公司性能標(biāo)準(zhǔn)參考手冊中提供的公式,以DFQD4BWP35P140(D觸發(fā)器)為例,其中Cload表示門電路輸出端的負(fù)載電容。DFQD4BWP35P140(D觸發(fā)器)時鐘端口至輸出端口的傳輸延遲為
由于傳輸延遲參數(shù)只在分析輸入功能或輸出功能仿真過程中需要使用,故針對每種BSR單元電路,未出現(xiàn)在仿真過程的數(shù)據(jù)流向上的門電路,無需考慮其傳輸延遲。
根據(jù)電路所使用到的門電路的參數(shù)指標(biāo)數(shù)據(jù),可以將所有的DW_bc_2和DW_bc_7 BSR單元電路的參數(shù)指標(biāo)進(jìn)行計算。需要注意的是,由于工藝庫中沒有帶有低電平有效使能端的D觸發(fā)器,因此低電平有效使能信號的捕獲觸發(fā)器需要由現(xiàn)有的帶有高電平有效使能端的D觸發(fā)器和反相器組成。同時,分析電路傳輸延遲時需要依照仿真過程中的最長路徑為基準(zhǔn),即輸出功能仿真的最長路徑從ScanIn信號至DataOut信號(或IO引腳的I端口信號),輸入功能仿真的最長路徑從DataIn信號(或IO引腳的C端口信號)至ScanOut信號。最終的BC單元參數(shù)指標(biāo)如表2所示。
表2 BSR電路參數(shù)指標(biāo)
靜態(tài)功耗、面積、門數(shù)量和傳輸延遲分別用P、A、N和t(包括tpLH和tpHL)表示。靜態(tài)功耗、面積和門數(shù)量的計算方式即將電路中出現(xiàn)的每個元件對應(yīng)的參數(shù)指標(biāo)相加,傳輸延遲的計算方式則根據(jù)不同仿真類型的仿真最長路徑,將路徑下所通過的所有門電路的延遲相加。以DW_bc_7優(yōu)化電路為例。
輸出功能仿真最長路徑:
輸入功能仿真最長路徑:
根據(jù)對全部BSR單元電路的性能比較,可以看出DW_bc_2和DW_bc_7最終的優(yōu)化電路在門數(shù)量、面積、靜態(tài)功耗和仿真過程的傳輸延遲4種參數(shù)指標(biāo)上性能均優(yōu)于DesignWare系列最原始的DW_bc_2和DW_bc_7電路。
結(jié)合圖1所示的BSC結(jié)構(gòu),將BSR電路的ScanIn和ScanOut端口進(jìn)行前后串聯(lián),形成一條鏈?zhǔn)浇Y(jié)構(gòu),將其置于IO引腳和內(nèi)部邏輯之間,從而形成兩者之間的數(shù)據(jù)互聯(lián)。而通過串行測試數(shù)據(jù)輸入輸出端口的測試數(shù)據(jù),可以實現(xiàn)對IO引腳雙向功能的仿真。目前所存在的BSC電路主要有兩種,一種是基于單一DW_bc_2優(yōu)化電路單元的BSC(見圖13);另一種是基于DW_bc_2和DW_bc_7優(yōu)化電路單元的BSC(見圖14)。
圖13 基于單一DW_bc_2優(yōu)化電路單元的BSC
圖14 基于DW_bc_2和DW_bc_7優(yōu)化電路單元的BSC
在基于單一DW_bc_2優(yōu)化電路單元結(jié)構(gòu)的BSC中,針對某一IO引腳,需要構(gòu)造3個BSR單元的串聯(lián)以完成IO雙向功能測試??梢詫⒅虚g一級的BSR設(shè)置為配置IO引腳的OEN功能,從而在串行移入測試數(shù)據(jù)的時候,將對應(yīng)中間一級的測試數(shù)據(jù)置為0或1,以實現(xiàn)IO引腳輸出或輸入功能的仿真。輸出功能仿真下,將對應(yīng)第一級的測試數(shù)據(jù)進(jìn)行隨機(jī)設(shè)置,通過ScanIn端口進(jìn)入BSR單元,此時數(shù)據(jù)被捕獲至capture_en控制下的D觸發(fā)器的輸出端口,當(dāng)update_en信號使能后,測試數(shù)據(jù)被更新至DataOut,進(jìn)而進(jìn)入IO引腳I端口,由于此時OEN為0,則測試數(shù)據(jù)可通過IO引腳PAD端口顯示出來;輸入功能仿真下,由于此時OEN為1,可將IO引腳PAD端口設(shè)置隨機(jī)數(shù)值,該數(shù)據(jù)進(jìn)入IO引腳C端口,當(dāng)capture_en信號使能后,數(shù)據(jù)通過最后一級ScanOut端口輸出,可實現(xiàn)對IO引腳數(shù)據(jù)的觀測。
在基于DW_bc_2和DW_bc_7優(yōu)化電路單元的BSC中,仿真過程與上述過程相同,唯一的區(qū)別是將中間一級和最后一級的DW_bc_2優(yōu)化電路合并為一個DW_bc_7優(yōu)化電路。DW_bc_7優(yōu)化電路能夠?qū)崿F(xiàn)在一個電路單元中的IO引腳雙向數(shù)據(jù)通路功能,同時仿真過程的傳輸延遲與DW_bc_2優(yōu)化電路的相同,因此2種掃描鏈電路相比較,后者能夠在門數(shù)量、面積和靜態(tài)功耗上得到充分優(yōu)化。
本文根據(jù)對BSR單元電路的優(yōu)化,從復(fù)雜的電路結(jié)構(gòu)逐步到最優(yōu)化電路的過程中,采用了門電路的組合,根據(jù)不同門電路的性能參數(shù),盡可能將多個門電路所能實現(xiàn)的功能集中到單一的門電路上,從而在面積和功耗方面實現(xiàn)優(yōu)化;此外,在DW_bc_7電路單元的優(yōu)化中,分別針對不同功能下的仿真過程,分析出電路當(dāng)中的數(shù)據(jù)流,并基于不同仿真功能彼此獨立這一特點,將不同的數(shù)據(jù)流合并至一個電路單元中,并根據(jù)需要調(diào)整其他的信號,從而完成優(yōu)化設(shè)計。
重新審視2種優(yōu)化之后的BSR單元電路,不難看出該電路依然基本保持了傳統(tǒng)的BSR單元電路的結(jié)構(gòu),所以整個電路結(jié)構(gòu)的優(yōu)化過程更大程度上是基于實際的電路應(yīng)用,當(dāng)2種BSR單元用于實現(xiàn)2個電路系統(tǒng)(IO引腳和內(nèi)部邏輯)的互聯(lián)時,就決定了原先的DataIn至DataOut這一條數(shù)據(jù)通路將會做出適當(dāng)?shù)母淖?。因此,在未來的電路設(shè)計中,可能出現(xiàn)的基于多個電路系統(tǒng)的數(shù)據(jù)交互,則需要在當(dāng)前最優(yōu)化的BSR單元的基礎(chǔ)上,適當(dāng)增加門電路和信號以滿足更為復(fù)雜的電路設(shè)計要求。