本篇文章適合想在家自學UVM的人。 萬事起頭難, 希望這篇文能幫到一些人 參考資料: chip verify 的 UVM tutorial Q: 學UVM能當DV嗎? A: DV可能會用到UVM, 但會UVM不一定能當DV 但機會是留給準備好的人, 共勉之 Q: 為什麼要UVM? A: UVM規範了testbench的程式結構, 是業界通用的標準 Q: 什麼樣的人適合學UVM? A1: 有用verilog寫的testbench經驗, 然後要會一點物件導向(要會繼承之類的), 建議 verilog -> 一點點物件導向 -> UVM, 任何地方卡住, 就要回過頭來補知識, , 現在問AI很方便 A2: 喜歡coding, 看log A3: 有修過數位IC相關的課, 會寫verilog Q: 建議的學習方式? Step1. 事前準備: 1. 文獻/工具書(chip verify) 2. 一個別人寫好的簡單UVM code 跟能 run UVM 的環境 以下提供我改的(從chip verify UVM hello world改的):
以及Chip verify 原始的:
我的code做了一些檔案分割, 每個檔案大概就是一個學習的chapter/section, 公司應該也是類似我分割的方法 Step2. 看懂一份簡單的 UVM code 吃檔結構: 以我的code來說, top是testbench.sv, 該檔案會吃 include_files.sv跟design.sv, include.sv 會再把所有驗證用的檔案吃進來 UVM結構: UVM底層有規範好一些特定的UVM component 我們會extend 出來, 並用 uvm_component_utils 來登記 看的順序, top down: top (testbench.sv) -> test (my_test.svh)-> env (my_env.svh) -> other 遇到不會的東西就先查資料, 最好是知道每行code在幹嘛 ex: phase.raise_objection是什麼? UVM的phase是什麼? Step3. Run code -> 嘗試自己改一點code -> Run code 看 log -> 改code -> run code ->改code ->and so on 慢慢將初始code加入新的feature(如scoreboard), 改成一個成熟的UVM (以下是一個別人寫好的AXI 驗證, 可以想一下怎麼從初始code發展成他那樣)
愛心
85
24
全部留言