Skip to content

Commit 0640137

Browse files
Create apb_error_addr_sequence.sv
1 parent cafe629 commit 0640137

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

apb_error_addr_sequence.sv

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
class apb_error_addr_sequence extends uvm_sequence#(apb_transaction);
2+
`uvm_object_utils(apb_error_addr_sequence)
3+
4+
int last_addr;
5+
6+
//constructor
7+
function new(string name = "apb_error_addr_sequence");
8+
super.new(name);
9+
endfunction
10+
11+
virtual task body();
12+
apb_transaction write_trans;
13+
apb_transaction read_trans;
14+
15+
//generate the write transaction
16+
write_trans = apb_transaction::type_id::create("write_trans");
17+
write_trans.PSEL = 1;
18+
write_trans.PWRITE = 1;
19+
write_trans.PENABLE = 1;
20+
//write_trans.PADDR = $urandom_range(0,25);
21+
//write_trans.PWDATA = $urandom_range(5,50);
22+
start_item(write_trans);
23+
write_trans.constraint_mode(0);
24+
assert(write_trans.randomize() with {PADDR >33;});
25+
last_addr = write_trans.PADDR;
26+
`uvm_info("WSEQUENCE",$sformatf("Write Transaction Generated: PRESET =%0d, PSEL =%0d, PWRITE =%0d, PENABLE =%0d, ADDR =%0d, PWDATA =%0d ", write_trans.PRESET,write_trans.PSEL,write_trans.PWRITE,write_trans.PENABLE,write_trans.PADDR,write_trans.PWDATA),UVM_LOW)
27+
finish_item(write_trans);
28+
#5;
29+
30+
//generate read transaction
31+
read_trans = apb_transaction::type_id::create("read_trans");
32+
read_trans.PSEL = 1;
33+
read_trans.PWRITE = 0;
34+
read_trans.PENABLE = 1;
35+
read_trans.PADDR = last_addr;
36+
37+
start_item(read_trans);
38+
`uvm_info("RSEQUENCE",$sformatf("Read Transaction Generated: PRESET =%0d, PSEL =%0d, PWRITE =%0d, PENABLE =%0d, ADDR =%0d ", read_trans.PRESET,read_trans.PSEL,read_trans.PWRITE,read_trans.PENABLE,read_trans.PADDR),UVM_LOW)
39+
finish_item(read_trans);
40+
41+
endtask
42+
endclass

0 commit comments

Comments
 (0)