UVM1.2 : uvm_traversal.svh giving uvm_component name constraint warning

Hello All ,

I have just migrated to UVM-1.2 in my bench.I am getting the following warnings from uvm_traversal.svh

the name “observed_wr_data_collected_port;” of the component “uvm_test_top.tb.strDMA_wr_mon[0].observed_wr_data_collected_port;” violates the uvm component name constraints

This warning was not coming when my bench was in uvm-1.1d

Can someone pleaae help me out on this.Why this is coming ? Also How to remove it or just to ignore it.

Thanks in advance.

In reply to pk_94:

You have a semi-colon in the name of your component. This function is checking that your component name consists of an allowable character set, of which the semi-colon is not a member of. If you remove the semi-colon from your name, the error will go away.

In reply to cgales:

I have declared a class monitor like this

class wr_set_transaction_monitor extends uvm_monitor;

uvm_blocking_get_imp_addr #(ipm_transaction,wr_set_transaction_monitor) observed_address_collected_port;
uvm_blocking_transport_imp_data #(ipm_transaction,ipm_transaction,wr_set_transaction_monitor) observed_wr_data_collected_port;
ipm_transaction transaction;

And the warning is coming ONLY for observed_wr_data_collected_port (which is of uvm_blockin_transport type . There are multiple other types of TLM ports I have added in my environment, but this warning is coming for this port only.

Where do you think the semi colon is causing these warnings.

Why this check was enabled in uvm 1.2 , is there any use of it ? Please assist ?

In reply to pk_94:

Where do you create() observed_wr_data_collected_port? What do you pass in as a string for name? There is probably a semi-colon in that string.

In reply to cgales:

Yes there was semicolon in the creation of its instance. Thanks for the help.

And the bench was still working fine with this warning.

Don’t you think this should be made as an error instead of warning in uvm_traversal_class.

In reply to pk_94:
Since the UVM is being designed by committee, there will be many opinions ab out warning versus error. I think warnings are noise. You can promote this warning to an error.

In reply to cgales:

Hello cgales,

I am getting the same warning : -
UVM_WARNING /pkg/cadence-incisiv-/15.22.041/i686-linux/tools/methodology/UVM/CDNS-1.2/sv/src/base/uvm_traversal.svh(267) @ 0 ns: reporter [UVM/COMP/NAME] the name “put_trans_to_mstr_mon_port[&0d] 0” of the component “uvm_test_top.tb.axi_arb_tb.axi_slv_monitor.put_trans_to_mstr_mon_port[&0d] 0” violates the uvm component name constraints

Constructor is below : -

put_trans_to_mstr_mon_port[i] = new($sformatf(“put_trans_to_mstr_mon_port[%d]”,i),this);

In reply to pk_94:

The ‘&0d’ seems very close to “%0d”. Are you sure that the format string in new() is correct? Is there another new() call somewhere that you are overlooking? Are you looking in the right place?

Is the array declaration correct? What is ‘i’ declared as? Can you show the full loop where everything is initialized?

In reply to cgales:

for(i =0 ; i <10 ; i++)
put_trans_to_mstr_mon_port[i]=new($sformatf(“put_trans_to_mstr_mon_port[%0d]” , i ) , this )

Also I have not recreated this handle anywhere else

In reply to pk_94:

Do you get the warning for all 10 instantiations, or just 0?

In reply to cgales:

I am getting warning for all 10 instance.

In reply to pk_94:

Without seeing the actual code, I’m going to assume that you have a mal-formed string in your code which is causing issues. Try re-writing the new() call, or create a different format string to see if you can determine a pattern.

Hello,
I got the same warning for the following, and couldn’t figure out the regexp
soc_tb.u_soc_ti.cfi_bfm1_hw_collector.genblk2[0].cfi_bfm_rsp_transmit.cfi_cmd_port

is the name too long? is it the brackets?

Thanks

In reply to dmiller1:

No brackets.