芯片驗證學習歷程

學習完數字集成電路之後,學習芯片驗證是一個很好的提高方向,接着可以並行地學習芯片設計,這就需要掌握計算機結構,指令集,操作系統等硬骨頭。在此之前,學習芯片驗證可以是個好過度,但是UVM這種通用驗證方法學還是有一定門檻的,找了好多資料才滿滿摸到門道,這篇文章就來做個回顧和展望。

大概循序漸進的流程是:先Verilog,後System Verilog,最後UVM。

硬件模塊和測試模塊

學這種語言首先非常重要的一點是,Verilog作爲硬件描述語言,它一方面是描述硬件的行爲,也就是它只是把腦中的硬件結構用這種語言描述,之後通過綜合工具可以生成電路結構,最後轉化爲真實硬件,這一點不同於純軟件語言如C,Java等,所以在編寫硬件模塊時要做到心中有“硬件”。

另外一點要特別注意:描述完硬件後,怎麼知道它功能正確呢?總不能流片之後再檢測吧,所以Verilog語言還要能夠寫外部激勵、比較的模塊,而這部分的代碼更接近軟件,因爲我們在一個模擬環境下測試硬件代碼是否正確,用軟件寫法更靈活,更能全面測試硬件的性能好壞。

System Verilog就是爲了提高測試模塊的效率,所以在學習時你會看到很多數組、類、變量等和C++很像的語法,它們的目的都是爲了更好地測試我們最先設計硬件模塊,所以看書時一定要先分清他在介紹“測試模塊”還是“硬件模塊”,區分這點之後,看起書來會更清晰。

仿真環境

Q1、寫好的verilog的硬件模塊要如何轉化爲實際電路呢?
可以用Quarturs或Vivado軟件燒寫到FPGA開發板。
Q2、Verilog的測試模塊哪裏運行呢?
可以用明導公司的Questa Sim或modelsim,推薦前者,因爲它對System Verilog更友好,功能更齊全。

Verilog

學完數字電路,有一些C的基礎就可以上手Verilog了,夏宇聞的《Verliog數字系統設計教程》是很好的入門教程,儘量自己動手仿照裏面的案例。

如果有條件可以買一個FPGA開發板,它可以將你寫的硬件電路在板子上連好,甚至可以寫一個CPU,然後可以直接查看板子來觀察設計的電路對不對。某寶還會附帶完整的學習資料,我最初的入門也是跟着裏面的案例學習的。

再推薦一個網站,上面有從易到難的Verilog編程題目,用它練練手能快速熟悉這種語言。https://hdlbits.01xz.net/wiki/Main_Page(有時登不上)

System Verilog

System Verilog 主要目的是希望更高效地測試硬件模塊,因爲現在的芯片集成度越來越高,許多模塊都想集成到一起來降低成本,就是所謂的片上系統SOC。硬件模塊越複雜,功能驗證就越複雜,單純用Verilog寫testbench非常複雜,比如輸入信號需要隨機數,需要發送多種類型的數據等。System Verilog 借鑑了軟件語言的特點,能夠更加方便地爲待測硬件提供激勵、檢測和結果比對,這三項也是芯片驗證的基本模塊,所有其他東西都是圍繞這三方面展開的。再次提醒一下,

" 驗證模塊"的代碼傾向於軟件,"硬件模塊"的代碼描述硬件。

System Verilog的入門一般是“綠皮書”,斯皮爾寫的《System Verilog驗證——測試平臺編寫指南》,裏面有豐富的語法案例。

還有紅皮書,路桑寫的《芯片驗證漫遊指南》,配合他“騰訊課堂”V0公開課裏的實戰案例《大象裝進冰箱系列》,可以對驗證有一個基本的框架。

另外鍾文楓寫的《System Verilog於功能驗證》也提供了入門素材。

如果上面資料還是很生硬,那麼可以看看B站的課程SV語法入門,驗證平臺搭建打基礎。

特別提醒,這些資料可以並行地看,理論和實戰相結合,我是先完成一部分《大象裝進冰箱系列》的三個實驗,對整個驗證平臺有實踐上的認識,然後發現語法不懂的地方後,看B站視頻,回顧Verilog驗證部分。接着再模仿綠皮書的案例,最後繼續完系列實驗。

UVM

System Verilog搭建驗證平臺耗時較長,如果每一個測試都搭建新平臺,效率還是不高,因此UVM把一些常用的平臺函數或類封裝了,以面向對象的方式給用戶調取,省事不少。因此要學UVM,首先要打下System Verilog的基礎,不然真的要看天書了!

UVM的經典入門書有《The UVM Primer》,國內還有張強的《UVM實戰》和《UVM應用指南》。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章