上一篇文章我們介紹了 UVM 與 UVM1,現在又有一個新的版本出現了:UVM6XU06A6。這個版本相對於之前的版本新增了許多功能,若想要利用 UVM 優秀的測試功能進行設計及驗證,學會 UVM6XU06A6 是必不可少的。以下是學習 UVM6XU06A6 的步驟與技巧:
瞭解 UVM6XU06A6 的新功能
UVM6XU06A6 版本融合了之前 UVM 的功能,並增加了如下的新功能:
用於階層式驗證的新消息類型(TLM2.0)。
用於內部檢查的新階層式驗證計數器。
獨立通用項目的高級測試板模塊。
單內容記錄器,使調試更容易並降低區域面積。
現場重新配置 UVM 組件。
鑽測試網絡/覆蓋分層爪哇源碼。
在瞭解了新功能之後,接下來我們需要學習如何使用這些功能進行設計及驗證。
學習 UVM6XU06A6 的程序
學習 UVM6XU06A6 的程序與學習 UVM 的程序基本相同,只需注意以下不同之處:
設置環境
為了使用 UVM6XU06A6,我們需要為設計配置相應的環境。可以在系統級別、IP 級別或單元級別或更低級別進行配置。
例如,如果您正在編寫一個線性代數 IP,您可以將此 IP 的 UVCs 放入 IP 級別的環境中。
實現 UVM6XU06A6 類
和 UVM 一樣,實現 UVM6XU06A6 類是實現整個驗證框架的重點。與 UVM 不同的是,UVM6XU06A6 添加了許多新組件。
例如,以下是使用 UVM6XU06A6 編寫簡單測試用例的示例:
class MyTest extends uvm_test; `uvm_component_param_utils(MyTest) function new(string name, uvm_component parent); super.new(name, parent); endfunction virtual task run_phase(uvm_phase phase); // do Test Case stuff here endtaskendclass
在上述代碼中,`uvm_test` 是 UVM6XU06A6 定義的頂層測試組件,除了硬件設計之外的一切都由該組件控制。通過重寫 `run_phase`,我們可以將自己的代碼添加到測試當中。
測試結果
和以往一樣,當我們編寫完測試用例後,需要在 UVM6XU06A6 环境中執行該測試。
下面是使用 QuestaSim 執行 UVM6XU06A6 測試的指令:
vsim -c -do 'run -all' test_name
`test_name` 是您想要執行的測試的名稱。
當您以這種方式執行測試時,UVM6XU06A6 將生成與 UVM 類似的報告,但包含 UVM6XU06A6 新增的組件和功能。
學習 UVM6XU06A6 的技巧
除了瞭解 UVM6XU06A6 的功能和學習程序之外,還有一些技巧可以幫助您更好地使用 UVM6XU06A6。
了解更多的消息和計數器
UVM6XU06A6 添加了許多新的消息和計數器,您可以使用這些消息和計數器跟踪您的設計的各個方面。請務必充分利用這些新功能。
學習使用新的測試板模塊
UVM6XU06A6 添加了一個新的高級測試板模塊,而這種新的測試板可以更加容易地構建基於信號的複雜測試。這為設計測試帶來了更大的彈性,請務必學習使用這種新的測試板模塊。
現場重新配置
UVM6XU06A6 添加了一個新功能,現場重新配置 UVM 組件,這意味着您可以在測試過程中動態地重新配置測試組件。這使得調試更容易,並且可以降低設備的綜合面積。
結論
瞭解 UVM6XU06A6 很容易,只需學習它的新功能和一些技巧即可。這將使您能夠更好地利用 UVM6XU06A6 的潛力進行設計和驗證。遵循上述步驟和技巧,您將成為使用 UVM6XU06A6 的專家!