A uvm_memory_range defines one block of memory with a range_start address and an end address.
A range class (uvm_memory_range) has a range_start address and an end address (or a range_start and a length) It has a “type”, (MEMORY_RAND, MEMORY_RAND_BY_HAND, MEMORY_SET_BY_HAND).
| MEMORY_SET_BY_HAND | this range was created by hand, and should not be deleted or changed. |
| MEMORY_RAND_BY_HAND | this is a range that is random, but we |
| did add it | we told the system - “create a random range”. |
| MEMORY_RAND | this is a range that is random, and the system decided to create it on its |
| own. we didn’t ask for it | it’s just filling space, per the randomization/constraints in place. |