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