Violation of UVM component name constraints

I get the following warning(s) reports from uvm_traversal.svh, specifically from function uvm_component_name_check_visitor::visit.

Never encountered this before.

UVM_WARNING /local_vol1_nobackup/user/hvdschoot/projects/vcn4_0/out.er/linux_3.10.0_64/base/config/uvd_ent/pub/sim/fake_v_incl/base/uvm_traversal.svh(270) @ 0.000 ns: reporter [UVM/COMP/NAME] the name “UVMC_COMP_WITH_B_INITIATOR_SOCKET_FOR__lcm_drv_adptr_hdl.txn_in_socket_b_” of the component “UVMC_COMP_WITH_B_INITIATOR_SOCKET_FOR__lcm_drv_adptr_hdl.txn_in_socket_b_” violates the uvm component name constraints
UVM_WARNING /local_vol1_nobackup/user/hvdschoot/projects/vcn4_0/out.er/linux_3.10.0_64/base/config/uvd_ent/pub/sim/fake_v_incl/base/uvm_traversal.svh(270) @ 0.000 ns: reporter [UVM/COMP/NAME] the name “UVMC_COMP_WITH_B_INITIATOR_SOCKET_FOR__lcm_drv_adptr_hdl.txn_in_socket_b_” of the component “UVMC_COMP_WITH_B_INITIATOR_SOCKET_FOR__lcm_drv_adptr_hdl.txn_in_socket_b*.UVMC_COMP_WITH_B_INITIATOR_SOCKET_FOR_lcm_drv_adptr_hdl.txn_in_socket_b*_” violates the uvm component name constraints

What are these name constraints? On length? Or otherwise?
As shown above using underlining, these are somehow concatenated names of which only a portion is from my user code.
And I get to warnings for the seemingly same component (a TLM2 socket).

The name prefixes suggest that this may come from UVM-Connect.

Anyone who can shed some light on this?

Thanks

In reply to HvdS:

Further to this, the expression to which compoenent names need to comply is in this function:

virtual function string get_name_constraint();
return “[1][:alnum:{}_:-]([:alnum:{} :-]*[][:alnum:{}:-])?$”;
endfunction

Anyone who can readily decipher this?

Hans


  1. ↩︎

In reply to HvdS:
https://verificationacademy.com/verification-methodology-reference/uvm/docs_1.2/html/files/base/uvm_traversal-svh.html#uvm_component_name_check_visitor

You have a ‘.’ in your name with is considered a path delimiter.

In reply to dave_59:

Hi Dave,
Yes just read what you shared - thanks and sorry for not going the length myself I suppose - and see that indeed the “.” is not permitted.

Interestingly, this is introduced by UVM isn’t it, concatening names of hierarchical components using this “.” delimiter when caller super.new(name, parent) in a component’s constructor. I see it in uvm_component.svh.

Is it perhaps then that this check is not normally executed, but that UVM-Connect somehow forces its execution on TLM 2 sockets (and TLM1 ports/exports etc.)? Will need to check that next.

Hans

In reply to dave_59:

All our UVC, generated with UVMF script UVMF_2021.3/scripts/yaml2uvmf.py2 has this problem!

Helmut