2016-11-29 44 views
0

請幫助解決我在規劃結核病時遇到的一個問題。 假設我在DUT的一些輸入端口是參數,是這樣的:UVM TB和DUT參數控制

module Multiplier #(parameter WIDTH = 8) (
    input [WIDTH-1:0] addr, 

現在我想我的測試,以控制該寬度參數。 我想要測試將WIDTH參數隨機化,然後將該參數應用於DUT。並根據該參數值,我的整個測試平臺將更改交易信號,驅動程序,監視器等。 實施此參數測試的最佳方式是什麼?

我想在測試類中有WIDTH參數,並在那裏隨機化它。然後在實例化過程中將其分配給DUT。對於TB,將randomize值放在config_db中,並在代理中獲取,並將其分配給config類相應的參數。

感謝 Hayk酒店

+0

我懷疑這是可能的。你的'uvm_test'只在完成之後纔開始,現在所有的模塊已經被實例化了。您需要在此之前設置參數。我會建議在編譯期間使用'$ urandom'之類的東西 – noobuntu

+0

感謝您的回答。你是說在頂級模塊調用中使用$ urandom? – haykp

+0

我相信'$ urandom'只能在運行時調用。 – noobuntu

回答

0

我會產生在我的Makefile(或任何你正在使用編譯/編譯系統)的隨機變量。然後根據您的模擬器,從模擬運行命令中設置參數。

ModelSim: Parameters值可以在ModelSim模擬器中通過'vsim'命令傳遞。假設我們要在全球範圍內提供參數值到所有模塊:

-gWIDTH=<random_value> 

VCS

-pvalue+hierarchical_name_of_parameter=<random_value> 

所有模擬器具有等同的。

+0

謝謝!但我想使用模擬器命令,因爲它會使我的TB依賴於模擬器類型((我也不知道我的客戶使用什麼模擬器 – haykp