一個(gè)新的連載系列,將以一個(gè)實(shí)際的 UVM 環(huán)境代碼講解的使用、機(jī)制等,更新周期會(huì)比較長。
?
文件說明
分享的文件是我個(gè)人和同學(xué)在參加復(fù)微杯大學(xué)生電子設(shè)計(jì)大賽中所完成的設(shè)計(jì)。賽題來自數(shù)字命題 AI 賽道,有興趣可以了解一下
【數(shù)字賽道命題之一】使用數(shù)字電路實(shí)現(xiàn)二維卷積計(jì)算,并輸出相應(yīng) code 及報(bào)告
RTL 設(shè)計(jì)部分代碼不予公開,提供的是通過 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 環(huán)境部分代碼完全公開,文件包括
頂層文件為 tb.sv
結(jié)構(gòu)說明
關(guān)于 RTL 的功能設(shè)計(jì),可以翻閱原文連接中的答辯 PPT,主要功能是實(shí)現(xiàn)了輸入特征圖(1-128)*(1-128),卷積核 1-7,padding1-7,步長 1-3,以及 2*2pooling 和 Relu 的功能。整體結(jié)構(gòu)為
而整體的驗(yàn)證環(huán)境結(jié)構(gòu)如下
由于時(shí)間緊迫,技能生疏,整體環(huán)境并不完善,代碼也有欠缺,此外,也未加入寄存器模型,因此對(duì)寄存器的訪問比較繁瑣,后期會(huì)進(jìn)行改進(jìn)。
由于設(shè)計(jì)是進(jìn)行卷積計(jì)算的,所以運(yùn)行時(shí)間會(huì)比較長,checker 通過軟件算法對(duì) RTL 的卷積計(jì)算結(jié)果進(jìn)行比對(duì),所以 RTL 完成一次卷積計(jì)算后,仿真時(shí)間會(huì)停滯一段時(shí)間用于軟件的卷積計(jì)算,屬于正?,F(xiàn)象。
將 .sv 和 .svp 文件添加進(jìn)工程后,頂層模塊為 tb,編譯后在控制臺(tái)輸入 vsim -voptargs=+acc work.tb 即可開始默認(rèn)的 testcase,若要進(jìn)行其他 testcase,需要加上選項(xiàng)+UVM_TESTNAME=my_test,具體 test 名請(qǐng)查看 conv_pkg.sv
?
推薦參考資料
推薦有一定 SV 基礎(chǔ)的朋友進(jìn)行學(xué)習(xí),如果還沒有可以參考下面幾本書自學(xué)
綠皮書,主要包括 SV 的語法講解
UVM primer,UVM 入門講解,包括 OOP 基本概念
白皮書,一本 UVM 翔實(shí)的工具書,很多參賽選手的 UVM 環(huán)境就是直接參考本書例子的
紅寶書,包括從 SV 到 UVM 的講解,驗(yàn)證思想,驗(yàn)證管理等