System verilog 有没有办法获取UVM层次结构中给定类型的所有对象?
我正在寻找一种获取给定System verilog 有没有办法获取UVM层次结构中给定类型的所有对象?,system-verilog,uvm,System Verilog,Uvm,我正在寻找一种获取给定uvm_对象的所有实例的方法,最好使用层次结构/范围和名称进行过滤。这在UVM 1.2中可以实现吗?我尝试了以下方法,看起来可能有效 uvm_resource_pool rp = uvm_resource_pool::get(); uvm_resource#(T) _type = new(); uvm_queue#(uvm_resource_base) q; q = rp.lookup_regex_names(parent.get_full_name(), "*
uvm_对象的所有实例的方法,最好使用层次结构/范围和名称进行过滤。这在UVM 1.2中可以实现吗?我尝试了以下方法,看起来可能有效
uvm_resource_pool rp = uvm_resource_pool::get();
uvm_resource#(T) _type = new();
uvm_queue#(uvm_resource_base) q;
q = rp.lookup_regex_names(parent.get_full_name(), "*name*", _type);
但是q.size()
始终为0。无可否认,这是我第一次接触到uvm\u资源池
等,所以我甚至不确定它是否可以这样使用。我的设置有问题吗?还是有更好的方法来实现我想要做的事情?uvm\U组件有一个方法。使用此函数可以直接从根组件开始在组件树上漫游
函数枚举_组件(uvm_组件根);
开始
uvm_组件子项[$];
foreach(children[i])开始
枚举_分量(子项[i]);
结束
结束
端功能
您可以扩展此函数,从uvm\u对象
检查类型
函数枚举_组件(uvm_组件根、,
参考uvm_组件[$],字符串类型_名称);
开始
uvm_组件子项[$];
如果(root.get_type_name()==type_name)开始
组件。推回(根);
结束
foreach(children[i])开始
枚举_组件(子项[i],组件,类型_名称);
结束
结束
端功能
那么你可以使用它如下
uvm_组件[$];
枚举组件(uvm_root::get(),组件,“InterestingComponent”);
foreach(组件[i])开始
//做有趣的事
结束
我没有测试它,让我知道它是如何运行的。没有办法按照您要求的方式做事。只有从uvm_组件
派生的类实例才具有层次结构。也许你可以解释一下你想完成什么。请看,我没有意识到组件具有此功能。uvm_注册表
没有提供类实例,它只提供在工厂注册的类类型。删除了对uvm_注册表
的提及,因为这没有帮助,感谢您的审阅:)@dave_59