馮玉光 林文軍 奚文駿 冷 江
(海軍航空工程學院 煙臺 264001)
目前,數字電路板常用的測試方法有以下幾種:在線測試、功能測試和總線測試[1~2]。其中,功能測試將某個功能模塊作為測試對象,通過施加激勵、觀察響應,判斷此功能模塊能否完成其功能。數字電路板的功能測試關鍵在于驗證測試向量如何生成。時序電路是數字電路板的重要組成部分,其測試相較于組合電路而言困難的多,因此,對其測試方法的研究是很有必要的。
對某型測試設備進行反解反繪是我們了解其功能、并進行仿制的重要手段,對于其中的數字電路板,需要對其通電測試,以驗證其功能和反解反繪的正確性,為了測試方便,我們假定電路板不存在故障,若測試過程中發現電路功能與預期不一致,則認為是電路板反解反繪過程中電路模塊原理圖繪制錯誤。
自上世紀60年代門級電路檢測方法問世以來,邏輯電路的測試出現了“結構測試”和“功能測試”并存的局面。結構測試是從電路的結構出發,通過電路的輸入/輸出引腳,檢測連線上是否存在故障,采用的是數字電路的故障模型,而功能測試是從電路的功能出發,檢查電路是否正常,采用的是數字電路的功能模型。
時序電路的測試,可以采用兩種方法,一種是上面所說的采用故障檢查方法,若該電路在結構上不存在故障,則認為該電路正常。還有一種就是采用其功能驗證測試方法,輸入端施加功能驗證向量,輸出端采集響應,若響應與預期一致,則說明該電路正常。時序電路的功能測試方法,關鍵在于其功能測試向量,若時序電路的功能測試向量是已知的,我們將根據該向量生成的激勵施加到電路的輸入端,在輸出端觀測其響應即可。而對于未知其功能測試向量的時序電路模塊,需要分析其功能,生成其功能測試向量。
有限狀態機的模型可以采用六元組:M=(S,I,O,δ,λ,s0)來描述[3]。其中:S表示時序模塊狀態的集合,I表示時序電路輸入向量的集合,O表示時序電路輸出向量的集合,其中S、I和O均為非空的集合。s0表示時序電路的初始狀態。
δ表示時序電路的狀態轉換函數,δ:S×I→S,為笛卡爾積S×I映入S的映射,其中,S表示狀態,I表示輸入向量。
λ表示時序電路輸出函數,λ:S×I→O,為笛卡爾積S×I映入O的映射,其中,S表示當前狀態,I表示輸入向量,O表示輸出向量。
時序電路數學模型最常用的方式是用五元組F=(Q,I,Z,δ,λ)來描述 ,這其中,包括了兩個集合和三個映射,其中:Q是狀態集合,I是輸入向量的集合,Z是輸出向量的集合,q0是初始狀態(復位狀態);δ:笛卡爾積Q×I映入Q 的映射,即Q×I→Q;λ:笛卡爾積Q×I映入Z的映射,即Q×I→Z。
從二者的定義可以看出,時序電路可以用有限狀態機來表示,而有限狀態機又可以采用有向圖來表示,因此,時序電路的功能可以采用有向圖G=(V,E)來描述,其中,V是頂點集,E是有向邊集。頂點表示狀態,有向邊代表狀態轉換,輸入輸出標注在有向邊旁。
時序電路功能分析,需要求取時序電路的狀態,即在輸入作用各狀態之間的轉換關系,從而得到其狀態轉換圖,在電路無故障時,其狀態轉換是其穩定狀態之間的轉換。基于邏輯值計算求取時序電路狀態的是一種代數方法[4],采用該方法,可以使用較為精確的模型,較為真實地反映信號在電路中的傳播和改變情況,運算的最終結果中,所包含有的狀態標量較少。但該方法也存在缺點,當時序電路的規模很大時,單位時間內所發生的狀態轉移是非常大的,對應的狀態轉移表的規模很大,相應的計算量變的相當大,實際應用很困難,此時,該方法只具有理論上的意義。EDA工具的出現,使得數字電路的設計和分析變得更為容易,文獻[5]提出了一種使用EDA工具,通過仿真的方法得到時序電路的穩定狀態。但是,該方法只能通過嘗試設置電路的輸入,盡可能的得到時序電路的完全的穩定狀態。
文獻[6]提出了一種系統化的求取時序電路穩定狀態的方法,該方法易于用計算機實現。該方法定義可初態矩陣Qn、次態矩陣Qn+1和輸入矩陣(J-K矩陣)等概念,定義了一種新的矩陣運算方法。
定義:矩陣 A、B和C是同行同列矩陣,矩陣乘法定義為矩陣中對應行列元素相乘,即Cij=Aij×Bij(或),矩陣加法定義為矩陣中對應行列元素相加。
對于有J-K觸發其構成的時序電路而言,有:

對于由D觸發器構成的時序電路而言,有:


qi→ai(0≤i≤n)表示電路由狀態qi轉換到ai,其中ai=qj(0≤i,j≤n)。假設電路的初態為q0,其對應的次態為a0,且a0=qj,則qj對應的次態為aj,依此類推,則可以得到電路的狀態轉移圖,如圖1所示。

圖1 時序電路原理圖
該算法在 LabWindow s/CVI采用C語言編寫,對于不同的電路模塊,需要編寫不同的輸入矩陣,參數的輸入在函數面板上完成。對圖1所示的時序電路進行運算,其結果如圖2所示。
則可以得到時序電路的狀態轉換圖如圖3所示,其中,S0表示000,S1表示001,S2表示010,S3表示011,S4表示100,S5表示 101,S6表示110,S7表示111。

在實際的時序電路的設計過程中,需要對時序電路的狀態表進行簡化,簡化之后的狀態表內的狀態都是可及狀態,對于任何兩個狀態Si和Sj,從Si出發,總是能夠找到某一個輸入向量序列,使得電路狀態轉換到Sj,反之亦然,對應的狀態轉換圖(STG)是強連通的。
但是,若從已經設計好的時序電路的原理圖中得到的時序電路的狀態,卻不一定都是可及的,也就是說,所得到的狀態轉換圖不一定是連通的。
理論分析和實際試驗都表明,凡屬正確設計的時序電路,分析所得到的時序電路中可能包含有多個強連通圖,其中必有一個主要的 SCC,稱為PSCC,PSCC中所對應的狀態必為可及狀態,而其它SCC中所對應的狀態必為不可及狀態,對于弱連通圖,可以有一些邊不屬于圖的任何一個SCC,這些邊被稱為連接邊。對于PSCC而言,它是一個或多個連接邊的末端,而不是任何連接邊的始端[7]。由此,我們將狀態轉換圖劃分為多個SCC之后,很容易區分PSCC與SCC,根據時序電路的PSCC,可以生成時序電路的功能測試向量。
對于圖3所示的狀態轉換圖,是一個弱連通圖,包含有兩個SCC,其中一個為S1,另一個為由頂點S0,S2,S3,S4,S5,S6和S7以及連接他們的有向邊組成,為PSCC,如圖 4所示。

圖4 時序電路PSCC
對于以時序電路功能為基礎的功能測試,采用功能覆蓋率的概念來衡量其功能測試的完全性,當激勵信號作用于時序電路時,在圖論模型中的反映就是經歷了若干條有向邊。由此,將圖論模型中經歷的有向邊與電路所有的有向邊之比定義為功能覆蓋率[8]。
給定了時序電路的PSCC,需要尋找到(I,O)序列,該序列使得電路歷經了所有的有向邊,則功能覆蓋率為100%。其測試流程圖如圖5所示。

圖5 數字電路板功能測試流程圖
對于圖3所示的時序電路,其測試向量為表1中n所對應的序列。
文章研究了數字電路板時序電路功能測試方法,采用有向圖作為時序電路的功能模型,通過有向圖的SCC劃分,尋找到PSCC。根據PSCC生成其功能測試向量序列及對應響應序列。為了節省測試時間,需要生成其最簡測試向量,如何通過有向圖生成最簡測試向量還需要進一步研究。

表1 電路測試序列
[1]王琳,劉邁.電子線路自動測試技術的研究[J].大連海事大學學報,1999(3):108~111
[2]楊士元.模擬系統的故障診斷與可靠性設計[M].北京:清華大學出版社,1993:143~183,238~272
[3]G.Buonanno,et al.FsmTest:Functional test generation for sequential circuits[J].IN TEGRATION,the VLSI Journal,1996,20:303~325
[4]魏道政.異步時序電路測試生成的一種代數方法[J].軟件學報,1999(10)
[5]王紅霞,葉曉慧,姚瓊薈.求解門級時序電路穩定狀態的仿真方法[J].國外電子測量技術,2006(8):10~12
[6]賈默伊.用矩陣方法分析同步時序電路[J].河北理工學院學報,1996(2):50~53
[7]劉澤堅,劉華,周天戎,等.時序電路的可及狀態的枚舉和自動測試生成[J].微電子測試,1995(3)
[8]鄭菊言.面向功能的測試矢量生成技術探討[J].航空電子技術,1998(1):35~37