Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
System verilog 有没有办法获取UVM层次结构中给定类型的所有对象?_System Verilog_Uvm - Fatal编程技术网

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