朱偉杰 周 輝 費亞男 陽 徽 郭冠軍
北京航天自動控制研究所,北京100854
一種基于時序路徑的FPGA接口時序測試方法
朱偉杰 周 輝 費亞男 陽 徽 郭冠軍
北京航天自動控制研究所,北京100854
針對航天高速高可靠FPGA接口時序測試,分析了FPGA接口類型及測試需求,介紹了一種基于時序路徑的FPGA接口時序測試方法,結合時序路徑模型,闡述了異步總線接口時序測試的測試流程和計算方法,并給出實際案例。該方法集成了功能仿真和靜態時序分析的優點,特別適合極限工況下的FPGA接口時序驗證,已經應用到多個航天高可靠FPGA接口測試中,與傳統的動態門級時序仿真相比,能顯著提高驗證效率和測試覆蓋率。
時序路徑;FPGA接口時序測試;靜態時序分析
隨著軍工產品向著高集成度、小型化、高速和高可靠性方向發展,FPGA和CPLD等可編程邏輯器件在軍工產品中的應用數量成爆發式增長。FPGA應用的領域廣泛、使用的場合關鍵,確保FPGA設計的正確性和可靠性已成為保證產品高可靠性的關鍵。作為電子設備的核心器件,FPGA需要與板級芯片、外圍接口進行高速穩定的數據傳輸,其接口時序(特別是極限工況下)的正確性直接影響了整個設備的可靠性,因此,對各種工況下的FPGA接口時序進行完備地測試尤為重要。本文基于大量的FPGA軟件測試實踐,提出了一套基于時序路徑的FPGA接口時序測試方法,并應用于多個型號FPGA測試中。該方法發現了諸多接口時序不滿足而導致的通信錯誤問題,具有驗證效率高、測試覆蓋率全等優點。
1.1 FPGA接口類型與測試需求分解
FPGA片內有大量的邏輯門和觸發器,適合實現復雜的時序邏輯和數字電路,作為核心器件,FPGA需要與外設(如DSP、存儲器或其他特定功能芯片等)進行穩定可靠的數據通信,這對FPGA接口時序精度提出了苛刻的要求。接口時序測試的目的是確保FPGA芯片工作在極限與典型環境下,接口時序滿足上級和下級系統接口時序要求,并留有時序余量(默認20%余量)。極限環境指FPGA工作在最大和最小工況下,典型環境是指典型工況,其中最大工況為FPGA芯片允許的最高溫度和最低電壓,該工況下器件內部信號傳播延時最大,對建立時間不利但對保持時間有利;典型工況為FPGA芯片工作的典型溫度和典型電壓;最小工況為FPGA芯片允許的最低溫度和最高電壓,該工況下器件內部信號傳播延時最小,對建立時間有利,但對保持時間不利。

圖1 典型FPGA接口類型示意圖
一個典型FPGA目標板如圖1所示,FPGA輸入輸出接口主要分為主時鐘接口、復位接口、差分接口、源同步接口和異步接口等5類[1-2],這5類接口的測試需求分解如下:
(1)主時鐘接口
主時鐘包括外部輸入時鐘及通過FPGA片內PLL,DCM等生成多時鐘域的時鐘組。主時鐘接口測試主要考核在基準時鐘有漂移以及基準時鐘有余量的情況下,輸入接口及內部時序路徑的建立保持時間是否滿足工藝庫中觸發器的要求,輸出接口的時序關系是否滿足協議值的要求。測試方法是使用靜態時序分析工具(如Synopsys公司的PrimeTime、FPGA廠商自帶的時序分析工具)執行靜態測試。
(2)復位接口
復位信號使內部觸發器恢復到初始狀態,其實現方式有異步復位、同步復位以及異步復位同步釋放,建議采用異步復位同步釋放的處理方式,它既可以達到無延時異步復位處理的要求,又能避免釋放時刻寄存器輸出出現亞穩態。復位接口的測試主要考核復位信號的恢復時間和移除時間是否滿足工藝庫中觸發器的要求。測試方法是使用跨時鐘檢查工具(如QuestaCDC、SpyGlass等)查看異步復位是否進行同步化處理,或當復位同步化電路沒有問題時,再通過靜態時序分析工具執行靜態測試檢查同步釋放的寄存器是否滿足移除/恢復時間。
(3)差分接口
差分接口主要應用于高速信號傳輸,此類接口一般通過專用芯片或FPGA硬核實現單端轉差分或差分轉單端,接口測試主要考核差分信號的延時是否控制在工藝庫的輸入延遲偏差范圍內。
(4)源同步接口
源同步接口的數據信號存在隨路時鐘信號,即時鐘信號與數據信號存在固定的相位關系,如SPI,IIC通訊協議接口。針對源同步輸入信號,需要考核信號的相對時序關系(如時鐘和使能信號的偏斜值)是否滿足要求;在輸入信號為協議值以及與協議值存在20%偏差的情況下,數據的建立時間和保持時間是否滿足要求。針對源同步輸出信號,需要考核輸出信號的相對時序關系是否滿足任務書或外圍芯片手冊的要求。傳統的測試方法是通過時序仿真進行動態測試。
(5)異步接口
異步接口是指外部輸入信號與FPGA內部采樣時鐘無固定相位關系,如FPGA和板級芯片(如DSP,1553芯片等)交互的接口信號,此類接口直接影響電子設備內部通信的可靠性,是接口時序測試的重點。針對單比特異步輸入信號主要考核信號是否采取了同步機制以避免出現亞穩態,測試方法是使用跨時鐘域檢查工具執行靜態測試。針對輸出信號要分析輸出時序是否滿足協議值的要求;針對多比特異步信號(如數據總線)主要考核在協議值以及與協議值偏差20%的情況下,總線建立保持時間是否滿足要求,傳統的測試方法是通過時序仿真進行動態測試。
1.2 傳統FPGA接口時序測試方法分析
基于以上分析,異步接口由于接口信號數量多、時序關系復雜因而成為接口測試的高風險點和重點。傳統的測試方法以芯片手冊為基礎,通過時序仿真的方式來驗證接口信號的建立時間、保持時間是否滿足時序要求。但時序仿真存在固有缺點,分析如下:
1)時序仿真對于驗證電路時序的正確性在很大程度上依賴于測試向量的完備性,由于測試向量未必對所有相關時序路徑都敏感,所以時序路徑的覆蓋率很難達到100%;
2)基于事件驅動的時序仿真需要耗費大量運行時間,尤其是大規模設計時序仿真耗時較長;
3)針對FPGA在3種工況下的延時文件和布局布線網表進行仿真,進一步增加了時序仿真耗時。
為了提高驗證效率和時序驗證的準確性,本文提出了一種基于時序路徑的FPGA接口測試方法,將被測件的邏輯仿真功能驗證和靜態時序驗證分開,分別采用不同的驗證手段加以驗證,再將2種驗證結果相合進行二次接口時序分析,兼具分析速度快、路徑覆蓋全和各種工況分析準確的優點。
2.1 接口時序測試流程
基于時序路徑的FPGA接口時序測試流程如圖2所示,步驟為:1)執行功能仿真,獲得接口信號的無時延波形;2)通過靜態時序分析計算接口時序路徑延時;3)查詢芯片數據手冊獲得接口信號的協議值;4)人工計算FPGA接口信號的建立時間和保持時間;5)編寫接口時序報告。

圖2 基于時序路徑的FPGA接口時序測試流程
下文先建立FPGA電路時序模型,再闡述使用靜態時序分析工具提取接口信號延時以及人工分析接口時序的方法,最后結合實例給出異步接口時序的計算公式。
2.2 時序路徑模型
同步時序邏輯的電路可看作由組合邏輯和寄存器相間隔而成,靜態時序分析是基于時序路徑的,它將整個設計分解為4種主要的時序路徑[3],如圖3所示。

圖3 FPGA時序路徑示意圖
時序路徑的起點只能是設計的基本輸入端口或內部時序單元,如寄存器、鎖存器的時鐘輸入端;時序路徑的終點只能是內部時序單元的數據輸入端或設計的基本輸出端口。路徑1從FPGA輸入引腳到內部寄存器數據端;路徑2從內部寄存器時鐘輸入端到下一內部寄存器數據輸入端;路徑3從內部寄存器時鐘輸入端到FPGA輸出引腳;路徑4從FPGA輸入引腳到輸出引腳(中間間隔組合邏輯)。功能仿真由于不含有標準延時文件(*.sdf),所以路徑1~4的器件延時為0,即FPGA接口信號為理想無延時波形。使用靜態時序分析工具(如PrimeTime)可計算出3種工況下各條路徑的最大延時和最小延時。

圖4 接口延時計算示意圖
板內接口是指板級芯片直接與FPGA相連的控制信號接口,如圖4所示,這類接口需考慮板內芯片寄存器到引腳的延時Ta、電路板走線延時Tp,FPGA芯片引腳到內部寄存器的延時Tf,其中Ta可由芯片數據手冊得到;一般設計中,Tp相對芯片內部延時非常小,可以忽略不計,在超高速設計中,Tp需結合理論值和經驗值進行估算。板外接口是指FPGA的輸入輸出信號經過增強驅動能力的芯片(如422/485差分芯片)或者直接走線到接插件(背板)與其他目標板相連。如圖4所示,板外接口需要考慮FPGA芯片引腳到內部寄存器的延時Tf,FPGA芯片引腳到接插件的延時Tp,電纜延時Tc,板外芯片寄存器到接插件延時To。
2.3 通過靜態時序分析計算時序路徑延時
靜態時序分析針對同步電路設計使用窮盡分析方法計算內部路徑和外部接口路徑的建立保持時間以及純組合路徑的延遲時間,是一種針對大規模門級電路進行時序驗證的有效方法。由于不需要編寫測試向量,所以靜態時序分析驗證時間遠小于門級仿真時間,測試路徑覆蓋率理論上可達100%。
作為專門的靜態時序分析工具,PrimeTime可以提供完備的時序分析和設計檢查。使用PrimeTime驗證FPGA時序可分為2個方面:1)內部寄存器到寄存器(即圖3的路徑2)的時序檢查,即對時序邏輯器件和門控時鐘進行建立時間和保持時間的檢查、對寄存器的清零端和復位端進行恢復時間和移除時間的檢查、時鐘最小周期和脈寬檢查等;2)端口時序檢查,計算圖3的路徑1,3和4的最大延時和最小延時。
PrimeTime時序檢查的腳本說明如下:
1)建立PrimeTime設計環境,包括設置文件路徑、讀入網表文件和SDF延時文件、鏈接頂層設計和定義時鐘等;
2)執行內部寄存器時序檢查,檢查寄存器setup/hold/recovery/removal時間是否滿足要求,為排出無關路徑干擾,可先說明時序例外情況,即將輸入輸出端口設置成偽路徑;

#設置偽路徑,不分析in/inout/out端口set_false_path-from[get_ports-filter{direction==in||direction==inout}]set_false_path-to[get_ports-filter{direction==out||direction==inout}]#分析setupholdrecoveryremovalreport_analysis_coverage-check_type{setupholdrecoveryremoval}-exclude_untested{constant_disabledno_pathsfalse_pathsno_startpoint_clockno_endpoint_clock}#報告recovery/setuptimereport_timing-delay_typemax#報告removal/holdtimereport_timing-delay_typemin
3)執行端口時序檢查。基于時序路徑的接口測試需要人工結合仿真波形分析接口信號是否滿足協議要求,作為分析依據,需要使用PrimeTime提取FPGA輸入輸出信號的端口最大和最小延時。
2.4 基于時序路徑的接口時序計算

圖5 FPGA與ARM總線接口示例
異步接口以圖5所示FPGA(XC2V1000)與ARM(AT91RM9200)通信為例,ARM總線輸出信號均為ARM時鐘域下的同步信號,FPGA采用本地時鐘來解析總線信號實現數據讀寫,本文以ARM寫操作為例,對基于時序路徑的接口時序計算方法進行詳細闡述。
2.4.1 單比特控制信號時序測試
對于輸入類控制信號(如圖5中ARM總線片選、讀寫信號),通過跨時鐘域檢查工具分析邏輯設計是否采取了同步措施(如兩級同步),同步后能否保證數據被正確采樣。對于輸出類控制信號(如圖5中FPGA輸出1553讀、寫信號),首先通過靜態時序分析計算3種工況下控制信號最大和最小延時(如圖5中延時T3和T4),再人工分析輸出信號的延時是否在協議值范圍內。
2.4.2 異步總線數據建立和保持時間測試
步驟1):執行功能仿真
針對FPGA布局布線后,網表文件執行功能仿真(即門級仿真),測試用例必須覆蓋芯片接口的各種操作(如讀寫操作),從而得出接口信號的無延時仿真波形。由于功能仿真不包含延時文件,因此仿真速度較快。
異步總線接口的同步方式通常是FPGA對關鍵信號(如讀寫和片選)進行兩級同步,在同步后的關鍵信號的上升沿或下降沿將數據打入寄存器,將外部異步接口轉換成內部同步接口。
步驟2):計算內部時序路徑延時
靜態時序分析工具PrimeTime計算FPGA內部時序延時的腳本見2.3節,計算結果見表1。
步驟3):查詢接口信號的協議值
查詢芯片數據手冊可以得到ARM端接口信號相對于ARM時鐘的最大和最小延時,結果見表1。

表1 總線接口信號延時
(注1:對于位寬為N比特的數據總線,TF_DAT_MIN為所有數據線延時中的最小值,TF_DAT_MAX為所有數據線延時的最大值。)

表2 FPGA異步接口時序測試報告
步驟4):人工計算建立和保持時間
人工分析時,首先識別關鍵信號,即有效時間最短、以該信號跳變沿對數據采樣的信號,然后計算關鍵信號與數據的建立和保持時間。

圖6 ARM寫操作時序圖
以圖6中 ARM寫操作時序為例,地址(arm_addr)和片選(arm_cs)信號持續時間最長,不會出現時序不滿足的情況;在本地時鐘域下,FPGA對寫信號(arm_wr)進行兩級同步(fpga_wr),并在其跳變沿對數據(arm_data)采樣,所以寫信號為關鍵信號。3種工況下,最大工況(高溫低壓)對建立時間不利,最苛刻情況下的數據建立時間應該讓寫信號最早到達,讓數據最晚到達。
①總線數據建立時間測試
建立時間TSETUP是指在寫信號采樣時刻之前數據保持穩定不變的時間,時間基準是ARM時鐘沿,時序路徑起點是ARM寄存器輸出端,終點是FPGA寄存器輸入端,包含了ARM輸出延時、電路板走線延時和FPGA輸入延時,在一般設計中電路板走線延時相對于FPGA芯片管腳到觸發器的延時時間來說非常小,可以忽略不計。如圖6所示,建立時間應計算經FPGA同步后的關鍵信號(fpga_wr)的跳變沿與數據總線的時間關系:
TSETUP=T寫信號最小延時+T寫信號最小同步時間-T數據的最大延時
=(TA_WR2CLK_MIN+TF_WR_MIN)+(N*TF_CLK)-
(TA_DAT2CLK_MAX+TF_DAT_MAX)=(4.8+3.035)+
2*12.5-(7.9+7.81)=17.125nsgt;0 滿足要求
注2:N的取值:關鍵信號與FPGA本地時鐘為異步關系,二者相位差為0~1個時鐘周期,然后經過內部兩級同步在跳變沿對數據進行采樣,故N取值2~3。最苛刻情況下讓關鍵信號最早到達,所以對于兩級同步,此處N取值為2。
② 總線數據保持時間測試
保持時間THOLD是指在寫信號采樣時刻之后數據保持穩定不變的時間,其計算同樣是基于功能仿真和靜態時序分析的結果。與建立時間相反,3種工況下,最小工況(低溫高壓)對保持時間不利,最苛刻情況下的數據保持時間應該讓寫信號最晚到達,讓數據最早到達,如圖6時序所示。
THOLD=T數據最小延時+T數據有效的最小時間-T寫信號最大延時-
T寫信號同步最大延時=(TA_DAT2CLK_MIN+TF_DAT_MIN)+
TA_DAT_MIN-(TA_WR2CLK_MAX+TF_WR_MAX)-N*TF_CLK=
(4.10+2.98)+3.5*16.69-
(7.20+3.035)-3*12.5=9.15nsgt;0滿足要求
注:N取值:與建立時間相反,最苛刻情況下讓關鍵信號最晚到達,所以對于兩級同步,此處N取值為3。
步驟5):編寫接口時序測試報告
編寫接口時序測試報告,如表2所示。接口時序測試需要分析3種工況下的建立時間和保持時間是否為正。
在集成電路設計中,由于流片費用昂貴,所以其時序分析驗證有一套嚴格的流程和標準。而在FPGA設計或驗證中,由于FPGA可反復擦寫、燒寫速度快,所以常用的測試方法是直接下載到FPGA中進行板級測試,另外由于設計人員或測試人員對時序測試缺乏認識,認為只要時序分析報告沒有報錯、板間通信正常就代表時序沒有問題。這樣就存在時序路徑覆蓋不全面、測試場景不全面從而導致時序錯誤遺漏,最終在實際應用或高低溫實驗時引發極限工況下的偶發問題。
基于時序路徑的FPGA接口時序分析方法應用于可編程邏輯器件的開發方測試及第三方測試,相比時序仿真,不僅能顯著縮短測試時間,而且能分析出最苛刻情況下的接口時序是否滿足協議值要求。在多個型號FPGA軟件測試中發現如下幾類典型問題:
1)復位信號由于扇出較大導致恢復時間或移除時間不滿足要求;
2)極限工況下接口信號時序不滿足協議值要求;
3)極限工況下內部信號的建立時間和保持時間不滿足要求;
4)FPGA管腳約束(如驅動電流、IO標準)不合理,管腳連接中途容性負載反射導致關鍵信號出現毛刺,造成誤操作;
5)FPGA管腳分配不合理導致芯片輸出信號延時偏差較大,控制信號不滿足協議值要求,總線信號一致性差;
6)跨時鐘域信號未采用同步機制。
在設計早期發現接口時序問題能極大地降低電子設備的研制和試驗成本,提升系統的可靠性。基于時序路徑的FPGA接口時序分析在工程實踐中有廣泛的應用價值。
對航天高速高可靠FPGA接口時序測試進行了深入的分析,提煉出一種基于時序路徑的FPGA接口時序測試方法,闡述了接口時序分析的測試流程和計算方法,并應用到多個航天型號FPGA軟件測試中。
[1] 王石. 基于FPGA芯片的功能仿真平臺構建及靜態時序分析[D]. 西安:西安電子科技大學,2008. (Wang Shi.Construction of Function Simulation Platform and Static Timing Analysis Based on FPGA Chips [D]. Xidian University, 2008.)
[2] 周珊,王金波,王曉丹. 基于時序路徑的FPGA時序分析技術研究[J]. 微電子學與計算機, 2016,33(1):76-80. (Zhou Shan, Wang Jinbo, Wang Xiaodan. Research of FPGA Timing Sequence Analysis Technology Based on Timing Sequence Path [J]. Microelectronics and Computer, 2016,33(1):76-80.)
[3] 周海斌. 靜態時序分析在高速FPGA設計中的應用[J].電子工程師, 2005,31(11):41-44. (Zhou Haibin. The Application of Static Timing Analysis in High Speed FPGA Design [J]. Electronic IC Engineer, 2005,31(11):41-44. )
AnFPGAInterfaceTimingVerificationMethodBasedontheTimingSequencePath
Zhu Weijie, Zhou Hui, Fei Yanan, Yang Hui, Guo Guanjun
Beijing Aerospace Automatic Control Institute, Beijing 100854, China
AimingatthehighspeedandreliableFPGAinterfacetimingsequenceverificationonspaceflight,theFPGAinterfacetypeandtestspecificationisanalyzed,andanFPGAinterfacetimingverificationmethodbasedonthetimingsequencepathisintroduced,andthetestflowandcalculationmethodwhichisbasedonthetimingpathmodelandappliedinthetimingtestofasynchronousbusinterfaceisclarified.TheadvantageoffunctionsimulationwithstatictiminganalysisareintegratedinthismethodwhichissuitableforthetimingverificationoflimitingconditionespeciallyandisappliedinseveralhighreliableFPGAtestingonspaceflight.Bycomparingwiththetraditionaltimingsimulationofgate-level,theverificationefficiencyandcoveragecanbeimprovedbyusingthemethodintroducedinthispaper.
Timingpath; FPGAinterfacetimingsequencetest;Statictiminganalysis

TN47
A
1006-3242(2017)04-0079-06
2016-12-13
朱偉杰(1987-),男,山東威海人,碩士研究生,工程師,主要研究方向為FPGA軟件設計與測試;周輝(1984-),男,陜西咸陽人,碩士研究生,工程師,主要研究方向為FPGA軟件設計與測試;費亞男(1988-),女,長春人,碩士研究生,工程師,主要研究方向為FPGA軟件測試;陽徽(1985-),男,湖南邵陽人,碩士研究生,高級工程師,主要研究方向為FPGA軟件設計與測試;郭冠軍(1978-),男,河南民權人,碩士研究生,高級工程師,主要研究方向為FPGA軟件設計。