In reply to susdesai:
Hi,
Let me breakdown the use of the each UVM class for this counter example.
→ Add all the signal the interface.
→ Code all the configuration parameter
( like when to start the counter etc. which can be easily pass across the uvm component using config dB) in the configuration class which have uvm obejct type.
→ Drive all the input signals from driver (set the config parameter also when you start the counter. so scoreboard can also start at same time)
→ Monitor all the output signal in monitor class and send the transaction to the scoreboard at each clock.
→ Code the counter reference model in the scoreboard and compare the reference data with the received data from monitor.
Hope this will help you.