徐琦 吳迪飛 毛知鋼
摘 要 FPGA在航空、航天等領(lǐng)域得到了廣泛的應(yīng)用,但其軟件質(zhì)量的形勢卻不容樂觀。如何將計(jì)算機(jī)軟件工程化與FPGA軟件特性相結(jié)合,從管理體系、測試工具、仿真能力建設(shè)三方面創(chuàng)新方式方法,推進(jìn)FPGA軟件工程化,成為目前FPGA軟件質(zhì)量的研究重點(diǎn)。
關(guān)鍵詞 FPGA軟件工程化;創(chuàng)新方式方法;軟件質(zhì)量
1 FPGA軟件工程化的必要性
FPGA(Field Programmable Gate Array,現(xiàn)場可編程門陣列)是數(shù)字系統(tǒng)中應(yīng)用最為廣泛的FPGA,在當(dāng)前裝備研制過程中常常被應(yīng)用于時(shí)序控制、算法處理及復(fù)雜片上系統(tǒng)等關(guān)鍵重要設(shè)計(jì)。然而隨著FPGA設(shè)計(jì)規(guī)模的不斷擴(kuò)大,F(xiàn)PGA軟件的質(zhì)量形勢卻不容樂觀,成為影響裝備質(zhì)量的重要因素,主要體現(xiàn)在以下幾個(gè)方面:
第一,F(xiàn)PGA軟件納入國家質(zhì)量標(biāo)準(zhǔn)體系的管理時(shí)間尚短,全生命周期的過程不受控。例如業(yè)內(nèi)針對verilog、VHDL語言尚未制定統(tǒng)一的編碼規(guī)則,在工程項(xiàng)目實(shí)施過程中往往因?yàn)槿藛T經(jīng)驗(yàn)的差別而造成軟件質(zhì)量參差不齊,代碼千行缺陷率高,且缺少可靠性和安全性設(shè)計(jì)考慮;
第二,F(xiàn)PGA軟件設(shè)計(jì)流程復(fù)雜,需要經(jīng)過編碼設(shè)計(jì)、邏輯綜合、布局布線、加載位流文件等數(shù)個(gè)步驟,每一個(gè)環(huán)節(jié)都可能引入各種問題,全流程測試工具種類繁多、功能各異,缺乏智能的測評一體化平臺管理環(huán)境;
第三,F(xiàn)PGA軟件動態(tài)測試手段匱乏,實(shí)物測試可觀測點(diǎn)少且受硬件限制大,仿真測試的技術(shù)進(jìn)入門檻較高且耗費(fèi)時(shí)間長,難以完全覆蓋軟件的所有質(zhì)量需求。
因此,為了有效保障裝備的質(zhì)量,借鑒計(jì)算機(jī)軟件工程化經(jīng)驗(yàn),通過更全面、更細(xì)節(jié)的標(biāo)準(zhǔn)來組織FPGA軟件的開發(fā)和測試過程,通過全覆蓋的工具和創(chuàng)新的技術(shù)來支撐FPGA軟件的質(zhì)量檢測,推進(jìn)FPGA軟件工程化勢在必行[1]。
2 FPGA軟件工程化的推進(jìn)方法
2.1 健全質(zhì)量體系,保障過程管控
全面、強(qiáng)制的質(zhì)量體系是保障FPGA軟件工程化順利推進(jìn)的有力后盾。健全的體系文件與細(xì)節(jié)的設(shè)計(jì)規(guī)范,能夠?qū)⒕幋a從個(gè)人行為變成組織行為,最大限度的實(shí)現(xiàn)經(jīng)驗(yàn)共享。通過文件表達(dá)的信息和信息的傳遞,使組織的成員之間溝通意圖,統(tǒng)一行動,提高團(tuán)隊(duì)開發(fā)的合作效率。
國外在FPGA軟件質(zhì)量體系建設(shè)中已開展了大量工作。首先,成立專門的保障機(jī)構(gòu)。比如美國在新墨西哥成立的FPGA任務(wù)保證中心,專門用以開展FPGA方面相關(guān)工作。其次,制定相關(guān)標(biāo)準(zhǔn)規(guī)范。如美國的航空標(biāo)準(zhǔn)RTCA/DO-254《美國機(jī)載電子器件設(shè)計(jì)指南》,從2005年起,DO-254在美國航空領(lǐng)域的主要企業(yè)得到強(qiáng)制采納,作為業(yè)界開展FPGA研制開發(fā)工程化管理的指導(dǎo)性文件。同時(shí),該標(biāo)準(zhǔn)在歐洲也已經(jīng)被多家機(jī)構(gòu)和企業(yè)采納。
雖然起步較晚,但國內(nèi)也在逐步完善管理體系。2017年中華人民共和國國家質(zhì)量監(jiān)督檢驗(yàn)檢疫總局、中國國家標(biāo)準(zhǔn)化管理委員會聯(lián)合發(fā)布了《FPGA軟件開發(fā)通用要求GB/T33781-2017》、《FPGA軟件測試指南GB/T33783-2017》、《FPGA軟件文檔編制規(guī)范GB/T33784-2017》,對FPGA的全生命周期進(jìn)行管理。以當(dāng)前體系文件作為基礎(chǔ),后續(xù)將不斷完善與增加更為具體的設(shè)計(jì)準(zhǔn)則、設(shè)計(jì)規(guī)范,以保證能夠有效地增加代碼的可讀性,降低維護(hù)成本,提升代碼的運(yùn)行效率,增強(qiáng)代碼的可重用性和可靠性,從而實(shí)現(xiàn)邏輯功能正確,綜合結(jié)果最優(yōu)的編碼目標(biāo)。
2.2 補(bǔ)充測試工具,豐富測試視角
充分、全面、有效的測試是保障FPGA軟件質(zhì)量的關(guān)鍵要素,在推進(jìn)FPGA軟件工程化過程中起到不可或缺的作用。FPGA軟件設(shè)計(jì)流程與傳統(tǒng)軟件設(shè)計(jì)流程存在差異,測試方法也不盡相同,對全流程測試工具依賴性高。而多樣的全流程測試工具也給測試工作帶來了新的難題:工具種類繁多,不易掌握;測試結(jié)果數(shù)據(jù)量大,分析、統(tǒng)計(jì)工作繁雜;工具間測試接口不兼容,無法建立有效技術(shù)積累。因此,有必要構(gòu)建快速高效全覆蓋的測評一體化管理平臺環(huán)境,作為有效管控全流程測試的必要支撐。
結(jié)合FPGA軟件的技術(shù)特點(diǎn),細(xì)化各測試階段的測評項(xiàng)目管理,加強(qiáng)測評項(xiàng)目需求管理、策劃管理、跟蹤與控制、質(zhì)量保證、配置管理及專家知識庫系統(tǒng)建設(shè),具體對應(yīng)關(guān)系如下圖所示。
加強(qiáng)FPGA軟件全流程的測試工具建設(shè),建立完整充分的測試工具集合,通過工具來支撐標(biāo)準(zhǔn)的實(shí)施,通過標(biāo)準(zhǔn)來組織工具的架構(gòu)。從多視角進(jìn)行測試需求分析,可以在FPGA軟件開發(fā)測試的各個(gè)流程層面保證FPGA軟件質(zhì)量。同時(shí),以測試視角介入設(shè)計(jì)過程,以測試引領(lǐng)設(shè)計(jì),實(shí)現(xiàn)設(shè)計(jì)未動,測試先行。
2.3 提高仿真能力,拓寬測試深度
仿真驗(yàn)證是FPGA軟件動態(tài)測試中最關(guān)鍵的技術(shù)手段,也是耗費(fèi)測試人員時(shí)間最長的環(huán)節(jié)。過去由于FPGA常常被當(dāng)作硬固件進(jìn)行管理,F(xiàn)PGA軟件仿真能力積累嚴(yán)重不足。而FPGA編程語言對于時(shí)序關(guān)系表達(dá)的依賴性極強(qiáng),導(dǎo)致了以下幾個(gè)缺陷:①輸入激勵(lì)不充分;②測試環(huán)境高度耦合;③結(jié)果偵錯(cuò)耗時(shí)耗力。為了保證仿真測試的效率與完備性,對傳統(tǒng)測試方法進(jìn)行創(chuàng)新,尋求分層架構(gòu)易重用、覆蓋率更全面的仿真技術(shù)迫在眉睫。
(1)UVM仿真架構(gòu)
傳統(tǒng)的仿真環(huán)境工作在行為級,仿真環(huán)境高度耦合,一旦設(shè)計(jì)趨于復(fù)雜,整個(gè)仿真環(huán)境架構(gòu)會非常混亂,不易維護(hù)?;赨VM的FPGA軟仿真架構(gòu)給出了多層次的事務(wù)級仿真平臺解決方案。通過引入ASIC設(shè)計(jì)領(lǐng)域最為先進(jìn)的UVM驗(yàn)證方法,采用面向?qū)ο缶幊痰姆绞浇⑹聞?wù),可以定義各種高級數(shù)據(jù)結(jié)構(gòu)類型,調(diào)用方法和函數(shù),無須考慮與RTL代碼相關(guān)的時(shí)序?qū)崿F(xiàn)問題,創(chuàng)新提出基于UVM的五層仿真軟件架構(gòu),具有高度可重用性。
它創(chuàng)新性地將測試平臺分為5層,分別是①信號層:包括待測設(shè)計(jì)以及待測設(shè)計(jì)與測試平臺相連接的接口;②命令層:按照各種協(xié)議要求,將事務(wù)級信號轉(zhuǎn)換為線、網(wǎng)級信號,該層只關(guān)注轉(zhuǎn)換的時(shí)序本身而不是具體數(shù)據(jù);③功能層:接收來自場景層傳輸?shù)某橄蠹壥聞?wù),通過專門的傳輸通道,傳給命令層;④場景層:根據(jù)基于事務(wù)級建模的思想,提出抽象的事務(wù)作為待測設(shè)計(jì)的激勵(lì),傳遞給下一層;⑤測試層:定義各種驗(yàn)證測試用例,根據(jù)驗(yàn)證需要,可以選擇不同驗(yàn)證測試用例以及不同的驗(yàn)證場景進(jìn)行驗(yàn)證。
(2)形式化驗(yàn)證
System Verilog中的CRT(受約束的隨機(jī)測試)和SVA為輸入激勵(lì)覆蓋不完整和結(jié)果偵錯(cuò)耗時(shí)長提供了很好的解決辦法。CRT可以建立產(chǎn)生事務(wù)級隨機(jī)激勵(lì)的類,對DUT的所有關(guān)鍵點(diǎn)都采用隨機(jī)化技術(shù),能夠表達(dá)復(fù)雜的場景,模擬功能項(xiàng)之間的隨機(jī)關(guān)系。純粹的隨機(jī)激勵(lì)接近無限空間,沒有實(shí)際使用價(jià)值,所以需要約束隨機(jī)激勵(lì)的自由度,以產(chǎn)生令人感興趣的隨機(jī)測試場景。多次運(yùn)行隨機(jī)測試環(huán)境,才能充分識別覆蓋盲區(qū)。而對于那些受約束的隨機(jī)測試覆蓋不到的地方,再補(bǔ)充定向測試,直至達(dá)到要求的輸入激勵(lì)覆蓋率。
SVA( System Verilog Assertion)可以執(zhí)行協(xié)議接口檢查( 如PCI,USB 協(xié)議接口) 、邏輯控制信號檢查( 如SDRAM 控制信號) 、有限狀態(tài)機(jī)( FSM)和仲裁器等時(shí)序和功能檢測,System Verilog也提供了若干個(gè)內(nèi)嵌函數(shù)來測試特定的設(shè)計(jì)情況,并且提供了一些構(gòu)造來自動收集功能覆蓋數(shù)據(jù)。在設(shè)計(jì)中使用SVA需要一定的花銷,如在RTL級,代碼編寫時(shí)間將會增加1%~3%,同時(shí)新的SVA代碼可能帶來新的問題,但是在設(shè)計(jì)中使用SVA可以減少50%的驗(yàn)證時(shí)間。
將CRT、SVA與形式化驗(yàn)證技術(shù)相結(jié)合,對關(guān)鍵需求進(jìn)行形式化驗(yàn)證,自動遍歷所有可能發(fā)生的激勵(lì),自動發(fā)現(xiàn)被測Verilog/VHDL代碼與被測需求的不一致之處,并自動定位問題發(fā)生的具體波形圖,以機(jī)器時(shí)間代替人力時(shí)間,同時(shí)避免人工設(shè)計(jì)測試用例對于需求驗(yàn)證覆蓋不完整,保證測試的全面高效。
3 結(jié)束語
建立全生命周期的過程管理體系,規(guī)范FPGA軟件行業(yè)設(shè)計(jì)方法,建設(shè)與開發(fā)環(huán)節(jié)一一對應(yīng)的全流程測試工具鏈,創(chuàng)新方式方法以提高動態(tài)測試能力,為軟件工程化在工程實(shí)踐項(xiàng)目中的落實(shí)提供高效的環(huán)境和能力支撐,才能有效保障裝備的質(zhì)量和力量。
參考文獻(xiàn)
[1] 侯大勇,曹峰,王昱煜.基于FPGA的灰度圖像直方圖均衡化實(shí)現(xiàn)[J].電子技術(shù)與軟件工程,2016,(14):100-101.