Best way to randomize from virtual sequence

In reply to Phill_Ferg:

The reason that the `uvm_do_* macros aren’t recommended is that there are several inherent flaws which make their usage model limited:

  • A new sequence item is created every time. If you are creating complex sequence items or sending many items in a loop, there can be a significant performance hit. The recommendation in this case would be to create only one sequence item and reuse it multiple times.
  • The error checking for randomization() failure generates only a warning, which might not be what the user desires.
  • You can not modify/alter a sequence item directly. Often it is more to efficient to create a sequence item and assign values directly instead of calling randomize(). This is especially true if you don’t want to add any constraints.

Since the one line macro expands to 3 commands, the amount of flexibility provided by manually coding only what you need outweighs the use of the macros.