What is ** Fatal: (vsim-8250) Class allocator method 'new' called on Abstract Class. about?

Hi,

I am unable to find the reason for the error in my run:
** Fatal: (vsim-8250) Class allocator method ‘new’ called on Abstract Class.
How and where to find the solution?

Murali

It means you called new on a virtual class. You must extend it and call new() on the extended class.

The there should be more messages that point to a line number. If it does not point to a line number, you may have to add this vsim switch ‘-voptargs=+acc=l’ and step through the code.

In reply to dave_59:

Hi Dave,

Thanks much for the switch. But how should I step through the code? Only option is GUI mode? Even there how should I go?

Murali

In reply to mpattaje:

Dave,

Actually the error message showed me that error the error as below:
Fatal error in Function create_object at /opt/questasim_6.6e/questasim/linux/…/verilog_src/ovm-2.1.1/src/base/ovm_registry.svh line 182

But I don’t know how this is related to my peice of code, else it is difficult to trace. I listed all my new & create calls and don’t see I used that for a abstract class.

Please suggest.

Murali

In reply to mpattaje:

This is the code that gets created by the `ovm_object_utils macro. Someone has called create_object() on an abstract class. If you can stay in the simulator after the fatal error (either in gui or command line mode) use the tb (traceback) command to get a call stack. That should show you exactly where the problem is.

In reply to mpattaje:

As Dave said,
Just find the “virtual class” you have defined and find out if you need it to be virtual (If you define a virtual class then it MUST be extended and consequently created (new)). If you used virtual class because maybe in the future you would like to extend it, then you will have to change/remove that.