王 華
(上海華嶺集成電路技術(shù)股份有限公司,上海 201203)
FPGA的可編程性給FPGA本身完整和全面的測試帶來諸多挑戰(zhàn),F(xiàn)PGA測試必須考慮各種故障模型以充分檢測這些器件以及器件缺陷的容錯能力,邏輯資源必須在不同的運作模式下進行測試,而這又導致需要對FPGA中被測邏輯資源進行多重重新配置。
自動測試設(shè)備(ATE)具有高集成度、高效率等優(yōu)點,被廣泛用于集成電路測試驗證分析和大規(guī)模產(chǎn)業(yè)化測試,在對FPGA器件的測試技術(shù)開發(fā)中,由于自動測試系統(tǒng)本身向量存儲深度的限制,F(xiàn)PGA對不同資源和故障覆蓋的檢測需要重復配置,相應的配置位流長,配置文件多,自動測試系統(tǒng)很難一次將所有配置文件加載進測試系統(tǒng)內(nèi)存中,從而不得不多次加載,導致測試時間成倍增加。芯片的測試成本是由整個芯片的測試時間決定的,因此如何一次性盡可能多地加載配置向量,更快完成測試過程中對FPGA的配置成了FPGA測試中必須解決的問題。
通常情況下,F(xiàn)PGA測試過程中除少數(shù)直流參數(shù)(如上電電流、電源靜態(tài)電流)不需配置FPGA外,其余依照功能/參數(shù)測試項的要求,通過下載位流將被測FPGA配置為對應的狀態(tài),然后再進行測試。功能測試時需要對被測FPGA施加激勵并檢查其輸出是否符合預期。部分參數(shù)測試需要在施加激勵且輸出符合預期的情形下進行參數(shù)的測試。對于上述兩類情況,都要開發(fā)對應的功能測試向量集,可以分類為配置向量和激勵向量。
圖1 FPGA基于ATE測試開發(fā)方案
FPGA測試位流開發(fā)流程是通過EDA軟件使用硬件編程語言對設(shè)計進行編程,通過轉(zhuǎn)換工具生成測試用bit位流文件。進入測試階段將設(shè)計生成的位流文件轉(zhuǎn)換為自動測試系統(tǒng)的矢量文件,自動測試系統(tǒng)將矢量文件加載進測試系統(tǒng)大容量矢量存儲(LVM)中,在測試過程中將矢量文件下載到FPGA中,實現(xiàn)相應的電路功能,從而完成測試驗證,測試流程如圖1所示。這其中占用測試系統(tǒng)80%以上的LVM存儲資源是對FPGA進行配置的矢量部分。
現(xiàn)有技術(shù)中,實現(xiàn)FPGA的配置方法有很多,根據(jù)器件的類型和應用場景,各FPGA廠家均提供了多種配置方法來實現(xiàn)對FPGA的配置,以XILINX公司Virtex-4系列為例,主要有以下幾種:JTAG方式、主串方式、從串方式、并行方式。JTAG、主串、從串這3種配置方法都是采用串行的數(shù)據(jù)傳輸方式將配置數(shù)據(jù)加載到FPGA芯片中,由于數(shù)據(jù)位寬限制,配置時間較長,并行方式可選擇8位或32位的數(shù)據(jù)位寬,配置速度較快。由于配置數(shù)據(jù)寬度的不同,所生成的位流大小也不一樣。以Slave Select MAP32進行配置,一次通過32個信號作為配置數(shù)據(jù)位流的輸入,每個信號的長度最大到709 464位,位流的長度反映到ATE測試系統(tǒng)上就是矢量深度,每個信號以周期形式進行劃分,存儲到LVM內(nèi)存中。
經(jīng)過周期化處理后的文件為測試系統(tǒng)可以識別和存儲的格式,目前自動測試系統(tǒng)存儲測試矢量的方式是為每個信號分配獨立的存儲空間,一個周期存儲1 bit數(shù)據(jù),1024 bits為1 k存儲深度,即1024個周期的測試矢量。
圖2 XILINXV4系列配置數(shù)據(jù)大小
自動測試系統(tǒng)用于存儲測試矢量的大小通常受到限制,為了解決FPGA向量存儲深度的問題,一方面自動測試系統(tǒng)供應商增加測試系統(tǒng)的存儲深度,提高存儲深度相應增加設(shè)備的成本,另一方面從測試方法上尋求解決的辦法。目前針對FPGA測試配置矢量下載的一種方式是在測試DUT板上擴展外部適配器,該方法是將FPGA測試所需要的配置文件儲存在一個存儲器陣列,測試系統(tǒng)在測試時通過選擇配置文件對待測FPGA芯片進行測試前的配置,該方法解決了FPGA配置向量大、測試系統(tǒng)無法一次加載的問題,但由于要在測試過程中實時測試系統(tǒng)與配置模塊交互,降低了測試效率;另一種方法需要在測試前期就考慮開發(fā)專門的硬件,增加了開發(fā)的周期和額外的開銷。
為克服由于測試系統(tǒng)LVM存儲深度限制導致FPGA測試過程中重復加載測試矢量的情況,本文研究了FPGA測試矢量存儲擴展方案,對FPGA這類配置向量深度有特殊要求的器件通過硬件設(shè)計和軟件方法擴展FPGA配置管腳占用的矢量存儲深度,在不增加外部硬件的基礎(chǔ)上,減少測試過程中重復加載測試向量的次數(shù),將占用測試向量深度較小的資源分享給配置管腳使用,提高資源的利用率從而提高測試效率。
基于測試系統(tǒng)硬件資源共享分配方案是在愛德萬V93000測試系統(tǒng)本身硬件支持的基礎(chǔ)上,通過硬件上每8個通道為1組可以相互間共享測試向量深度,其分享原理是將非配置管腳空余的存儲資源分享給配置管腳使用。為了充分最大化利用存儲資源共享功能,基于芯片測試要求和測試系統(tǒng)的硬件設(shè)計規(guī)則,由于FPGA器件涉及到差分測試的需求,而測試系統(tǒng)差分硬件設(shè)計上要求差分對必須在同一組信號中,故為每2個配置管腳分配到一組共享單元中,如圖4所示為硬件資源分配方案,圖5為本文研究的XC4VSX55_FF1148千萬門級FPGA器件基于該方案的部分Layout圖紙。
圖3 測試矢量存儲擴展方案
圖4 測試硬件資源分配方案
在測試過程中,配置信號和非配置信號在軟件方面涉及到多個方面的特殊設(shè)置,在測試程序Pin定義文件中將配置管腳和非配置管腳以port的方式獨立出來;其次,開發(fā)專門的腳步軟件對測試矢量按照獨立的port從原始向量里提取出來,通過這種方法可以在軟件上實現(xiàn)獨立對單個port的向量進行運行,而不受到不相關(guān)信號的影響。通過存儲資源分享的方式,可以實現(xiàn)為每一個配置管腳使用到4個測試系統(tǒng)通道的存儲資源。
圖5 XC4VSX55測試板Layout部分圖紙
基于測試軟件的矢量壓縮方法是通過X模式的矢量壓縮,將多個器件周期適配到單個測試系統(tǒng)周期。“X”表示乘法,“X4模式”表示每個測試系統(tǒng)周期有4個器件周期,X模式的目的是更快地運行測試并更高效地使用內(nèi)存。如果測試系統(tǒng)周期以8 ns的間隔發(fā)生,則器件周期將在X4模式下以2 ns的間隔發(fā)生,在X8模式下以1 ns的間隔發(fā)生。一個器件周期即表示1 bit的位流數(shù)據(jù),測試系統(tǒng)矢量存儲器的使用類似地被壓縮,在X8模式中測試系統(tǒng)的112 MV存儲器適合于896 MV的測試器件存儲深度測試需求。
這種乘法效應是通過使用多個驅(qū)動/接收邊緣來實現(xiàn)的。例如,如果使用X8模式是使用了8個驅(qū)動邊沿,包含一個脈沖的器件周期可以在測試系統(tǒng)周期內(nèi)出現(xiàn)4次?!癤”值越大,每個測試系統(tǒng)周期所需的邊越多,圖6顯示了X1、X2、X4和X8模式。
圖6 測試系統(tǒng)X模式示例
X模式通過增加驅(qū)動和接收觸發(fā)事件沿來增加測試系統(tǒng)單個周期內(nèi)的器件周期數(shù),這種應用會帶來更復雜的矢量數(shù)據(jù)組合和測試時序關(guān)系。首先,對于自動測試系統(tǒng)而言,0/1作為輸入驅(qū)動信號,L/H/X作為輸出判斷信號,F(xiàn)PGA器件配置矢量使用到的管腳除了CFG_DONE、INIT_FLAG等幾個信號作為配置狀態(tài)判斷的信號是輸出信號,其他都是作為輸入信號,沒有雙向的輸入輸出管腳,這樣在定義波形組合的時候只需要考慮0/1的組合,而不需要將0/1和L/H/X進行組合,大大減少了組合器件周期的數(shù)量,滿足測試系統(tǒng)Waveform的限制要求。
圖7 X1模式向X4模式轉(zhuǎn)換方式
在測試時序方面,原本單一周期只有一個數(shù)據(jù),相應的為這一個數(shù)據(jù)定義一個d1事件時間,現(xiàn)在X4模式下包括4個數(shù)據(jù),這需要4個事件時間(d1、d2、d3、d4 或者 r1、r2、r3、r4) 來定義整個周期的時序。FPGA器件在從并配置模式下,器件時鐘由外部測試系統(tǒng)提供,由于時鐘是脈沖信號,每個脈沖時鐘需要2個時間驅(qū)動來完成,相應的在X4模式下時鐘需要8個驅(qū)動時間,為了保證測試穩(wěn)定性,數(shù)據(jù)輸入建立時間和保持時間時序相對于時鐘信號余量應盡量充足,經(jīng)過X4模式轉(zhuǎn)換生成的測試向量在測試系統(tǒng)中顯示如圖8所示。
圖8 X4模式下矢量存儲方式
本文研究的XC4VSX55_FF1148千萬門級FPGA器件采用BGA1148封裝,除去電源和地管腳,其IO管腳共計660個,用于配置的管腳主要包括M0/M1/M2、CFG_DONE、GCLK、INIT_FLAG等信號作為配置控制或者狀態(tài)觀察,選用Slave Select MAP32配置模式,還包括32個管腳作為配置數(shù)據(jù)輸入,總計41個管腳作為配置使用,測試配置位流文件通過這41個配置管腳下載到FPGA內(nèi)部,其他信號在配置期間處于浮空狀態(tài),開發(fā)平臺采用愛德萬公司V93000自動化測試系統(tǒng)。
如圖9所示為配置管腳存儲空間使用情況,R17、U13、U15等本身存儲空間為117440512/(1024×1024)=112 MV,在load完測試pattern后,存儲空間已被全部使用。圖10為非配置管腳的存儲空間使用情況,可以看出,因為用于分享給配置管腳的存儲空間不一樣,所以使用到的存儲空間也不相同。
圖9 配置管腳存儲空間使用情況
圖10 非配置管腳存儲空間使用情況
圖11 存儲空間具體分配情況示例
圖11列出了其中一組信號內(nèi)(8個相鄰通道10301~10308)的資源分配情況,R17配置管腳本身需求存儲空間大約320 MV左右,在使用完本身存儲空間以后,實際占用了其他7個信號總共210 MV左右的存儲空間。
在存儲擴展的基礎(chǔ)上,再采用X模式的方式針對配置管腳向量進行X4模式的轉(zhuǎn)換,則可以將向量存儲深度需求進一步壓縮,測試系統(tǒng)存儲深度License需求也進一步減少,一個程序就可以將所有配置向量加載完成。
表1 FPGA不同方式下存儲資源使用情況
本文旨在針對大規(guī)模現(xiàn)場可編程FPGA器件在自動測試系統(tǒng)測試驗證分析過程中,對ATE存儲向量深度的特殊需求,在沒有特定工具和下載方式的情況下使用測試系統(tǒng)本身的擴展模式和功能,通過硬件設(shè)計和軟件編程的方法在自動測試系統(tǒng)中對FPGA測試提供重復配置測試解決方案。整個測試過程可以通過單個ATE上載所有測試用例矢量一次完成,而不會中斷每次功能測試之間的測試過程,并且在測試資源使用上達到成本和效率的最優(yōu)化,該方案在自動測試中提供了巨大的優(yōu)勢。