0011001100110011
1100110011001100
bit [15:0] array1
constraint c1 { array1 ==
RAM space : 2KB
4B algined
data can be 1KB, 64B, 128B
start address,
end address
rand bit[11:0] addr
rand bit [11:0] start_addr, end_addr;
rand int mem_size;
constraint c1 { addr inside [start_addr: end_addr];}
constraint c2 { addr[1:0] == 2'b0;}
property p1 @posedge clock
$rose (dvalid) -> ##[2:4] data[*2:4] ##[1:3] dack
endproperty
class tb_Driver extends uvm_driver
trasncation tx;
virtual task run_phase (uvm_phase pahse)
phase.raise_objection
seqitem_port.get_next_item
@(posedge clock)
if((!tx. write_read) & ([Link]) ) begin
@([Link]);
vif. address = tx.write_address;
vif. write_data = tx.write_data;
end
else if ( (tx. write_read) & ([Link]) begin
@([Link]);
vif. address = tx.read_address;
@(posedge clock)
tx.read_data= vif.read_data;
end
seqitem_port.item_done
phase.drop_objection