我想一個命令行覆蓋應用到像這樣的ovm_sequence對象:如何將命令行覆蓋應用於SystemVerilog ovm_sequence對象?
+ovm_set_config_int=*,max_timeout,100000
的max_timeout
字段內ovm_sequence_utils
宏聲明。
有沒有辦法做到這一點?我的理解是,ovm序列不是ovm層次結構的一部分,所以也許他們不能從命令行進行修改。
我想一個命令行覆蓋應用到像這樣的ovm_sequence對象:如何將命令行覆蓋應用於SystemVerilog ovm_sequence對象?
+ovm_set_config_int=*,max_timeout,100000
的max_timeout
字段內ovm_sequence_utils
宏聲明。
有沒有辦法做到這一點?我的理解是,ovm序列不是ovm層次結構的一部分,所以也許他們不能從命令行進行修改。
我得到它的工作(從http://www.testbench.in/OT_10_OVM_SEQUENCE_5.html以下說明),通過添加以下到我的ovm_sequence在task body()
:
if(!(p_sequencer.get_config_int("max_timeout",max_timeout)))
max_timeout = ... // some default value
這裏的關鍵是,在命令行配置需要爲序進行設置,並且序列可以使用上述代碼來獲取該配置。
我不知道有一種機制可以讓你像命令行那樣設置配置空間。 OVM源的一個快速的grep也不顯示任何東西。
上
OVM序列快速評論不是OVM層次
他們不是在構建時構建的一部分,這是正確的。他們創造,他們開始在序運行之前,但任何基於ovm_object類都可以通過詢問get_config_int()一個配置整數
通常我會使用一個設定的加精氨酸這樣的事情,和我的基礎測試類中的config int基於那個plus-arg。例如,在命令行必須:
+max_timeout=100000
......然後,在我的測試基類,我所有的測試繼承:
function void build();
int timeout;
[....]
if ($value$plusargs("max_timeout=%d", timeout)) begin
`ovm_info(get_type_name(), "Setting timeout", OVM_MEDIUM);
set_config_int("*", "max_timeout", timeout");
end
[....]
endfunction
通常我的用途是不那麼字面因爲它具有設置多個值的標誌,但這是它的基礎。