張鳴蕓,王 薇,王立民
(中國電子科技集團(tuán)第五十四研究所,河北 石家莊 050081)
星載解調(diào)器代碼的驗(yàn)證
張鳴蕓,王 薇,王立民
(中國電子科技集團(tuán)第五十四研究所,河北 石家莊 050081)
專用集成電路(ASIC)在衛(wèi)星通信系統(tǒng)的應(yīng)用使得設(shè)計(jì)開發(fā)周期變短,為了保證可靠性則需要對代碼進(jìn)行充分的測試驗(yàn)證,這將耗用較多時間。為了解決這個問題,在有限的時間內(nèi)對星上代碼進(jìn)行快速有效的驗(yàn)證,介紹了一種覆蓋率引導(dǎo)的功能驗(yàn)證方法。采用該方法對星上解調(diào)器代碼進(jìn)行了驗(yàn)證,詳細(xì)介紹了驗(yàn)證過程。測試結(jié)果表明,該方法可有效加速代碼驗(yàn)證過程,保證可靠性。
ASIC;解調(diào)器代碼;覆蓋率
隨著數(shù)字化調(diào)制解調(diào)技術(shù)的發(fā)展,目前現(xiàn)場可編程門陣列(FPGA)因其編程的靈活性在衛(wèi)星通信系統(tǒng)中廣泛使用。然而近年來,在空間環(huán)境中使用大規(guī)模數(shù)字邏輯電路而發(fā)生的單粒子事件愈加頻繁。而FPGA抗單粒子能力較弱[1,2],使用ASIC代替FPGA成為星上抗單粒子的技術(shù)手段之一。但是由于ASIC一經(jīng)流片,便不能更改,因此相對以往基于FPGA的開發(fā)流程,留給設(shè)計(jì)修改驗(yàn)證的時間大幅縮短。傳統(tǒng)的驗(yàn)證方法是根據(jù)功能需求逐個編寫測試激勵,通過仿真得到測試結(jié)果,當(dāng)測試結(jié)果全部通過后即認(rèn)為驗(yàn)證結(jié)束。然而由于星上產(chǎn)品高可靠性要求的特性,對驗(yàn)證的完備性極為關(guān)注。一般而言,更加充分的驗(yàn)證也就需要耗費(fèi)更多的時間,而傳統(tǒng)的驗(yàn)證方法基于開環(huán)流程的特點(diǎn)無法評估代碼的驗(yàn)證程度。為了加速驗(yàn)證過程,幫助評估驗(yàn)證程度,在對星載解調(diào)器代碼進(jìn)行測試驗(yàn)證的時候以傳統(tǒng)的功能驗(yàn)證為基礎(chǔ),引入了覆蓋率測試作為反饋和引導(dǎo)。在進(jìn)行驗(yàn)證時,測試激勵的全部通過并不意味著驗(yàn)證結(jié)束,而是以覆蓋率測試的結(jié)果為導(dǎo)向,有針對性地開始下一輪驗(yàn)證過程,以此形成一個不斷改進(jìn)的閉環(huán)過程,直至驗(yàn)證的完備性達(dá)到預(yù)期。這種方法可以達(dá)到加速代碼的問題收斂及縮短驗(yàn)證過程的目的。
集成電路的驗(yàn)證指檢測硬件語言設(shè)計(jì)是否滿足設(shè)計(jì)需求的過程,具體來說就是在設(shè)計(jì)需求規(guī)定下施加激勵,驗(yàn)證電路是否產(chǎn)生了符合功能要求的輸出,以及在設(shè)計(jì)規(guī)定的條件下,電路是否完成正常的功能。目前驗(yàn)證的常用方法有基于仿真的驗(yàn)證方法以及形式驗(yàn)證方法[3]。其中形式驗(yàn)證發(fā)展還未成熟,基于仿真的驗(yàn)證方法是主流模式?;诜抡娴尿?yàn)證是以設(shè)計(jì)的功能需求為基本出發(fā)點(diǎn),對設(shè)計(jì)進(jìn)行仿真,檢測設(shè)計(jì)實(shí)現(xiàn)的功能是否達(dá)到了功能需求。
基于仿真的驗(yàn)證流程如下:首先依據(jù)設(shè)計(jì)需求設(shè)計(jì)測試用例[4],每一個測試用例通常包含測試點(diǎn)和測試數(shù)據(jù)2部分。測試點(diǎn)是指測試用例要測的特性,測試數(shù)據(jù)包括激勵數(shù)據(jù)和標(biāo)準(zhǔn)的響應(yīng)輸出數(shù)據(jù)[5]。然后根據(jù)測試用例設(shè)計(jì)相應(yīng)的激勵和標(biāo)準(zhǔn)輸出,經(jīng)過仿真后,將仿真輸出結(jié)果與標(biāo)準(zhǔn)輸出結(jié)果進(jìn)行比較,從而驗(yàn)證設(shè)計(jì)的正確性。
上述驗(yàn)證過程的出發(fā)點(diǎn)是系統(tǒng)的功能,因此每一個測試用例都需要精心設(shè)計(jì)。在系統(tǒng)較為簡單時,足夠詳盡的測試用例可以查出大部分錯誤。但是隨著系統(tǒng)功能日益復(fù)雜,測試用例的設(shè)計(jì)難度隨之不斷增大,測試用例的質(zhì)量受限于設(shè)計(jì)者的經(jīng)驗(yàn),即使所有的用例都通過測試,也無法保證沒有異常出現(xiàn)或者沒有考慮到的情況發(fā)生,因此衡量驗(yàn)證的完備程度成為驗(yàn)證的關(guān)鍵。
2.1 覆蓋率
鑒于傳統(tǒng)驗(yàn)證無法評估驗(yàn)證程度的缺點(diǎn),引入了覆蓋率測試作為傳統(tǒng)驗(yàn)證方法的補(bǔ)充。覆蓋率測試包括功能覆蓋率測試和代碼覆蓋率測試,功能覆蓋率用于反映測試用例執(zhí)行測試功能點(diǎn)的情況,包括執(zhí)行功能點(diǎn)的比例和具體沒有執(zhí)行的功能點(diǎn)。在驗(yàn)證過程中,依據(jù)測試計(jì)劃逐項(xiàng)測試用例的測試也可認(rèn)為是對功能的覆蓋測試過程。代碼覆蓋率反映設(shè)計(jì)工程師編寫代碼的執(zhí)行效率,代碼覆蓋率可以通過EDA工具自動收集,既反映執(zhí)行比例,又能明確沒有執(zhí)行的行、條件或狀態(tài)機(jī)。很多EDA工具可以進(jìn)行覆蓋率測試,其中仿真工具M(jìn)odelSim中也帶有覆蓋率測試工具[6],僅需要在編譯及仿真之前勾選相應(yīng)覆蓋率分析選項(xiàng)即可。代碼覆蓋率只能保證所編寫代碼的執(zhí)行程度,不能保證所執(zhí)行代碼的功能正確。但是其可以直觀地反映代碼的執(zhí)行情況,幫助設(shè)計(jì)工程師分析代碼[7,8]。
2.2 驗(yàn)證步驟
覆蓋率引導(dǎo)的驗(yàn)證步驟主要包括驗(yàn)證特性提取、測試點(diǎn)分解、測試用例編寫、測試用例執(zhí)行和覆蓋率分析。
在驗(yàn)證過程中,首先根據(jù)星載解調(diào)器的需求規(guī)格提取驗(yàn)證特性。驗(yàn)證特性是從驗(yàn)證的角度描述需求,說明了某個需求規(guī)格對應(yīng)需要驗(yàn)證的多個特性,它包括功能、性能、容錯性、可靠性及缺省功能特性等[9]。星載解調(diào)器的主要工作是將接收的上行數(shù)據(jù)進(jìn)行解調(diào)處理。作為數(shù)字處理的核心部分,星載解調(diào)器解調(diào)代碼主要驗(yàn)證特性就包括了接收星上遙控指令,發(fā)送遙測數(shù)據(jù),對輸入的中頻采樣數(shù)據(jù)進(jìn)行解調(diào)處理及組幀輸出等。
隨后根據(jù)驗(yàn)證特性提取驗(yàn)證測試點(diǎn),例如在解調(diào)最主要的數(shù)據(jù)解調(diào)功能中,主要功能特性包括了解調(diào)器的基本性能指標(biāo),包括信號電平動態(tài)范圍、頻差捕獲范圍及時鐘偏差糾正范圍等。測試點(diǎn)將指導(dǎo)測試用例的開發(fā)和覆蓋率組的編寫,測試點(diǎn)的提取綜合使用等價類法和邊界值法實(shí)現(xiàn)[10,11]。等價類的基本思想就是把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干子集,然后從每一個子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測試用例。邊界值分析法就是對輸入或輸出的邊界值進(jìn)行測試的一種黑盒測試方法。例如,假設(shè)解調(diào)器電平范圍為L,最小電平為L0,最大電平為L1,那么該性能要求所需的測試點(diǎn)便包括了L0、L1、介于L0與L1之間的一到兩個值、小于L0的一到兩個值、大于L1的一到兩個值,共至少5個測試點(diǎn)。
確定測試點(diǎn)之后,開始編寫測試用例,測試用例用于覆蓋測試點(diǎn),一個測試點(diǎn)對應(yīng)一到多個測試用例,一個測試用例也可以覆蓋一到多個測試點(diǎn)。例如解調(diào)器的電平范圍需要多個測試用例測試,而一個測試用例也可同時測試信號的最高電平、最大頻率偏差的若干個測試點(diǎn)。驗(yàn)證過程中所需的測試向量的生成機(jī)制可分為3類:直接激勵、隨機(jī)激勵、和可約束的隨機(jī)激勵[12,13]。后2種方式人工耗費(fèi)較小,但是針對性不強(qiáng),在極為復(fù)雜的系統(tǒng)驗(yàn)證中得到了廣泛應(yīng)用。而直接激勵就是完全由驗(yàn)證人員手動寫成的固定向量,通過直接激勵,可以準(zhǔn)確有效地觸發(fā)驗(yàn)證的某個目標(biāo)功能,人工耗費(fèi)較大。由于星載解調(diào)器的主要處理過程是針對數(shù)據(jù)流的處理,邏輯處理方面算不上特別復(fù)雜,因此采用了直接激勵的方式進(jìn)行驗(yàn)證。其中中頻采樣數(shù)據(jù)數(shù)據(jù)源利用MATLAB軟件產(chǎn)生。
測試用例的執(zhí)行過程是利用已形成的若干測試用例進(jìn)行仿真并與標(biāo)準(zhǔn)的響應(yīng)輸出數(shù)據(jù)進(jìn)行比較,從而確定仿真結(jié)果的正確性。覆蓋率分析則在功能驗(yàn)證的同時進(jìn)行,找出未覆蓋地方或者程序的錯漏之處。
覆蓋率引導(dǎo)的驗(yàn)證過程是以傳統(tǒng)的驗(yàn)證為基礎(chǔ),在功能驗(yàn)證的同時對覆蓋率進(jìn)行測試,來監(jiān)視并提高驗(yàn)證的完備性,同時在覆蓋率分析的過程中發(fā)現(xiàn)功能點(diǎn)遺漏或錯誤。
在首次對代碼進(jìn)行驗(yàn)證時,可能代碼本身和驗(yàn)證環(huán)境都很不成熟,存在著諸多問題,此時主要對關(guān)鍵的功能點(diǎn)進(jìn)行測試,使驗(yàn)證系統(tǒng)啟動起來。隨著代碼本身和驗(yàn)證環(huán)境逐漸趨于穩(wěn)定,之后的測試過程主要關(guān)注如何迅速提高驗(yàn)證的覆蓋率。在此階段,根據(jù)被測功能,對各種功能進(jìn)行測試,同時監(jiān)測覆蓋率水平,根據(jù)覆蓋率來修改激勵,繼續(xù)進(jìn)行測試,然后再根據(jù)覆蓋率修改約束,如此反復(fù),以完成對絕大多數(shù)功能覆蓋點(diǎn)的測試。
具體如下:在第1輪測試時,根據(jù)測試計(jì)劃設(shè)置一組測試用例依次進(jìn)行仿真,在此過程中可發(fā)現(xiàn)代碼的錯誤及疏漏之處,此時需要返回代碼進(jìn)行修改并重新測試,直至此組測試用例全部測試完成,并且測試結(jié)果符合預(yù)期。但是此時還不能結(jié)束驗(yàn)證工作,需要利用覆蓋率對此輪驗(yàn)證工作進(jìn)行評估,找出覆蓋率漏洞,即未被覆蓋之處。
當(dāng)發(fā)現(xiàn)覆蓋率漏洞時需要對其進(jìn)行分析,這時可能出現(xiàn)幾種情況:
①當(dāng)前測試用例不完備,這時需要修改或增添測試用例來使測試更加完備。此時一種常見錯誤是編寫測試向量時遺漏了對某個條件或是某些屬性的操作,這種情況只要更正這些遺漏,就可以達(dá)到更完備的覆蓋率。
②某段代碼本身是冗余代碼,或者代碼本身存在某種邏輯錯誤,這時應(yīng)該去除冗余代碼,對問題代碼進(jìn)行修改,增加其可維護(hù)性;例如發(fā)現(xiàn)一組復(fù)雜條件選擇判定(if else)語句的最后一個條件無法觸發(fā),經(jīng)過分析發(fā)現(xiàn)最后一個分支的條件設(shè)定包含在之前幾個分支之內(nèi)了,因此無法被觸發(fā)執(zhí)行,這種情況下需要對此處程序進(jìn)行更正。
③一些未覆蓋點(diǎn)屬于由于設(shè)計(jì)限制永遠(yuǎn)不會執(zhí)行到的代碼,這種語句可以在覆蓋率分析開始之前就將其排除在外,不對其進(jìn)行分析,也可以選擇忽視它。
在采用各種方式填補(bǔ)覆蓋率漏洞后,可以開始第2輪測試,由于第1輪測試可能對代碼本身以及測試用例均進(jìn)行了修改,在重新執(zhí)行功能測試時,可能原先能通過驗(yàn)證的功能點(diǎn)在修改后不能通過了,此時需要著重對這些地方進(jìn)行分析,常常會發(fā)現(xiàn)一些之前被疏忽的邊界情況,這有益于提升測試用例的完備性,更有效的開展下一輪測試。利用覆蓋率引導(dǎo)的功能驗(yàn)證流程如圖1所示。
在驗(yàn)證時進(jìn)行的代碼覆蓋率分析能夠幫助設(shè)計(jì)工程師發(fā)現(xiàn)一些功能的遺漏和不完善之處,同時也發(fā)現(xiàn)測試計(jì)劃中被忽略的功能,需要針對這些功能生成更多的測試用例。在下一輪測試之前發(fā)現(xiàn)這些問題,可加速代碼以及測試向量的問題收斂,有效的避免在后續(xù)設(shè)計(jì)工作中時間和資源的浪費(fèi),縮短整個驗(yàn)證過程,也減少了重新流片或者成品含有缺陷的風(fēng)險。
圖1 驗(yàn)證流程
根據(jù)上述方法對星載解調(diào)器代碼進(jìn)行3輪測試后,代碼經(jīng)過不斷的修改完善已經(jīng)較為成熟,功能測試和覆蓋率測試指標(biāo)也達(dá)到預(yù)期要求。同時最終形成的測試激勵組也可認(rèn)為對星上解調(diào)代碼來說是完備的。星上解調(diào)代碼的最終形成的各種覆蓋率數(shù)據(jù)如表1所示。其中表達(dá)式覆蓋率、狀態(tài)覆蓋率和轉(zhuǎn)移覆蓋率均已達(dá)到100%,而語句、分支、條件覆蓋率也在90%以上,達(dá)到了預(yù)期要求。
表1 覆蓋率數(shù)據(jù)
為了在有限時間內(nèi)對星載解調(diào)器代碼進(jìn)行充分有效的測試驗(yàn)證,在功能驗(yàn)證的基礎(chǔ)上,引入了覆蓋率測試作為功能驗(yàn)證的反饋和引導(dǎo)。在功能驗(yàn)證的同時對覆蓋率進(jìn)行統(tǒng)計(jì)分析,以期盡快發(fā)現(xiàn)設(shè)計(jì)中的錯誤及漏測的功能點(diǎn),盡量避免將問題帶入下一輪測試,加快問題的收斂速度。
在驗(yàn)證的過程中,以覆蓋率為依據(jù)改進(jìn)和完善代碼設(shè)計(jì)以及測試向量,最后達(dá)到了較為完善的功能測試和符合預(yù)期的代碼覆蓋率水平。通過實(shí)踐證明了覆蓋率引導(dǎo)的功能驗(yàn)證方法具有更高的效率。應(yīng)用該方法最終在較短的開發(fā)測試周期內(nèi)對星上解調(diào)代碼進(jìn)行了較好的測試驗(yàn)證,也為星載解調(diào)器最終平穩(wěn)正確運(yùn)行提供了可靠保證。
[1]邱金娟,徐宏杰,潘 雄,等.SRAM型FPGA單粒子翻轉(zhuǎn)測試及加固技術(shù)研究[J].電光與控制,2011,18(8):84-88.
[2]高 鵬,龐宗強(qiáng),周同.Virtex FPGA抗單粒子翻轉(zhuǎn)技術(shù)[J].無線電通信技術(shù),2014,40(4):73-76.
[3]孫海平,丁 ?。到y(tǒng)芯片(SOC)驗(yàn)證方法與技術(shù)[M].北京:電子工業(yè)出版社,2005.
[4]楊 悅,秦湘河,楊永安,等.航天測控軟件測試用例標(biāo)準(zhǔn)及應(yīng)用研究[J].無線電工程,2013,43(9):41-44.
[5]楊宗凱,黃 建,杜 旭.?dāng)?shù)字專用集成電路的設(shè)計(jì)與驗(yàn)證[M].北京:電子工業(yè)出版社,2004:125-169.
[6]杜慧敏,李宥謀,趙全良.基于Verilog的FPGA設(shè)計(jì)基礎(chǔ)[M].西安:西安電子科技大學(xué)出版社,2006.
[7]項(xiàng)碧波.代碼覆蓋率分析——IC設(shè)計(jì)流程中不可缺少的一步[J].集成電路應(yīng)用,2002(1):49-52.
[8]席筱穎,毛志剛,殷景華.一種基于覆蓋率的功能驗(yàn)證方法[J].哈爾濱理工大學(xué)學(xué)報,2008,13(1):90-92.
[9]羅登富,趙建明.基于覆蓋率的集成電路驗(yàn)證[J].現(xiàn)代電子技術(shù),2009(14):115-119.
[10]王愛平.軟件測試[M].北京:清華大學(xué)出版社,2008.
[11]周元哲,胡 濱,潘曉英,等.軟件測試技術(shù)基礎(chǔ)[M].西安:西安電子科技大學(xué)出版社,2011.
[12]劉 雅.星載軟件測試用例設(shè)計(jì)方法的研究[J].航空計(jì)算技術(shù),2010,40(3):99-102.
[13]武劍潔,陳傳波,肖來元.軟件測試技術(shù)基礎(chǔ)[M].武漢:華中科技大學(xué)出版社,2008.
The Verification of Satellite Demodulator Code
ZHANG Ming-yun,WANG Wei,WANG Li-min
(The 54th Research Institute of CETC,Shijiazhuang Hebei 050081,China)
The application of ASIC in satellite communication system brings a shorter design period.However comprehensive code verification costs more time to guarantee system reliability.To verify the satellite code in a short period,a fast and effective approach which combines functional verification and code coverage testing was introduced in this paper.The method was applied to a satellite demodulator code.This paper introduced in detail the procedure of the verification and analyzed the result.Test results indicate that the method could effectively shorten verification time and assure the reliability.
ASIC;demodulator code;coverage
TN431.2
A
1003-3106(2015)07-0059-03
10.3969/j.issn.1003-3106.2015.07.16
張鳴蕓,王 薇,王立民.星載解調(diào)器代碼的驗(yàn)證[J].無線電工程,2015,45(7):59-61,74.
張鳴蕓女,(1983—),工程師。主要研究方向:衛(wèi)星通信。
2015-04-07
國家部委基金資助項(xiàng)目。
王 薇女,(1980—),高級工程師,主要研究方向:衛(wèi)星通信。