吳迪飛



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