吳迪飛
摘要:為了解決使用FPGA開發(fā)數(shù)字下變頻(Digital Down Conversion,DDC)模塊的驗(yàn)證需求,提出并實(shí)現(xiàn)了一種基于UVM(universalVerificationMetodology,通用驗(yàn)證方法學(xué))的驗(yàn)證平臺(tái)。該驗(yàn)證平臺(tái)以數(shù)字下變頻模塊為驗(yàn)證對(duì)象,以UVM提供的基類驗(yàn)證組件為架構(gòu)搭建而成,通過c函數(shù)模型的調(diào)用,串行參數(shù)的解析等方式發(fā)送不同類型的激勵(lì)數(shù)據(jù)至DDC模塊;同時(shí),驗(yàn)證平臺(tái)自動(dòng)采集經(jīng)頻譜搬移和濾波處理的基帶IQ數(shù)據(jù),在與參考模型進(jìn)行對(duì)比后自動(dòng)將正確的數(shù)據(jù)導(dǎo)出并寫入文件進(jìn)行頻譜分析。在驗(yàn)證過程中對(duì)UVM特性機(jī)制的大量運(yùn)用在保證測(cè)試效率的同時(shí)提高了可重用度。
關(guān)鍵詞:數(shù)字下變頻;通用驗(yàn)證方法學(xué);測(cè)試平臺(tái);仿真驗(yàn)證;可重用
中圖分類號(hào):TN713;TN95 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)10-0269-04
1背景
現(xiàn)代雷達(dá)系統(tǒng)中廣泛運(yùn)用FPGA進(jìn)行實(shí)時(shí)數(shù)據(jù)處理。在雷達(dá)接收回波信號(hào)的中頻處理階段,通過數(shù)字下變頻的手段可以在保留有效信息的同時(shí)減小數(shù)據(jù)率,降低對(duì)后端器件的性能要求,是各型雷達(dá)系統(tǒng)的關(guān)鍵技術(shù)組成?;贔PGA實(shí)現(xiàn)的數(shù)字下變頻模塊,具有設(shè)計(jì)規(guī)模較大,功能復(fù)雜的自身特點(diǎn),在使用傳統(tǒng)驗(yàn)證平臺(tái)對(duì)其進(jìn)行調(diào)試驗(yàn)證時(shí),因平臺(tái)結(jié)構(gòu)過于單一且無特定激勵(lì)產(chǎn)生機(jī)制,造成測(cè)試激勵(lì)范圍有限、功能覆蓋率低、代碼的可重用性差等各類缺陷;在變更參數(shù)設(shè)定而需要更改測(cè)試用例時(shí),往往導(dǎo)致代碼量和用時(shí)成倍增加,容易造成驗(yàn)證不全面,效率低下,錯(cuò)誤定位不準(zhǔn)確等各類問題,這些因素都會(huì)對(duì)后期系統(tǒng)聯(lián)試帶來極大影響。
為應(yīng)對(duì)同類大規(guī)模數(shù)字邏輯設(shè)計(jì)的驗(yàn)證需求,由Accellera在繼承VMM,OVM的基礎(chǔ)上推出了UVM,并得到了各大EDA廠商的支持。與傳統(tǒng)RTL(寄存器傳輸級(jí))驗(yàn)證平臺(tái)相比,UVM基于面向?qū)ο蟮挠布枋稣Z言SystemVerilog,兼具封裝、繼承等面向?qū)ο笳Z言的特點(diǎn)和約束、功能覆蓋率等驗(yàn)證獨(dú)有的特性,擁有大量的庫函數(shù)和基類,這些類庫提供了通用的程序,如層次組件結(jié)構(gòu),傳輸級(jí)模型(TLM),以及配置數(shù)據(jù)庫(uVM_config_db)等,這使得驗(yàn)證平臺(tái)可以根據(jù)實(shí)際需求靈活地搭建結(jié)構(gòu)。同時(shí),平臺(tái)能夠提供定向觸發(fā)和隨機(jī)觸發(fā)的組合激勵(lì)模式,自動(dòng)化進(jìn)行DUT(Design Under Test,待測(cè)設(shè)計(jì))的驗(yàn)證,并能對(duì)測(cè)試結(jié)果進(jìn)行收集比對(duì),有效提高了驗(yàn)證覆蓋率,實(shí)現(xiàn)錯(cuò)誤快速定位。
本文以雷達(dá)系統(tǒng)中的數(shù)字下變頻模塊為例,以UVM為架構(gòu),搭建了完整的可重用功能驗(yàn)證平臺(tái),針對(duì)提取的功能點(diǎn)通過構(gòu)造受約束的隨機(jī)測(cè)試激勵(lì),對(duì)模塊進(jìn)行了充分高效的驗(yàn)證,并對(duì)覆蓋率進(jìn)行了分析。
2驗(yàn)證對(duì)象和UVM
2.1數(shù)字下變頻原理概述
在相控陣?yán)走_(dá)的接收前端一般需要進(jìn)行數(shù)字下變頻,將一定范圍帶寬的雷達(dá)回波中頻信號(hào)頻譜搬移至基帶,從中提取所需要的窄帶信號(hào),在保留有效信息的同時(shí)減少采樣點(diǎn)數(shù),進(jìn)一步降低數(shù)據(jù)采樣速率,因此信號(hào)的數(shù)據(jù)率和帶寬是功能驗(yàn)證的主要指標(biāo)。數(shù)字下變頻的基本原理如圖1所示,對(duì)一個(gè)雷達(dá)回波信號(hào)有:
經(jīng)過低通濾波和抽取后得到低速基帶信號(hào),IQ兩路分別為信號(hào)的同向分量和正交分量。
2.2 UVM驗(yàn)證平臺(tái)
UVM驗(yàn)證平臺(tái)由一些可重用的驗(yàn)證組件通過一定的層級(jí)結(jié)構(gòu)組成,每個(gè)組件都由基類派生得到,擁有特定的功能,能夠?qū)崿F(xiàn)數(shù)據(jù)與協(xié)議的解耦,保證了平臺(tái)能夠自動(dòng)化執(zhí)行。由于采用了層次化的驗(yàn)證結(jié)構(gòu),平臺(tái)經(jīng)過頂層配置即可以遍歷的方式自動(dòng)調(diào)用各驗(yàn)證組件,實(shí)現(xiàn)了各個(gè)組件的自由組合,大大提高了可重用性。一個(gè)典型和最基本的UVM平臺(tái)架構(gòu)如圖2所示,包含了代理組件(agent)和環(huán)境組件(env)兩個(gè)基本類。在環(huán)境組件中集成了一個(gè)或多個(gè)代理組件,參考模型和記分板。每個(gè)代理組件中封裝了定序器(Sequencer),序列發(fā)生器(se-quence),驅(qū)動(dòng)器fDriverl和監(jiān)視器(Monitor)。在驗(yàn)證平臺(tái)運(yùn)行后,In_agent中的定序器從序列發(fā)生器接收產(chǎn)生的TLM激勵(lì)數(shù)據(jù),然后將其發(fā)送到代理的驅(qū)動(dòng)器上,驅(qū)動(dòng)器將激勵(lì)的數(shù)值賦到相應(yīng)的接口信號(hào)中以驅(qū)動(dòng)DUT的輸人,In_agent中的監(jiān)視器將這些輸入信號(hào)同步發(fā)送至參考模型,Out_agent中的監(jiān)視器接收經(jīng)DUT產(chǎn)生的輸出信號(hào),記分板比對(duì)參考模型和DUT兩者的輸出得到驗(yàn)證結(jié)果。
3驗(yàn)證平臺(tái)實(shí)現(xiàn)方法
基于UVM驗(yàn)證方法學(xué),結(jié)合數(shù)字下變頻系統(tǒng)特點(diǎn)搭建的模塊級(jí)驗(yàn)證平臺(tái)包含了測(cè)試項(xiàng),驗(yàn)證環(huán)境和測(cè)試序列三個(gè)方面,其總體結(jié)構(gòu)如圖3所示。對(duì)DDC模塊的功能特性進(jìn)行驗(yàn)證,需要搭建完整的驗(yàn)證環(huán)境并產(chǎn)生受約束的隨機(jī)激勵(lì),同時(shí)對(duì)結(jié)果進(jìn)行校驗(yàn)。
3.1測(cè)試項(xiàng)編寫
整個(gè)驗(yàn)證平臺(tái)的搭建按照自頂向下的順序進(jìn)行。在驗(yàn)證平臺(tái)的頂層(top- tb)實(shí)例化整個(gè)DDC模塊作為DUT,同時(shí)用Sys-temVerilog的run_test函數(shù)創(chuàng)建一個(gè)UVM測(cè)試類ftop_tesI),這個(gè)測(cè)試類中包含了UVM頂層驗(yàn)證環(huán)境(Top_env)和所有的驗(yàn)證組件并使之運(yùn)行。通過關(guān)鍵詞Interface定義一組虛擬接口(Vim-al Interface)來連接基于類的UVM驗(yàn)證環(huán)境與基于RTL模型的DUT。使用UVM配置數(shù)據(jù)庫方法使得虛擬接口在整個(gè)驗(yàn)證環(huán)境可用。一個(gè)測(cè)試類的核心部分包括如下組件:序列發(fā)生器,驅(qū)動(dòng)器,監(jiān)視器,驗(yàn)證環(huán)境,代理,記分板,參考模型,覆蓋率收集器。
3.2驗(yàn)證環(huán)境搭建
UVM驗(yàn)證環(huán)境在測(cè)試類中創(chuàng)建,驗(yàn)證環(huán)境是一個(gè)自定義類,從uvm_env基類擴(kuò)展得到,包含了一個(gè)配置組件(Config),一個(gè)覆蓋率收集器(Coverage),一個(gè)記分板(Scoreboard)及若干代理(AgenI)。代理組件派生自u(píng)vm_agent基類,每個(gè)代理與DUT中的一類I/O管腳連接并使用對(duì)應(yīng)的接口協(xié)議。根據(jù)數(shù)字下變頻功能模塊的特性,DUT與驗(yàn)證平臺(tái)進(jìn)行數(shù)據(jù)交互主要有以下三類接口信號(hào),需要設(shè)置三個(gè)代理:
1)DDS需要依據(jù)同步串口解析出的頻率調(diào)諧字,頻率步進(jìn)調(diào)諧字,相位調(diào)諧字和脈寬碼等波形參數(shù),產(chǎn)生不同頻率、脈寬的本振波形信號(hào),建立同步串口代理組件;
2)對(duì)采集的雷達(dá)中頻回波信號(hào)進(jìn)行模數(shù)轉(zhuǎn)換,并產(chǎn)生基帶IQ調(diào)制信號(hào),建立AD代理組件;
3)模塊需要的時(shí)鐘復(fù)位及導(dǎo)前等控制信號(hào),建立通用輸入輸出接口fGPIO)代理組件;
驗(yàn)證平臺(tái)的參數(shù)配置在頂層完成,該平臺(tái)的配置組件通過uvm_object基類創(chuàng)建得到,對(duì)相應(yīng)代理中是否對(duì)功能覆蓋率進(jìn)行收集,是否為主動(dòng)代理等配置參數(shù)進(jìn)行設(shè)定并添加所有輸入輸出變量的實(shí)際位寬。利用UVM配置數(shù)據(jù)庫(uVM_coiffig_db)這一機(jī)制將全部配置信息納入U(xiǎn)VM配置數(shù)據(jù)庫中,底層代理組件將從庫中獲取頂層的配置信息,從而完成整個(gè)測(cè)試環(huán)境的配置。
本設(shè)計(jì)中所有的代理組件為設(shè)置為主動(dòng)模式,即在每個(gè)代理組件劃分為輸入代理和輸出代理兩個(gè)部分,在每個(gè)代理中使用監(jiān)視器組件分別對(duì)DUT的輸入和輸出進(jìn)行監(jiān)測(cè),該組件擴(kuò)展自u(píng)vm_monitor基類。在每個(gè)采樣時(shí)鐘的上升沿對(duì)數(shù)字下變頻各子模塊輸出信號(hào)和經(jīng)濾波抽樣的基帶IQ信號(hào)進(jìn)行采集,并將得到的數(shù)據(jù)保存為UVM變量發(fā)送至記分板和覆蓋率收集器。
在測(cè)試環(huán)境中各代理通過監(jiān)視器建立與功能覆蓋率收集器的連接。在本設(shè)計(jì)中,功能覆蓋率收集器要求對(duì)輸入信號(hào)完全覆蓋,在覆蓋組中指定整個(gè)DUT實(shí)例為采樣對(duì)象,覆蓋點(diǎn)包括了AD采樣后的數(shù)字信號(hào)和最后輸出的基帶10信號(hào)。平臺(tái)通過調(diào)用UVM的Write函數(shù)從監(jiān)視器中拷貝序列項(xiàng)句柄,并通過Sample函數(shù)統(tǒng)計(jì)信號(hào)端口的區(qū)間遍歷信息,檢測(cè)在每個(gè)區(qū)間上被擊中的情況。
驗(yàn)證平臺(tái)記分板的主要功能是驗(yàn)證DUT的實(shí)際輸出是否和預(yù)期一致。組件中包含了一個(gè)Matlab語言編寫的完整算法作為DDC模塊的參考模型,采用與發(fā)送至DUT完全相同的輸入信號(hào)作為激勵(lì),通過監(jiān)視器監(jiān)視DUT輸出的方法將實(shí)際結(jié)果和預(yù)測(cè)結(jié)果進(jìn)行比對(duì)來判斷相關(guān)功能是否實(shí)現(xiàn)。
3.3測(cè)試序列執(zhí)行
在UVM中,序列項(xiàng)對(duì)象(sequence_item)是最基本的通信單元,用來定義UVM環(huán)境內(nèi)部變量及隨機(jī)化約束,它通過繼承uvm_sequence_item基類得到。在本設(shè)計(jì)的不同代理組件中有不同定義,串口代理中規(guī)定了串行數(shù)據(jù)幀長及傳輸字節(jié)間延時(shí),在GPIO接口代理中為系統(tǒng)導(dǎo)前和復(fù)位信號(hào),在AD接口代理中為數(shù)字化的AD信號(hào)和IQ數(shù)據(jù)。
驗(yàn)證平臺(tái)的核心是要根據(jù)設(shè)計(jì)的測(cè)試用例產(chǎn)生一系列的隨機(jī)測(cè)試序列。這由UVM中的序列發(fā)生器組件完成,它派生自u(píng)vm_sequenee基類,根據(jù)設(shè)定的變量約束產(chǎn)生所有的測(cè)試激勵(lì)。在各代理組件中分別產(chǎn)生不同的序列,將這些序列組合后按照一定順序?qū)㈦S機(jī)化后的序列項(xiàng)對(duì)象的值傳遞至驅(qū)動(dòng)器。在AD接口代理中,根據(jù)設(shè)定的采樣頻率,采樣點(diǎn)數(shù),中心頻率,信號(hào)帶寬轉(zhuǎn)換成對(duì)應(yīng)窄帶回波信號(hào)的脈沖寬度,頻率變換率等參數(shù),并進(jìn)一步計(jì)算出信號(hào)對(duì)應(yīng)的復(fù)數(shù)表達(dá)式并進(jìn)行截位,同時(shí)進(jìn)行模數(shù)轉(zhuǎn)換。作為測(cè)試激勵(lì)數(shù)據(jù)的AD采樣信號(hào)為寬帶高速數(shù)據(jù)流,具有高位寬,高深度,高數(shù)據(jù)率的特點(diǎn),通過在序列發(fā)生器中聲明DPI接口調(diào)用C函數(shù)模型完成這一過程。在GPIO的序列發(fā)生器中產(chǎn)生負(fù)脈沖寬度為lus的導(dǎo)前和復(fù)位信號(hào)。在串口序列發(fā)生器中根據(jù)數(shù)據(jù)字典生成15MHZ帶寬的載頻信號(hào)作為本振進(jìn)行頻譜搬移。
在本驗(yàn)證環(huán)境中用從uvm_sequencer基類擴(kuò)展得到的定序器作為序列項(xiàng)路由。每個(gè)代理的定序器從序列發(fā)生器處接收序列,然后將其發(fā)送到對(duì)應(yīng)的驅(qū)動(dòng)器上。在定序器中定義序列項(xiàng)的類型后可以對(duì)同一代理添加多個(gè)序列,并指定需要發(fā)送的序列。每個(gè)代理組件的序列發(fā)生器設(shè)置一個(gè)默認(rèn)執(zhí)行序列de-fault_sequence,同時(shí)在測(cè)試類中設(shè)定并啟動(dòng)一個(gè)虛擬序列,該序列將不同代理的默認(rèn)序列進(jìn)行組合并負(fù)責(zé)調(diào)度協(xié)調(diào)執(zhí)行,并在頂層調(diào)用UVM的工廠機(jī)制對(duì)測(cè)試序列進(jìn)行重載,選擇在序列發(fā)生器中所用的序列。
驅(qū)動(dòng)器派生自u(píng)vm_driver基類,按照一定的時(shí)序關(guān)系將序列項(xiàng)轉(zhuǎn)化為端口信號(hào)。當(dāng)驅(qū)動(dòng)器獲得序列項(xiàng)的時(shí)候,為了配合轉(zhuǎn)換驅(qū)動(dòng)的值到接口變量需要和序列發(fā)生器,DUT兩者進(jìn)行同步,同步過程通過數(shù)據(jù)阻塞傳輸機(jī)制完成。驗(yàn)證環(huán)境在頂層以start方式啟動(dòng)虛擬序列后,序列發(fā)生器在虛擬序列中包含的子序列會(huì)在對(duì)應(yīng)的定序器上執(zhí)行,每個(gè)代理的序列發(fā)生器在實(shí)例化序列項(xiàng)對(duì)象后使用body函數(shù)調(diào)用start_item語句,start_item阻塞直到驅(qū)動(dòng)器請(qǐng)求一個(gè)序列項(xiàng),在uvm_driver基類中有一個(gè)內(nèi)建端口seq_item_port,包含了get_next_item和item_done一對(duì)系統(tǒng)函數(shù),驅(qū)動(dòng)器調(diào)用seq_item_port.get_next_item請(qǐng)求一個(gè)序列項(xiàng),然后驅(qū)動(dòng)器阻塞直到收到一個(gè)序列項(xiàng)。在每個(gè)數(shù)據(jù)采集時(shí)鐘的上升沿,驅(qū)動(dòng)器將序列項(xiàng)的值賦給接口變量,然后調(diào)用seq_item_port_item_done解鎖序列發(fā)生器,反饋握手信號(hào),說明一次傳遞結(jié)束,執(zhí)行finish_item任務(wù),body函數(shù)退出,解鎖測(cè)試的start,表明一個(gè)測(cè)試用例已完成。
4結(jié)果與分析
對(duì)于已搭建的測(cè)試平臺(tái),不同接口設(shè)定多個(gè)不同的測(cè)試用例對(duì)功能進(jìn)行驗(yàn)證。在120MHz波形采集時(shí)鐘和數(shù)據(jù)采集時(shí)鐘下,串行接口按照串行協(xié)議發(fā)送幀數(shù)據(jù),根據(jù)解析出的各波形參數(shù)生成本振載波;AD接口代理發(fā)送70MHz帶寬的雷達(dá)窄帶回波信號(hào),通過C語言的文件處理函數(shù)fwrite將數(shù)字化的正交基帶IQ調(diào)制信號(hào)記錄并保存在文本文件中,在對(duì)其歸一化處理后倒入matlab進(jìn)行頻譜分析,可以得到如圖4所示的經(jīng)抽取濾波后IQ信號(hào)頻率和幅度分布,其信噪比SNR、無雜散動(dòng)態(tài)范圍SFDR等信號(hào)指標(biāo)均在正常范圍。
在接收AD代理發(fā)送的數(shù)字信號(hào)序列時(shí),經(jīng)過數(shù)字下變頻處理的基帶信號(hào)仿真波形如圖5所示,其中CHl組代表經(jīng)數(shù)字下變頻DUT輸出的數(shù)據(jù),CH2組為通過Matlab參考模型輸出得到的數(shù)據(jù)。FLAG_IQ為IQ信號(hào)采樣標(biāo)志位,高電平代表有效數(shù)據(jù),低電平為重復(fù)數(shù)據(jù),I_SP、Q_SP是濾波抽取后得到的信號(hào)同向分量和正交分量,由光標(biāo)測(cè)算可以得到每經(jīng)過100008ps對(duì)信號(hào)進(jìn)行一次抽樣,數(shù)據(jù)率約為10msps,滿足系統(tǒng)要求。經(jīng)對(duì)比,兩組信號(hào)的數(shù)值和時(shí)序完全一致,這說明數(shù)字下變頻模塊的功能已經(jīng)基本實(shí)現(xiàn)㈣。
針對(duì)UVM的功能覆蓋率,本驗(yàn)證環(huán)境提供了較為直接準(zhǔn)確的方式。如圖6所示,驗(yàn)證平臺(tái)對(duì)實(shí)例化的工程各單元輸入和輸出信號(hào)區(qū)間進(jìn)行了采集,其功能覆蓋率達(dá)到了100%。對(duì)于傳統(tǒng)驗(yàn)證平臺(tái),由于并沒有特定的方法對(duì)功能覆蓋率進(jìn)行統(tǒng)計(jì),很難得到功能覆蓋率的具體數(shù)據(jù)。
5結(jié)束語
本文基于雷達(dá)系統(tǒng)中數(shù)字下變頻模塊的驗(yàn)證需求,以UVM驗(yàn)證方法學(xué)為基本架構(gòu),借助SystemVerilog語言特性和UVM提供的相關(guān)內(nèi)建功能,選擇合理的配置機(jī)制,提出了一個(gè)分層結(jié)構(gòu)的驗(yàn)證平臺(tái)設(shè)計(jì)方案。該方案建立起的驗(yàn)證平臺(tái)具備良好的靈活性、重用性和易維護(hù)性,測(cè)試團(tuán)隊(duì)采用此統(tǒng)一架構(gòu)可有效提高測(cè)試效率。最后,通過設(shè)計(jì)不同類型的測(cè)試用例,高效地進(jìn)行了100%的功能覆蓋率測(cè)試,實(shí)現(xiàn)了全面驗(yàn)證。