UVM环境中的config_db实际上是一个数据库,我们可以设置一些参数, 然后在不同的地方获取这个参数。比如可以在顶层的testcase中设置一个cov_en变量用于控制覆盖率的收集, 这样就不用每次修改testbench。
- set()
1 | static function void set ( uvm_component cntxt, |
上面所示的例子如果在某个agent的build phase进行设置, 那么coed 如下所示:
1 | virtual function void build_phase (uvm_phase phase); |
值得注意的是: 如果’cntxt’ 是 ‘null’, 那么第二个参数的路径要写完整,如果是’this’就代表的是当前component的路径,uvm_test_top.m_env.m_apb_agent
- get()
1 | static function bit get ( uvm_component cntxt, |
可以用这个函数获取数据库中某个变量的值:值得注意的是, get函数中的instance name的scope要真的存在才会返回值, 说明如下:
1 | // Get virtual interface handle under name "apb_vif" into local virtual interface handle at m_env level |
- exist()
1 | static function bit exists ( uvm_component cntxt, |
主要是检查指定路径下的Component中的变量是否存在, 如果存在spell_chk就会置位
1 | // Check if interface handle exists at the given scope |
- wait_modified()
1 | static task wait_modified ( uvm_component cntxt, |
主要作用是阻止当前语句的执行:
1 | class my_agent extends uvm_agent; |