Review of AHB verification Agent: mainly on the inter class communication of REQ, RES between Driver and Sequence: Randomization for Burst mode: and Scoreboard comparison using associative storage

In reply to vvv:

Few low hanging fruits (from a review perspective, non-exhaustive):

  1. Avoid uvm_sequence_utils - it is removed from 1.2 onwards
  2. uvm_info, uvm_error macros are handier than uvm_report_info etc.
  3. seq::body should call crate_item inside the loop (as of now you have it outside the loop) - this will enable late factory overrides.
  4. Use get_name() for IDs in messages than inventing your own
  5. Change: scoreboard::connect → scoreboard::connect_phase
  6. Driver uses posedge/negedge - instead use clocking blocks and avoid edges in driver/monitor
  7. signal level comparisons could better use === instead of ==
  8. Better indentation (2 space is what I prefer)
  9. req.randomize → UVM internally uses a pre-defined ID RNDFLD, better stick to that: e.g.
   `uvm_warning("RNDFLD", "Randomization failed in uvm_do_with action")

(In fact I have a tiny macro `vw_uvm_rand for doing that)
10. Where are the assertions BTW? (Perhaps not shown, but ideal to use SVA for standard protocols like this)

Good Luck
Srini
www.verifworks.com