董宜平,謝達(dá),宋林峰,周道逵
(中國(guó)電子科技集團(tuán)公司第五十八研究所,江蘇無錫214072)
V4系列FPGA全局時(shí)鐘緩沖器的內(nèi)建自測(cè)試研究*
董宜平,謝達(dá),宋林峰,周道逵
(中國(guó)電子科技集團(tuán)公司第五十八研究所,江蘇無錫214072)
提出一種新的基于V4系列FPGA全局時(shí)鐘緩沖器的內(nèi)建自測(cè)試方法。目前關(guān)鍵時(shí)鐘緩沖器內(nèi)建自測(cè)試正面臨巨大的挑戰(zhàn),時(shí)序問題是目前發(fā)現(xiàn)的時(shí)鐘緩沖器內(nèi)建自測(cè)試的主要問題。由于時(shí)鐘緩沖器輸入端的同步開關(guān)會(huì)產(chǎn)生不同的相移,使得正常的器件內(nèi)建自測(cè)試中產(chǎn)生故障指示。此外,目前時(shí)鐘緩沖器內(nèi)建自測(cè)試使用的是普通的布線資源連接時(shí)鐘信號(hào),而不是使用專用的時(shí)鐘布線資源,這種方法會(huì)加劇時(shí)序問題。提出一種改良的方法去解決內(nèi)建自測(cè)試的時(shí)序問題,并討論這種方法對(duì)于可測(cè)試的最大時(shí)鐘頻率和總測(cè)試時(shí)間的影響。所有測(cè)試環(huán)節(jié)均在V4系列FPGA上實(shí)現(xiàn)。
內(nèi)建自測(cè)試;時(shí)鐘樹
內(nèi)建自測(cè)試方法在過去15年里已成為FPGA領(lǐng)域的一個(gè)熱點(diǎn)話題。其基本要點(diǎn)是配置FPGA使其實(shí)現(xiàn)對(duì)自身的測(cè)試并返回測(cè)試結(jié)果,通過測(cè)試結(jié)果可以判斷器件是否達(dá)到需要的功能和性能。測(cè)試完成后,測(cè)試邏輯便不復(fù)存在,這使得在正常配置特定的功能后沒有面積和性能方面的損失。由于其可編程的特性,為保證高覆蓋率和測(cè)試多模式下運(yùn)行情況,需要反復(fù)多次配置資源。內(nèi)建自測(cè)試BIST方法已被開發(fā)用于FPGA的各種主要可編程資源的測(cè)試和驗(yàn)證,包括可配置邏輯塊(CLB),隨機(jī)存取存儲(chǔ)器(RAM),數(shù)字信號(hào)處理器(DSP)和輸入/輸出(I/O)邏輯。
內(nèi)建自測(cè)試方法已經(jīng)被報(bào)道用于測(cè)試時(shí)鐘緩沖器,但是,在使用這種方法的同時(shí)也發(fā)現(xiàn):時(shí)序問題的存在使得正常的器件通過內(nèi)建自測(cè)試方法測(cè)試時(shí)會(huì)提示測(cè)試故障或者測(cè)試未通過指示。本文提出一種改良的內(nèi)建自測(cè)試方法用于解決該方法存在的時(shí)序問題。
圖1為一個(gè)循環(huán)對(duì)比型FPGA內(nèi)建自測(cè)試構(gòu)架,使用可編程的邏輯資源(CLB,DSP等)實(shí)現(xiàn)若干測(cè)試碼型發(fā)生器(Test Pattern Generator,TPG),輸出相應(yīng)分析儀(Output Response Analyzer,ORA)由CLB實(shí)現(xiàn),而需要被測(cè)試的資源(例如CLB,RAM,DSP和IO單元),則被配置成被測(cè)試功能塊(Blocks Under Test,BUT)。因此,一旦FPGA被離線測(cè)試且發(fā)現(xiàn)可以正常運(yùn)行,F(xiàn)PGA就可以被重新編程成需要的系統(tǒng)功能,且在沒有面積和性能損失的情況下完成可編程資源的測(cè)試。使用多個(gè)TPG依次向BUT提供測(cè)試信號(hào),這樣也可以保證TPG發(fā)送錯(cuò)誤的測(cè)試信號(hào)時(shí)被及時(shí)發(fā)現(xiàn)。
圖1 循環(huán)比較型內(nèi)建自測(cè)試構(gòu)架
如圖1所示,每一個(gè)BUT都輸出到2個(gè)ORA中,并在ORA中和另外相同功能配置的兩個(gè)BUT輸出的值作比較。ORA的內(nèi)部邏輯結(jié)構(gòu)如圖2所示,該模塊由一個(gè)同或門、一個(gè)與門、一個(gè)鎖存器和一個(gè)數(shù)據(jù)選擇器構(gòu)成;ORA默認(rèn)輸出為0,鎖存器默認(rèn)輸出為1,當(dāng)輸入ORA的兩個(gè)BUT輸出不一致時(shí),鎖存器鎖存的數(shù)據(jù)為0,并使數(shù)據(jù)選擇器選擇0通道輸入的數(shù)據(jù)輸出,繼而ORA輸出的數(shù)據(jù)為1,這代表被測(cè)試的可編程資源存在故障和錯(cuò)誤。這種基于比較的ORA結(jié)構(gòu)可以滿足所有資源的單字節(jié)僅有通過和失敗兩種測(cè)試結(jié)果的測(cè)試。當(dāng)存在參考的輸出值時(shí),也可以用于可配置存儲(chǔ)器的回讀校驗(yàn)。
圖2 ORA結(jié)構(gòu)
為完成對(duì)目前器件的高覆蓋率,需要測(cè)試的資源必須多次被配置成多種工作模式。每一次內(nèi)建自測(cè)試程序必須依次被下載到FPGA中,且內(nèi)建自測(cè)試結(jié)果必須能夠確定該器件所測(cè)試的功能是否正常;然后周而復(fù)始直至完成一個(gè)高覆蓋率的全部測(cè)試內(nèi)容。使用提高內(nèi)建自測(cè)試方法效率的一個(gè)重要途徑是盡量減小FPGA配置次數(shù)即測(cè)試次數(shù),提高單次測(cè)試的覆蓋率;此外,下載時(shí)間也是決定總測(cè)試時(shí)間的一個(gè)重要因素,可以通過使用壓縮的配置文件減小下載文件來降低下載配置文件的時(shí)間。此外,通過部分可重構(gòu)技術(shù),只需要改變每一次測(cè)試的BUT模塊,其他資源保持不變,可以大大減小下載文件的大小和配置時(shí)間。
每個(gè)Virtex-4器件有32個(gè)全局時(shí)鐘緩沖器(BUFGCTRL)并分布在器件的中心列,這些緩沖器既可以用于驅(qū)動(dòng)專用時(shí)鐘布線資源也可以用于系統(tǒng)中的其他高扇出信號(hào)(例如全局時(shí)鐘使能信號(hào))。全局時(shí)鐘緩沖器可以配置成7種不同的模式,其中就包括BUFGCTRL模式。而BUFGCTRL模式是其他6種模式的集合,所有其他全局時(shí)鐘緩沖器模式均出自對(duì)BUFGCTRL的某些配置,所以,對(duì)全局時(shí)鐘緩沖器的內(nèi)建自測(cè)試其實(shí)就是針對(duì)BUFGCTRL模式的全局時(shí)鐘緩沖器的測(cè)試。如圖3所示,每一個(gè)緩沖器有8個(gè)輸入和1個(gè)輸出。BUFGCTRL具有S0、S1、CE0和CE1 4條選擇線。它還有IGNORE0和IGNORE1兩條附加控制線路。這6條控制線路用于控制輸入I0和I1,BUFGCTRL的設(shè)計(jì)目的是在兩個(gè)時(shí)鐘輸入之間切換而不會(huì)產(chǎn)生毛刺信號(hào)。當(dāng)目前所選時(shí)鐘在S0和S1變化后從High轉(zhuǎn)為L(zhǎng)ow時(shí),輸出保持為L(zhǎng)ow,直到另一(待選)時(shí)鐘從High轉(zhuǎn)為L(zhǎng)ow。然后,新的時(shí)鐘開始驅(qū)動(dòng)輸出。BUFGCTRL的默認(rèn)配置是對(duì)下降沿敏感,并且在輸入切換之前保持為L(zhǎng)ow。BUFGCTRL也可以對(duì)上升沿敏感,并且在輸入切換之前保持為High。
圖3 BUFGCTRL模式
在某些應(yīng)用中,并不需要前述條件。將IGNORE引腳置為有效會(huì)忽略BUFGCTRL檢測(cè)在兩個(gè)時(shí)鐘輸入之間進(jìn)行切換的條件。換言之,將IGNORE置為有效會(huì)使多路復(fù)用器在選擇引腳變化的瞬間切換輸入。IGNORE0使輸出在選擇引腳變化時(shí)立即切離I0輸入,而IGNORE1則使輸出在選擇引腳變化時(shí)立即切離I1輸入。
輸入時(shí)鐘的選擇需要將一個(gè)“選擇”對(duì)(S0和CE0或者S1和CE1)置為High有效。如果S和CE二者之一未置為High有效,就不會(huì)選擇所需的輸入。在正常操作中,并不希望將S對(duì)和CE對(duì)二者(全部4條選擇線)同時(shí)置為High有效。通常僅將“選擇”對(duì)的一個(gè)引腳用作選擇線,而將另一引腳固定為High。真值表如表1所示。
表1 時(shí)鐘資源真值表
雖然S和CE二者都用于選擇所需輸出,但其中各引腳的行為略有不同。當(dāng)使用CE切換時(shí)鐘時(shí),時(shí)鐘選擇的變化會(huì)比使用S時(shí)更快。違反CE引腳的建立/保持時(shí)間會(huì)在時(shí)鐘輸出端造成毛刺信號(hào)。另一方面,使用S引腳允許用戶在兩個(gè)時(shí)鐘輸入之間切換而無須顧及建立/保持時(shí)間,這樣不會(huì)導(dǎo)致毛刺信號(hào)。CE引腳的設(shè)計(jì)允許從Virtex-II和Virtex-II Pro FPGA向后兼容。
BUFGCTRL的其他功能有:
誗在配置之后但在器件運(yùn)行之前,預(yù)選I0和I1輸入。
誗可以將配置后的初始輸出選定為High或Low。
誗僅用CE0和CE1(S0和S1固定為High)選擇時(shí)鐘,無須等待預(yù)選的時(shí)鐘從High向Low轉(zhuǎn)換即可改變時(shí)鐘選擇。
現(xiàn)有的針對(duì)全局時(shí)鐘緩沖器在BUFGCTRL模式下的內(nèi)建自測(cè)試如表2所示,該方法可以在對(duì)V4系列FPGA進(jìn)行兩次配置后實(shí)現(xiàn)對(duì)全局時(shí)鐘緩沖器測(cè)試的完全覆蓋。每個(gè)時(shí)鐘緩沖器的9個(gè)配置選項(xiàng)在第一個(gè)內(nèi)建自測(cè)試時(shí)鐘后檢測(cè)的結(jié)果如表2所示。其他時(shí)刻的值通過FPGA內(nèi)部?jī)?chǔ)存器配置和分析。
這種方法的第一個(gè)挑戰(zhàn)是:為了減小下載次數(shù)和測(cè)試次數(shù),必須同時(shí)測(cè)量32個(gè)時(shí)鐘緩沖器,問題是不但專用時(shí)鐘樹互連線資源與時(shí)鐘緩沖器是有限的,而且那些時(shí)鐘樹互連線資源連接到一般路由網(wǎng)絡(luò),并最終連接到ORA的數(shù)據(jù)輸入的資源也是有限的。如圖4,時(shí)鐘緩沖器產(chǎn)生一個(gè)8位的信號(hào)并通過專用時(shí)鐘互連線資源(圖4中的加粗線)加載到查找表中,此時(shí)查找表(look-up table,LUT)被配置成緩沖器,然后扇出并通過普通互連線資源連接到兩個(gè)ORA中用于監(jiān)控每個(gè)緩沖輸出信號(hào)。這些LUT均勻分布在時(shí)鐘樹互連線資源的4個(gè)象限中。
表2 時(shí)鐘緩沖器內(nèi)建自測(cè)試配置
圖4 內(nèi)建自測(cè)試的TPG走線
如圖5所示,每一個(gè)TPG由一個(gè)2位的扭環(huán)形計(jì)數(shù)器和一個(gè)有限狀態(tài)機(jī)(finite state machine,F(xiàn)SM)構(gòu)成,這個(gè)FSM在扭環(huán)計(jì)數(shù)器的每個(gè)周期使能一次,并生成BUFGCTRL六控制端(S0,S1,CE0,CE1、ignore0和ignore1)測(cè)試信號(hào),該測(cè)試信號(hào)的值如表3所示。BUFGCTRL的輸入信號(hào)I1和I0由扭環(huán)形計(jì)數(shù)器產(chǎn)生,兩個(gè)信號(hào)頻率相同,相位相差90°。這樣便可以提供4種組合的輸入值,同時(shí)I0和I1初始化時(shí)提供了相反的邏輯值,這是測(cè)試配置選項(xiàng)的關(guān)鍵,只能在第一個(gè)時(shí)鐘周期中檢測(cè)到。
圖5 TPG功能框圖和I0、I1時(shí)序
表3 BUFGCTRL控制端測(cè)試數(shù)據(jù)模型
在實(shí)現(xiàn)TPG配置并將程序下載到FPGA時(shí),存在一個(gè)無法避免的時(shí)序問題。其他一些現(xiàn)有的TPG用于實(shí)現(xiàn)6個(gè)控制信號(hào)的輸入,其中包括一個(gè)6位二進(jìn)制計(jì)數(shù)器,一個(gè)6位格雷碼計(jì)數(shù)器和作為一個(gè)存儲(chǔ)了表3數(shù)據(jù)的存儲(chǔ)器的4位尋址計(jì)數(shù)器。在內(nèi)建自測(cè)試程序執(zhí)行足夠長(zhǎng)的時(shí)間后,無論器件是否正常工作,所有這些器件的TPG最終都會(huì)產(chǎn)生故障信號(hào)。經(jīng)過多次實(shí)驗(yàn)和驗(yàn)證發(fā)現(xiàn),在測(cè)試中輸入時(shí)鐘I0和I1需要一個(gè)額外的時(shí)鐘周期以保證當(dāng)I0和I1均穩(wěn)定在同一個(gè)邏輯值時(shí)(I0=I1=0)改變控制輸入信號(hào)(S[0:1],CE[0: 1],IGNORE[0:1]),如圖6所示,在扭環(huán)形計(jì)數(shù)器中添加一個(gè)使能信號(hào),邏輯與EN相反,使I0和I1延后一個(gè)時(shí)鐘。這種結(jié)構(gòu)可以產(chǎn)生一個(gè)額外的時(shí)鐘周期,同時(shí)可以防止扭環(huán)形計(jì)數(shù)器狀態(tài)鎖定,有了這個(gè)額外的時(shí)鐘周期,我們可以用一個(gè)6位格雷碼計(jì)數(shù)器產(chǎn)生26=64個(gè)可能的輸入值組合,從而避免產(chǎn)生無效的重復(fù)輸入值以及時(shí)序問題。
圖6 新的TPG設(shè)計(jì)方法框圖
使用如圖6所示的設(shè)計(jì)方法后,一次完整的內(nèi)建自測(cè)試序列增加到320個(gè)時(shí)鐘周期。這以增加極小的測(cè)試時(shí)間為代價(jià)解決了時(shí)序問題,格雷碼計(jì)數(shù)器通過一個(gè)格雷碼譯碼電路實(shí)現(xiàn)了一個(gè)二進(jìn)制計(jì)數(shù)器。該解碼器電路后添加6個(gè)觸發(fā)器以消除由異或門產(chǎn)生的毛刺。
解決時(shí)鐘緩沖器內(nèi)建自測(cè)試時(shí)序問題另一個(gè)需要優(yōu)化的地方是使用區(qū)域時(shí)鐘緩沖器(BUFR)和專用區(qū)域時(shí)鐘互連線資源驅(qū)動(dòng)TPG和ORA。這種優(yōu)化可以在同時(shí)測(cè)試所有的BUFGCTRL時(shí)消除時(shí)鐘布線在通用互連線資源上導(dǎo)致的時(shí)序問題。由于BUFR的測(cè)試時(shí)包含在可編程輸入輸出(Input Output,IO)邏輯的測(cè)試中,故本文不作贅述。
改良后的時(shí)鐘緩沖器的內(nèi)建自測(cè)試在FPGA平臺(tái)JXCLX25的功能框圖如圖7所示,圖中LX25器件分為12個(gè)區(qū)域,每個(gè)區(qū)域時(shí)鐘資源主要集中在芯片中間列。中間列分布著BUFG、GC、DCM、PMCD及GCLK Nets等全局時(shí)鐘資源。此外,在IOB、GC周圍分布有BUFIO、BUFR等局部時(shí)鐘資源。每個(gè)區(qū)域的內(nèi)建自測(cè)試架構(gòu)由BUT(時(shí)鐘資源)、ORA(CLB可編程邏輯單元)和TPG(CLB可編程邏輯單元)組成。
在JXCLX60的配置實(shí)現(xiàn)如圖8所示。實(shí)現(xiàn)內(nèi)建自測(cè)試模式只占用很小的空間,各個(gè)組件擺放的位置是實(shí)現(xiàn)完整布線的關(guān)鍵因素。此外,改進(jìn)的BIST方法時(shí)鐘緩沖器不但可以在已有V4系列的產(chǎn)品上實(shí)現(xiàn),還可以在未來推出的V5系列FPGA產(chǎn)品上完全實(shí)現(xiàn)。新的測(cè)試配置被下載到JXCLX25、JXCLX60電路中并加以驗(yàn)證,在器件運(yùn)行足夠長(zhǎng)的時(shí)間后也沒有出現(xiàn)由于時(shí)序問題導(dǎo)致的正常器件出現(xiàn)錯(cuò)誤的指示。
圖7 時(shí)鐘的內(nèi)建BIST在芯片上的功能框圖
圖8 NCD中TPG和ORA的布局繞線
使用改良后內(nèi)建自測(cè)試和未改良的內(nèi)建自測(cè)試能達(dá)到的測(cè)試最大工作頻率如表4所示,改良后的內(nèi)建自測(cè)試達(dá)到的測(cè)試頻率明顯高于未改良時(shí)的測(cè)試頻率,最高提升了45%。
表4 兩種內(nèi)建自測(cè)試方法能達(dá)到的最大測(cè)試頻率對(duì)比
本文提出的內(nèi)建自測(cè)試方案使得測(cè)試頻率得到較大的提升,提升效果如圖9所示。
圖9 兩種內(nèi)建自測(cè)試測(cè)試頻率對(duì)比圖
改良的內(nèi)建自測(cè)試方案在配置時(shí)間上也有提升,這里用壓縮的配置時(shí)間相對(duì)于完整配置時(shí)間的比例作為對(duì)比參數(shù),新型內(nèi)建自測(cè)試配置時(shí)間提升效果如圖10所示。
圖10 兩種內(nèi)建自測(cè)試配置時(shí)間提升對(duì)比圖
本文提出了改進(jìn)的時(shí)鐘緩沖器內(nèi)建自測(cè)試方法并在本單位已有的產(chǎn)品上實(shí)現(xiàn),內(nèi)建自測(cè)試適用于所有級(jí)別的測(cè)試,且該測(cè)試過程不影響系統(tǒng)運(yùn)行的面積和性能。此外,通過在輸入的時(shí)鐘I0和I1添加一個(gè)額外的時(shí)鐘周期以豐富BUFGCTLR的控制輸入值,使用區(qū)域時(shí)鐘緩沖器和專用互連線資源連接到TPG和ORA等手段改良內(nèi)建自測(cè)試方法,解決了時(shí)序問題,使得器件不會(huì)在無故障時(shí)出現(xiàn)故障指示,且通過一個(gè)格雷碼計(jì)數(shù)器實(shí)現(xiàn)了BUFGCTLR控制端64個(gè)可能的輸入值組合。雖然不能確定每一次改良對(duì)于解決時(shí)序問題的貢獻(xiàn)度,但是若干種改良的組合使得現(xiàn)有的內(nèi)建自測(cè)試方法有了很大的改進(jìn)。
[1]C Stroud,B Dutton.The First Clock Cycle is a Real BIST [C].Proc.International Conf.on Embedded Systems and Applications,2010:86-92.
[2]L T Wang,C Stroud,N Touba.System-on-Chip Test Architectures[M].Morgan Kaufmann,2008.
[3]S Toutounchi and A Lai,FPGA Test Coverage[C].Proc. IEEE International Test Conf.,2003:1248-1257.
[4]B Dutton et al.,Built-In Self-Test of Configurable Logic Blocks in Virtex-5 FPGAs[C].Proc.IEEE Southeastern Symp.on System Theory,2009:235-240.
[5]B Garrison,et al,Built-In Self-Test of Embedded Programmable Memory Resources in Virtex-4 FPGAs[C]. Proc.International Conf.on Computers and Their Applications,2009:63-68.
[6]M Pulukuri et al.,Built-In Self-Test of Digital Signal Processors in Virtex-4 FPGAs[C].Proc.IEEE Southeastern Symp,on System Theory,2009:34-38.
[7]B Dutton et al.Built-In Self-Test of Programmable Input/Output Tiles in Virtex-5 FPGAs[C].Proc.IEEE Southeastern Symp,on System Theory,2009:235-239.
[8]Virtex-4 FPGA User Guide[EB/OL].UG070(v2.5),Xilinx Inc.,2008.(available at www.xilinx.com)
[9]Virtex-5 FPGA User Guide[EB/OL].UG190(v5.2),Xilinx Inc.,2009.(available at www.xilinx.com)
[10]Virtex-6 Clocking Resources User Guide[EB/OL].UG362 (v1.2),Xilinx Inc.,2010.(available at www.xilinx.com)
[11]Virtex-4 FPGA Configuration User Guide[EB/OL].UG071 (v1.1),Xilinx Inc.,2008.(available at www.xilinx.com)
[12]R Mahmud,An FPGA Primer for ASIC Designers[EB/OL]. EETimes,April,2004.
[13]F Gray,Pulse Code Communication[P].US Patent#2, 632,058,1953.
Study of BIST for FPGA-based Global Clock Buffer
DONG Yiping,XIE Da,SONG Linfeng,ZHOU Daokui
(China Electronic Technology Group Corporation No.58 Research Institute,Wuxi 214072,China)
In the paper,a new built-in self-test method based on V4 series FPGA global clock buffer is presented.The built-in self-test of these critical clock buffers is currently facing a huge challenge while timing issues are principal problems.Due to the synchronous switching of the input terminal of the clock buffer,the utility model can generate a fault indication in the built-in test of the normal device.In addition,the current clock buffer built-in self-test uses universal wiring resources to connect the clock signal rather than dedicated clock routing resources,which will deteriorate the timing problem.An improved method is proposed to solve the problem of timing,and the influence of which on the maximum clock frequency and the total test time is discussed.Alltests are implemented on the V4 series FPGA.
built-in self-test;clock tree
TN407
A
1681-1070(2017)08-0008-05
董宜平(1983—),男,2006年東南大學(xué)電子工程學(xué)院學(xué)士,2011年日本早稻田大學(xué)理工學(xué)院、系統(tǒng)大規(guī)模集成電路專業(yè)工學(xué)博士,研究方向?yàn)榛贔PGA的高性能片上網(wǎng)絡(luò)NoC研究;2012年4月至2014年7月任職于日本日立制作所研究開發(fā)中心,從事高精度掃描電子顯微鏡FPGA控制基板的研究;2014年8月開始任職于中國(guó)電子科技集團(tuán)公司第五十八研究所,從事自主高性能大規(guī)模FPGA芯片的研發(fā)工作。
2017-5-16
江蘇省自然基金青年基金(BK20160202)