UVM實戰[一]


歡迎關注個人公眾號摸魚范式

一個新的連載系列,將以一個實際的UVM環境代碼講解的使用、機制等,更新周期會比較長。

文件說明

分享的文件是我個人和同學在參加復微杯大學生電子設計大賽中所完成的設計。賽題來自數字命題AI賽道,有興趣可以了解一下

https://mp.weixin.qq.com/s/Hb4TrEDXG6uVVY7PZ0mdUw

RTL設計部分代碼不予公開,提供的是通過Questasim加密后的文件,能夠編譯仿真但是無法閱讀,例如:

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "10.6c"
`pragma protect key_keyowner = "Mentor Graphics Corporation" , key_keyname = "MGC-VERIF-SIM-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
EBDDlVIhqXE3DzKivVjuI9OF3W7Y0FsnqRYxip5AT5Uavd7H/9i2xlih9gekfmGf
Cd0qkHQIV6O9VNGmvMgrCqG8CPHEpHWQSRjdFX8wDD3ujd9zz+RD9ESRX/5QMGni
6KvH4+Ud9W2gPqcUBW+QJJrnxusW/kwE1llXdQQtYFh5flre3gSn9uHcVRxRlVtd
PEJcD9unkcmyNMHrV4mH5MNp67AdZ5KrO6MmMPg5PYQr5ybE1UQlkxVaEDLMIfat
WVdNot6rUe6E7HTeos4bYqRI1ma/Ax3by9Xf9da41IU/TfCvSY+uX/2JSrJ31f8U
Zx9xgO7YbnPp7vhXyqu+dg==
`pragma protect data_method = "aes128-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 688 )
`pragma protect data_block
Ij4sxeYRzypcSQKWsDV4i6TeDbhU2nl3hjfQwr1KqPkZsPrTxXNXFC5H2D0rrAUd
6WDGQqEyu9obRLqowsgEMCw1Pqla8PBUJ3hycUzyiUYxvGmhP5sP/NnCA1DRZ9Y9
ya08fhTakN5V00k7AbMYGzUxz2M7iG+qpyp05fk8pYohdG3dW71b2za1CQJ7VEqc
/LxYj0eMW+QoMfwIPDdZAdKpa+Dju0oEO8+KB14EkPruq+93UyRbPlutkvsNsVDr
aMKM+mHa2i4yNgDpTZPk+7MSKC+uTcLrM7a/TQQ40p2AExumbCzSYsNd8lGe6jIh
0tcDrm+wJNyrh3eGzihXstoEwCbh/tYsxmJY8ghdWJ/xo2V7g4SHOugoWA6GGC3D
nPsMuQuJytDIErSJcPNkUZZ3Z5i7ZKx3m9kW4YOus7KdcFn21+XnDMD46rtNw/+c
b49lIMlJylLVKe0OG2KRKOO3ig/E5xnvyHt9rqYU52eHHOBAQrJ7ipvZCt7729vz
iKg5syv55Wc5og1vi7kmazU+42521T226ZodyFiQ11PZKNAQ6mMTiq27DDBTKN5z
zK+LTeejaPumeb4RsOgiPLrNTYHv96PYRzSIptGPCL8R8Rcm0ndCuo72DTKqEcxY
xFG4KEF0vhGxwHqEkZFNqDW1ATTp7s5zcZ6bXTXpFpGQnC1nOfdtwcllt/HNWHaD
9Xg4oDY2B36HlU6KeqTQBUbPb9VMNywpk9NSaVEz2MWQPv3Xh8Eg0uB4ftVZ+C9n
vfvSKO+xBTyGQgvj2QIwelMz6wDc1G4RghcxtHdi/qU64rCDvg5EOWjCSxR4O82R
Fs8c/NnWZJR1AzB8zut8bq/CKga3gzDM4DZ7qi2HMZqV44rCJOfcCfqBYl/g59LR
zZ9Boq26Vbm4yk6SnmXXIw==
`pragma protect end_protected

但是UVM環境部分代碼完全公開,文件包括

頂層文件為tb.sv

結構說明

關於RTL的功能設計,可以翻閱原文連接中的答辯PPT,主要功能是實現了輸入特征圖(1-128)*(1-128),卷積核1-7,padding1-7,步長1-3,以及2*2pooling和Relu的功能。整體結構為

而整體的驗證環境結構如下

由於時間緊迫,技能生疏,整體環境並不完善,代碼也有欠缺,此外,也未加入寄存器模型,因此對寄存器的訪問比較繁瑣,后期會進行改進。

由於設計是進行卷積計算的,所以運行時間會比較長,checker通過軟件算法對RTL的卷積計算結果進行比對,所以RTL完成一次卷積計算后,仿真時間會停滯一段時間用於軟件的卷積計算,屬於正常現象。

將.sv和.svp文件添加進工程后,頂層模塊為tb,編譯后在控制台輸入vsim -voptargs=+acc work.tb即可開始默認的testcase,若要進行其他testcase,需要加上選項+UVM_TESTNAME=my_test,具體test名請查看conv_pkg.sv

推薦參考資料

推薦有一定SV基礎的朋友進行學習,如果還沒有可以參考下面幾本書自學

綠皮書,主要包括SV的語法講解

UVM primer,UVM入門講解,包括OOP基本概念

白皮書,一本UVM翔實的工具書,很多參賽選手的UVM環境就是直接參考本書例子的

紅皮書,包括從SV到UVM講解,驗證思想,驗證管理等

微信后台回復"UVM實驗"獲取代碼和PPT。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM