《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于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://m.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亚洲国产精品_日韩亚洲一区二区
中文日韩在线视频| 久久精品日产第一区二区| 国产九九精品视频| 欧美午夜在线观看| 欧美日韩1区2区| 欧美国产日韩一区二区在线观看| 久久久亚洲影院你懂的| 久久九九精品| 久久精品国产v日韩v亚洲| 西西裸体人体做爰大胆久久久| 亚洲一二三区视频在线观看| 一本久道久久久| 一区二区三区www| 一本久久综合亚洲鲁鲁五月天| 99视频超级精品| 9i看片成人免费高清| 夜夜嗨av色一区二区不卡| 一本久久知道综合久久| 一区二区三区精品久久久| aa级大片欧美| 亚洲视频日本| 亚洲永久字幕| 午夜精品在线视频| 久久国产精彩视频| 久久久蜜桃一区二区人| 久久免费观看视频| 另类成人小视频在线| 欧美激情第一页xxx| 欧美日韩国产综合久久| 欧美视频日韩视频| 国产精品私人影院| 国产在线欧美日韩| 亚洲第一搞黄网站| 亚洲美女网站| 亚洲一区亚洲| 欧美综合国产精品久久丁香| 亚洲福利电影| av成人毛片| 欧美一区日本一区韩国一区| 久久蜜臀精品av| 欧美韩国日本综合| 欧美视频亚洲视频| 国产欧美精品在线播放| 国外成人在线视频网站| 91久久国产综合久久蜜月精品 | 国产精品美女久久久久av超清| 国产精品专区一| 在线观看日韩精品| 一区二区高清在线| 欧美一级黄色录像| 99re66热这里只有精品4| 亚洲欧美三级在线| 麻豆精品网站| 国产精品美女999| 一区二区亚洲| 中国成人亚色综合网站| 久久福利精品| 亚洲线精品一区二区三区八戒| 久久精品国产v日韩v亚洲| 欧美精品自拍| 国产一区二区三区免费不卡| 亚洲精品国产精品乱码不99按摩| 亚洲综合视频1区| 亚洲精品中文字幕有码专区| 午夜在线a亚洲v天堂网2018| 欧美成在线观看| 国产精品一香蕉国产线看观看 | 午夜视频在线观看一区二区三区| 亚洲精品小视频| 久久精品国产成人| 欧美三级视频| 在线观看日产精品| 亚洲自拍16p| 一二三四社区欧美黄| 久久天天躁狠狠躁夜夜av| 欧美私人啪啪vps| 禁久久精品乱码| 亚洲欧美日韩天堂| 亚洲少妇自拍| 欧美国产日韩视频| 国产一区二区三区久久久| 宅男噜噜噜66一区二区66| 亚洲人成在线播放| 久久久久欧美| 国产女主播一区二区| 一本色道综合亚洲| 99视频超级精品| 欧美/亚洲一区| 国产午夜精品麻豆| 亚洲视频免费看| 99精品欧美一区| 久久午夜精品| 国产亚洲亚洲| 亚洲在线观看视频| 亚洲一线二线三线久久久| 欧美国产日韩xxxxx| 一色屋精品亚洲香蕉网站| 欧美亚洲视频一区二区| 亚洲婷婷国产精品电影人久久| 久久精品网址| 欧美在线精品免播放器视频| 欧美三区视频| 亚洲精品影院| 99视频日韩| 欧美国产精品劲爆| 一区二区在线看| 欧美影视一区| 久久不射电影网| 国产欧美日韩麻豆91| 亚洲午夜在线| 亚洲男人的天堂在线aⅴ视频| 欧美日本精品在线| 亚洲人成网站精品片在线观看| 亚洲国产精品国自产拍av秋霞| 久久精品欧美日韩精品| 国产日韩欧美电影在线观看| 亚洲欧美第一页| 亚洲欧洲av一区二区| 国产精品伦理| 亚洲一区影音先锋| 欧美亚洲专区| 国产日韩一区| 欧美一区二区在线| 狼人天天伊人久久| 亚洲第一视频网站| 亚洲毛片一区| 欧美三日本三级三级在线播放| 99国产精品视频免费观看| 亚洲午夜视频在线| 欧美性大战久久久久| 亚洲一区二区少妇| 欧美中在线观看| 国内久久精品| 亚洲激情在线观看视频免费| 欧美高清视频www夜色资源网| 亚洲精品久久久蜜桃| 亚洲一区视频在线| 国产美女一区| 久久成人免费视频| 欧美大香线蕉线伊人久久国产精品| 亚洲区第一页| 亚洲永久免费观看| 国产欧美va欧美va香蕉在| 欧美在线91| 欧美激情亚洲激情| 亚洲婷婷国产精品电影人久久| 性视频1819p久久| 国产在线精品一区二区夜色| 亚洲黄色在线视频| 欧美激情中文字幕一区二区| 欧美三区美女| 亚洲自拍偷拍福利| 久久久999国产| 亚洲高清免费视频| 一道本一区二区| 国产精品揄拍500视频| 欧美自拍偷拍| 欧美久久电影| 亚洲视频免费观看| 久久九九精品99国产精品| 亚洲国产精品欧美一二99| 在线亚洲一区二区| 国产网站欧美日韩免费精品在线观看 | 亚洲欧洲午夜| 欧美性做爰毛片| 欧美在线资源| 欧美日韩1234| 欧美一区亚洲一区| 欧美精品国产精品日韩精品| 亚洲视频在线一区| 免费黄网站欧美| 亚洲素人一区二区| 免费高清在线视频一区·| 中文国产成人精品久久一| 久久在线播放| 亚洲视频在线观看免费| 美女91精品| 亚洲视频久久| 欧美成人一品| 亚洲欧美日韩国产中文| 欧美精品三级日韩久久| 欧美亚洲视频| 欧美少妇一区二区| 亚洲国产视频直播| 国产女人精品视频| 一区二区三区欧美日韩| 国内久久精品| 午夜视黄欧洲亚洲| 亚洲黄色av一区| 久久久91精品国产一区二区三区 | 一本到高清视频免费精品| 久久婷婷丁香| 中文国产一区| 欧美二区视频| 性亚洲最疯狂xxxx高清| 欧美日韩免费看| 亚洲国产精品国自产拍av秋霞| 国产乱码精品一区二区三| 在线视频欧美日韩精品| 一区二区三区在线免费视频|