-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdll_rx_seq_lib.sv
57 lines (49 loc) · 1.46 KB
/
dll_rx_seq_lib.sv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
class dll_rx_base_seq extends uvm_sequence#(dll_item);
`uvm_object_utils(dll_rx_base_seq)
`NEW_OBJ
task pre_body();
uvm_phase phase = get_starting_phase();
if (phase != null) begin
phase.phase_done.set_drain_time(this, 100);
phase.raise_objection(this);
end
endtask
task post_body();
uvm_phase phase = get_starting_phase();
if (phase != null) begin
phase.drop_objection(this);
end
endtask
endclass
class dll_linkup_indicate_seq extends dll_rx_base_seq;
dll_item tx;
dll_item txQ[$];
`uvm_object_utils(dll_linkup_indicate_seq)
`NEW_OBJ
task body();
`uvm_do_with(req, {req.linkup_indicate==1'b1;}) // not generating any TLP
endtask
endclass
class dll_vc_up_indicate_seq extends dll_rx_base_seq;
dll_item tx;
dll_item txQ[$];
`uvm_object_utils(dll_vc_up_indicate_seq)
`NEW_OBJ
task body();
`uvm_do_with(req, {req.vc_status_vector == 8'hFF;}) // not generating any TLP
endtask
endclass
class dll_cpl_seq extends dll_rx_base_seq;
`uvm_object_utils(dll_cpl_seq)
`NEW_OBJ
task body();
forever begin
// uvm_resource_db#(int)::read_by_name("TL","CFG",value,this);
@(pcie_common::rcvd_tlp_count);
$display("=================== Driving CplD ============ %d",pcie_common::rcvd_tlp_count);
fork
`uvm_do_with(req, {req.tlp_type == pcie_common::transmit_tlp;}) // CplD
join_none
end
endtask
endclass