#UVM# 关于 config_db 机制中的“路径”和“层次”概念剖析
我们都知道 config_db 机制的功能强大,使用之便利。今天,我们回顾一下使用中需要注意的问题。
以下章节内容,摘自张强老师《UVM实战》一书:
一个component(如my_driver),可以通过get_full_name()函数可以得到此component的路径。
在这幅图中,我们需要注意以下几点:
(1)uvm_test_top实例化时的名字是 uvm_test_top,这个名字是由UVM在run_test时自动指定的 。不受用户在调用 run_test(“xxxx”)语句时指定的测试用例名字的影响。
(2)整个树状结构的顶层是 uvm_top.。其类名原型为 uvm_root 类。 且该语句的执行,UVM 自行创建,不受用户控制。
(3)uvm_top的名字是__top__,但是在显示路径的时候,并不会显示出这个名字,而只显示从uvm_test_top开始的路径。
路径的概念与通常的层次结构不太一样,虽然基本上它们是一样的。从图中的my_casen看来,drv的层次结构是env.i_agt.drv,其相对于my_casen的相对路径是env.i_agt.drv,此时 层次结构和路径,内容一致。如果drv在new时指定的名字不是drv,而是driver,即:
drv = my_driver::type_id::create("driver");
那么drv在my_casen看来,层次结构依然是env.i_agt.drv,但其路径变为了env.i_agt.driver。在好的编码习惯中,这种变量名与其实例化时传递的名字不一致的情况应该尽量避免。