張鳴蕓,王 薇,王立民
(中國(guó)電子科技集團(tuán)第五十四研究所,河北 石家莊 050081)
星載解調(diào)器代碼的驗(yàn)證
張鳴蕓,王 薇,王立民
(中國(guó)電子科技集團(tuán)第五十四研究所,河北 石家莊 050081)
專用集成電路(ASIC)在衛(wèi)星通信系統(tǒng)的應(yīng)用使得設(shè)計(jì)開發(fā)周期變短,為了保證可靠性則需要對(duì)代碼進(jìn)行充分的測(cè)試驗(yàn)證,這將耗用較多時(shí)間。為了解決這個(gè)問題,在有限的時(shí)間內(nèi)對(duì)星上代碼進(jìn)行快速有效的驗(yàn)證,介紹了一種覆蓋率引導(dǎo)的功能驗(yàn)證方法。采用該方法對(duì)星上解調(diào)器代碼進(jìn)行了驗(yàn)證,詳細(xì)介紹了驗(yàn)證過程。測(cè)試結(jié)果表明,該方法可有效加速代碼驗(yàn)證過程,保證可靠性。
ASIC;解調(diào)器代碼;覆蓋率
隨著數(shù)字化調(diào)制解調(diào)技術(shù)的發(fā)展,目前現(xiàn)場(chǎng)可編程門陣列(FPGA)因其編程的靈活性在衛(wèi)星通信系統(tǒng)中廣泛使用。然而近年來,在空間環(huán)境中使用大規(guī)模數(shù)字邏輯電路而發(fā)生的單粒子事件愈加頻繁。而FPGA抗單粒子能力較弱[1,2],使用ASIC代替FPGA成為星上抗單粒子的技術(shù)手段之一。但是由于ASIC一經(jīng)流片,便不能更改,因此相對(duì)以往基于FPGA的開發(fā)流程,留給設(shè)計(jì)修改驗(yàn)證的時(shí)間大幅縮短。傳統(tǒng)的驗(yàn)證方法是根據(jù)功能需求逐個(gè)編寫測(cè)試激勵(lì),通過仿真得到測(cè)試結(jié)果,當(dāng)測(cè)試結(jié)果全部通過后即認(rèn)為驗(yàn)證結(jié)束。然而由于星上產(chǎn)品高可靠性要求的特性,對(duì)驗(yàn)證的完備性極為關(guān)注。一般而言,更加充分的驗(yàn)證也就需要耗費(fèi)更多的時(shí)間,而傳統(tǒng)的驗(yàn)證方法基于開環(huán)流程的特點(diǎn)無法評(píng)估代碼的驗(yàn)證程度。為了加速驗(yàn)證過程,幫助評(píng)估驗(yàn)證程度,在對(duì)星載解調(diào)器代碼進(jìn)行測(cè)試驗(yàn)證的時(shí)候以傳統(tǒng)的功能驗(yàn)證為基礎(chǔ),引入了覆蓋率測(cè)試作為反饋和引導(dǎo)。在進(jìn)行驗(yàn)證時(shí),測(cè)試激勵(lì)的全部通過并不意味著驗(yàn)證結(jié)束,而是以覆蓋率測(cè)試的結(jié)果為導(dǎo)向,有針對(duì)性地開始下一輪驗(yàn)證過程,以此形成一個(gè)不斷改進(jìn)的閉環(huán)過程,直至驗(yàn)證的完備性達(dá)到預(yù)期。這種方法可以達(dá)到加速代碼的問題收斂及縮短驗(yàn)證過程的目的。
集成電路的驗(yàn)證指檢測(cè)硬件語言設(shè)計(jì)是否滿足設(shè)計(jì)需求的過程,具體來說就是在設(shè)計(jì)需求規(guī)定下施加激勵(lì),驗(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),對(duì)設(shè)計(jì)進(jìn)行仿真,檢測(cè)設(shè)計(jì)實(shí)現(xiàn)的功能是否達(dá)到了功能需求。
基于仿真的驗(yàn)證流程如下:首先依據(jù)設(shè)計(jì)需求設(shè)計(jì)測(cè)試用例[4],每一個(gè)測(cè)試用例通常包含測(cè)試點(diǎn)和測(cè)試數(shù)據(jù)2部分。測(cè)試點(diǎn)是指測(cè)試用例要測(cè)的特性,測(cè)試數(shù)據(jù)包括激勵(lì)數(shù)據(jù)和標(biāo)準(zhǔn)的響應(yīng)輸出數(shù)據(jù)[5]。然后根據(jù)測(cè)試用例設(shè)計(jì)相應(yīng)的激勵(lì)和標(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)的功能,因此每一個(gè)測(cè)試用例都需要精心設(shè)計(jì)。在系統(tǒng)較為簡(jiǎn)單時(shí),足夠詳盡的測(cè)試用例可以查出大部分錯(cuò)誤。但是隨著系統(tǒng)功能日益復(fù)雜,測(cè)試用例的設(shè)計(jì)難度隨之不斷增大,測(cè)試用例的質(zhì)量受限于設(shè)計(jì)者的經(jīng)驗(yàn),即使所有的用例都通過測(cè)試,也無法保證沒有異常出現(xiàn)或者沒有考慮到的情況發(fā)生,因此衡量驗(yàn)證的完備程度成為驗(yàn)證的關(guān)鍵。
2.1 覆蓋率
鑒于傳統(tǒng)驗(yàn)證無法評(píng)估驗(yàn)證程度的缺點(diǎn),引入了覆蓋率測(cè)試作為傳統(tǒng)驗(yàn)證方法的補(bǔ)充。覆蓋率測(cè)試包括功能覆蓋率測(cè)試和代碼覆蓋率測(cè)試,功能覆蓋率用于反映測(cè)試用例執(zhí)行測(cè)試功能點(diǎn)的情況,包括執(zhí)行功能點(diǎn)的比例和具體沒有執(zhí)行的功能點(diǎn)。在驗(yàn)證過程中,依據(jù)測(cè)試計(jì)劃逐項(xiàng)測(cè)試用例的測(cè)試也可認(rèn)為是對(duì)功能的覆蓋測(cè)試過程。代碼覆蓋率反映設(shè)計(jì)工程師編寫代碼的執(zhí)行效率,代碼覆蓋率可以通過EDA工具自動(dòng)收集,既反映執(zhí)行比例,又能明確沒有執(zhí)行的行、條件或狀態(tài)機(jī)。很多EDA工具可以進(jìn)行覆蓋率測(cè)試,其中仿真工具M(jìn)odelSim中也帶有覆蓋率測(cè)試工具[6],僅需要在編譯及仿真之前勾選相應(yīng)覆蓋率分析選項(xiàng)即可。代碼覆蓋率只能保證所編寫代碼的執(zhí)行程度,不能保證所執(zhí)行代碼的功能正確。但是其可以直觀地反映代碼的執(zhí)行情況,幫助設(shè)計(jì)工程師分析代碼[7,8]。
2.2 驗(yàn)證步驟
覆蓋率引導(dǎo)的驗(yàn)證步驟主要包括驗(yàn)證特性提取、測(cè)試點(diǎn)分解、測(cè)試用例編寫、測(cè)試用例執(zhí)行和覆蓋率分析。
在驗(yàn)證過程中,首先根據(jù)星載解調(diào)器的需求規(guī)格提取驗(yàn)證特性。驗(yàn)證特性是從驗(yàn)證的角度描述需求,說明了某個(gè)需求規(guī)格對(duì)應(yīng)需要驗(yàn)證的多個(gè)特性,它包括功能、性能、容錯(cuò)性、可靠性及缺省功能特性等[9]。星載解調(diào)器的主要工作是將接收的上行數(shù)據(jù)進(jìn)行解調(diào)處理。作為數(shù)字處理的核心部分,星載解調(diào)器解調(diào)代碼主要驗(yàn)證特性就包括了接收星上遙控指令,發(fā)送遙測(cè)數(shù)據(jù),對(duì)輸入的中頻采樣數(shù)據(jù)進(jìn)行解調(diào)處理及組幀輸出等。
隨后根據(jù)驗(yàn)證特性提取驗(yàn)證測(cè)試點(diǎn),例如在解調(diào)最主要的數(shù)據(jù)解調(diào)功能中,主要功能特性包括了解調(diào)器的基本性能指標(biāo),包括信號(hào)電平動(dòng)態(tài)范圍、頻差捕獲范圍及時(shí)鐘偏差糾正范圍等。測(cè)試點(diǎn)將指導(dǎo)測(cè)試用例的開發(fā)和覆蓋率組的編寫,測(cè)試點(diǎn)的提取綜合使用等價(jià)類法和邊界值法實(shí)現(xiàn)[10,11]。等價(jià)類的基本思想就是把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干子集,然后從每一個(gè)子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測(cè)試用例。邊界值分析法就是對(duì)輸入或輸出的邊界值進(jìn)行測(cè)試的一種黑盒測(cè)試方法。例如,假設(shè)解調(diào)器電平范圍為L(zhǎng),最小電平為L(zhǎng)0,最大電平為L(zhǎng)1,那么該性能要求所需的測(cè)試點(diǎn)便包括了L0、L1、介于L0與L1之間的一到兩個(gè)值、小于L0的一到兩個(gè)值、大于L1的一到兩個(gè)值,共至少5個(gè)測(cè)試點(diǎn)。
確定測(cè)試點(diǎn)之后,開始編寫測(cè)試用例,測(cè)試用例用于覆蓋測(cè)試點(diǎn),一個(gè)測(cè)試點(diǎn)對(duì)應(yīng)一到多個(gè)測(cè)試用例,一個(gè)測(cè)試用例也可以覆蓋一到多個(gè)測(cè)試點(diǎn)。例如解調(diào)器的電平范圍需要多個(gè)測(cè)試用例測(cè)試,而一個(gè)測(cè)試用例也可同時(shí)測(cè)試信號(hào)的最高電平、最大頻率偏差的若干個(gè)測(cè)試點(diǎn)。驗(yàn)證過程中所需的測(cè)試向量的生成機(jī)制可分為3類:直接激勵(lì)、隨機(jī)激勵(lì)、和可約束的隨機(jī)激勵(lì)[12,13]。后2種方式人工耗費(fèi)較小,但是針對(duì)性不強(qiáng),在極為復(fù)雜的系統(tǒng)驗(yàn)證中得到了廣泛應(yīng)用。而直接激勵(lì)就是完全由驗(yàn)證人員手動(dòng)寫成的固定向量,通過直接激勵(lì),可以準(zhǔn)確有效地觸發(fā)驗(yàn)證的某個(gè)目標(biāo)功能,人工耗費(fèi)較大。由于星載解調(diào)器的主要處理過程是針對(duì)數(shù)據(jù)流的處理,邏輯處理方面算不上特別復(fù)雜,因此采用了直接激勵(lì)的方式進(jìn)行驗(yàn)證。其中中頻采樣數(shù)據(jù)數(shù)據(jù)源利用MATLAB軟件產(chǎn)生。
測(cè)試用例的執(zhí)行過程是利用已形成的若干測(cè)試用例進(jìn)行仿真并與標(biāo)準(zhǔn)的響應(yīng)輸出數(shù)據(jù)進(jìn)行比較,從而確定仿真結(jié)果的正確性。覆蓋率分析則在功能驗(yàn)證的同時(shí)進(jìn)行,找出未覆蓋地方或者程序的錯(cuò)漏之處。
覆蓋率引導(dǎo)的驗(yàn)證過程是以傳統(tǒng)的驗(yàn)證為基礎(chǔ),在功能驗(yàn)證的同時(shí)對(duì)覆蓋率進(jìn)行測(cè)試,來監(jiān)視并提高驗(yàn)證的完備性,同時(shí)在覆蓋率分析的過程中發(fā)現(xiàn)功能點(diǎn)遺漏或錯(cuò)誤。
在首次對(duì)代碼進(jìn)行驗(yàn)證時(shí),可能代碼本身和驗(yàn)證環(huán)境都很不成熟,存在著諸多問題,此時(shí)主要對(duì)關(guān)鍵的功能點(diǎn)進(jìn)行測(cè)試,使驗(yàn)證系統(tǒng)啟動(dòng)起來。隨著代碼本身和驗(yàn)證環(huán)境逐漸趨于穩(wěn)定,之后的測(cè)試過程主要關(guān)注如何迅速提高驗(yàn)證的覆蓋率。在此階段,根據(jù)被測(cè)功能,對(duì)各種功能進(jìn)行測(cè)試,同時(shí)監(jiān)測(cè)覆蓋率水平,根據(jù)覆蓋率來修改激勵(lì),繼續(xù)進(jìn)行測(cè)試,然后再根據(jù)覆蓋率修改約束,如此反復(fù),以完成對(duì)絕大多數(shù)功能覆蓋點(diǎn)的測(cè)試。
具體如下:在第1輪測(cè)試時(shí),根據(jù)測(cè)試計(jì)劃設(shè)置一組測(cè)試用例依次進(jìn)行仿真,在此過程中可發(fā)現(xiàn)代碼的錯(cuò)誤及疏漏之處,此時(shí)需要返回代碼進(jìn)行修改并重新測(cè)試,直至此組測(cè)試用例全部測(cè)試完成,并且測(cè)試結(jié)果符合預(yù)期。但是此時(shí)還不能結(jié)束驗(yàn)證工作,需要利用覆蓋率對(duì)此輪驗(yàn)證工作進(jìn)行評(píng)估,找出覆蓋率漏洞,即未被覆蓋之處。
當(dāng)發(fā)現(xiàn)覆蓋率漏洞時(shí)需要對(duì)其進(jìn)行分析,這時(shí)可能出現(xiàn)幾種情況:
①當(dāng)前測(cè)試用例不完備,這時(shí)需要修改或增添測(cè)試用例來使測(cè)試更加完備。此時(shí)一種常見錯(cuò)誤是編寫測(cè)試向量時(shí)遺漏了對(duì)某個(gè)條件或是某些屬性的操作,這種情況只要更正這些遺漏,就可以達(dá)到更完備的覆蓋率。
②某段代碼本身是冗余代碼,或者代碼本身存在某種邏輯錯(cuò)誤,這時(shí)應(yīng)該去除冗余代碼,對(duì)問題代碼進(jìn)行修改,增加其可維護(hù)性;例如發(fā)現(xiàn)一組復(fù)雜條件選擇判定(if else)語句的最后一個(gè)條件無法觸發(fā),經(jīng)過分析發(fā)現(xiàn)最后一個(gè)分支的條件設(shè)定包含在之前幾個(gè)分支之內(nèi)了,因此無法被觸發(fā)執(zhí)行,這種情況下需要對(duì)此處程序進(jìn)行更正。
③一些未覆蓋點(diǎn)屬于由于設(shè)計(jì)限制永遠(yuǎn)不會(huì)執(zhí)行到的代碼,這種語句可以在覆蓋率分析開始之前就將其排除在外,不對(duì)其進(jìn)行分析,也可以選擇忽視它。
在采用各種方式填補(bǔ)覆蓋率漏洞后,可以開始第2輪測(cè)試,由于第1輪測(cè)試可能對(duì)代碼本身以及測(cè)試用例均進(jìn)行了修改,在重新執(zhí)行功能測(cè)試時(shí),可能原先能通過驗(yàn)證的功能點(diǎn)在修改后不能通過了,此時(shí)需要著重對(duì)這些地方進(jìn)行分析,常常會(huì)發(fā)現(xiàn)一些之前被疏忽的邊界情況,這有益于提升測(cè)試用例的完備性,更有效的開展下一輪測(cè)試。利用覆蓋率引導(dǎo)的功能驗(yàn)證流程如圖1所示。
在驗(yàn)證時(shí)進(jìn)行的代碼覆蓋率分析能夠幫助設(shè)計(jì)工程師發(fā)現(xiàn)一些功能的遺漏和不完善之處,同時(shí)也發(fā)現(xiàn)測(cè)試計(jì)劃中被忽略的功能,需要針對(duì)這些功能生成更多的測(cè)試用例。在下一輪測(cè)試之前發(fā)現(xiàn)這些問題,可加速代碼以及測(cè)試向量的問題收斂,有效的避免在后續(xù)設(shè)計(jì)工作中時(shí)間和資源的浪費(fèi),縮短整個(gè)驗(yàn)證過程,也減少了重新流片或者成品含有缺陷的風(fēng)險(xiǎn)。
圖1 驗(yàn)證流程
根據(jù)上述方法對(duì)星載解調(diào)器代碼進(jìn)行3輪測(cè)試后,代碼經(jīng)過不斷的修改完善已經(jīng)較為成熟,功能測(cè)試和覆蓋率測(cè)試指標(biāo)也達(dá)到預(yù)期要求。同時(shí)最終形成的測(cè)試激勵(lì)組也可認(rèn)為對(duì)星上解調(diào)代碼來說是完備的。星上解調(diào)代碼的最終形成的各種覆蓋率數(shù)據(jù)如表1所示。其中表達(dá)式覆蓋率、狀態(tài)覆蓋率和轉(zhuǎn)移覆蓋率均已達(dá)到100%,而語句、分支、條件覆蓋率也在90%以上,達(dá)到了預(yù)期要求。
表1 覆蓋率數(shù)據(jù)
為了在有限時(shí)間內(nèi)對(duì)星載解調(diào)器代碼進(jìn)行充分有效的測(cè)試驗(yàn)證,在功能驗(yàn)證的基礎(chǔ)上,引入了覆蓋率測(cè)試作為功能驗(yàn)證的反饋和引導(dǎo)。在功能驗(yàn)證的同時(shí)對(duì)覆蓋率進(jìn)行統(tǒng)計(jì)分析,以期盡快發(fā)現(xiàn)設(shè)計(jì)中的錯(cuò)誤及漏測(cè)的功能點(diǎn),盡量避免將問題帶入下一輪測(cè)試,加快問題的收斂速度。
在驗(yàn)證的過程中,以覆蓋率為依據(jù)改進(jìn)和完善代碼設(shè)計(jì)以及測(cè)試向量,最后達(dá)到了較為完善的功能測(cè)試和符合預(yù)期的代碼覆蓋率水平。通過實(shí)踐證明了覆蓋率引導(dǎo)的功能驗(yàn)證方法具有更高的效率。應(yīng)用該方法最終在較短的開發(fā)測(cè)試周期內(nèi)對(duì)星上解調(diào)代碼進(jìn)行了較好的測(cè)試驗(yàn)證,也為星載解調(diào)器最終平穩(wěn)正確運(yùn)行提供了可靠保證。
[1]邱金娟,徐宏杰,潘 雄,等.SRAM型FPGA單粒子翻轉(zhuǎn)測(cè)試及加固技術(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]楊 悅,秦湘河,楊永安,等.航天測(cè)控軟件測(cè)試用例標(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é)報(bào),2008,13(1):90-92.
[9]羅登富,趙建明.基于覆蓋率的集成電路驗(yàn)證[J].現(xiàn)代電子技術(shù),2009(14):115-119.
[10]王愛平.軟件測(cè)試[M].北京:清華大學(xué)出版社,2008.
[11]周元哲,胡 濱,潘曉英,等.軟件測(cè)試技術(shù)基礎(chǔ)[M].西安:西安電子科技大學(xué)出版社,2011.
[12]劉 雅.星載軟件測(cè)試用例設(shè)計(jì)方法的研究[J].航空計(jì)算技術(shù),2010,40(3):99-102.
[13]武劍潔,陳傳波,肖來元.軟件測(cè)試技術(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
國(guó)家部委基金資助項(xiàng)目。
王 薇女,(1980—),高級(jí)工程師,主要研究方向:衛(wèi)星通信。