Jump to content
Sign in to follow this  

[VIP Design] In which run_phase should driver or montior process items and signals?

Recommended Posts

Hi UVM Experts,

I oringally do it in run_phase() since backward compatible, however, there is a signals conflict problem between normal access and reset_phase(). Later I modify it in main_phase(), however, sometimes I hope to use it in configure_phase().

How is your suggest? thanks!

Share this post

Link to post
Share on other sites

Accellera are still developing the use models and APIs for new UVM phasing as it relates to sequences, transactors. In the mean time, our recommendation is to wait until that work is done and the API is stable.

For VIP design, code your driver and monitor to use only run_phase() and take care of reset separately - there are normally only 2 situations: (1) the driver/monitor is aware of reset as part of the protocol interface, and adjusts driven signals and monitored reports accordingly (to avoid the kind of signal conflict problem you refer to), and (2) the driver and monitor ignore reset, and some other part of the environment does any required cleanup of stimulus and checks (there should be no signal conflict here - one VIP per signal-group).

[if your particular situation dictates that you _must_ use {reset/configure/main}_phase(), then we recommend you use them only to control what the driver/monitor does in run_phase(), not to directly drive signals. Use the existing semaphore/barrier mechanisms.]

Using only run_phase is backwards-compatible as you say; but it is also forwards-compatible.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this