田 毅,李 宏,馬騰達(dá),薛茜男
(1.中國民航大學(xué),適航審定技術(shù)與管理研究中心,民用航空器適航與維修重點實驗室,天津300300;2.民用飛機模擬飛行國家重點實驗室,上海200232;3.中國民航大學(xué)航空自動化學(xué)院,天津300300)
機載應(yīng)答機對飛機的安全有著重大影響,其作用是接收和識別其他TCAS或者二次雷達(dá)地面站的詢問,再按照相應(yīng)的技術(shù)要求做出應(yīng)答[1]。目前,民航機載應(yīng)答機有3種模式:A模式、C模式、S模式,其中A模式和C模式的脈沖形式完全相同[2]。應(yīng)答機作為研制保證等級為C級的機載電子設(shè)備,會使飛機的性能顯著下降,顯著地增加機組工作量或降低其工作效率,對飛機安全有重大的影響。所以按照民航適航要求需要對設(shè)備中的機載復(fù)雜電子硬件(如FPGA)進(jìn)行嚴(yán)格驗證[3]。比如,在功能仿真階段需要模擬真實信號的脈沖寬度(含閾值),在測試平臺(TestBench)中模擬生成含有恰當(dāng)變化的測試激勵。按照RTCA DO-181的規(guī)定,A模式、C模式、S模式的各個詢問脈沖都含有特殊的脈寬限制,因此如果采用傳統(tǒng)的直接驗證方式,驗證工程師需要耗費大量的時間和精力來搭建測試平臺。SystemVerilog是一種標(biāo)準(zhǔn)化的硬件描述和驗證語言,集成了來自SUPERLOG、VERA、C、C++和 VHDL語言的特點,提供了包括帶約束的隨機激勵產(chǎn)生、覆蓋率驅(qū)動驗證、斷言等功能,適于對于復(fù)雜信號的功能仿真驗證[4-5]。
A/C/S模式詢問信號主要由4種脈沖構(gòu)成,按照順序分別為 P1、P2、P3、P4,其中 P1、P3 脈沖起到詢問信號的作用,P2用于抑制應(yīng)答機對旁波瓣詢問信號的應(yīng)答,P4是用來區(qū)分A/C模式和S模式。通過4種脈沖的有無、寬度和間隔的組合構(gòu)成詢問信號,主要有普通詢問信號、全呼叫詢問信號、僅呼叫詢問信號。在實際中受到天氣、收發(fā)機功率、電磁干擾等影響,接收到的詢問信號脈沖不能夠很好的保證在標(biāo)準(zhǔn)要求的范圍內(nèi),故驗證收發(fā)機對于接收脈沖信號是否能夠準(zhǔn)確識別是收發(fā)機研制的關(guān)鍵點。
對每種詢問信號,脈沖寬度并非只是一個固定值,而是允許在一定范圍內(nèi)的,而脈沖之間的間隔也是如此。綜合上述介紹,每種詢問信號有2~4個脈沖(一定有P1、P3),去掉各種詢問信號不應(yīng)有的脈沖,各種詢問信號均可歸結(jié)為圖1所示波形,其中A0、A1、A2、A3 分別為脈沖寬度,B0、B1、B2、B3 分別為脈沖間隔(B中的最后一個非零值為兩個詢問信號間隔)。
圖1 詢問信號波形圖
各種詢問信號的脈沖寬度、間隔如表1。
表1 各種詢問信號的脈沖寬度、間隔表 單位:μs
普通詢問信號只有P1、P2和P3,按照模式分成A模式和C模式,這兩種模式均有P1和P3,且脈沖寬度均為0.8 μs,只是P1和P3的間隔不同,A模式為8 μs,C 模式為21 μs。還可按照對 A 模式詢問信號是否抑制、A模式抑制旁瓣詢問信號、C模式詢問信號、C模式抑制旁瓣詢問信號,記為CALL_A、CALL_A2、CALL_C、CALL_C2。
全呼叫詢問信號和普通詢問信號類似,只是在P3后面加入了脈沖寬度為1.6 μs的P4,其分類方法也和普通詢問信號一樣,分為4種詢問信號:A模式全呼叫詢問信號、A模式全呼叫抑制旁瓣詢問信號、C模式全呼叫詢問信號、C模式全呼叫抑制旁瓣詢問信號,記為 ALLCALL_A、ALLCALL_A2、ALLCALL_C、ALLCALL_C2。
僅呼叫詢問信號和全呼叫詢問信號類似,只是在P3后面加入了脈沖寬度為0.8 μs的P4,其分類方法也和普通詢問信號一樣,分為4種詢問信號:A模式全呼叫詢問信號、A模式全呼叫抑制旁瓣詢問信號、C模式全呼叫詢問信號、C模式全呼叫抑制旁瓣詢問信號,記為 ONLYCALL_A、ONLYCALL_A2、ONLYCALL_C、ONLYCALL_C2。
從表1中可以看出,大部分?jǐn)?shù)據(jù)都是μ±σ型,其中μ為理想值,σ為容差,所以可以用正態(tài)分布來描述此類數(shù)據(jù)。然而,例如CALL_A2的A1,其理想值為0.8 μs,容差上限為1.2 μs,下限為0.3 μs。容差的上限和下限并不相等,且下限較為接近0,使用正態(tài)分布容易產(chǎn)生負(fù)值等錯誤,故需要對正態(tài)分布進(jìn)行改進(jìn)[6]。
由于脈沖寬度和間隔均有一定的容限,所以采用正態(tài)分布來產(chǎn)生測試激勵,能夠更精確的描述實際情況,通過改變標(biāo)準(zhǔn)差來調(diào)整注入錯誤的概率。這樣既能很好的描述脈沖的寬度,又能很方便的注入錯誤。采用系統(tǒng)函數(shù)$dist_normal()生成測試向量,即
隨機生成正確激勵的概率為:
式中seed為隨機種子,max為容差上限,min為容差下限,mean為平均值,dev為標(biāo)準(zhǔn)差。其中max、min、mean為已知值,可通過調(diào)整標(biāo)準(zhǔn)差值,使P(rignt)=90%。
表1中的多數(shù)情況均可用正態(tài)分布來實現(xiàn),但是 CALL2 的 A1 值為 0.3 μs~1.2 μs,其期望值為0.8 μs,其值并非對稱,且單純使用正態(tài)分布會出現(xiàn)錯誤,即有一定概率產(chǎn)生負(fù)值,或產(chǎn)生一個很大的時間。所以要設(shè)定一個故障范圍,將故障值約束在一定范圍之內(nèi)。300 ns~1 200 ns為正常值,設(shè)定2 00ns~300 ns和1 200 ns~1 400 ns為故障值,當(dāng)隨機出的數(shù)值不在正常值的區(qū)間內(nèi)時,則歸結(jié)到該故障值內(nèi),故障值采用平均分布。改進(jìn)正態(tài)分布概率如圖2所示。
圖2 改進(jìn)正態(tài)分布概率圖
為保證隨機生成正確激勵的概率約等于90%,將標(biāo)準(zhǔn)差設(shè)為268,則
則隨機生成錯誤激勵的概率為
由于將所有的錯誤情況都?xì)w結(jié)到[200:299]和[1201:1400]這個區(qū)間內(nèi)的平均分布,此平均分布的區(qū)間長度為400,則此平均分布的概率為
應(yīng)答機12種詢問信號都可歸結(jié)成圖1所示波形,依據(jù)表1的數(shù)據(jù),來生成相應(yīng)的詢問信號。對于每個脈沖,只需保證脈沖寬度和間隔符合要求即可,由于這兩者均為隨機數(shù),所以采用并行語句來描述。
詢問信號最多有4個脈沖,每個脈沖的形式相同,所以通過for循環(huán)來逐個生成,即通過for循環(huán)來不斷的調(diào)用gen_forkwave任務(wù)。
由于各種詢問信號都可以歸結(jié)為圖1所示的波形,所以只寫一個task使其能產(chǎn)生各種波形。首先將各種詢問信號進(jìn)行定義,將其定義成枚舉類型wavemode,作為task的輸入變量,以識別所需產(chǎn)生的詢問信號。
task通過輸入的枚舉變量來識別所需生成的詢問信號后,還要從表1中查出對應(yīng)的脈沖寬度和間隔。所以,將各種詢問信號的脈沖寬度和間隔都存入一個4維數(shù)組常量 ALL_WAVE_INFO[12][2][4][6]中。其中第一維用來區(qū)分詢問信號類型,第二維用來區(qū)分脈沖寬度和間隔,第三維用來指示脈沖寬度An和間隔Bn中的n,第四維用來存儲該隨機數(shù)值的信息。
驗證主要提供硬件設(shè)計符合需求的證據(jù)。在驗證過程中采用適宜的方法對硬件進(jìn)行檢驗,并進(jìn)行測量。常用的方法有評審、分析及測試或三者的組合。
待驗應(yīng)答機所選用的是Altera公司的CycloneⅢ系列的某型芯片,并在設(shè)計中調(diào)用了內(nèi)部的IP核資源,包括:加法器、乘法器、PLL、緩存核等。項目組按照適航要求,對待驗證FPGA的原廠提供的質(zhì)量證明、生產(chǎn)記錄及該型元器件成功工作的服務(wù)歷史等相關(guān)信息進(jìn)行了評估,并按照原廠指導(dǎo)對于主要功能IP(如緩存)進(jìn)行了驗證,從而保證這些設(shè)計不可控元素的可靠性。在此基礎(chǔ)上,搭建下述驗證分析平臺[7-8]。
采用分層結(jié)構(gòu)來搭建驗證平臺[9-10],主要由數(shù)據(jù)生成器、驅(qū)動器、記分牌、監(jiān)視器和斷言等組件組成,如圖3所示。
圖3 測試平臺結(jié)構(gòu)圖
數(shù)據(jù)生成器用來生成數(shù)據(jù)模式,具體到本驗證平臺,就是生成一組詢問模式變量,都寫入郵箱傳遞給驅(qū)動器組件。
驅(qū)動器根據(jù)數(shù)據(jù)生成器的數(shù)據(jù),生成相應(yīng)的波形數(shù)據(jù),發(fā)送給待測設(shè)計;在發(fā)送給記分牌時,并將其中的錯誤數(shù)據(jù)過濾掉,只將正確數(shù)據(jù)發(fā)送過去。
監(jiān)視器監(jiān)視待測設(shè)計的輸出,并將其傳給記分牌。記分牌將驅(qū)動器和監(jiān)視器的數(shù)據(jù)作對比,即可判斷待測設(shè)計的正確性。
斷言組件單獨寫成一個module,待測設(shè)計的輸入和輸出都作為斷言模塊的輸入,檢測待測設(shè)計的屬性是否符合設(shè)計需求。在測試平臺中,通過關(guān)鍵字blind與待測設(shè)計綁定[11]。
除斷言以外的模塊都是通過類(class)來實現(xiàn)的,在類中定義成員變量及函數(shù)、任務(wù),而組件之間的通信都是通過郵箱(mailbox)來實現(xiàn),以數(shù)據(jù)生成器為例,其代碼如下:
在每個類中,首先要定義成員變量,包括用作通信的郵箱以及需要隨機的變量等;由于在實例化時需要給該類加一個郵箱參數(shù),所以還要定義一個帶參數(shù)的new()函數(shù);最后就是任務(wù),通過任務(wù)來執(zhí)行相應(yīng)的動作,包括向郵箱內(nèi)寫數(shù)據(jù)以傳遞給后面的組件等。
圖4 概率分布圖
以CALL2的A1值為例,采用改進(jìn)型正態(tài)分布生成1000次隨機值,各區(qū)間的概率分布如圖4所示,生成結(jié)果符合圖2的預(yù)期結(jié)果。隨機變量被約束在200~1 500的范圍之內(nèi),避免生成負(fù)值造成仿真錯誤,并且避免生成一個極大的正值造成仿真效率下降。
依據(jù)機載應(yīng)答機各種模式詢問信號要求,應(yīng)用改進(jìn)的正態(tài)分布算法產(chǎn)生脈沖寬度和間隔,生成的各種模式仿真激勵波形如圖5所示。
圖5 仿真激勵波形圖
在驗證平臺中將上述仿真激勵注入到待測設(shè)計中,得到的仿真結(jié)果如圖6所示。
圖6 仿真波形圖
本研究采用改進(jìn)型正態(tài)分布生成測試向量,通過SystemVerilog驗證語言搭建驗證平臺實現(xiàn)了對應(yīng)答機可編程邏輯器件的驗證。改進(jìn)后的測試激勵生成算法既避免了產(chǎn)生負(fù)值的錯誤,又模擬了真實情況,在對機載應(yīng)答機的驗證中取得了良好的效果,達(dá)到了高效、精確驗證的目的。該方法有望應(yīng)用于其他機載電子設(shè)備可編程邏輯器件的設(shè)計驗證中。
[1]馬進(jìn).基于FPGA和TCAS與S模式應(yīng)答機綜合化數(shù)字中頻接收系統(tǒng)的設(shè)計與仿真[D].上海:上海交通大學(xué),2011.
[2]MH/T 4010—2006,空中交通管制二次雷達(dá)設(shè)備技術(shù)規(guī)范[S].
[3]王鵬,田毅.DO-254標(biāo)準(zhǔn)在機載電子硬件審定中的應(yīng)用[J].中國民航大學(xué)學(xué)報,2010,5(28):17-24.
[4]Mark Zwolinski.Digital System Design with SystemVerilog[M].Pearson,2009,24-78.
[5]Christian B Spear.SystemVerilog for Verification:A Guide to Learning the Testbench Language Features[M].Springer,2008,44-125.
[6]張建平,王睿韜.對數(shù)正態(tài)分布下基于MAM的VFD加速壽命試驗研究[J].電子器件,2008,31(6):1735-1738,1742.
[7]周德新,金志威,王鵬,等.基于SystemVerilog的SRAM控制器IP 核驗證[J].電子器件,2012,35(5):619-622.
[8]劉萌,馮海洲,李康,等.基于SystemVerilog的網(wǎng)絡(luò)處理器驗證平臺設(shè)計[J].電子器件,2011,34(3):320-323.
[9]Janick Bergeron,Eduard Cerny,Alan Hunter,et al.Verification Methodology Manual for SystemVerilog[M].Springer,2005,23-145.
[10]Mark Glasser.Open Verification Methodology Cookbook[M].Springer-Verlag,2009,47-129.
[11]Srikanth Vijayaraghavan,Meyyappan Ramanthan.A Practical Guide for SystemVerilog Assertions[M].Springer,2005,21-59.