牛文升 王瑞剛 張磊 馬曉娜
摘要:文章采用通用驗證方法學(xué)(UVM)搭建驗證平臺,以高速光纖傳輸系統(tǒng)中的數(shù)字信號處理芯片的盲均衡器作為驗證對象,重點分析了UVM驗證平臺的搭建思想,產(chǎn)生隨機(jī)化的測試向量,對盲均衡器進(jìn)行全面驗證,從而達(dá)到覆蓋率的要求,通過寄存器模型和自動化腳本的使用,提高驗證效率和平臺的可重用性。驗證結(jié)果表明,通過這種面向?qū)ο蟮膶哟涡越7椒?,可以大幅縮短平臺的維護(hù)和開發(fā)時間,采用該驗證方法的功能覆蓋率為100%,代碼覆蓋率為98%,翻轉(zhuǎn)覆蓋率為97%。
關(guān)鍵詞:UVM;盲均衡器;寄存器模型;覆蓋率;自動化驗證
隨著集成電路設(shè)計向超大規(guī)模發(fā)展,芯片驗證工作的難度不斷增大,驗證的工作量已經(jīng)占到整個SOC研發(fā)的70%左右,因此功能驗證效率己成為數(shù)字芯片研發(fā)進(jìn)度的重要影響因素。UVM通用驗證方法學(xué)(Universal VerificationMethodology)幾乎完全繼承于OVM (Open VerificationMethodology)同時又采納了Synopsys在VMM (VerificationMethodology Manual)中的寄存器解決方案RAL (RegisterAbstraction Layer),并且還吸收了VMM中的一些優(yōu)秀的實現(xiàn)方式,從而成為業(yè)界第一個通用、開放的驗證方法學(xué),代表了目前驗證方法學(xué)的發(fā)展方向。UVM采用標(biāo)準(zhǔn)的分層驗證結(jié)構(gòu),解決了驗證平臺可重用性與標(biāo)準(zhǔn)化的問題,提高了驗證效率,加快了IC設(shè)計的速度。
本文以高速光纖通信系統(tǒng)中DSP芯片中的盲均衡器為例,應(yīng)用UVM驗證方法學(xué)搭建可重用與自動化的UVM驗證平臺,產(chǎn)生大量受約束的隨機(jī)化激勵,提取功能測試點,構(gòu)造驗證場景,通過覆蓋率統(tǒng)計和回歸迭代,對此子系統(tǒng)進(jìn)行充分驗證,并應(yīng)用寄存器抽象層驗證技術(shù)和解決方案RAL,高效地完成寄存器相關(guān)的驗證任務(wù)。
1 UVM驗證平臺
UVM驗證平臺是基于System Verilog開發(fā)的驗證環(huán)境開發(fā)庫,常用的一系列標(biāo)準(zhǔn)類如:uvm transaction,uvmsequence, uvm_sequencer, uvm_agent, uvm_driver, uvmdriver,uvm test等,方便于繼承和重載。uvm_obje ct類為父類,通過多層繼承和重載,擴(kuò)展為常用的uvm transation(TLM建模)、uvm_component(組件描述)以及uvm_phase(進(jìn)程控制)3種基本類,并使用Factory機(jī)制對所屬成員類,通過建立表格和宏完成注冊管理,Phase機(jī)制是使平臺中各種各樣的uvm_component按照各自的需求可以階段性執(zhí)行的一種自動化的機(jī)制,增加了驗證平臺在各個階段可控性和復(fù)用性。UVM驗證平臺架構(gòu)主要是由通用驗證組件(Universal Verification Component UVC)構(gòu)成。每個uvc都是功能完備、可配置、封裝好的驗證環(huán)境。為了便于重用,UVM平臺將uvm driver,uvm_sequencer,uvmmonit or封裝成uvm_agent類,作為最重要的可重用部件,使用配置類將uvm_agent配置成active或passive模式,passive模式只實例化monitor,不驅(qū)動總線,僅負(fù)責(zé)監(jiān)測總線。UVM驗證平臺是如圖1所示的樹形層次化結(jié)構(gòu)管理,這些可配置可重用的uvc能夠加快驗證平臺的搭建,縮短開發(fā)復(fù)雜IC的驗證時間。
2 驗證對象簡介
該ASIC是一款相干接收解調(diào)數(shù)字信號處理芯片,支持高速長距離光傳輸系統(tǒng)和高速城域光傳輸系統(tǒng),用于WDM產(chǎn)品線的線路側(cè)光模塊中,在該芯片內(nèi)部,實現(xiàn)了ADC采樣處理、動態(tài)時延跟蹤,色度色散偏振膜色散的評估補償、多路偏振信號的解復(fù)用及頻偏和相偏的評估修正等。
本文以該芯片中CMA盲均衡器為驗證對象,該盲均衡器的結(jié)構(gòu)如圖2所示,主要由輸入輸入數(shù)據(jù)FFT模塊(DIF)、頻域濾波模塊(FLTR)、輸出數(shù)據(jù)IFFT模塊(DOIF)、系數(shù)更新與調(diào)整模塊(CCA)、系數(shù)調(diào)整控制模塊(CCTRL)、誤差計算與收斂判決模塊(EMSE)、系數(shù)FFT模塊(CFFT)、數(shù)據(jù)抽取與整形模塊(RECT)、APB解析模塊(APB)等功能模塊組成。該子系統(tǒng)主要用于補償PMD色散,補償殘余CD,完成偏振解復(fù)用。
3 基于UVM的盲均衡器驗證平臺的搭建
3.1 UVM驗證平臺搭建思路
此驗證平臺使用標(biāo)準(zhǔn)的UVM架構(gòu),整個平臺的搭建以uvc為基礎(chǔ),如圖3所示,UVM驗證環(huán)境和DUT通過虛接口連接。UVM驗證平臺包括事務(wù)數(shù)據(jù)、序列發(fā)生器、驅(qū)動器、監(jiān)視器、參考模型、記分板等組件組成,本設(shè)計例化4個agent,inputagent, inner_agent, outputagent和cpuagent,inputagent配置為active模式,用于配置和檢測總線,inner_agent和outputagent配置為passive模式,只用于檢測總線,在測試用例的buildphase進(jìn)行如下設(shè)置:其中inner_agent例化inner_ monitor用于采集DUT的中間節(jié)點數(shù)據(jù)。
uvm configdb# (uvm_act ivepassiveenum):: set (this,“mo cma env. mo lnputagent,,“me is active”,UVMACTIVE);
并使用configdb機(jī)制的參數(shù)傳遞功能在相應(yīng)的agent中獲得配置參數(shù):
uvm
configdb# (uvm_act ivepas sive enum):: get (this,“”,“me is active”, meisactive):
通過傳遞的參數(shù)值決定是否需要例化驅(qū)動器和序列發(fā)生器,從而提高平臺的可重用性。
寄存器抽象層的作用一方面用于驗證對寄存器的讀寫功能,另一方面用于其他場景驗證前配置寄存器的值,在本驗證平臺中,寄存器模型對于寄存器的訪問使用前門模式,訪問操作分為讀和寫2種,無論讀或?qū)懖僮鳎拇嫫髂P投紩ㄟ^sequence產(chǎn)生一個uvm_re gbu sop的變量,此變量存儲著操作類型和操作地址,如果是寫操作,還包含要寫入的數(shù)據(jù)。此變量的信息要通過一個適配器adapter轉(zhuǎn)換后交給cpusequencer,隨后交給cpudriver,由cpudriver實現(xiàn)最終的前門訪問讀寫操作。
適配器用于變量uvm_regbusop與主機(jī)接口總線協(xié)議之間的轉(zhuǎn)換,包括寄存器模型到接口總線的轉(zhuǎn)換和接口總線到寄存器模型的轉(zhuǎn)換,其中reg2bus的關(guān)鍵代碼如下,bus2reg的正好相反。
virtual function uvm_sequenceitem reg2bus( const ref uvm_regbusop rw)
adapt er
tr=adapter:: typeid::creat(“adapter”):
tr. kind= (rw.kind==UVM_READ)? READ:WRITE;
tr.addr=rw. addr;
tr. data=rw.data:
return tr:
endfunction:reg2bus
CPUagent模擬CPU行為,在DUT剛啟動時,用于配置器寄存器的值,只有配置完成后,驅(qū)動器才會發(fā)送激勵,本設(shè)計使用virtual sequencer作為統(tǒng)一調(diào)度,利用其body的順序執(zhí)行完成2個sequence的同步。
task body() :
…‘
uvm_regsequence moregseq;
cmainputseq moinputseq :
uvm_doon (moregseq, psequencer. mo_cpus eqr):
$display(“cpu seqr finish!??!”):
uvm_doon(m oinputseq, psequencer. moinputseqr):
$display(“input seqr finish!??!”):
endtask:body
并且在virtual sequence中應(yīng)用objection機(jī)制來控制驗證平臺的關(guān)閉。
參考模型采用matlab算法模型,UVM平臺啟動后,寄存器模型通過frontdoor方式將寄存器配置值寫入DUT,sequencer負(fù)責(zé)調(diào)度sequence產(chǎn)生操作實務(wù),并通過port機(jī)制將受約束的隨機(jī)激勵發(fā)送給driver,以inputagent為例:inputsequencerjinputdriver在agent例化后,通過TML連接。
modr v.seq item_port. connect (moseqr.seq itemexport):
Inner_ monitor與output_monitor分別在相應(yīng)虛接口上采集DUT的中間節(jié)點和輸出數(shù)據(jù),將matlab仿真的中間節(jié)點數(shù)據(jù)和輸出數(shù)據(jù)與DUT上采集的中間節(jié)點數(shù)據(jù)和輸出數(shù)據(jù)發(fā)送到記分板中進(jìn)行在線實時比對,通過數(shù)據(jù)匹配情況檢查RTL設(shè)計與matlab算法模型的一致性,進(jìn)而驗證RTL設(shè)計的正確性。
3.2 保證RTL設(shè)計和參考模型輸入激勵和寄存器的一致性
本文使用寄存器模型RAL和inputagent協(xié)調(diào)工作向DUT及參考模型中輸入激勵和寄存器配置值,如圖4所示,在不同驗證場景下,將相應(yīng)的寄存器配置值寫入寄存器模型,寄存器模型將受約束的隨機(jī)值或復(fù)位值與testcase配置的寄存器值一方面通過APB總線配置DUT中相應(yīng)的寄存器,另一方面打印寄存器配置文件,matlab讀取此文件為參考模型中寄存器相應(yīng)的變量賦值。
寄存器配置完成后,virtual sequence調(diào)度inputsequence產(chǎn)生transaction,并通過port機(jī)制將受約束的隨機(jī)激勵發(fā)送給inputdriver,inputdriver將操作實務(wù)翻譯成符合時序要求的pin級時序信號驅(qū)動到虛接口上做為DUT的激勵,同時input_monit or在虛接口上采集數(shù)據(jù)通過分析口輸發(fā)送給參考模型。
inputdriver將操作實務(wù)翻譯成符合時序要求的pin級時序信號驅(qū)動到虛接口上作為DUT的激勵,同時inputmonit or在虛接口上采集數(shù)據(jù)通過分析口輸發(fā)送給參考模型。開始matlab仿真。
$system(“matlab
nosplash -nodesktop -r\“adapt_matlabtop; quit\””):
為了驗證某些寄存器的在線切換功能,提高RTL設(shè)計的健壯性,inputagent既用于產(chǎn)生隨機(jī)激勵又用于產(chǎn)生寄存器配置值,當(dāng)需要切換某些寄存器配置值時,只需在testcase中合適的仿真時刻對其重新賦值,便能同時更新DUT及參考模型中的寄存器配置值。通過這種設(shè)計思想就能保證DUT和refm的輸入數(shù)據(jù)和寄存器配置值始終保持一致。
3.3 自動化驗證流程
本平臺利用Makefile的編譯組織和perl腳本的文字處理功能,將編譯、仿真、種子選擇、測試場景選擇、覆蓋率收集、覆蓋率數(shù)據(jù)回歸、異常查看、結(jié)果分析等功能設(shè)計為自動化的流程。
驗證人員通過向腳本中傳入命令參數(shù),調(diào)用相應(yīng)的testcase即可驗證相應(yīng)的場景,從而提高驗證效率,加快芯片研制進(jìn)度。
4 驗證結(jié)論分析
從芯片研制規(guī)范中提取功能點,構(gòu)建驗證用例125條,對此均衡器的FFT模塊、蝶形濾波模塊、系數(shù)調(diào)整控制模塊、系數(shù)更新模塊、誤差計算與收斂判決模塊進(jìn)行充分驗證。由于系數(shù)調(diào)整控制模塊算法復(fù)雜,有大量控制信號,通過對此驗證平臺的重用,專門為控制模塊搭建UVM驗證平臺,構(gòu)建測試用例53條,所有規(guī)劃的場景驗證完畢后,使用makefile腳本對覆蓋率一鍵回歸,查看覆蓋盲區(qū),有針對性地規(guī)劃驗證場景,構(gòu)造邊界用例對RTL設(shè)計充分驗證。目前,通過通過覆蓋率回歸迭代,功能覆蓋率已達(dá)到100%,代碼覆蓋率達(dá)98%,toggle覆蓋率可達(dá)95%。剩余難覆蓋的情況比如RTL設(shè)計中的default語句,多個16位上報計數(shù)器計滿保持功能等。
5 結(jié)語
本文在深入理解UVM驗證思想的基礎(chǔ)上搭建UVM驗證平臺,對高速光傳輸系統(tǒng)中相干接收解調(diào)DSP芯片中的盲均衡器進(jìn)行了充分驗證,靈活應(yīng)用UVM中sequence機(jī)制、phase機(jī)制、factory機(jī)制configdb機(jī)制,寄存器模型等快速搭建可重用性和擴(kuò)展性強(qiáng)的UVM驗證平臺,體現(xiàn)了UVM驗證方法學(xué)的優(yōu)越性。通過RTL設(shè)計與matlab黃金模型的關(guān)鍵數(shù)據(jù)比對,仿真波形檢查來證明此盲均衡器設(shè)計的正確性,并且通過覆蓋率回歸迭代,高效且充分地完成驗證工作。