System verilog 如何检查SV类属性是否存在

System verilog 如何检查SV类属性是否存在,system-verilog,uvm,System Verilog,Uvm,我想检查我的类父类是否有这样的属性。如果是的话,请不要访问它 if ( $cast(this.get_parent(), agent_inst) && agent_inst != "NULL" ) if (agent_inst.vitf != "NULL") vitf = agent_inst.vitf; 现在,如果agent_inst没有vitf属性,模拟器将给出一个错误。 那么,我如何检查代理_inst是否具有vitf属性 谢谢您有$

我想检查我的类父类是否有这样的属性。如果是的话,请不要访问它

if ( $cast(this.get_parent(), agent_inst) && agent_inst != "NULL" )
        if (agent_inst.vitf != "NULL")
            vitf = agent_inst.vitf;
现在,如果agent_inst没有vitf属性,模拟器将给出一个错误。 那么,我如何检查代理_inst是否具有vitf属性


谢谢

您有$cast backwards的参数;第一个参数是目标变量,第二个是源变量。按照$cast的工作方式,您应该使用具有
vitf
属性的类类型声明
agent\u inst
。只有源对象与目标对象类型兼容时,$cast才会在运行时成功。您的代码将不会编译,除非
agent\u inst.vitf
存在。

是的,谢谢您的回答,因为我想编写更通用的代码,而我的agent\u inst可能甚至没有vitf对象。在这种情况下,$cast没有帮助如果您想要更多的泛型代码,请定义一个具有vitf属性并且具有泛型代理应该具有的任何其他属性的代理基类。