亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2018-07-04 03:40:28,,,,
        計算機(jī)測量與控制 2018年6期
        關(guān)鍵詞:單音數(shù)據(jù)類型碼元

        ,,, ,

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

        0 引言

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

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

        1 SV DPI仿真驗證方法

        1.1 PLI和SV DPI

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

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

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

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

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

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

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

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

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

        SystemVerilog平臺中導(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語言數(shù)據(jù)類型差異比較大,SystemVerilog3.1語言手冊定義了通過DPI傳遞的每個數(shù)據(jù)類型的匹配模式。具體見表1[4]。

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

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

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

        2 工程實例

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

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

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

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

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

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

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

        2)在SystemVerilog中調(diào)用C程序,實現(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ù)的通訊,所以在該平臺中,將C函數(shù)計算出的7個碼元對應(yīng)的數(shù)字化采樣數(shù)據(jù)一次性寫入到文件中,SystemVerilog平臺通過Read_file過程使用讀取文件的方式來實現(xiàn)AD數(shù)據(jù)的注入,而不是通過C函數(shù)返回的方式,這樣可以適當(dāng)提高仿真的效率。

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

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

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

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

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

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

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

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

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

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

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

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

        3 結(jié)語

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

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

        參考文獻(xiàn):

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

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

        [3] 耿 介,于治樓,畢研山.一種UVM驗證環(huán)境中復(fù)用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 驗證平臺[J].電子設(shè)計工程,2018,26(4):136-140.

        [6] 王 紀(jì),馮志華.SOC多語言協(xié)同驗證平臺技術(shù)研究[J].電子設(shè)計工程,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] 王俊蕊,李艷斌.短波多音并行信號全數(shù)字解調(diào)算法設(shè)計[J].無線電工程, 2016 (1):76-79.

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

        [11] Schutten R.基于ESL并采用SystemC和SystemVerilog的設(shè)計流程[J].電子設(shè)計技術(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ù)快速估計及碼元恢復(fù)
        如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類型
        秦文琛嗩吶協(xié)奏曲《喚鳳》“單音”技法再探究
        單音及部分頻帶干擾下DSSS系統(tǒng)性能分析
        視唱練耳聽力訓(xùn)練的方法
        基于極大似然準(zhǔn)則的短猝發(fā)信號盲解調(diào)
        一種碼元同步時鐘信號的提取方法及單片機(jī)實現(xiàn)
        基于FPGA的IRIG-B(DC)碼的解碼方案的設(shè)計與實現(xiàn)
        亚洲成a∨人片在线观看不卡 | 日韩在线观看网址| 在线观看免费的黄片小视频| 青青草狠吊色在线视频| 欧美人与动牲交a精品| 日本免费人成视频播放| 中文字幕无线精品亚洲乱码一区| 日本a级免费大片网站| 中文字幕av一区二区三区人妻少妇 | 国内精品自在自线视频| 乱子伦av无码中文字幕| 久久精品国产亚洲av成人网| 天天躁夜夜躁狠狠躁婷婷| 人人澡人人澡人人看添av| 91短视频在线观看免费| 日韩精品视频中文字幕播放| 欧美性受xxxx黑人猛交| 一本无码人妻在中文字幕免费| 中文乱码字幕高清在线观看| 久久精品人妻一区二三区| 婷婷色香五月综合缴缴情| 欧美成人看片黄a免费看| 久久精品视频按摩| 日本不卡视频一区二区| 亚洲国产精品一区二区www| 一本大道香蕉最新在线视频| 在线视频日韩精品三区| 精品国产午夜肉伦伦影院| 国产精品亚韩精品无码a在线| 国产精品久久久亚洲第一牛牛| 免费在线亚洲视频观看| 国产三级av在线播放| 亚洲狠狠网站色噜噜| 日韩色久悠悠婷婷综合| 极品少妇被黑人白浆直流| av天堂久久天堂av色综合| 欧洲亚洲色一区二区色99| 精品国产黄一区二区三区| av无码精品一区二区三区宅噜噜| 国产女人精品视频国产灰线| 伊人久久大香线蕉av色婷婷|