A truly advanced UVM architecture is designed with Vertical Reuse in mind. This means the code you write for a small Block-level testbench should be instantly reusable when that block is integrated into a larger Subsystem or a full SoC.
Key Architectures:
- Horizontal Reuse: Using the same VIP across different projects (e.g., a standard AXI Agent).
- Vertical Reuse: Moving a block-level Env into a system-level Env without modifying its source code.