haykp
haykp

Reputation: 445

Driver Class functions override

I am writing verification IP for some interface and facing with one interesting item, which I think is somehow basic for OOP.

So in my driver I have functions e.g. configMaster, which is DUT specific. And VIP user may want to override that function. Now I want to provide mechanism for user to do that.
I think the best way of overriding the VIP driver class functions would be following

  1. User extends the driver class
  2. In the extended class user redefines the driver methods that he wants. If there are several methods that user doesn’t want to override that’s fine.
  3. Using factory override method user overrides the driver class with the extended user_driver class

The thing I don’t like here that user each time running the simulation should specify the factory override command.

Could you please share your opinion is this right way to do? Are there other ways?

Thanks
Hayk

Upvotes: 0

Views: 846

Answers (1)

Rahul Menon
Rahul Menon

Reputation: 792

Step 3 is not always mandatory . After overriding the class the user can directly use the derived class in his TB. This will mostly be the case if the TB is being built afresh or the user is integrating this IP as a new component into an existing TB.

In case the VIP was already present in a TB and you are now providing new set of functions to the user to override or the user itself want to use the override mechanism preferring to instantiate the base class provided by the VIP and use the override mechanism later , user can use the set_type_override_by_type function .

The function can be embedded into a base test and all the derived test will implicitly use the use vip class derived by the user without the need to specify it explicitly in the command line for each test case. There are 4 flavor to the type override function . http://www.testbench.in/UT_06_UVM_FACTORY.html

The function can also be used in a base env too , the user has to ensure that the type override function is called before the class is create for the override mechanism to take effect.

Upvotes: 1

Related Questions