uvm_config_db簡介

我發現中文社區裏的文章怎麼都那麼奇怪呢,都講uvm_config_db是一種特殊的參數配置“機制”,看得我一頭霧水,還以爲是sv的一種特有的語法啥的。看了英文社區一下子就明白了:


uvm_config_db是個uvm中帶template的類,這個類只有一些靜態函數,學過C++的都記得吧,static的,這些靜態函數包括:

uvm_config_db::set(

uvm_component  cntxt,
  string  inst_name,
  string  field_name,
  value
);


uvm_config_db::get(

uvm_component  cntxt,
    string  inst_name,
    string  field_name,
  inout  value

);

這個類裏維護一張表,每調用一次set,這個表裏增加一行,每調用一次get,就從這個表裏找有沒有對應的行。每一行都是一個實例.成員變量的設置值,這些成員變量的類型是多種多樣的,可以是primitive的,也可以是自定義的,所以在調用set/get的時候需要指定template。

需要注意的是:set/get裏的第一個變量是uvm_component,所以如果是在sequencer裏調,需要用m_sequencer,因爲sequencer本身不是一個component,但m_sequencer是sequencer裏固有的一個指向本sequencer的component指針。

至於亂八七糟的set_config_*和get_config_*,都是爲了兼容OVM,在外面包了一層。

over~

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