王鎮道 姚小姣












摘要:功能驗證能在芯片設計前期快速、低成本發現缺陷,對于保證設計質量具有重要意義.針對內核模塊驗證中指令序列隨機性差、測試用例編寫繁瑣和驗證平臺重用性差等問題,設計了一款8位精簡指令集內核驗證參考模型,通過對指令集單獨建模、可配置化參數設計等方法滿足了指令序列隨機組合的驗證需求和重用性,且結合自動化腳本的使用解決上述相關問題.將參考模型搭載UVM平臺對一款RISC架構的8位MCU內核進行驗證.驗證結果表明:集成了所設計參考模型的UVM平臺具有很好的魯棒性和重用性,缺陷數量收斂快,驗證周期更短,內核模塊的代碼和功能覆蓋率均達到100%.
關鍵詞:內核驗證;RISC-V;驗證;System Verilog語言
中圖分類號:TP332文獻標志碼:A
Design of Reference Model for Core’s Verification Based on Reduced Instruction Set
WANG Zhendao,YAO Xiaojiao
(College of Physics and Microelectronics Science,Hunan University,Changsha 410082,China)
Abstract:Functional verification can find defects quickly at a low cost in the early stage of chip design,which is 0f great significance to ensure design quality. In view of the problems of poor instruction sequence randomnes,cumbersome testcase writing and the verification platform ’s poor reusability in core module-level verification,an 8- bit RIS core verification reference model is designed. The model satisfies the verification requirements of the instruction sequences,random combination and reusability through independent modeling of the instruction set and configurable parameter design,and the use of automated scripts solves related problem above. The reference model equipped with the UVM platform is applied to verify an 8-bit MCU core with a RISC architecture. The results show that the UVM platform integrated with the designed reference model has good robustness and reusability,the number of defects converges quickly,and the verification cycle is shorter. The code coverage and function coverage of the core module reach 100%.
Key words:core verification;RISC-V;verification;System Verilog
隨著半導體工藝不斷突破新的極限,數字電路集成度和復雜度陡增,如何提升設計效率、縮短芯片設計周期、提高設計可靠性是IC設計急需解決的問題[1-2].功能驗證能夠在IC設計RTL階段發現設計缺陷,是在芯片硅前流程提高設計質量的最有效方式. 在復雜的IC設計中,設計開發時間的70%用于驗證[3],提高驗證效率和完備性對降低設計成本、縮短設計周期十分重要[4].微處理器可以說是數字芯片的“頭腦”,其性能和設計質量的好壞直接決定整個芯片的質量[5-6],而功能驗證是微處理器設計驗證的重中之重[7],如何優化微處理器的功能驗證具有重要的現實意義.
模擬仿真方法是當前微處理器功能驗證的主要方法[8],包括功能覆蓋率驅動的基于UVM的RTL驗證[9]和FPGA硬件原型驗證[10]等.為提高微處理器驗證的效率和可靠性,研究者們提出了很多方案,如RTL動態仿真與FPGA硬件仿真相結合[11]、分階段引入處理器局部建模[8]等.文獻[9]采用功能覆蓋率為導向的UVM驗證方法對DUT進行驗證,實現了內核驗證所需的功能覆蓋范圍且驗證平臺可重用性好,但仿真速度存在局限性;文獻[8]為提高驗證收斂速度,在文獻[9]方法的基礎上對微處理器局部建模,在驗證后期利用局部模型指導測試激勵的生成,可快速完成對未覆蓋功能點的驗證,一定程度上加快了驗證收斂,但平臺的可重用性有所下降;文獻[10]在FPGA上對微處理器進行硬件原型驗證,仿真速度比文獻[9]快且驗證平臺的搭建簡單,但測試用例的隨機性差、平臺的可重用性差;文獻[11]中RTL動態仿真與FPGA硬件仿真相結合的驗證方式保證了驗證平臺的可重用性且極大地提升了驗證收斂速度,但FPGA驗證的可調試性差,對微處理器指令集的隨機驗證不夠充分.綜上,微處理器驗證可以采取動態仿真與FPGA硬件驗證相結合的方式,但需要對指令序列隨機性做改進.
本文設計了一種適用于8bit RISC架構內核的驗證參考模型,模擬內核指令集系統結構來滿足指令的完全隨機組合,同時實現內核存儲空間的可參數化配置來提高可重用性.所設計參考模型集成到文獻[11]所提方法的UVM平臺中,應用到一款8位MCU的內核驗證中,很好地保證了指令序列隨機性,所有測試用例均仿真通過,代碼和功能覆蓋率均達100%.
1內核架構原理
精簡指令集計算機(RISC)不同于復雜指令集計算機(CISC),其指令長度固定、指令數目精簡.基于RISC架構的計算機結構更簡化合理,且開發者可根據需求對指令集進行擴展[12].RISC-V是基于RISC原理建立的開源指令集架構,其架構簡潔、指令集模塊化且可擴展,是最具革命意義的開發處理器架構.RISC-V指令集大部分指令執行只需一個周期,配合流水線結構的實現使得內核程序執行速度更快[13-14].可由下面公式推導而得:
P=I·CPI·T(1)
其中,P為執行一段程序所需的總時間;I是這段程序所包含的總指令條數;CPI是每條指令執行所需的時鐘周期數的平均值;T是內核參考時鐘的周期.同一段程序,雖然RISC比CISC的總指令條數多,但CISC的CPI會比RISC大很多,且RISC的時鐘周期比CISC小,所以程序總的執行時間RISC更短.且RISC-V架構對中斷的響應速度更快.
所研究內核是基于RISC-V架構的8位MCU,綜合考慮芯片性能、成本及實際應用需求,其指令集在RISC-V指令集基礎上進行了簡化和刪減,修改后的指令集僅有44條基礎指令和6條擴展指令,大大簡化了內核結構.圖1所示為內核結構原理圖.
該內核有直接尋址和寄存器間接尋址兩種訪存方式,直接尋址即通過指令譯碼出的數據存儲器地址進行讀寫操作,由于指令編碼中數據存儲器地址是9bits,所以尋址空間為512Byte,超出此范圍的地址需通過切換PAGE進行訪存.寄存器間接尋址是通過內核特殊寄存器IND/FSR對數據存儲器間接訪存,具體方式如圖2所示.
由圖2可知,內核從間接地址寄存器(IND)讀數據,實際上是以FSR中的值為地址去讀數據存儲器;向IND寫數據實際上是以FSR中的值為地址將數據寫入數據存儲器相應地址.
2驗證參考模型設計
所設計參考模型的指令集是基于RISC-V構架基本指令集修改并擴展的,包括44條基本指令和6 條擴展指令,指令長度均為16bits,按操作分為位操作類、立即數操作類、字節操作類、跳轉類和控制類五大類.表1給出了各類指令的編碼方式.
為尋址方便,所研究內核設置了特殊功能寄存器,包括間接尋址寄存器(IND)、寄存器選擇寄存器(FSR)、狀態寄存器(STATUS)、工作寄存器(WORK)、全局中斷使能寄存器(INTE)、PAGE選擇寄存器(BSR)和PC加載寄存器(PCLOADL/PCLOADH).
2.1內核指令集的建模
圖3為本文所設計的8位內核驗證參考模型的結構框圖,為簡化只給出主要組成部分和數據流通路.參考模型有四個主要的組件:程序存儲器(flash_array)、數據存儲器(sram_array)、指令譯碼器(core_decoder)和運算單元(core_alu),外部激勵給到程序存儲器,經過參考模型執行處理后改變相應地址的數據存儲器數據并發送transaction(flash_tr/sram_tr)給UVM驗證平臺的計分板,作為DUT響應數據的期望值[15],實現原理后續展開討論.
參考模型設計依據是內核指令集和指令執行流程即取指—譯碼—讀取—執行/寫回和,整個內部實現是按指令執行四個步驟來設計的.基于System Verilog語言,整個參考模型定義成一個派生自UVM基本類uvm_component的類.在設計實現前,首先對PC位寬、堆棧級數、堆棧起始地址等參數宏定義,并自定義了一個包含指令集所有指令的枚舉類型供后續類的定義使用.
參考模型的類首先對變量進行定義,包括內核特殊寄存器、transaction、程序和數據存儲器、PC堆棧和數據堆棧以及一些中間變量;接著聲明、定義類的函數,主要是圖3中參考模型組件對應的函數:取指、譯碼、讀取、指令執行、寫回函數.基于處理器結構原理,取指函數根據當前pc值從程序存儲器取指存入IR寄存器,為配合跳轉指令和長搬移指令執行還會預取指pc+1和pc+2;譯碼函數依據IR寄存器的數據,對照指令集編碼將16位指令碼譯成具體指令確定后續執行內容;讀取函數根據譯碼所得ram_addr訪問數據空間獲取指令操作數;指令執行函數根據譯碼結果執行操作或運算,并將要寫回數據空間的數據加以緩存;寫回函數依據具體指令是否需要寫回,將指令執行后所得數據寫回相應地址.
參考模型模擬內核行為的整個過程是在main_phase函數中實現的,main_phase函數分別調用前述函數,模擬內核程序執行過程,并參照實際內核行為對異常情況加以處理,主要有非法指令復位和中斷響應.
通過對內核指令集建模,參考模型實現了對內核指令集系統的模擬,可對內核指令集功能點黑盒驗證,能夠解決以往驗證方法指令序列隨機性差的問題,且結合perl腳本工具的使用,可自動化生成指令隨機序列,減少了繁瑣編寫測試用例的工作量.
2.2存儲指標可參數化配置的實現
為提高可復用性,參考模型對內核存儲空間及堆棧級數等關鍵指標進行了可參數化配置設計.驗證人員只需根據實際存儲空間設置參考模型的相應參數,即可對目標類芯片不同存儲配置進行驗證.
利用UVM的cofig_db機制,在UVM驗證平臺頂層top_tb中執行set操作,根據內核存儲指標配置相應參數的值;在驗證參考模型中執行get操作,獲取相應參數值,從而實現不修改參考模型即可滿足不同存儲空間的內核的驗證.
驗證參考模型中的代碼實現如下所示:
uvm_config_db#(core_vif)::get(this,””,”core_vif”,pc_width);
uvm_config_db#(core_vif)::get(this,””,”core_vif”,sp_len);
uvm_config_db#(core_vif)::get(this,””,”core_vif”,RAM_addr);
3基于驗證參考模型的內核模塊級驗證及結果
本文設計的內核驗證參考模型已成功應用于一款基于RISC-V架構的8位MCU芯片的內核模塊級驗證中,該內核指令集包括44條基礎指令和6條擴展指令,仿真驗證是在Linux平臺上用System Verilog 語言搭建的UVM驗證平臺上進行,所用仿真工具是synopsys公司的VCS,仿真波形和覆蓋率的查看使用synopsys公司的Verdi,UVM驗證平臺框圖如圖4所示[16].驗證結果表明集成了本文所設計的內核驗證參考模型的UVM仿真驗證平臺能夠滿足對8位內核的模塊級驗證需求,結合受約束隨機激勵生成技術對內核指令序列進行了完全隨機組合驗證.
圖5為內核模塊驗證指令集隨機測試用例的仿真波形圖.
圖6為內核模塊驗證用例回歸后所收集到的加過濾文件的代碼覆蓋率,過濾部分均為與設計人員確認無法覆蓋的,由圖可知各項代碼覆蓋率均達100%,實現了內核驗證所需的功能覆蓋范圍.
圖7為內核模塊驗證的功能覆蓋率,均達到100%.
圖8為本文所用驗證方法和文獻[9]的功能覆蓋率為導向的驗證方法分別對目標內核進行驗證的缺陷收斂圖示.
由圖8可看到,隨著驗證工作的推進,內核模塊的缺陷數量均呈現收斂狀態,但本文曲線相比文獻[9]的而言變化更平緩、收斂速度更快,且驗證周期縮短了10%,說明集成了本文所設計參考模型的UVM驗證平臺具有更好的魯棒性,且驗證效率和完備性更好.
表2給出了基于本文驗證參考模型和部分文獻的方法,對同一DUT進行驗證的性能對比結果,可以看出本文的驗證方法仿真速度較快、激勵隨機性好、測試用例編寫簡單,且驗證平臺具有很好的可重用性.
圖9為集成有本文驗證內核的電源充電管理芯片的版圖,采用華宏0.11μm工藝進行流片,芯片總面積為3.4 mm,系統時鐘頻率為24 MHz,流片測試結果表明,內核模塊設計符合設計文檔要求.
4結論
本文設計了一種適用于8位RISC架構內核驗證的參考模型.對內核指令集驗證建模提高了激勵的可隨機化程度,同時實現了內核存儲指標的可參數化設置,使得參考模型可直接用于擴展或繼承類芯片的內核驗證.將驗證參考模型應用到一款8位4級流水線的MCU芯片內核驗證中,驗證結果良好,最后所驗證內核采用華宏0.11um工藝成功流片,證明了參考模型對內核驗證的有效性.
參考文獻
[1] CHUNG E S,HOE J C. High-level design and validation of the BlueSPARC multithreaded processor [J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,2010,29(10):1459-1470.
[2] FAJCIK M,SMRZ P,ZACHARIASOVA M. Automation of processor verification using recurrent neural networks [C]//2017 18th International Workshop on Microprocessor and SOC Test and Verification (MTV). December 11-12,2017,Austin,TX,USA. IEEE,2017:15-20.
[3] LI Y Y,WU W C,HOU L G,et al. A study on the assertionbased verification of digital IC[C]//2009 Second International Conference on Information and Computing Science.May 21-22,2009,Manchester,UK.IEEE,2009:25-28.
[4] THALAIMALAI VANARAJ A,RAJ M,GOPALAKRISHNAN L. Functional Verification closure using Optimal Test scenarios for Digital designs[C]//2020 Third International Conference on Smart Systems and Inventive Technology (ICSSIT). August 20-22,2020,Tirunelveli,India.IEEE,2020:535-538.
[5]胡錦,謝立紅,鄒望輝,等.基于低功耗SoC的微型圖像采集系統設計[J].湖南大學學報(自然科學版),2019,46(2):86-91.
HU J,XIE L H,ZOU W H,et al.Design of miniature image acquisition system based on low power system on chip [J]. Journalof Hunan University(Natural Sciences),2019,46(2):86-91.(In Chinese)
[6]DUTT N,JANTSCH A,SARMA S. Toward smart embedded systems:a self-aware system-on-chip(SoC)perspective[J].ACM Transactions on Embedded Computing Systems,2016,15(2):22.
[7]段青亞,黃士坦,靳榮利,等.SoC自動化驗證方法的研究與實現[J].吉林大學學報(信息科學版),2010,28(3):231-237. DUAN Q Y,HUANG S T,JIN R L,et al. Study and implementation on method of SoC automatic verification[J] Journal of Jilin University(Information Science Edition),2010,28(3):231-237 (In Chinese)
[8]張良,易江芳,佟冬,等.使用局部建模的微處理器測試程序自動生成方法[J].電子學報,2011,39(7):1639-1644.
ZHANG L,YI J F,TONG D,et al Test program generation for microprocessor verification using local modeling strategy [J] Acta Electronica Sinica,2011,39(7):1639-1644 (In Chinese).
[9] WANG J Y,TAN N X,ZHOU Y F,et al. A UVM Verification Platform for RISC-V SoC from Module to System Level[C]//2020 IEEE 5th International Conference on Integrated Circuits and Microsystems (ICICM). Nanjing,China:IEEE,2020:242-246.
[10] PRASANNA K N,YELLAMPALLI S,CHETWANI R R Design and implementation of a Test Coverage Algorithm for verification and validation of a processor IP core[C]//2016 2nd International Conference on Applied and Theoretical Computing and Communication Technology(iCATccT)July 21-23,2016,Bangalore,India. IEEE,2016:652-656.
[11]張珩.通用處理器設計中硬件仿真驗證[J].計算機工程與應用,2007,43(8):1-3
ZHANG H Hardware simulation for microprocessor verification [J]. Computer Engineering and Applications,2007,43(8):1-3 (In Chinese).
[12] WATERMAN A,LEE Y,PATTERSON,et al. The RISC-V Instruction Set Manual,Volume 1:User-level ISA[J]. EECS De- partment,2011,7(9):475.
[13] ZIMMER M,BROMAN D,SHAVER C,et al. FlexPRET:A processor platform for mixed-criticality systems [C]//2014 IEEE 19th Real-Time and Embedded Technology and Applications Symposium(RTAS). Berlin,Germany:IEEE,2014:101-110.
[14] GAUTSCHI M,DAVIDE SCHIAVONE P,TRABER A,et al. Near-Threshold RISC-V Core With DSP Extensions for Scalable IoT Endpoint Devices[J]. IEEE Transactions on Very Large Scale Integration (VLSI)Systems,2017,25(10):2700-2713.
[15] LI W,WANG X T. Functional coverage-driven UVM-based UART IP verification [C]//2015 IEEE 11th International Conference on ASIC. Chengdu,China:IEEE,2015:1-4.
[16] VINEETH B,TRIPURA SUNDARI B B. UVM Based Testbench Architecture for Coverage Driven Functional Verification of SPI Protocol [C]//2018 International Conference on Advances in Computing,Communications and Informatics. Bangalore,India:IEEE,2018:307-310.