uvm#U组件的用途是什么';名称';财产?

uvm#U组件的用途是什么';名称';财产?,uvm,Uvm,在代理中,我看到了uvm_组件的创建,如 apb_monitor m_monitor; m_monitor=apb_monitor::type_id::create("monitor_name_aaa", this); m_monitor.analysis_port.connect(analysis_port); 这里我们可以看到,在引用层次结构时,我们仍然需要放置m_monitor.*而不是monitor_name_aaa.*。 我的问题是 此名称

在代理中,我看到了uvm_组件的创建,如

    apb_monitor m_monitor;
    m_monitor=apb_monitor::type_id::create("monitor_name_aaa", this);
    m_monitor.analysis_port.connect(analysis_port);
这里我们可以看到,在引用层次结构时,我们仍然需要放置m_monitor.*而不是monitor_name_aaa.*。 我的问题是

  • 此名称属性“monitor\u name\u aaa”的确切用途是什么 为了什么
  • 我在很多地方见过人们说最好的方法就是把名字叫做‘MU监视器’,和MU监视器一样。如果这是真的,那么为什么不直接在这个特性中构建方法呢
  • 另一点是,如果我得到了_type_name(),那么我会看到它使用了name属性,比如m_env.m_agent.monitor_name_aaa

    谢谢

    在UVM中,可以直接使用组件的SystemVerilog层次结构名称或作为等效字符串引用组件。(这是问题1的答案。)与VHDL不同,SystemVerilog无法找出变量的名称。因此,当您创建一个组件时,您必须手动设置它。(这是问题2的答案)

    正如您所指出的,您必须始终使组件的名称与指向它的变量的名称相同(在本例中为“m_monitor”),否则,您将无法通过SystemVerilog分层引用或等效字符串引用组件。

    在UVM中,可以直接使用组件的SystemVerilog分层名称或作为等效字符串引用组件。(这是问题1的答案。)与VHDL不同,SystemVerilog无法找出变量的名称。因此,当您创建一个组件时,您必须手动设置它。(这是问题2的答案)


    正如您所指出的,您必须始终使组件的名称与指向它的变量的名称相同(在本例中为“m_monitor”),否则您将无法通过SystemVerilog分层引用或等效字符串引用组件。

    您好Matthew Taylor,现在,我想,经过更多的搜索,并结合您的回答,我会理解得更好。在Systemverilog/UVM中,它是动态的。有时需要打印出层次结构来进行调试。但是,systemverilog/UVM无法获取其类变量名或层次结构名。因此,我们必须由用户手动构建和嵌入这个层次化名称。您好,Matthew Taylor,现在我想在搜索更多内容并结合您的回答后,我会更好地理解。在Systemverilog/UVM中,它是动态的。有时需要打印出层次结构来进行调试。但是,systemverilog/UVM无法获取其类变量名或层次结构名。因此,我们必须由用户手动构造和嵌入这种层次化名称。