Implementing linked methods of rvm_env/vmm_env/avm_env/ovm_env

If you have used RVM (Reference Verification Methodology) in Vera **or** VMM (Verification Methodology Manual), AVM (Advanced Verification Methodology) **or** OVM (Open Verification Methodology) in SystemVerilog, then you will be familiar with rvm_env, vmm_env, avm_env, etc. base classes. These classes has set of methods build(), reset_dut(), cfg_dut(), start(), wait_for_end(), etc. which are getting called in predefined order. When you call any single method, it will make sure that previous methods in given order set has already called, **and** **if** **not**, it will be called first to ensure ordering.

Do you know how this order can be maintained in *_env (rvm_env, vmm_env, avm_env or ovm_env) classes?

Read this article
which explains one of the possible way of implementing this chain of method calls.

Thanks,
Sandeep