一種uvm驗證環(huán)境中復用c程序測試向量的方法
【技術領域】
[0001]本發(fā)明涉及芯片邏輯驗證技術領域,具體地說是一種實用性強、UVM驗證環(huán)境中復用C程序測試向量的方法。
【背景技術】
[0002]UVM是芯片驗證業(yè)界最新研發(fā)的一種驗證方法學。工程師用它可創(chuàng)建堅實、可重用、具互操作性的驗證組件和驗證平臺。UVM提供基于SystemVerilog語言開發(fā)的一套庫函數(shù),工程師通過調用庫可以省去自己從零開始開發(fā)驗證環(huán)境的麻煩。
[0003]UVM與SystemVerilog為驗證人員開發(fā)面向對象的驗證環(huán)境提供了方便,但是因為此類驗證方法使用時間并不太長,很多工程實際問題并沒有統(tǒng)一明確的解決方案,比如如何從之前的基于Verilog或者基于C的驗證環(huán)境無縫過度到新的驗證環(huán)境。大公司都各自有不同的處理方法,小一些的設計團隊,甚至畏懼新技術帶來的挑戰(zhàn),仍然固守落后的方法,不愿意嘗試效率更高,但是需要承擔一些風險的方法。
[0004]很多帶有微處理器的SOC設計項目所使用的傳統(tǒng)的驗證環(huán)境,是基于Verilog模型以及類似C驅動程序的測試向量組成的。C程序模擬芯片中微處理器的啟動程序,啟動后對芯片中個組件的寄存器進行讀寫操作,將實際得到的寄存器值與期望值進行比較,判斷測試是否通過。仿真時,C程序被編譯為2進制文件,由Verilog測試平臺讀入到微處理器的存儲器模型中,然后處理器開始執(zhí)行C代碼編譯出的程序,模擬芯片的行為。此類驗證環(huán)境基本是UVM標準環(huán)境出現(xiàn)前所有SOC設計項目的通用模型。對于大一些的項目,其中的C測試程序可能會有幾千個。如果我們想升級這種驗證環(huán)境為新的UVM環(huán)境,必然希望復用這些C代碼編寫的測試程序。
[0005]UVM沒有此類問題的明確解決方案,但是鑒于實現(xiàn)這一復用有迫切需求,我們可以將基于SystemVerilog編寫的UVM驗證組件的功能進行擴展,使之能夠完成此功能。基于此,現(xiàn)提供一種UVM驗證環(huán)境中復用C程序測試向量的方法。
【發(fā)明內容】
[0006]本發(fā)明的技術任務是針對以上不足之處,提供一種實用性強、UVM驗證環(huán)境中復用C程序測試向量的方法。
[0007]一種UVM驗證環(huán)境中復用C程序測試向量的方法,其具體實現(xiàn)過程為:
通過對UVM驗證組件增加DPI直接程序接口,使SOC測試向量能夠驅動SV語言編寫的UVM驗證組件,并能在UVM驗證環(huán)境中被復用。
[0008]所述復用C程序測試向量的具體過程為:
對已有的C程序測試向量進行分析;
對UVM驗證環(huán)境功能進行擴充;
通過DPI接口,將UVM驗證環(huán)境與C程序測試向量進行集成。
[0009]所述復用C程序測試向量的詳細過程為: 對已有的C程序測試向量的底層寄存器操作進行分析;
編寫與C程序中寄存器操作相應的SV DPI ;
編寫UVM組件中sequence調用所需的輔助函數(shù);
在UVM頂層test中編寫調用C程序測試向量的激勵;
完成UVM環(huán)境與C程序測試向量的集成。
[0010]C程序驅動UVM驗證環(huán)境,施加激勵到被測對象,其具體過程為:
UVM驗證環(huán)境啟動,執(zhí)行測試用例中的設備驅動測試程序;
設定SV語言驗證環(huán)境與C驅動中各種變量;
調用C語言驅動程序;
C語言驅動程序對寄存器、存儲空間進行讀寫操作;
C程序到SV語言的映射程序調用DPI ;
DPI設置SV環(huán)境中的各種變量;
在發(fā)送機構上啟動device_driver_sequence,結束程序。
[0011]所述UVM環(huán)境與C程序測試向量的集成過程為:
啟動 device_driver_sequence 發(fā)送 sequence 給被測對象 dut ;
UVM 中的 device_driver_sequence 啟動 C 程序中的 c_device_driver ; c_device_driver調用SV DPI中的讀寫函數(shù); device_driver_sequence中的讀寫函數(shù)發(fā)送數(shù)據(jù)給被測對象dut ;
通過以上在SV語言與C程序間的來回切換,使得C程序c_device_driver控制UVM組件中device_driver_sequence向被測對象發(fā)送數(shù)據(jù)。
[0012]所述C程序在調用SV DPI時,通過序列號記錄器找到需要發(fā)送數(shù)據(jù)的sequence,并且讓這個sequence發(fā)送數(shù)據(jù),該序列號記錄器為一個構建的列表,存入每個sequence的唯一序列號,當 UVM 中的 device_driver_sequence 啟動 C 程序中的 c_device_driver 時,將這個序列號記錄下來,而在c_device_driver的讀寫函數(shù)需要回調sequence的讀寫時,使用這個序列號查找到相應的sequence。
[0013]本發(fā)明的一種UVM驗證環(huán)境中復用C程序測試向量的方法,具有以下優(yōu)點:
本發(fā)明提出的一種UVM驗證環(huán)境中復用C程序測試向量的方法,使得舊有的基于類似
C驅動程序的傳統(tǒng)SOC測試向量,不必做改動,就能被集成到基于UVM驗證組件搭建的驗證環(huán)境中得到繼續(xù)使用,節(jié)省了重新開發(fā)測試向量的時間,提高了老舊驗證環(huán)境的復用效率,安全高效,實用性強,易于推廣。
【附圖說明】
[0014]附圖1為UVM驗證環(huán)境中復用C程序測試向量的結構圖。
[0015]附圖2為UVM驗證環(huán)境中復用C程序測試向量仿真進程圖。
[0016]附圖3為UVM頂層test的代碼圖。
[0017]附圖4 為 device_driver_sequence 啟動 C 程序中的 c_device_driver 代碼圖。
[0018]附圖5為c_device_driver中啟動SV DPI讀寫程序。
[0019]附圖6 為 device_driver_sequence 中的讀寫程序。
[0020]附圖7為查找sequence的序列號記錄器。
【具體實施方式】
[0021]下面結合附圖和具體實施例對本發(fā)明作進一步說明。
[0022]本發(fā)明提供一種UVM驗證環(huán)境中復用C程序測試向量的方法,如附圖1、圖2所示,其具體實現(xiàn)過程為,
通過對UVM驗證組件增加DPI直接程序接口,使SOC測試向量能夠驅動SystemVerilog編寫的UVM驗證組件,并能在UVM驗證環(huán)境中被復用。
[0023]所述復用C程序測試向量的具體過程為:
對已有的C程序測試向量進行分析;
對UVM驗證環(huán)境功能進行擴充;
通過DPI接口,將UVM驗證環(huán)境與C程序測試向量進行集成。
[0024]所述復用C程序測試向量的詳細過程為:
對已有的C程序測試向量的底層寄存器操作進行分析;
編寫與C程序中寄存器操作相應的SV DPI ;
編寫UVM組件中sequence調用所需的輔助函數(shù);
在UVM頂層test中編寫調用C程序測試向量的激勵;