1 引言
隨著現場可編程門陣列( FPGA) 芯片在商業、軍事、航空航天等領域越來越廣泛的應用, 其可靠性和可測試性也顯得尤為重要。對設計人員來說,FPGA 的使用相當靈活。然而, 正是這種應用的不確定性和重復可編程性, 增加了芯片測試的難度。目前, 已有較多工作集中于基于SRAM 結構的FPGA 測試方法研究[ 1-7] 。其核心問題是建立什么樣的測試模型, 以及施加什么樣的測試激勵, 使故障激活, 同時, 還能在可及端測量出來。因此, 還要確定在什么地方施加激勵, 在什么地方進行測量。
根據需求, FPGA 的測試大體可分為面向制造的測試過程( MT P) 和面向應用的測試過程( AT P)兩類。MT P 主要是從制造商的角度來測試, 測試成本主要體現在測試向量集長度所決定的測試時間的費用上。MTP 主要針對可編程邏輯塊( CLB) 、輸入輸出單元( IOB ) 、可編程連線( PI ) 及編程用的SRAM 等進行測試。AT P 是在應用級上的測試,也就是把FPGA 配置為特定的功能進行測試, 具有很強的針對性, 測試過程相對簡單。但是, 不管是MTP 還是AT P, 都至少有一個{ 測試配置( TC) , 向量實施( TS) } 的過程[ 6] 。完整的測試通常需要反復進行配置和測試。一般來說, 編程比較費時且編程后的配置速度較低。因此, FPGA 測試的關鍵在于如何在保證故障覆蓋率的前提下, 用最少的編程次數, 將FPGA 低速在線配置和高速測試有機地結合起來, 從而實現完整的測試。
本文介紹一種基于SRAM 結構FPGA 邏輯資源的測試編程方法, 并以Xilinx 公司的XC4000 系列[ 8] 為例, 在BC3192V50 數模混合集成電路測試系統上, 通過從串模式, 實現數據的配置和測試。
2 基于SRAM 結構的FPGA
從編程原理來說, FPGA 主要有基于反熔絲( arrtifuse) 結構和基于SRAM 結構兩大類。XC4000 系列是基于SRAM 結構的, 其邏輯功能的配置基于內部陣列分布的SRAM 結構, 即通過對這些SRAM 進行不同的加電配置, 確定各個部分的邏輯功能; 也可通過加載不同的配置數據, 實現邏輯功能的不斷更新和反復改寫。實際上, 就是由加載于SRAM 上的配置數據決定和控制各個CLB、IOB 和PI 等的邏輯功能和相互之間的連接關系。基于SRAM 結構FPGA 的另一個重要特征, 在所謂的邏輯單元陣列( LCA) 結構。正是這個LCA 分布結構, 使之具備門陣列和可編程器件的雙重特征。LCA 像一個門陣列, 通過內部可編程連線, 把可編程邏輯塊按設計的要求連接起來, 實現陣列中的邏輯功能。
另外, 由于采用了先進的半導體工藝和改進的結構, XC4000E 系列能夠支持高達80 MHz 的系統時鐘頻率和超過150MHz 的內部性能。
3 測試編程
通過編程, 將每一行的CLB 連接起來, 形成一個一維陣列[ 1-2] ; 再將每個陣列作為整體進行測試,如圖1 所示。
?
故障模型采用多CLB 混合故障模型, 即一個FPGA 中可有多個邏輯單元發生故障, 而邏輯單元內的故障對不同的電路采用不同的故障模型。對于查找表結構, 假定其可有固定為"0"或"1"的固定故障; 而對于多路選擇器和觸發器, 則假定可發生各種功能故障[ 4-5] 。
每個陣列中的CLB 都按圖1 所示的連接方式進行編程, 前一個CLB 的輸出信號作為后一個CLB 的輸入信號, 只有左右兩端的CLB 與IOB 相連。所有CLB 都設計編程為相同的電路結構, 既是被測電路( CUT) , 也是故障傳遞電路( CFT) 。CLB 中的兩個查找表G 和F, 均設計為具有一個故障激活端( T) 、兩個故障傳遞端( Yn 和Xn) 和一個故障傳遞方式選擇端
( SEL) 的四輸入邏輯結構, 且使用相同的T 輸入和SEL 輸入。查找表F 的兩個輸入端( Yn 和Xn) 與此CLB 內兩個觸發器的輸出端( QYn 和QXn) 相連, 用于檢測和傳遞觸發器的故障信號。查找表G 和F 的兩個輸出信號( Yn 和Xn) 作為下一個CLB 中查找表G 的輸入信號( Yn+ 1 和Xn+ 1) 。
故障傳遞電路采用基于與門和或門的電路形式[ 4 ] 。用SEL 輸入控制是或門傳輸還是與門傳輸。此時, 如果有一個或多個CLB 的輸入輸出端有正常為1( 0) 、錯誤為0( 1) 的故障信息, 其輸出端總能觀察到故障信息0( 1) 。
對所有陣列并行地進行測試, 可以減少測試時間和所需要的IOB。同時, 因為所有CLB 都是同樣的編程結構, 因此, 可共用時鐘和垂直輸入, 不同陣列的輸入也可共用, 從而進一步減少了所需的IOB[ 1-2] 。
但是, 由于編程后的陣列是一個時序陣列, 故一定程度上增加了測試此陣列所需要的時間。另一方面, 由于每個CLB 在被測試的同時, 還要用來傳遞故障信息, 因此, 測試精度相對單獨用一行CLB 來傳遞故障信息的方法[ 3-5] 有所降低。
評論
查看更多