class my_class extends uvm_object;
function new(string name=””,int additional_arg);
The above package seems to be syntactically correct. But compiler(Eg. Cadence irun) throws error.
Compilation error: `uvm_object_utils(my_class). Task/function call, or property/sequence instance does not specify all required formal arguments.
`uvm_object_utils macro tries to register with factory, where the function new doesn’t have additional args.
Compiler throws error due to ‘additional_arg’ to function new. Remove this and compilation error goes off.
Error message is not clear and seems irrelevant to the issue here – a disadvantage of using macros; the macro expands into something that we can’t visualize.
Summary: Avoid additional args to ‘new’ function when using UVM factory registration.