Testcase name issue

Hi,

I have a testcase called test_io_amux.sv which look like this:


`ifndef TEST_IO_AMUX_SV
`define TEST_IO_AMUX_SV

class test_io_amux extends base_test;

  `uvm_component_utils(test_io_amux)

  // Component constructor
  function new(string name, uvm_component parent);
    super.new(name, parent);
  endfunction : new
  
  task run_phase(uvm_phase phase);

    ... my stuff here ...

  endtask : run_phase
endclass : test_io_amux

`endif

when I run the testcase I have the following error message:

class test_io_amux extends base_test;
|
ncvlog: *E,SVNOTY (test_io_amux.sv,9|38): Syntactically this identifier appears to begin a datatype but it does not refer to a visible datatype in the current scope.
`uvm_component_utils(test_io_amux)
|
ncvlog: *E,SVNOTY (test_io_amux.sv,12|38): Syntactically this identifier appears to begin a datatype but it does not refer to a visible datatype in the current scope.

(define macro: m_uvm_component_registry_internal [/pkg/cadence-incisiv-/14.10.004/i686-linux/tools/methodology/UVM/CDNS-1.1d/sv/src/macros/**uvm_object_defines.svh line 467**], define macro: uvm_component_utils [/pkg/cadence-incisiv-/14.10.004/i686-linux/tools/methodology/UVM/CDNS-1.1d/sv/src/macros/uvm_object_defines.svh line 330], file: test_io_amux.sv line 12)

This point to : uvm_object_defines.svh - line 467


// m_uvm_component_registry_internal
// ---------------------------------
//This is needed due to an issue in of passing down strings
//created by args to lower level macros.
`define m_uvm_component_registry_internal(T,S) \
   typedef uvm_component_registry #(T,`"S`") type_id; \
   static function type_id get_type(); \
     return type_id::get(); \
   endfunction \
   virtual function uvm_object_wrapper get_object_type(); \
     return type_id::get(); \
   endfunction

and uvm_object_defines.svh - line 330


`define uvm_component_utils(T) \
   `m_uvm_component_registry_internal(T,T) \
   `m_uvm_get_type_name_func(T) \

OK fair enough I got an error … so I renamed my testcase test_mux.sv and every name test_io_amux is changed to test_mux

The test is now compiling and running !!

So my questions are:

1) Is this a tool issue ?
2) Is there some king of reserved keyword like io we should not use in UVM (same issue with test_bist) ?
3) Can I get a good explanation why this is happening?

note: We have plenty of testcases running without this glitch !

Thank you very much in advance

Booboo