《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于UVM和Matlab搭建的DVB-S編碼調制系統(tǒng)驗證平臺
基于UVM和Matlab搭建的DVB-S編碼調制系統(tǒng)驗證平臺
電子技術應用2016年第1期
李 皓,蘇秀紅
中國工程物理研究院 總體工程研究所,四川 綿陽621900
摘要: 提出了一種用于測試一個DVB-S編碼調制系統(tǒng)的功能驗證平臺。該平臺使用高級驗證方法學(Universal Verification Methodology,UVM)搭建了驗證平臺的主要結構,并在驗證平臺中使用外接Matlab作為復雜數(shù)字信號處理的參考模型。介紹了功能驗證平臺的主要結構和組件的設計,詳細介紹了UVM通過直接編程接口(Direct Programming Interface,DPI)以C++為橋梁與Matlab連接的設計方法。通過實際仿真驗證比較,使用這種方法搭建的聯(lián)合平臺比純硬件語言Verilog語言搭建的仿真驗證平臺在驗證時間上縮短了近50%,避免了對復雜信號處理驗證模型的硬件語言設計,提高了針對復雜信號處理系統(tǒng)驗證平臺的搭建效率。
關鍵詞: UVM Matlab C DVB-S 功能驗證
中圖分類號: TN4
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.01.002
中文引用格式: 李皓,蘇秀紅. 基于UVM和Matlab搭建的DVB-S編碼調制系統(tǒng)驗證平臺[J].電子技術應用,2016,42(1):15-18.
英文引用格式: Li Hao,Su Xiuhong. A DVB-S coding and modulation systems functional verification platform based on UVM and Matlab[J].Application of Electronic Technique,2016,42(1):15-18.
A DVB-S coding and modulation systems functional verification platform based on UVM and Matlab
Li Hao,Su Xiuhong
Institute of Systems Engineering,China Academy of Engineering Physics,Mianyang 621900,China
Abstract: In this contribution, we present a function verification platform for DVB-S coding and modulation system. The main structure of the platform is based on the Universal Verification Methodology(UVM), and the Matlab code is used in the complex signal processing reference model. Along with the structure and modules, we describe the method for connecting the UVM platform and the Matlab via Direct Programming Interface(DPI) particularly. The simulation proves that our approach save near 50% simulation time comparing with the pure Verilog platform. In addition, this approach avoids designing complex signal processing reference model with Verilog and improves the designing efficiency for complex signal processing verification platform.
Key words : UVM;Matlab;C++;DVB-S;functional verification;co-simulation

0 引言

    隨著信號處理系統(tǒng)日益復雜,數(shù)字芯片的功能驗證已經成為了影響芯片上市時間和成本的關鍵。然而信號處理芯片的系統(tǒng)級驗證仍面臨著諸多挑戰(zhàn)。盡管在測試驗證領域已經發(fā)展出了很多自動驗證方法,但是目前在驗證復雜信號處理算法時,多數(shù)仍需要使用人工添加測試用例的方法進行驗證,耗費了大量人力物力。

    驗證信號處理算法的難點主要集中在如何使用合適的方法搭建高效的參考模型。

    信號處理系統(tǒng)中一般包含大量復雜的數(shù)學算法,使用硬件語言實現(xiàn)這些算法的驗證工作往往需要豐富的經驗與技巧。如果使用硬件語言SystemVerilog來對這些算法進行驗證,即便不考慮對驗證工程師經驗與技巧的要求,也應注意到使用硬件語言SystemVerilog來實現(xiàn)這些復雜算法很可能會使用與被測件相近的設計思路,產生類似的錯誤,從而遺漏一些致命錯誤。正是考慮到這一點,本文提出了一種使用class="innerlink" href="http://www.jysgc.com/tags/Matlab" title="Matlab" target="_blank">Matlab軟件與高級驗證方法學(Universal Verification Methodology,UVM)聯(lián)合搭建的功能驗證平臺。利用UVM提供的直接編程接口(Direct Programming Interface,DPI)在驗證平臺中通過C++連接Matlab,實現(xiàn)信號處理系統(tǒng)中復雜的算法部分的驗證,從而大幅提高了驗證平臺開發(fā)效率以及平臺的復用性,加快了仿真驗證時間。

1 DVB-S編碼調制系統(tǒng)

    數(shù)字視頻廣播(Digital Video Broacasting)是歐洲電信標準協(xié)會(European Telecommunications Standards Institute,ETIS)制訂的關于數(shù)字電視衛(wèi)星業(yè)務中幀結構、信道編碼和調制的標準[1],被包括我國在內的絕大多數(shù)國家和地區(qū)所采用。該標準針對衛(wèi)星數(shù)字多節(jié)目電視以及高清電視節(jié)目在固定衛(wèi)星業(yè)務和廣播衛(wèi)星業(yè)務的一次發(fā)送和二次轉發(fā)作出的規(guī)定,其調制方式采用四位移相鍵控(Quaternary Phase Shift Keying,QPSK),并采用基于卷積碼和RS(Reed-Solomon)碼的級聯(lián)糾錯編碼。根據(jù)ETSI的ETS 300 421的規(guī)定,DVB-S的編碼調制原理框圖如圖1所示。

wdz1-t1.gif

    根據(jù)DVB-S標準規(guī)定并結合實際使用時對參數(shù)的配置以及數(shù)據(jù)實時監(jiān)測的需求,DVB-S的編碼調制系統(tǒng)結構框圖如圖2所示。

wdz1-t2.gif

2 UVM驗證平臺

2.1 驗證平臺概述

    本平臺的驗證是系統(tǒng)級的功能驗證,主要目的是確保DVB-S編碼調制系統(tǒng)電路設計與功能規(guī)范定義功能吻合。在DVB-S編碼調制系統(tǒng)電路外圍搭建UVM驗證平臺,采用受約束的隨機測試方法將激勵施加到被測件的輸入,最后通過輸出進行自動比較,檢查是否正確,同時也要查看覆蓋率是否達到了目標要求,如果沒有達到,應該開發(fā)新的有效驗證場景,通過迭代完成驗證收斂[2]。其代碼覆蓋率和功能點覆蓋率要求均為100%。平臺使用的UVM庫版本為1.1c,Matlab版本為2008b。

2.2 基于UVM的驗證平臺設計與實現(xiàn)

2.2.1 驗證平臺結構

    通用驗證方法學UVM是基于SystemVerilog開發(fā)的一套開源類庫,起源于OVM驗證方法學[3]。UVM類庫中定義了一系列的標準類,并結合標準接口、Factory 機制、Phase機制、分層結構以及面向對象的設計思想使整個平臺具有靈活配置、可重用、可擴展升級等優(yōu)點[4]。本文提出的驗證平臺成功地應用于DVB-S編碼調制系統(tǒng)的仿真驗證,其最主要的特點就是將Matlab與UVM相融合,從而解決了僅用硬件語言難以驗證的復雜數(shù)字處理算法。該驗證平臺的結構如圖3所示。

wdz1-t3.gif

    除了在典型UVM驗證平臺結構之外,本驗證平臺在參考模型(Reference model)中增加了外部接口連接到Matlab程序,對相應數(shù)據(jù)進行處理。

2.2.2 驗證平臺頂層組件設計

    本驗證平臺中的頂層主要是連接頂層Test_top和環(huán)境類Environment。在Test_top中主要完成6個主要功能:被測件的例化,測試環(huán)境(主要指環(huán)境類)的例化,接口的例化,被測件、測試環(huán)境和接口之間的相互連接,整個測試環(huán)境時鐘和復位的產生,驗證平臺的啟動。

    在環(huán)境類(Environment)中,主要完成5項工作:例化代理類,例化參考模型,例化記分板,連接以上三個部分,完成驗證平臺的通用設置。在驗證平臺中,組件在環(huán)境類中的相互鏈接通過UVM中的fifo鏈接,這樣可以方便地實現(xiàn)各組件間的異步接收。環(huán)境類處于驗證平臺的頂層,因此在環(huán)境類中同時也完成了一些與整個驗證平臺相關的設置工作,如設置平臺可接受的最大錯誤數(shù)量,信息輸出等級等。

2.2.3 測試組件的設計

    測試組件是驗證平臺的最重要也是核心設計,完成了驗證平臺的主要功能。其主要設計思想是盡可能地將對被測件單一功能項測試的組件進行封裝,使組件能夠盡可能少地依賴外部控制。主要包括7類關鍵組件:

    (1)代理(agent):測試組件的頂層。由于DVB-S編碼調制系統(tǒng)的輸入輸出關系相對簡單,因此在本驗證平臺中只使用了一個agent對測試組件進行封裝。agent主要完成sequencer、驅動器(driver)、監(jiān)視器(monitor)的例化和連接。

    (2)驅動器(driver):主要實現(xiàn)驗證平臺向被測件間輸出的接口協(xié)議。在這里事物級的數(shù)據(jù)流將被轉換為比特流,還有一個重要功能是將正在發(fā)送數(shù)據(jù)放到uvm_analysis_port端口上,供驗證平臺使用。在本驗證平臺中主要有兩個driver,分別是向參數(shù)寄存器組發(fā)送參數(shù)的driver_parameter以及發(fā)送串行數(shù)據(jù)的driver_data。

    (3)監(jiān)視器(monitor):主要實現(xiàn)驗證平臺接收被測件輸出的接口協(xié)議。這里將輸出總線上的比特流轉換為數(shù)據(jù)幀放到uvm_analysis_port,供驗證平臺使用。在本驗證平臺中也設置了兩個監(jiān)視器monitor_data和monitor_source,用來分別監(jiān)視輸出的數(shù)據(jù)流以及對監(jiān)測數(shù)據(jù)進行讀取。

    (4)transaction類:是傳入數(shù)據(jù)的主要載體。在驗證平臺中,共設置了3個不同的transaction類,用于發(fā)送參數(shù)和原始數(shù)據(jù)的transaction_source,用于接收結果的transaction_data以及后面將提到的transaction_case。

    (5)sequence類:主要功能是將測試用例傳來的測試場景轉換為transaction中數(shù)據(jù)。在本驗證平臺中sequence類主要將測試用例傳來的參數(shù)傳入Matlab程序,并由Matlab產生真正的原始數(shù)據(jù)寫入到transaction_source中。

    (6)參考模型(reference model):主要是模擬被測件的行為,通過uvm_blocking_get_port接收驅動器driver_parameter和driver_data傳來的數(shù)據(jù),并將這些數(shù)據(jù)傳入Matlab進行處理,然后將處理結果通過uvm_analysis_port傳給記分板。

    (7)記分板(scoreboard):主要功能是比對參考模型和被測件產生的數(shù)據(jù),以確定是否存在問題。記分板(scoreboard)通過uvm_blocking_get_port接收來自監(jiān)視器monitor_data、monitor_source以及參考模型的數(shù)據(jù)。

2.3 C++、Matlab接口的設計

2.3.1 UVM驗證平臺與C++的接口

    SystemVerilog提供了方便的DPI接口來連接C++代碼,只需SV文件中進行簡單的聲明并在腳本中進行相應的編譯鏈接即可以使用[5]。在本驗證平臺中首先在參數(shù)文件中加入了對計算函數(shù)compute的聲明如下:

    import "DPI-C" context task compute(input int data[S_NUM], output int I[NUM], output int Q[NUM]);

    然后在model_data中直接調用函數(shù)compute。在驗證平臺中C++與驗證平臺的接口主要是用于將驗證平臺與Matlab程序相連接,因此沒有用到復雜的功能,僅僅是將數(shù)據(jù)以合適的類型傳入。這樣設計的目的是有效利用用于原理驗證的Matlab仿真程序。盡管Matlab仿真程序的運行效率遠低于C++程序,但相對于HDL的仿真來說,這個效率問題往往可以忽略,而且Matlab仿真程序擁有的多種算法資源加快了驗證平臺的搭建。

2.3.2 C++與Matlab的接口

    下面以compute函數(shù)為例說明在C++中調用Matlab函數(shù)的過程。其中函數(shù)聲明如下。

int compute(const svOpenArrayHandle source_bit,svOpenArrayHandle data_i, const svOpenArrayHandle data_q)

    在函數(shù)中,首先使用以下代碼啟動Matlab,其中頭文件engine.h可在Matlab的安裝目錄下找到。

#include "engine.h" 

Engine *ep; 

engSetVisible(ep, 0); 

    使用自建函數(shù)input_arry將UVM傳入C++的數(shù)據(jù)data進一步變換格式傳入Matlab中成為數(shù)據(jù)x代碼如下:

input_arry (ep, x, S_NUM , data);

    其中自建函數(shù)input_arry如下:

void input_arry(Engine *ep, char *name, int num, const svOpenArrayHandle data_in) 

{

    /*

    * 輸入: ep,打開matlab的句柄

    *   num,數(shù)組長度

    *      name,寫入matlab的變量名

    *      data_in,寫入的向量

    * 輸出:無

    */

    int *input_i;

    double *input_d= new double[num];;

    mxArray *input = NULL;


    input_i=(int *) svGetArrayPtr(data_in);

    for(int i=0;i<num; i++)

    {

        input_d[i] = (double)input_i[i];

    }

    input = mxCreateDoubleMatrix(1, num, mxREAL);//數(shù)據(jù)格式生成

    memcpy((void *)mxGetPr(input),(void *)input_d,num*sizeof(input_d[0]));//數(shù)據(jù)轉換

    engPutVariable(ep, name, input);//向matlab寫數(shù)據(jù)

    mxDestroyArray(input);

}

    從Matlab到C++的轉換程序與此過程類似,僅作反向處理即可,這里就不再討論。最后將C++代碼編譯為動態(tài)鏈接庫(dll)文件compute.dll,然后在腳本文件加入vsim-sv_lib./TestBench/c/compute即可完成整個連接過程。

3 測試結果與分析

    仿真驗證用例運行完成后,對代碼進行了回歸測試并對覆蓋率進行統(tǒng)計?;貧w測試后代碼覆蓋率的統(tǒng)計結果為,DUT的代碼覆蓋率為99.72%,分支覆蓋率為98.63%。剩余未覆蓋到的情況如default語句很難覆蓋到,并對這種情況進行了人工代碼走查。因此達到上述代碼覆蓋率百分比的情況可以認為滿足了目標覆蓋率要求。

    UVM與Matlab聯(lián)合仿真驗證平臺和完全使用硬件語言編寫的仿真驗證平臺的仿真驗證時間對比如圖4。從圖中可以看出使用純硬件語言驗證平臺的測試用例平均運行時間為5.192 4小時,而使用UVM與Matlab聯(lián)合仿真驗證平臺測試用例平均運行時間為2.646 6小時,平均節(jié)約了近50%的時間。

wdz1-t4.gif

4 總結

    本文采用基于UVM和Matlab聯(lián)合搭建的仿真驗證平臺對DVB-S編碼調制系統(tǒng)進行了功能驗證,高效快速地達到了覆蓋率要求。該平臺與純硬件語言仿真驗證平臺相比節(jié)約了近50%仿真驗證時間,而且可以使用Matlab中成熟的工具箱對各種數(shù)字處理算法進行編程,極大地降低了驗證平臺開發(fā)難度,節(jié)約了開發(fā)時間并且提高了平臺的復用性。

    文中構建的平臺結構移植性強,對其他類似的信號處理系統(tǒng)驗證開發(fā)具有非常大的借鑒意義。通過對UVM與Matlab聯(lián)合仿真環(huán)境的運用,顯著提高了仿真驗證效率,為復雜數(shù)字處理SoC驗證提供了一條有意義的途徑。

參考文獻

[1] ETSI.EN 300 421.Digital Video Broacasting(DVB).Framing structure,channel coding and modulation for 11/12GHz satellite services[S].1997.

[2] 鐘文楓.SystemVerilog與功能驗證[M].北京:機械工業(yè)出版社,2010:5-7.

[3] Accdlera.Universal verification methodology 1.1 user′s guide[M].Cadence Design Systems Inc.,Mentor Graphics Corp.,Synopsys Inc.,2011,5:2

[4] 田勁,王小力.基于UVM驗證方法學的AES模塊級驗證[J].微電子學與計算機,2012(8).

[5] Chris Spear.System verilog for verification[M].Synopsys Inc.,2008:329.

此內容為AET網站原創(chuàng),未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久精品在线| 欧美三级在线| 亚洲一区二区三区中文字幕在线| 亚洲国产精品一区在线观看不卡| 午夜在线精品偷拍| 亚洲一区二区三区精品在线| 99人久久精品视频最新地址| 亚洲美女免费视频| 亚洲精品国产拍免费91在线| 亚洲成人在线视频网站| 韩国av一区二区| 国产亚洲激情| 国产一区二区三区直播精品电影 | 国产手机视频一区二区| 国产精品区一区二区三| 国产精品剧情在线亚洲| 国产精品制服诱惑| 国产午夜精品美女毛片视频| 国产在线观看一区| 韩国久久久久| 亚洲成色777777在线观看影院| 一区视频在线播放| 亚洲第一综合天堂另类专| 亚洲高清一二三区| 亚洲人成在线观看| 99精品黄色片免费大全| 中文在线不卡视频| 亚洲欧美在线免费| 亚洲风情在线资源站| 亚洲国内自拍| av成人免费在线| 欧美不卡视频一区发布| 欧美日韩国产综合久久| 欧美久久在线| 国产精品久久久久aaaa樱花| 国产毛片精品视频| 狠狠色综合色区| 亚洲人人精品| 一区二区三区高清不卡| 亚洲欧美一区二区原创| 亚洲成人在线视频播放 | 狠狠综合久久| 亚洲国产第一页| 99国产精品99久久久久久粉嫩 | 亚洲私人影院| 欧美一级视频免费在线观看| 亚洲二区三区四区| 在线亚洲欧美视频| 久久精品国产亚洲a| 欧美成人福利视频| 欧美视频一区二区在线观看 | 亚洲经典视频在线观看| 一本色道久久88综合亚洲精品ⅰ| 亚洲在线网站| 亚洲三级影片| 亚洲欧美日韩国产一区二区三区 | 久久久999| 欧美人妖在线观看| 国产农村妇女毛片精品久久莱园子 | 欧美激情一区二区三区不卡| 国产精品乱码久久久久久| 激情综合自拍| av成人手机在线| 久久激情五月婷婷| 国产精品99久久久久久久女警| 久久国产婷婷国产香蕉| 欧美精品v日韩精品v国产精品| 国产精品日韩一区二区| **欧美日韩vr在线| 亚洲一区在线视频| 亚洲靠逼com| 欧美在线资源| 欧美三级资源在线| 在线观看91精品国产麻豆| 在线性视频日韩欧美| 亚洲韩国精品一区| 欧美一区二区三区在线观看| 欧美老女人xx| 狠狠操狠狠色综合网| 亚洲色图在线视频| 亚洲欧洲日韩在线| 久久久久国色av免费看影院| 欧美日韩美女在线| 亚洲第一精品福利| 欧美一区二区精美| 亚洲综合首页| 欧美精品尤物在线| 精品福利免费观看| 午夜精品久久久久久久蜜桃app| 妖精视频成人观看www| 久热国产精品| 国产日韩一区欧美| 亚洲午夜精品17c| 一区二区三区四区精品| 欧美88av| 国内精品久久久久久久97牛牛| 亚洲视频自拍偷拍| 在线一区二区日韩| 欧美国产综合视频| 在线日韩精品视频| 亚洲电影在线| 久久久久成人精品| 国产精品久久久久久久久久久久| 午夜精品视频| 伊人久久大香线| 欧美一二三视频| 欧美一区综合| 国产精品久久久一区麻豆最新章节| 亚洲精品欧美精品| 亚洲精品午夜| 欧美成人免费播放| 一区在线观看视频| 亚洲国产影院| 欧美国产日本| 亚洲国产精彩中文乱码av在线播放| 久久精品夜色噜噜亚洲a∨| 欧美在线视频播放| 国产麻豆精品theporn| 亚洲欧美日韩国产成人精品影院| 亚洲直播在线一区| 国产精品久久久对白| 亚洲色图自拍| 欧美一级欧美一级在线播放| 国产精品黄页免费高清在线观看| 夜夜精品视频一区二区| 亚洲午夜精品网| 国产精品久久久久久久久久免费 | 欧美日韩国产一区二区| 亚洲黄色性网站| 99这里只有精品| 国产精品都在这里| 亚洲欧美国内爽妇网| 久久动漫亚洲| 国内激情久久| 日韩视频免费在线| 欧美日韩激情网| 亚洲少妇最新在线视频| 久久福利影视| 揄拍成人国产精品视频| 亚洲精品一区二区三区蜜桃久| 欧美日本精品在线| 亚洲视频免费看| 久久国产精品久久久久久久久久 | 亚洲人成免费| 亚洲一二三区视频在线观看| 国产精品毛片| 欧美中文日韩| 欧美国产综合| 中文国产成人精品| 欧美影院久久久| 在线日韩日本国产亚洲| 在线亚洲欧美专区二区| 国产精品永久免费| 亚洲国产电影| 欧美视频手机在线| 欧美一区深夜视频| 欧美二区在线观看| 中文国产成人精品| 久久中文久久字幕| 日韩一级免费| 久久国产精品亚洲77777| 亚洲国产精品日韩| 亚洲免费人成在线视频观看| 国内揄拍国内精品少妇国语| 亚洲精品资源| 国产精品一区二区三区久久| 亚洲黄色小视频| 欧美日韩国产在线观看| 香蕉国产精品偷在线观看不卡| 免费观看成人网| 亚洲资源在线观看| 欧美+日本+国产+在线a∨观看| 在线综合亚洲欧美在线视频| 久久久精品动漫| 日韩香蕉视频| 久久裸体艺术| 一区二区三区国产在线观看| 久久久久久69| 99精品热视频| 久久综合影视| 亚洲欧美日韩另类| 欧美高清在线视频观看不卡| 亚洲一区二区三区在线| 欧美成年人视频网站| 亚洲在线视频免费观看| 欧美激情久久久久| 久久高清一区| 亚洲青色在线| 亚洲国产欧美一区二区三区久久| 午夜精品视频一区| 亚洲国产经典视频| 久久精品国语| 一二美女精品欧洲| 蜜桃av一区二区在线观看| 日韩一级不卡| 欧美 日韩 国产在线| 午夜在线精品| 国产精品久久久久毛片软件| 亚洲日韩第九十九页| 国产一区二区无遮挡|