• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      FPGA功能驗(yàn)證自動化技術(shù)研究與實(shí)踐

      2017-08-07 22:10:21朱偉杰費(fèi)亞男
      航天控制 2017年2期

      朱偉杰 陽 徽 費(fèi)亞男 李 洋 王 昶

      北京航天自動控制研究所,北京100854

      ?

      FPGA功能驗(yàn)證自動化技術(shù)研究與實(shí)踐

      朱偉杰 陽 徽 費(fèi)亞男 李 洋 王 昶

      北京航天自動控制研究所,北京100854

      深入分析了影響FPGA功能驗(yàn)證效率和質(zhì)量的各項(xiàng)因素,改進(jìn)了傳統(tǒng)FPGA軟件驗(yàn)證平臺的搭建方法,闡述了FPGA軟件自動化驗(yàn)證平臺搭建技術(shù)、基于Perl語言的Testbench自動生成技術(shù)、受約束的隨機(jī)激勵(lì)生成技術(shù)、接口時(shí)序自動偵錯(cuò)技術(shù)、SVA斷言以及基于VBA宏的管腳配置自動檢查技術(shù)等6種改進(jìn)策略。這些自動化技術(shù)將功能驗(yàn)證中程式化和標(biāo)準(zhǔn)化的工作交由工具完成,提高了驗(yàn)證平臺搭建和仿真結(jié)果檢查的效率。 關(guān)鍵詞 功能驗(yàn)證;自動偵錯(cuò);自動化驗(yàn)證平臺;受約束的隨機(jī)激勵(lì)

      以FPGA和CPLD為代表的可編程邏輯器件由于具有并行的計(jì)算結(jié)構(gòu)且開發(fā)周期短、功能可自行定制的明顯優(yōu)勢,已被大量應(yīng)用于航天型號的產(chǎn)品設(shè)計(jì)之中。隨著航天發(fā)射任務(wù)的不斷增長,型號研制中FPGA設(shè)計(jì)的數(shù)量呈暴發(fā)式增長,F(xiàn)PGA軟件測試任務(wù)量逐年攀升,測試時(shí)間不斷壓縮,為了保證航天型號發(fā)射和實(shí)驗(yàn)任務(wù)的順利開展,需要具備在短時(shí)間內(nèi)完成對復(fù)雜FPGA設(shè)計(jì)進(jìn)行充分、全面驗(yàn)證的能力。據(jù)統(tǒng)計(jì),商業(yè)化IC設(shè)計(jì)流程中功能驗(yàn)證大約占用整個(gè)周期的50%~70%,芯片失效的原因中74%的故障與邏輯功能錯(cuò)誤有關(guān)。因此,如何利用新的驗(yàn)證技術(shù)提升功能驗(yàn)證的效率和質(zhì)量成為整個(gè)業(yè)界共同關(guān)心的問題。

      本文根據(jù)多年FPGA軟件測試經(jīng)驗(yàn),總結(jié)了6點(diǎn)提高了FPGA軟件測試自動化程度的改進(jìn)技術(shù),這些自動化技術(shù)輔助測試人員快速搭建驗(yàn)證平臺,實(shí)現(xiàn)了部分測試結(jié)果的自動比對,利用高級語言實(shí)現(xiàn)程式化和標(biāo)準(zhǔn)化工作的自動執(zhí)行,最大化提高驗(yàn)證效率和驗(yàn)證質(zhì)量。

      1 FPGA功能驗(yàn)證自動化技術(shù)實(shí)現(xiàn)方案

      1.1 FPGA軟件全生命周期驗(yàn)證流程

      驗(yàn)證貫穿于整個(gè)FPGA設(shè)計(jì)流程,從需求分析到最終固件的每個(gè)階段都需要驗(yàn)證[1]。如圖1所示,F(xiàn)PGA驗(yàn)證類型分為靜態(tài)驗(yàn)證和動態(tài)驗(yàn)證,其中靜態(tài)驗(yàn)證包括文檔審查、代碼審查、跨時(shí)鐘域檢查、靜態(tài)時(shí)序分析和邏輯等效性檢查;動態(tài)驗(yàn)證包括功能仿真、時(shí)序仿真和板級驗(yàn)證。這些驗(yàn)證類型實(shí)現(xiàn)了FPGA軟件的全生命周期覆蓋。靜態(tài)驗(yàn)證一般由測試工具自動完成,人工分析結(jié)果,耗時(shí)較少;功能仿真、時(shí)序仿真需要人工搭建測試平臺,編寫測試用例,分析仿真結(jié)果,耗時(shí)占整個(gè)驗(yàn)證周期的70%~80%。因此,要提高FPGA軟件驗(yàn)證效率,必須對功能驗(yàn)證進(jìn)行優(yōu)化和改進(jìn)。

      1.2 功能驗(yàn)證自動化技術(shù)總體方案

      FPGA功能驗(yàn)證主要分為3個(gè)步驟,依次為搭建驗(yàn)證環(huán)境、設(shè)計(jì)和執(zhí)行測試用例、檢查仿真結(jié)果,如圖1所示,其中部分程式化工作,如Testbench搭建、測試用例自動生成及部分仿真結(jié)果的檢查可由工具或腳本來完成。

      圖1 功能驗(yàn)證的任務(wù)分解

      本文開發(fā)了基于Makefile的驗(yàn)證平臺自動搭建腳本和基于Perl語言的Testbench自動生成腳本,實(shí)現(xiàn)了FPGA軟件測試環(huán)境的自動搭建。受約束的隨機(jī)激勵(lì)生成技術(shù)用來實(shí)現(xiàn)測試激勵(lì)的自動生成; specify block用來實(shí)現(xiàn)接口時(shí)序的自動檢查;SVA用來實(shí)現(xiàn)功能、協(xié)議和狀態(tài)機(jī)的自動檢查;VBA宏用來實(shí)現(xiàn)管腳配置的自動檢查,這些技術(shù)將驗(yàn)證過程中程式化的工作交由計(jì)算機(jī)完成,提高了功能驗(yàn)證平臺的搭建效率和仿真結(jié)果的偵錯(cuò)效率。

      2 FPGA軟件測試自動化技術(shù)

      2.1 基于Makefile的自動化驗(yàn)證平臺設(shè)計(jì)

      驗(yàn)證環(huán)境是指對設(shè)計(jì)進(jìn)行驗(yàn)證時(shí)為了便于使用、管理和協(xié)同工作而設(shè)計(jì)的一個(gè)環(huán)境,啟動驗(yàn)證所需要的一系列工具,可對設(shè)計(jì)的仿真結(jié)果進(jìn)行分析和整理,利用系統(tǒng)腳本,實(shí)現(xiàn)整個(gè)驗(yàn)證流程的自動化,具有靈活、可重用和可配置性的特點(diǎn)[2]。構(gòu)建自動化驗(yàn)證環(huán)境,利用腳本組織與管理驗(yàn)證數(shù)據(jù),自動呈現(xiàn)驗(yàn)證結(jié)果,能夠避免大量人工重復(fù)勞動,提高驗(yàn)證效率。

      2.1.1 驗(yàn)證數(shù)據(jù)的組織與管理

      高效的數(shù)據(jù)組織和管理方法能提高驗(yàn)證平臺的自動化程度。自動化驗(yàn)證平臺需完成FPGA代碼規(guī)則檢查、功能仿真、時(shí)序仿真、跨時(shí)鐘域分析、覆蓋率統(tǒng)計(jì)和靜態(tài)時(shí)序分析等6種類型的測試。其架構(gòu)如圖2所示,各個(gè)目錄的功能介紹如下。

      圖2 基于Makefile的自動化驗(yàn)證平臺架構(gòu)

      1) run:通用測試平臺目錄,包含Makefile腳本、編譯庫和仿真運(yùn)行的臨時(shí)文件;

      2) src:源文件目錄按版本編號細(xì)分子目錄,每個(gè)版本編號目錄包括rtl源文件(功能仿真),netlist網(wǎng)表文件以及sdf標(biāo)準(zhǔn)時(shí)延文件(時(shí)序仿真);

      3) tb:仿真平臺文件目錄,包含測試方編寫的仿真測試平臺tb.sv、配置文件等;

      4) tc:測試用例目錄,包含功能、時(shí)序仿真所有的測試用例集;

      5) vip:驗(yàn)證模型庫文件目錄,包含功能、時(shí)序仿真時(shí)用到的標(biāo)準(zhǔn)模型;

      6) db:數(shù)據(jù)庫目錄,包含功能仿真和時(shí)序仿真中生成的各種數(shù)據(jù):覆蓋率數(shù)據(jù)、仿真波形數(shù)據(jù)和仿真日志數(shù)據(jù)等;

      7) cc:代碼規(guī)則檢查,包含檢查規(guī)則文件、運(yùn)行腳本和運(yùn)行中間結(jié)果;

      8) cdc:跨時(shí)鐘域檢查,包含設(shè)計(jì)TCL約束文件、運(yùn)行腳本和運(yùn)行中間結(jié)果;

      9) sta:靜態(tài)時(shí)序分析,包括靜態(tài)時(shí)序設(shè)計(jì)約束、運(yùn)行腳本和運(yùn)行中間結(jié)果;

      10) lib:芯片庫文件目錄,包含器件芯片提供的庫文件。

      2.1.2 基于Makefile的腳本設(shè)計(jì)

      系統(tǒng)腳本是整個(gè)驗(yàn)證環(huán)境的關(guān)鍵所在,也是形成自動化驗(yàn)證環(huán)境的基礎(chǔ)。使用腳本搭建驗(yàn)證環(huán)境能提高驗(yàn)證的自動化程度,減少人工重復(fù)勞動。Makefile腳本功能描述如下:

      1)創(chuàng)建驗(yàn)證目錄;按圖2的架構(gòu)生成各級目錄,將初始化文件(例如Questasim的*.ini和VCS的*.setup文件)拷貝到相應(yīng)子目錄下;

      2)設(shè)置仿真參數(shù):指定被測件頂層名稱、器件類型及版本號、仿真工具、工況類型和仿真類型等配置信息,仿真時(shí)將根據(jù)配置信息搜索文件及仿真庫;

      3)仿真:包括功能仿真和時(shí)序仿真,根據(jù)仿真參數(shù)對FPGA標(biāo)準(zhǔn)庫文件LIB、外圍器件模型VIP、被測件的源文件或者網(wǎng)表文件DUT、測試平臺TB以及測試用例TC進(jìn)行編譯,并將所有程序的編譯結(jié)果存放在run目錄下的編譯日志文件中,便于編譯不通過時(shí)查找錯(cuò)誤,仿真結(jié)果保存為fsdb文件;

      4)調(diào)試:本文使用Verdi工具進(jìn)行調(diào)試,Verdi根據(jù)配置信息編譯源文件、顯示RTL代碼、原理圖和fsdb仿真波形文件;

      5)數(shù)據(jù)庫:平臺自動保存日志文件、波形文件和覆蓋率信息,這些文件按照版本號和數(shù)據(jù)類型存放在對應(yīng)子文件夾下;

      6)覆蓋率統(tǒng)計(jì):合并各個(gè)測試用例的覆蓋率,統(tǒng)計(jì)語句、分支等總覆蓋率;

      7)靜態(tài)測試:根據(jù)配置信息、自定義規(guī)則集、約束文件等自動執(zhí)行代碼規(guī)則檢查、跨時(shí)鐘域檢查和靜態(tài)時(shí)序分析,由人工進(jìn)一步分析結(jié)果。

      基于Makefile腳本,測試人員在Linux終端輸入簡單命令即可實(shí)現(xiàn)驗(yàn)證的自動化執(zhí)行,例如終端輸入命令make vcs tc=tc_reset_001 debug=yes cov=yes即可調(diào)用VCS仿真工具執(zhí)行測試用例tc_reset_001,仿真結(jié)束調(diào)用Verdi工具調(diào)試,統(tǒng)計(jì)覆蓋率信息。自動化腳本代替復(fù)雜圖形化界面操作能極大地提高驗(yàn)證效率,統(tǒng)一的目錄架構(gòu)易于理解和繼承,便于測試團(tuán)隊(duì)協(xié)同開展測試。

      2.2 基于Perl語言的Testbench自動生成技術(shù)

      Perl被稱為實(shí)用報(bào)表提取語言,特別適合批處理文本文件。由VHDL或Verilog語言編寫的RTL代碼有固定的格式和關(guān)鍵字,通過Perl腳本識別關(guān)鍵字來提取有用的信息,再將其打印輸出生成符合System Verilog語法規(guī)范的Testbench。具體實(shí)現(xiàn)方法如下。

      1)被測件的自動識別與例化

      通過識別關(guān)鍵字entity和module來提取被測件的實(shí)際名稱,識別關(guān)鍵字input/inout/output和in/inout/out來提取輸入輸出端口信息,刪除無用字符后將端口名稱存儲至數(shù)組中,最后按System Verilog語法打印端口信息,實(shí)現(xiàn)被測件例化。

      2)輸入/輸出端口的自動識別與聲明

      通過關(guān)鍵字input/inout和in/inout識別輸入端口,并將其聲明成wire/logic型變量;通過關(guān)鍵字output和out識別輸出端口,并將其聲明成reg/logic型變量。

      3)部分激勵(lì)的自動生成

      自動將端口中含有clock/clk字符的端口識別為時(shí)鐘信號,產(chǎn)生默認(rèn)頻率的時(shí)鐘激勵(lì)。同樣地,將含有reset/rst字符的端口識別為復(fù)位信號并復(fù)位激勵(lì),再由人工根據(jù)軟件任務(wù)書進(jìn)行適應(yīng)性修改。

      4)測試平臺的版本控制

      Perl腳本自動檢測計(jì)算機(jī)本地時(shí)間和Linux用戶名,并添加到Testbench文件頭的注釋中,從而實(shí)現(xiàn)Testbench版本的自動控制。

      圖3 測試平臺自動生成的過程

      基于Perl語言的驗(yàn)證平臺生成過程如圖3所示,在Linux終端中輸入的命令格式為:perl tb_gen.pl dut.v vip1.v vipn.v,其中tb_gen.pl為Perl腳本。Perl腳本會在幾秒鐘內(nèi)自動生成測試平臺和簡單激勵(lì)等,測試人員只需簡單修改時(shí)鐘周期和復(fù)位時(shí)間等參數(shù)即可使用。而傳統(tǒng)的方法需要人工編程,容易引入低級語法錯(cuò)誤且格式不統(tǒng)一,對于大規(guī)模軟件能顯著提升Testbench搭建效率。

      2.3 受約束的隨機(jī)激勵(lì)生成技術(shù)

      傳統(tǒng)的驗(yàn)證大多使用定向測試,即針對被測件的具體特性來編寫測試向量,然后人工檢查仿真結(jié)果是否與預(yù)期一致。受約束的隨機(jī)激勵(lì)將輸入激勵(lì)限定在一定范圍,由代碼自動產(chǎn)生,然后通過參考模型預(yù)測輸出結(jié)果,實(shí)現(xiàn)結(jié)果的自動檢測。如圖4所示,小圓圈代表邏輯電路,只有滿足特定的輸入,通過特定的路徑,才能發(fā)現(xiàn)軟件缺陷。隨著設(shè)計(jì)規(guī)模愈發(fā)龐大,驗(yàn)證空間將呈指數(shù)級增長,使用定向激勵(lì)覆蓋所有的功能變得越來越困難。

      圖4 軟件缺陷尋找過程

      定向測試可以找出設(shè)計(jì)中預(yù)期的漏洞,而隨機(jī)測試能找出預(yù)料不到的漏洞。建立分層隨機(jī)激勵(lì)測試平臺所需的時(shí)間比定向測試平臺多,尤其是自動檢測部分,但其回報(bào)卻很高。覆蓋率是考核驗(yàn)證進(jìn)度的重要指標(biāo),對于那些受約束的隨機(jī)測試覆蓋不到的地方,再補(bǔ)充定向測試,直至覆蓋率達(dá)到100%。受約束的隨機(jī)測試與定向測試的進(jìn)度比較如圖5所示。在驗(yàn)證較大規(guī)模設(shè)計(jì)時(shí),受約束的隨機(jī)測試效率更高。

      圖5 受約束的隨機(jī)測試與定向測試的進(jìn)度比較

      在生成隨機(jī)激勵(lì)時(shí),需要考慮隨機(jī)粒度的劃分和隨機(jī)層次的劃分[3]。隨機(jī)粒度太細(xì)會導(dǎo)致隨機(jī)激勵(lì)空間爆炸,無法有效完成激勵(lì)覆蓋;隨機(jī)粒度太粗則會導(dǎo)致構(gòu)造粗粒度隨機(jī)單元的人工工作量上升,隨機(jī)自動化比例下降。采取分層的隨機(jī)激勵(lì)架構(gòu),每個(gè)層次面向某一抽象級別的功能激勵(lì),各層間相對獨(dú)立并相互約束,可以對隨機(jī)生成流程進(jìn)行更有效的管理和擴(kuò)展。因此,驗(yàn)證激勵(lì)生成流程需要結(jié)合驗(yàn)證粒度和驗(yàn)證層次的劃分,達(dá)到高效隨機(jī)效果和良好的可控性。

      System Verilog提供了豐富的約束方式和隨機(jī)數(shù)函數(shù)[4],例如$dist_exponential()實(shí)現(xiàn)指數(shù)衰落,$dist_normal實(shí)現(xiàn)鐘形分布等。Verilog語言使用$random函數(shù)也可以實(shí)現(xiàn)隨機(jī)化,在模擬芯片接口時(shí)序時(shí),使用$random函數(shù)讓信號在Tmin~Tmax之間變化,例如#(Tmin + {$random}%(Tmax-Tmin));使用線性反饋移位寄存器(LFSR)產(chǎn)生偽隨機(jī)數(shù),保證數(shù)據(jù)有足夠的跳變,例如data[7:0] = (data[6:0],!{data[3]^data[5] ^data[6]^data[7]})。

      2.4 基于specify block的接口時(shí)序自動偵錯(cuò)技術(shù)

      FPGA接口測試是指通過時(shí)序仿真驗(yàn)證不同工況下的接口時(shí)序性能是否滿足協(xié)議值的要求。傳統(tǒng)驗(yàn)證方法一般是在時(shí)序仿真完成后,由人工對照芯片數(shù)據(jù)手冊檢查接口信號的仿真波形,該方法對人工判讀質(zhì)量和仔細(xì)程度要求較高,當(dāng)執(zhí)行多次仿真(如3種工況下的時(shí)序仿真)時(shí),人工檢查接口時(shí)序會耗費(fèi)較長時(shí)間,無法實(shí)現(xiàn)結(jié)果的自動化檢查。Verilog和System Verilog語言提供了specify block指定塊,從而實(shí)現(xiàn)時(shí)序檢查,當(dāng)發(fā)現(xiàn)時(shí)序違例會自動報(bào)錯(cuò)。specify block可以執(zhí)行以下2類時(shí)序檢查:

      1)檢查時(shí)序窗口的穩(wěn)定性,使用$setup,$hold檢查建立和保持時(shí)間,使用$recovery和$removal檢查恢復(fù)和移除時(shí)間;

      2)檢查時(shí)鐘和控制信號在指定事件之間的時(shí)間間隔,使用$skew檢查限制最大偏斜,使用$width檢查最小脈寬,使用$period檢查最小周期,使用$nochange限制信號不發(fā)生變化等。

      圖6 根據(jù)芯片接口時(shí)序編寫specify指定塊

      如圖6所示,specify block指定塊能在仿真過程中持續(xù)監(jiān)視接口時(shí)序,一旦發(fā)現(xiàn)時(shí)序違例會自動報(bào)錯(cuò),其執(zhí)行步驟如下:

      1)根據(jù)芯片接口時(shí)序編寫specify指定塊。以HY27UF081G2A芯片為例,根據(jù)地址鎖存時(shí)序和時(shí)間參數(shù)編寫specify block,示例中寫信號WE低電平最小脈寬為15ns,在specify block中表述為$width(negedge iWE, 15);

      2)執(zhí)行功能仿真或時(shí)序仿真。如果接口時(shí)序滿足芯片手冊要求,則仿真工具不會提示任何信息;如果發(fā)生時(shí)序錯(cuò)誤,仿真工具會報(bào)告錯(cuò)誤發(fā)生的時(shí)刻和具體信息。

      該技術(shù)使接口時(shí)序的自動偵錯(cuò)成為可能。一種常見的情景是測試人員在下班前編寫好specify block時(shí)序檢查語句,然后利用非工作時(shí)間在服務(wù)器上執(zhí)行3種工況下的時(shí)序仿真,再次上班時(shí)查看仿真報(bào)告是否發(fā)生時(shí)序錯(cuò)誤。而傳統(tǒng)方式是執(zhí)行完一次仿真,人工在波形窗口用標(biāo)尺測量各個(gè)時(shí)間,檢查無誤后再執(zhí)行下次仿真。對于大規(guī)模設(shè)計(jì),傳統(tǒng)的人工檢查可能存在遺漏且耗時(shí)較長,specify block技術(shù)能將接口測試效率提升幾個(gè)數(shù)量級。

      2.5 基于SVA斷言的FPGA軟件功能驗(yàn)證自動偵錯(cuò)技術(shù)

      傳統(tǒng)的功能驗(yàn)證結(jié)果檢查方法是等到仿真結(jié)束后,錯(cuò)誤傳遞到輸出端口,通過查看日志文件和分析仿真波形來查找缺陷,這消耗了驗(yàn)證人員大量的時(shí)間和精力?;跀嘌缘尿?yàn)證是通過在RTL代碼中插入斷言語句,然后在動態(tài)仿真過程中由這些斷言語句來判斷實(shí)現(xiàn)的設(shè)計(jì)是否跟設(shè)計(jì)的規(guī)范相一致。

      SVA (System Verilog Assertion)斷言可以執(zhí)行協(xié)議接口檢查(如PCI,USB協(xié)議接口)、邏輯控制信號檢查(如SDRAM控制信號)、有限狀態(tài)機(jī)(FSM)和仲裁器等時(shí)序和功能檢測,這些斷言埋在FPGA設(shè)計(jì)中,仿真過程中斷言不停地監(jiān)視著設(shè)計(jì)的預(yù)期行為,一旦在某個(gè)插入點(diǎn)發(fā)現(xiàn)缺陷時(shí)就會打印出相關(guān)的缺陷報(bào)告,直接定位缺陷發(fā)生的位置。在FPGA軟件RTL代碼中可以斷言的插入點(diǎn)包括:

      1)接口協(xié)議檢查

      使用SVA斷言對標(biāo)準(zhǔn)協(xié)議接口進(jìn)行有效監(jiān)控,例如借助斷言檢查內(nèi)部寄存器配置,檢查復(fù)位后相關(guān)信號的波形等。

      2)有限狀態(tài)機(jī)檢查

      使用斷言檢查狀態(tài)機(jī)各狀態(tài)間的轉(zhuǎn)換是否正確,且不違背任何時(shí)序上的要求。一種可以借鑒的方法是先畫出FSM狀態(tài)轉(zhuǎn)換矩陣,然后分析出各個(gè)狀態(tài)禁止發(fā)生的跳轉(zhuǎn)。

      propertyp_forbid_l;@(posedgeclk)disableiff(!reset)((current_state[2:0]==`ACTIVE)||(current_state[2:0]==`HALT)||(current_state==`CPU)||(current_state==`READY))|->$past((current_state==`IDLE)==0);endpropertya_forbid_1:assertproperty(p_forbid_1),else$fatal;

      屬性p_forbid_1表示如果當(dāng)前狀態(tài)為ACTIVE,HALT,CPU或READY,那么FSM的前一個(gè)周期狀態(tài)就不能是IDLE。

      3)FIFO狀態(tài)監(jiān)視

      檢測FIFO的操作是否符合設(shè)計(jì)要求,F(xiàn)IFO的上溢和下溢,以及錯(cuò)誤時(shí)中斷申請信號的觸發(fā)。例如,監(jiān)視FIFO空信號和讀信號,當(dāng)FIFO已空,再讀出就會報(bào)下溢錯(cuò);監(jiān)視FIFO滿信號和寫信號,如果FIFO已滿,再寫入會報(bào)上溢錯(cuò)。

      4)邏輯輸出信號斷言

      例如要驗(yàn)證屬性:“當(dāng)信號a 在某一個(gè)時(shí)鐘周期為高電平時(shí),那么在接下來的2~4個(gè)時(shí)鐘周期內(nèi),信號b 應(yīng)該為高電平”,其SVA代碼為:

      propertya2b_p;@(posedgesclk)$rose(a)|->[2:4]$rose(b);endpropertya2b_a:assertproperty(a2b_p);//生效a2b_c:coverproperty(a2b_p);//覆蓋語句

      5)脈沖寬度斷言

      方法1:使用SVA直接對屬性進(jìn)行描述;方法2:使用SVA庫中的assert_width模塊,通過配置相關(guān)參數(shù)實(shí)現(xiàn)寬度斷言:

      assert_width[#(severity_level,min_cks,max_cks,options,msg,cate?gory,coverage_level_l,coverage_level_2,coverage_level_3)]

      SVA可以監(jiān)視設(shè)計(jì)模塊的內(nèi)部、模塊與模塊間連接信號的各種時(shí)序關(guān)系,與RTL代碼綜合,用于調(diào)試,也可以進(jìn)行設(shè)計(jì)的功能覆蓋。

      2.6 基于VBA宏的FPGA管腳配置自動檢查技術(shù)

      傳統(tǒng)的管腳配置檢查方法是依據(jù)軟件需求分析的管腳定義人工逐項(xiàng)核對FPGA工程文件中管腳配置,大規(guī)模FPGA設(shè)計(jì)使用的管腳可能達(dá)到幾百個(gè)

      且雜亂無章地排列,通過人工逐個(gè)檢查的效率低下,且可能存在漏判的情況。Excel具有快捷方便的數(shù)據(jù)輸入和強(qiáng)大的數(shù)據(jù)處理能力,它提供的VBA(Visual Basic for Application)宏語言可以方便地開發(fā)出用戶需要的功能。

      本文開發(fā)的“管腳配置檢查宏”能自動比較Excel表格中來自軟件需求分析和FPGA工程中的信號名和管腳號,其原理如圖7所示,測試人員首先將軟件需求分析中的管腳配置信息復(fù)制到Excel表格A/B列,然后將FPGA工程中的管腳配置報(bào)告復(fù)制到C/D列,最后點(diǎn)擊“檢查FPGA管腳配置”執(zhí)行檢查。宏將依次從A列和C列中尋找匹配的端口名稱(如A列4行和C列9行的端口localclk),再比較B列和D列對應(yīng)行的FPGA管腳(B列4行的管腳名稱A9和D列9行的管腳名稱C9),如果二者一致,則報(bào)告檢查通過;如果不一致,則報(bào)告錯(cuò)誤。該技術(shù)可以在幾秒內(nèi)完成上百個(gè)管腳配置的檢查,顯著提升檢查效率。

      圖7 使用Excel執(zhí)行管腳配置檢查

      3 應(yīng)用效果

      為統(tǒng)計(jì)FPGA軟件的驗(yàn)證效率,本文引入式(1)的效率計(jì)算公式計(jì)算千行代碼消耗的人時(shí)數(shù)。例如,某測試組10人一年測試了12萬行代碼,按一年工作280天,每天工作10小時(shí),其中70%的時(shí)間用于測試,測試效率為163人·小時(shí)/千行。

      =163人*小時(shí)/千行

      (1)為驗(yàn)證本文總結(jié)的6項(xiàng)改進(jìn)措施的實(shí)際效果,將測試團(tuán)隊(duì)分為采用傳統(tǒng)驗(yàn)證手段和采用自動化驗(yàn)證技術(shù)2個(gè)組,計(jì)算在一段時(shí)間內(nèi)(3個(gè)月)2個(gè)組的驗(yàn)證效率。經(jīng)測算,改進(jìn)前平均千行代碼耗時(shí)176人·小時(shí),改進(jìn)后平均千行代碼耗時(shí)144人·小時(shí),效率提升了18.2%。實(shí)踐表明,本文介紹的FPGA軟件自動化驗(yàn)證平臺、基于Perl語言的Testbench自動生成技術(shù)、受約束的隨機(jī)激勵(lì)生成技術(shù)、接口時(shí)序自動偵錯(cuò)技術(shù)、SVA斷言以及基于VBA宏的管腳配置自動檢查技術(shù)等6種改進(jìn)策略,能充分利用各類語言的優(yōu)勢提升FPGA軟件驗(yàn)證的自動化程度,從而降低測試成本,保證測試充分性。

      4 總結(jié)

      深入分析了FPGA軟件全生命周期驗(yàn)證流程,闡述了提高了FPGA軟件測試平臺搭建和自動化偵錯(cuò)的6點(diǎn)改進(jìn)技術(shù),這些自動化技術(shù)一方面輔助測試人員快速搭建驗(yàn)證平臺,另一方面實(shí)現(xiàn)了部分測試結(jié)果的自動比對,將功能驗(yàn)證中程式化和標(biāo)準(zhǔn)化的工作交由工具完成,從而實(shí)現(xiàn)FPGA軟件批量化和自動化測試,減輕了測試人員的工作量,將測試人員的精力更多地放在測試用例設(shè)計(jì)環(huán)節(jié),最大化提高驗(yàn)證效率和質(zhì)量。

      [1] 王石. 基于FPGA芯片的功能仿真平臺構(gòu)建及靜態(tài)時(shí)序分析[D]. 西安:西安電子科技大學(xué),2008. (Wang Shi.Construction of Function Simulation Platform and Static Timing Analysis Based on FPGA Chips [D]. Xian: Xidian University, 2008.)

      [2] 費(fèi)亞男,周輝,朱偉杰. FPGA軟件自動驗(yàn)證平臺設(shè)計(jì)與實(shí)踐[J]. 計(jì)算機(jī)測量與控制,2016,24(5):139-142.(Fei Yanan, Zhou Hui, Zhu Weijie. Auto Verify Platform Design and Practice for FPGA Software [J]. Computer Measurement and Control, 2016,24(5):139-142.)

      [3] 殷燎.面向SoC的IP核及嵌入式處理器功能驗(yàn)證方法研究[D]. 杭州:浙江大學(xué)博士論文,2010.(Yin Liao. Research on IP Core and Embedded Processor Function Verification Method Based on SoC [D]. Hangzhou: Zhejiang University, 2010.)

      [4] Chris Spear.張春,麥宋平,趙益新,譯. System Verilog驗(yàn)證測試平臺編寫指南[M].北京:科學(xué)出版社,2009.

      Research and Practice of Automation Technology on FPGA Function Verification

      Zhu Weijie, Yang Hui, Fei Yanan, Li Yang, Wang Chang

      Beijing Aerospace Automatic Control Institute, Beijing 100854, China

      Inthispaper,thefactorsthataffecttheefficiencyandqualityofFPGAfunctionverificationareanalyzeddeeply,thetraditionalmethodofbuildingtheFPGAverificationplatformisimproved,andsiximprovementstrategiessuchastheautomatictechnologyofbuildingverificationplatform,theTestbenchgenerationmethodbasedonthePerllanguage,thegenerationtechnologyoftheconstrainedrandomteststimulus,theerrordetectingtechnologyoftheinterfacetimingsequence,thesystemVerilogassertionandtheautomaticinspectionofpinconfigurationareintroduced.Byusingtheseautomatictechnologies,theprogramandstandardizedworkinthefunctionverificationarecompletedbythecomputer,andtheefficiencyofbuildingtheverificationplatformandcheckingthesimulationresultsisimproved.

      Functionverification;Errordetecting;Automaticverificationplatform;Constrainedrandomteststimulus

      2016-12-16

      朱偉杰 (1987-),男,山東威海人,碩士研究生,工程師,主要研究方向?yàn)镕PGA軟件設(shè)計(jì)與測試;陽 徽(1985-),男,湖南邵陽人,碩士研究生,高級工程師,主要研究方向?yàn)镕PGA軟件設(shè)計(jì)與測試;費(fèi)亞男 (1988-),女,長春人,碩士研究生,工程師,主要研究方向?yàn)镕PGA軟件測試;李 洋(1989-),男,哈爾濱人,碩士研究生,工程師,主要研究方向FPGA軟件設(shè)計(jì)與測試;王 昶(1989-),男,黑龍江雙城人,碩士研究生,工程師,主要研究方向?yàn)镕PGA軟件設(shè)計(jì)與測試。

      TP316.2

      A

      1006-3242(2017)02-0072-06

      南城县| 隆化县| 南康市| 安庆市| 莱西市| 会宁县| 平昌县| 蓝田县| 澳门| 类乌齐县| 泸西县| 乃东县| 小金县| 克山县| 平乡县| 临西县| 盖州市| 南昌市| 汪清县| 墨玉县| 婺源县| 东乡族自治县| 夏河县| 吕梁市| 鄢陵县| 普定县| 监利县| 织金县| 乌兰察布市| 嘉义市| 根河市| 太谷县| 光山县| 永兴县| 屏山县| 库车县| 潮安县| 咸阳市| 苍溪县| 大方县| 辽阳市|