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.