• 
    

    
    

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

      SV DPI技術(shù)在FPGA仿真驗(yàn)證的應(yīng)用探討

      2018-07-04 03:40:28,,,,
      關(guān)鍵詞:單音數(shù)據(jù)類型碼元

      ,,, ,

      (上海航天電子技術(shù)研究所,上海 201109)

      0 引言

      目前數(shù)字系統(tǒng)設(shè)計(jì)中應(yīng)用最為廣泛且最為有效的驗(yàn)證方法就是仿真。除了驗(yàn)證單個(gè)模塊功能的正確性、接口交互以及整個(gè)系統(tǒng)功能的正確性,還可以模擬邊界測(cè)試、故障測(cè)試等,而硬件測(cè)試上往往是不能進(jìn)行的。但是隨著FPGA功能趨于復(fù)雜以及實(shí)現(xiàn)算法復(fù)雜度提高,其輸入信號(hào)可能是通過復(fù)雜模型產(chǎn)生的,比如信號(hào)的調(diào)制,傅里葉變換等。驗(yàn)證人員受專業(yè)限制,無法理解和模擬該類輸入信號(hào),只能向設(shè)計(jì)師要數(shù)據(jù)源。那么誰來保證數(shù)據(jù)源的正確性?如果使用該數(shù)據(jù)源出錯(cuò),那么問題是出在數(shù)據(jù)源,還是FPGA設(shè)計(jì)呢?很顯然,這樣無法保證驗(yàn)證工作的獨(dú)立性。即使是明白專業(yè)的驗(yàn)證人員通過Verilog或VHDL來實(shí)現(xiàn)復(fù)雜的輸入模型,同樣存在致命的缺點(diǎn)。比如調(diào)用Verilog和VHDL的IP來實(shí)現(xiàn)正弦函數(shù),由于HDL并行化的特點(diǎn),在仿真中將占用大量的內(nèi)存,極大的影響仿真的速度。此外,如何在一個(gè)獨(dú)立的驗(yàn)證平臺(tái)中驗(yàn)證FPGA算法功能是否正確。比如計(jì)算一幅圖像的方差,通常方法是額外編寫一個(gè)C程序,然后人工的比對(duì)雙方的結(jié)果,以驗(yàn)證該算法是否正確,沒有進(jìn)行實(shí)時(shí)比對(duì),仍然存在測(cè)試有效性的問題。

      本文提出了一種新的驗(yàn)證解決方案,利用仿真工具中的SV DPI技術(shù),實(shí)現(xiàn)了在SV仿真驗(yàn)證平臺(tái)中調(diào)用C或C++編程語(yǔ)言[1],利用高級(jí)語(yǔ)言可以更加方便的實(shí)現(xiàn)激勵(lì)讀取、參考模型構(gòu)建等功能。本文就該類解決方法進(jìn)行相關(guān)的闡述和討論,這對(duì)于提高FPGA驗(yàn)證充分性和驗(yàn)證的獨(dú)立性,以及驗(yàn)證的靈活性都有著重要意義。

      1 SV DPI仿真驗(yàn)證方法

      1.1 PLI和SV DPI

      Verilog是現(xiàn)有航天FPGA驗(yàn)證中最常用的語(yǔ)言。Verilog使用編程語(yǔ)言接口PLI(Programming Language Interface)來跟C語(yǔ)言程序交互。使用PLI可以生成延遲計(jì)算器,以連接和同步多個(gè)仿真器,并增加諸如波形顯示等調(diào)試工具。但是PLI非常繁瑣,即使通過PLI連接一個(gè)簡(jiǎn)單的C程序,都需要編寫大量的代碼,并需理解很多概念,這些概念包括多個(gè)仿真階段的同步、調(diào)用段、實(shí)例指針等等。此外,PLI給仿真帶來了額外的負(fù)擔(dān),因?yàn)闉榱吮Wo(hù)Verilog數(shù)據(jù)結(jié)構(gòu),仿真器必須不斷地在Verilog和C語(yǔ)言域之間復(fù)制數(shù)據(jù)。所以現(xiàn)有的FPGA驗(yàn)證過程中,F(xiàn)PGA驗(yàn)證人員基本不會(huì)去使用PLI。

      而新一代的驗(yàn)證語(yǔ)言SystemVerilog引入了直接編程接口DPI[2-3],它能更加簡(jiǎn)單地連接C、C++編程語(yǔ)言。一旦你聲明或者使用import語(yǔ)言“導(dǎo)入”了一個(gè)C子程序,你就可以像調(diào)用SystemVerilog中的子程序一樣來調(diào)用它,使用起來非常方便。首先,通過高級(jí)語(yǔ)言實(shí)現(xiàn)復(fù)雜模型比使用hdl語(yǔ)言要輕松很多,且仿真速度快。比如C語(yǔ)言已經(jīng)提供了很多庫(kù)函數(shù),直接調(diào)用即可,無須重新編寫。這樣既保證了激勵(lì)編寫的正確性,又提高了可重用性。同時(shí)C語(yǔ)言目標(biāo)代碼的執(zhí)行速度比hdl仿真速度要至少提高一個(gè)數(shù)量級(jí)。其次,F(xiàn)PGA中實(shí)現(xiàn)的算法都有可靠的高級(jí)語(yǔ)言模型,基于DPI技術(shù)的FPGA仿真驗(yàn)證平臺(tái)可以直接調(diào)用該模型,實(shí)現(xiàn)同一份激勵(lì)輸入到FPGA設(shè)計(jì)和高級(jí)語(yǔ)言模型,然后比對(duì)兩個(gè)結(jié)果,以判斷FPGA設(shè)計(jì)實(shí)現(xiàn)正確性。通過該方法,驗(yàn)證人員可以不受專業(yè)限制,將FPGA設(shè)計(jì)完全看做是一個(gè)黑盒,保證驗(yàn)證方的獨(dú)立性。再次將C函數(shù)連入驗(yàn)證平臺(tái),容易實(shí)現(xiàn)驗(yàn)證平臺(tái)的完整性,為自動(dòng)測(cè)試創(chuàng)造了條件。最后,利用SystemVerilog的受限制隨機(jī)激勵(lì)生成功能、斷言和功能覆蓋率功能可以大大提高測(cè)試的效率和質(zhì)量。

      1.2 SV DPI驗(yàn)證技術(shù)使用步驟

      要使用SV DPI驗(yàn)證技術(shù)順利將SystemVerilog和C聯(lián)合起來仿真,應(yīng)按照下面4個(gè)步驟進(jìn)行。

      1)編寫C代碼實(shí)現(xiàn)算法。DPI包括兩個(gè)完全獨(dú)立的層次,分別是SystemVerilog和C,在C代碼中需要聲明包含頭文件svdpi.h,因?yàn)樵趕vdpi.h中包含了SystemVerilog DPI結(jié)構(gòu)和方法的定義[4]。

      2)實(shí)現(xiàn)C與SystemVerilog通信。SystemVerilog平臺(tái)中通過導(dǎo)入函數(shù)和任務(wù)來調(diào)用C代碼,DPI也允許在C代碼中通過導(dǎo)出函數(shù)和任務(wù)來調(diào)用SystemVerilog中的方法[5]。被調(diào)用的SystemVerilog方法可以是一個(gè)保存C函數(shù)操作結(jié)果的簡(jiǎn)單任務(wù),或者是一個(gè)實(shí)現(xiàn)部分硬件模型的耗時(shí)任務(wù)[6]。

      SystemVerilog平臺(tái)中導(dǎo)入函數(shù)和任務(wù)的定義如下:

      import “DPI” [c_identifier =][pure][context]function type name(args);

      import “DPI” [c_identifier =] [context]task type name(args);

      SystemVerilog平臺(tái)中導(dǎo)出函數(shù)和任務(wù)的定義如下:

      export “DPI” [C_identifier =]function type name;

      export “DPI” [C_identifier =]task type name;

      3)匹配數(shù)據(jù)類型映射。由于SystemVerilog數(shù)據(jù)類型和C語(yǔ)言數(shù)據(jù)類型差異比較大,SystemVerilog3.1語(yǔ)言手冊(cè)定義了通過DPI傳遞的每個(gè)數(shù)據(jù)類型的匹配模式。具體見表1[4]。

      表1 SystemVerilog和C語(yǔ)言之間的數(shù)據(jù)類型映射

      其中對(duì)于bit和logic類型匹配在svdpi.h文件中有專門的指定。使用者需根據(jù)svdpi.h文件中的定義來選擇匹配的數(shù)據(jù)類型。另外需要注意的是:DPI不會(huì)檢查數(shù)據(jù)類型的兼容性,需要使用者自己保證數(shù)據(jù)匹配的正確性。

      4)利用仿真工具編譯C程序的方法,生成最終的目標(biāo)碼,并和SystemVerilog混合運(yùn)行。

      2 工程實(shí)例

      2.1 仿真模型構(gòu)建

      某FPGA產(chǎn)品根據(jù)采集到的多音組合調(diào)頻信號(hào),依據(jù)一定的解調(diào)算法實(shí)現(xiàn)最終的解碼[9]。驗(yàn)證人員在VCS環(huán)境搭建基于DPI技術(shù)的FPGA仿真驗(yàn)證平臺(tái)如圖1所示。解出的密碼包括m個(gè)碼元,每個(gè)碼元為n位。每個(gè)碼元都是由n個(gè)單音(正弦波)中的4個(gè)疊加而成,而每個(gè)單音的頻率是不一樣的,若m個(gè)碼元解密出的數(shù)據(jù)與存儲(chǔ)密碼一致,則解密成功。每個(gè)多音組合調(diào)頻信號(hào)指令格式如圖2所示。

      圖1 某FPGA產(chǎn)品驗(yàn)證架構(gòu)

      圖2 多音組合調(diào)頻信號(hào)指令格式

      該FPGA產(chǎn)生AD芯片的采樣的時(shí)鐘和讀控制信號(hào),AD芯片根據(jù)相應(yīng)的時(shí)序采集外圍的模擬信號(hào),AD芯片將其轉(zhuǎn)換為數(shù)字信號(hào)輸出給FPGA設(shè)計(jì)?;趫D1的驗(yàn)證架構(gòu),驗(yàn)證人員根據(jù)DPI驗(yàn)證流程按照以下步驟,實(shí)現(xiàn)整個(gè)FPGA驗(yàn)證架構(gòu)。

      1)編寫C程序模擬完成多個(gè)單音數(shù)據(jù)(正弦波)疊加后的數(shù)字化采樣。在SystemVerilog驗(yàn)證架構(gòu)中隨機(jī)挑選4個(gè)單音進(jìn)行疊加,生成多種單音組合序列,SystemVerilog將這些序列指令碼元的組合情況通知C程序,C程序根據(jù)輸入的參數(shù)實(shí)現(xiàn)AD采樣數(shù)據(jù)的模擬。C程序先根據(jù)參數(shù)頻率計(jì)算15組碼元數(shù)據(jù)的角速度值和導(dǎo)頻音角速度值,利用角速度值和幅值參數(shù)生成16組標(biāo)準(zhǔn)的2048個(gè)點(diǎn)精度的二進(jìn)制偏移正弦波,然后根據(jù)輸入的單音組合序列,當(dāng)有組合序列對(duì)應(yīng)位置為1時(shí),將對(duì)應(yīng)的正弦波疊加,再根據(jù)組合情況,按照時(shí)間順序,前10 ms輸出導(dǎo)頻音正弦波,5 ms輸出第一組疊加的多音組合,下個(gè)5 ms輸出第二組多音組合,依次輸出7個(gè)。

      圖3 C程序模擬AD輸入數(shù)據(jù)生成代碼

      2)在SystemVerilog中調(diào)用C程序,實(shí)現(xiàn)數(shù)據(jù)的相互通信。在SystemVerilog中,通過import “DPI-C”聲明定義C函數(shù)的原型[7],接著在SystemVerilog的任務(wù)或者進(jìn)程中就可以調(diào)用C函數(shù)MaYuan。為了提高仿真的效率,應(yīng)盡量減少SystemVerilog和C函數(shù)的通訊,所以在該平臺(tái)中,將C函數(shù)計(jì)算出的7個(gè)碼元對(duì)應(yīng)的數(shù)字化采樣數(shù)據(jù)一次性寫入到文件中,SystemVerilog平臺(tái)通過Read_file過程使用讀取文件的方式來實(shí)現(xiàn)AD數(shù)據(jù)的注入,而不是通過C函數(shù)返回的方式,這樣可以適當(dāng)提高仿真的效率。

      圖4 在SV中調(diào)用C程序

      3)注意匹配SystemVerilog的數(shù)據(jù)類型和C語(yǔ)言的數(shù)據(jù)類型的兼容性映射。在 該應(yīng)用實(shí)例中SystemVerilog傳遞給C程序的接口包括指令組合(ZhiLing[0:6])、幅值(DaoPin_FUZHI)、頻率(PinLv)。SystemVerilog的數(shù)據(jù)類型和C語(yǔ)言的數(shù)據(jù)類型的兼容性如表2所示。

      表2 SystemVerilog的數(shù)據(jù)類型和C語(yǔ)言的數(shù)據(jù)類型映射

      4)完成解調(diào)出的密碼與輸入的指令碼元自動(dòng)比對(duì)功能。圖1的解調(diào)模塊將根據(jù)時(shí)鐘收集解調(diào)出的碼元,同時(shí)將其按照特定的格式轉(zhuǎn)換為指令,與傳遞給C程序的指令組合(ZhiLing[0:6])進(jìn)行比較,完成自動(dòng)比對(duì)功能,以確認(rèn)FPGA設(shè)計(jì)的解調(diào)功能是否正確。

      5)利用仿真工具VCS編譯[8]C程序的方法,從而生成最終的目標(biāo)碼。該FPGA仿真工具采用了linux環(huán)境下的VCS仿真工具,VCS調(diào)用linux下的gcc編譯器,可以實(shí)現(xiàn)在對(duì)FPGA代碼編譯的同時(shí),也完成對(duì)C程序的編譯以及目標(biāo)碼的生成,如圖5所示。

      圖5 仿真工具VCS編譯C程序

      2.2 仿真結(jié)果與分析

      對(duì)于復(fù)雜算法類 FPGA設(shè)計(jì),怎樣自動(dòng)生成測(cè)試用例數(shù)據(jù)、怎樣進(jìn)行測(cè)試用例數(shù)據(jù)注入和進(jìn)行結(jié)果分析是測(cè)試驗(yàn)證工程師面臨的一大難題。傳統(tǒng)的仿真驗(yàn)證方法只能通過matlab生成數(shù)據(jù)源,利用時(shí)鐘導(dǎo)入的方式進(jìn)行仿真驗(yàn)證,只能進(jìn)行正常的功能測(cè)試,更無法進(jìn)行結(jié)果比對(duì)。利用3.1節(jié)描述的仿真模型,驗(yàn)證人員通過ZhiLing、DaoPin_FUZHI和PinLv參數(shù)的配置以及MaYuan函數(shù)的靈活調(diào)用,實(shí)現(xiàn)了表3中的11個(gè)測(cè)試用例,并發(fā)現(xiàn)當(dāng)預(yù)令碼元不是由四個(gè)單音組成時(shí),解碼結(jié)果不正常的問題。而使用傳統(tǒng)的仿真驗(yàn)證或者硬件測(cè)試方法要實(shí)現(xiàn)表3中的所有測(cè)試用例非常麻煩,耗時(shí)巨大,因此之前一直沒有發(fā)現(xiàn)問題。

      由此可知,通過上述方法搭建的基于DPI技術(shù)的FPGA仿真驗(yàn)證平臺(tái),具備如下幾個(gè)優(yōu)點(diǎn):

      1)由高級(jí)語(yǔ)言C編寫的激勵(lì)輸入,相比Verilog中的IP調(diào)用[10],無疑極大的提高了仿真效率。

      2)驗(yàn)證人員通過C代碼編寫的激勵(lì)向量,無須向設(shè)計(jì)師索取激勵(lì)輸入數(shù)據(jù),保證了驗(yàn)證工作的獨(dú)立性。

      3)依據(jù)隨機(jī)產(chǎn)生的指令組合,然后根據(jù)C代碼產(chǎn)生的AD數(shù)據(jù)作為FPGA輸入,再對(duì)FPGA解碼出的指令組合與隨機(jī)產(chǎn)生的指令組合進(jìn)行自動(dòng)比對(duì),提高了測(cè)試的自動(dòng)化和測(cè)試的完備性。

      3 結(jié)語(yǔ)

      復(fù)雜算法FPGA仿真驗(yàn)證的有效性一直是FPGA驗(yàn)證的熱點(diǎn)問題,本文提出的利用SV DPI仿真技術(shù)實(shí)現(xiàn)在SV仿真驗(yàn)證平臺(tái)中調(diào)用C或C++的驗(yàn)證方案。經(jīng)工程應(yīng)用論證,利用SV DPI技術(shù)在SV仿真驗(yàn)證平臺(tái)中調(diào)用C或C++編程語(yǔ)言,可以更加方便的實(shí)現(xiàn)激勵(lì)讀取、參考模型構(gòu)建、測(cè)試結(jié)果自動(dòng)比對(duì)等功能?;赟ystemVerilog的FPGA驗(yàn)證平臺(tái),可以通過DPI實(shí)現(xiàn)SystemVerilog平臺(tái)與高級(jí)語(yǔ)言(C、C++等)的通信,讓Systemverilog的強(qiáng)大驗(yàn)證能力能夠在事物處理級(jí)模型的驗(yàn)證工作中充分發(fā)揮[11],相對(duì)于傳統(tǒng)的純verilog驗(yàn)證平臺(tái),大大提高了仿真效率和驗(yàn)證的靈活性,同時(shí)也為算法級(jí)FPGA設(shè)計(jì)的確認(rèn)測(cè)試提供了新的驗(yàn)證思路。

      表3 調(diào)頻和多音組合解調(diào)功能測(cè)試表

      參考文獻(xiàn):

      [1] 虞致國(guó),魏敬和. 基于SystemVerilog DPI的ARM SoC虛擬調(diào)試驗(yàn)證平臺(tái)的設(shè)計(jì)[J].微電子學(xué)與計(jì)算機(jī),2009(11): 117-119.

      [2] 閆 沫,張 媛. 基于SystemVerilog語(yǔ)言的設(shè)計(jì)驗(yàn)證技術(shù)[J].現(xiàn)代電子技術(shù),200806:8-11.

      [3] 耿 介,于治樓,畢研山.一種UVM驗(yàn)證環(huán)境中復(fù)用C程序測(cè)試向量的方法: CN104899138A[P]. 2015-09-09.

      [4] Synopsys VCS MX/VCS MXi User Guide [S] .Version E-2011.03-SP1 August 2011.

      [5] 李 璐,周春良,馮 曦,等.基于 DPI-C 接口的可擴(kuò)展 SOC 驗(yàn)證平臺(tái)[J].電子設(shè)計(jì)工程,2018,26(4):136-140.

      [6] 王 紀(jì),馮志華.SOC多語(yǔ)言協(xié)同驗(yàn)證平臺(tái)技術(shù)研究[J].電子設(shè)計(jì)工程,2015,23(20):130-133.

      [7] Synopsys.Reference Verification Methodology User Guide[S].September, 2004.

      [8] Synopsys.Design Ware AHB Verification IP Databook[S].March 24,2003.

      [9] 王俊蕊,李艷斌.短波多音并行信號(hào)全數(shù)字解調(diào)算法設(shè)計(jì)[J].無線電工程, 2016 (1):76-79.

      [10] 鮑曉利, 馮永新. 寬帶掃頻式干擾的仿真與FPGA實(shí)現(xiàn)[J].沈陽(yáng)理工大學(xué)學(xué)報(bào),2008, 27(3):61-64.

      [11] Schutten R.基于ESL并采用SystemC和SystemVerilog的設(shè)計(jì)流程[J].電子設(shè)計(jì)技術(shù),2006 ,13(4) :142-142.

      猜你喜歡
      單音數(shù)據(jù)類型碼元
      詳談Java中的基本數(shù)據(jù)類型與引用數(shù)據(jù)類型
      衛(wèi)星通信物理層非直擴(kuò)鏈路的單音干擾影響解析
      無線電工程(2021年1期)2021-02-03 12:02:18
      LFM-BPSK復(fù)合調(diào)制參數(shù)快速估計(jì)及碼元恢復(fù)
      如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類型
      秦文琛嗩吶協(xié)奏曲《喚鳳》“單音”技法再探究
      單音及部分頻帶干擾下DSSS系統(tǒng)性能分析
      視唱練耳聽力訓(xùn)練的方法
      基于極大似然準(zhǔn)則的短猝發(fā)信號(hào)盲解調(diào)
      一種碼元同步時(shí)鐘信號(hào)的提取方法及單片機(jī)實(shí)現(xiàn)
      基于FPGA的IRIG-B(DC)碼的解碼方案的設(shè)計(jì)與實(shí)現(xiàn)
      乌兰县| 兴化市| 七台河市| 邯郸市| 河南省| 乌兰察布市| 嘉义市| 马山县| 上犹县| 潼关县| 称多县| 大余县| 扎囊县| 海安县| 霍山县| 资溪县| 广河县| 尚志市| 福贡县| 满城县| 长治县| 洞头县| 兴和县| 勃利县| 汶上县| 榆林市| 陆良县| 大邑县| 乐至县| 上林县| 富锦市| 冕宁县| 奉节县| 竹溪县| 海晏县| 泾阳县| 湛江市| 定结县| 扶沟县| 广德县| 麻阳|