|
@@ -0,0 +1,183 @@ |
|
|
|
|
|
//reset sequence |
|
|
|
|
|
class reset_sequence extends uvm_sequence #(packet); |
|
|
|
|
|
|
|
|
|
|
|
`uvm_object_utils(reset_sequence) |
|
|
|
|
|
packet pkt; |
|
|
|
|
|
function new(string name = "reset_sequence"); |
|
|
|
|
|
super.new(name); |
|
|
|
|
|
endfunction |
|
|
|
|
|
|
|
|
|
|
|
virtual task body(); |
|
|
|
|
|
`uvm_info(get_type_name(), $sformatf("*** RESET SEQUENCE is started ***"), UVM_MEDIUM) |
|
|
|
|
|
pkt = packet::type_id::create("pkt"); |
|
|
|
|
|
start_item(pkt); |
|
|
|
|
|
assert(pkt.randomize); |
|
|
|
|
|
pkt.op = WRITE; |
|
|
|
|
|
finish_item(pkt); |
|
|
|
|
|
endtask |
|
|
|
|
|
endclass |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
//read sequence |
|
|
|
|
|
class read_sequence extends uvm_sequence #(packet); |
|
|
|
|
|
`uvm_object_utils(read_sequence) |
|
|
|
|
|
packet pkt; |
|
|
|
|
|
function new(string name = "read_sequence"); |
|
|
|
|
|
super.new(name); |
|
|
|
|
|
endfunction |
|
|
|
|
|
|
|
|
|
|
|
virtual task body(); |
|
|
|
|
|
repeat(10) |
|
|
|
|
|
begin |
|
|
|
|
|
`uvm_info(get_type_name(), $sformatf("*** READ SEQUENCE is started ***"), UVM_MEDIUM) |
|
|
|
|
|
pkt = packet::type_id::create("pkt"); |
|
|
|
|
|
//pkt.paddr_invalid.constraint_mode(0); |
|
|
|
|
|
start_item(pkt); |
|
|
|
|
|
assert(pkt.randomize); |
|
|
|
|
|
pkt.op = READ; |
|
|
|
|
|
//pkt.pwrite=0; |
|
|
|
|
|
finish_item(pkt); |
|
|
|
|
|
end |
|
|
|
|
|
endtask |
|
|
|
|
|
endclass |
|
|
|
|
|
|
|
|
|
|
|
//write sequence |
|
|
|
|
|
class write_sequence extends uvm_sequence #(packet); |
|
|
|
|
|
`uvm_object_utils(write_sequence) |
|
|
|
|
|
packet pkt; |
|
|
|
|
|
function new(string name = "write_sequence"); |
|
|
|
|
|
super.new(name); |
|
|
|
|
|
endfunction |
|
|
|
|
|
|
|
|
|
|
|
virtual task body(); |
|
|
|
|
|
repeat(10) |
|
|
|
|
|
begin |
|
|
|
|
|
`uvm_info(get_type_name(), $sformatf("*** WRITE SEQUENCE is started ***"), UVM_MEDIUM) |
|
|
|
|
|
pkt = packet::type_id::create("pkt"); |
|
|
|
|
|
pkt.paddr_invalid.constraint_mode(0); |
|
|
|
|
|
start_item(pkt); |
|
|
|
|
|
assert(pkt.randomize); |
|
|
|
|
|
pkt.ap = WRITE; |
|
|
|
|
|
pkt.pwrite=1; |
|
|
|
|
|
finish_item(pkt); |
|
|
|
|
|
end |
|
|
|
|
|
endtask |
|
|
|
|
|
endclass |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//write_read_sequence |
|
|
|
|
|
class write_read_sequence extends uvm_sequence #(packet); |
|
|
|
|
|
`uvm_object_utils(write_read_sequence) |
|
|
|
|
|
packet pkt; |
|
|
|
|
|
function new(string name = "write_read_sequence"); |
|
|
|
|
|
super.new(name); |
|
|
|
|
|
endfunction |
|
|
|
|
|
|
|
|
|
|
|
virtual task body(); |
|
|
|
|
|
//write seq |
|
|
|
|
|
repeat(10) |
|
|
|
|
|
begin |
|
|
|
|
|
`uvm_info(get_type_name(), $sformatf("*** WRITE SEQUENCE is started ***"), UVM_MEDIUM) |
|
|
|
|
|
pkt = packet::type_id::create("pkt"); |
|
|
|
|
|
pkt.paddr_invalid.constraint_mode(0); |
|
|
|
|
|
start_item(pkt); |
|
|
|
|
|
assert(pkt.randomize); |
|
|
|
|
|
pkt.ap = WRITE; |
|
|
|
|
|
pkt.pwrite=1; |
|
|
|
|
|
finish_item(pkt); |
|
|
|
|
|
|
|
|
|
|
|
//read seq |
|
|
|
|
|
`uvm_info(get_type_name(), $sformatf("*** READ SEQUENCE is started ***"), UVM_MEDIUM) |
|
|
|
|
|
pkt = packet::type_id::create("pkt"); |
|
|
|
|
|
pkt.paddr_invalid.constraint_mode(0); |
|
|
|
|
|
start_item(pkt); |
|
|
|
|
|
assert(pkt.randomize); |
|
|
|
|
|
pkt.ap = READ; |
|
|
|
|
|
pkt.pwrite=0; |
|
|
|
|
|
finish_item(pkt); |
|
|
|
|
|
end |
|
|
|
|
|
endtask |
|
|
|
|
|
endclass |
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
//write_read_sequence |
|
|
|
|
|
class multi_write_multi_read_sequence extends uvm_sequence #(packet); |
|
|
|
|
|
`uvm_object_utils(multi_write_multi_read_sequence) |
|
|
|
|
|
packet pkt; |
|
|
|
|
|
function new(string name = "multi_write_multi_read_sequence"); |
|
|
|
|
|
super.new(name); |
|
|
|
|
|
endfunction |
|
|
|
|
|
|
|
|
|
|
|
virtual task body(); |
|
|
|
|
|
int count=1; |
|
|
|
|
|
//multi write seq |
|
|
|
|
|
repeat(5) |
|
|
|
|
|
begin |
|
|
|
|
|
`uvm_info(get_type_name(), $sformatf("***MULTI WRITE SEQUENCE --> %0d is started ***",count), UVM_MEDIUM) |
|
|
|
|
|
pkt = packet::type_id::create("pkt"); |
|
|
|
|
|
pkt.paddr_invalid.constraint_mode(0); |
|
|
|
|
|
start_item(pkt); |
|
|
|
|
|
assert(pkt.randomize); |
|
|
|
|
|
pkt.ap = WRITE; |
|
|
|
|
|
pkt.pwrite=1; |
|
|
|
|
|
finish_item(pkt); |
|
|
|
|
|
count++; |
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
//multi read seq |
|
|
|
|
|
repeat(5) |
|
|
|
|
|
begin |
|
|
|
|
|
`uvm_info(get_type_name(), $sformatf("***MULTI READ SEQUENCE--> %0d is started ***",count), UVM_MEDIUM) |
|
|
|
|
|
pkt = packet::type_id::create("pkt"); |
|
|
|
|
|
pkt.paddr_invalid.constraint_mode(0); |
|
|
|
|
|
start_item(pkt); |
|
|
|
|
|
assert(pkt.randomize); |
|
|
|
|
|
pkt.ap = READ; |
|
|
|
|
|
pkt.pwrite=0; |
|
|
|
|
|
finish_item(pkt); |
|
|
|
|
|
count++; |
|
|
|
|
|
end |
|
|
|
|
|
endtask |
|
|
|
|
|
endclass |
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
//write_read_sequence |
|
|
|
|
|
class slaveerr_sequence extends uvm_sequence #(packet); |
|
|
|
|
|
`uvm_object_utils(slaveerr_sequence) |
|
|
|
|
|
packet pkt; |
|
|
|
|
|
function new(string name = "slaveerr_sequence"); |
|
|
|
|
|
super.new(name); |
|
|
|
|
|
endfunction |
|
|
|
|
|
|
|
|
|
|
|
virtual task body(); |
|
|
|
|
|
repeat(10) |
|
|
|
|
|
begin |
|
|
|
|
|
`uvm_info(get_type_name(), $sformatf("*** SLV ERROR WRITE SEQUENCE is started ***"), UVM_MEDIUM) |
|
|
|
|
|
pkt = packet::type_id::create("pkt"); |
|
|
|
|
|
start_item(pkt); |
|
|
|
|
|
pkt.paddr_valid.constraint_mode(0); |
|
|
|
|
|
assert(pkt.randomize); |
|
|
|
|
|
pkt.ap = WRITE; |
|
|
|
|
|
pkt.pwrite=1; |
|
|
|
|
|
finish_item(pkt); |
|
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
//multi read seq |
|
|
|
|
|
repeat(10) |
|
|
|
|
|
begin |
|
|
|
|
|
`uvm_info(get_type_name(), $sformatf("*** SLV ERROR READ OPERATION is started ***"), UVM_MEDIUM) |
|
|
|
|
|
pkt = packet::type_id::create("pkt"); |
|
|
|
|
|
pkt.paddr_valid.constraint_mode(0); |
|
|
|
|
|
start_item(pkt); |
|
|
|
|
|
assert(pkt.randomize); |
|
|
|
|
|
pkt.ap = READ; |
|
|
|
|
|
pkt.pwrite=0; |
|
|
|
|
|
finish_item(pkt); |
|
|
|
|
|
end |
|
|
|
|
|
endtask |
|
|
|
|
|
endclass |
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|