1. uvm_config_db與uvm_resource_db的區別與聯系
(1) uvm_config_db是從uvm_resource_db派生而來的,它對uvm_resource_db的一些功能進行了擴展,這種擴展主要體現在對資源的寫入和讀取上.
(1.1) 在資源的寫入操作上,它重載了uvm_resource_db的set函數;
(1.2) 在資源的讀取操作上,它新建了一個稱為get的函數;
(2) uvm_resource_db雖然也是一種用來共享數據的類,但是層次關系在該類中沒有作用; 與uvm_config_db相比,盡管uvm_resource_db也有內建的數據庫,可以通過字符串或類型來索引配置數據,但缺點是層次的缺失和因此帶來的自頂向下的配置覆蓋關系的缺失.
(2.1) uvm_resource_db采用的是”last write wins”,即對同一配置,最后的寫入有效;
(2.2) uvm_config_db采用的是”parent wins + last write wins”(假設在env中已經有配置,而test的級別高於env).
(3) uvm_config_db與uvm_resource_db共享同一套database; 因此可能會出現通過uvm_config_db::set()往database中存入信息,但用uvm_resource_db::read_by_name()從database中讀取信息;
2. 選用uvm_resource_db還是uvm_config_db
(1) 選取uvm_resource_db還是uvm_config_db取決於當前的setting是否需要考慮層次信息;如果會考慮層次,則采用uvm_config_db; 如果不考慮層次,則應該使用uvm_resource_db;