OpenCores
URL https://opencores.org/ocsvn/uart2bus_testbench/uart2bus_testbench/trunk

Subversion Repositories uart2bus_testbench

[/] [uart2bus_testbench/] [trunk/] [tb/] [uvm_src/] [reg/] [sequences/] [uvm_reg_mem_built_in_seq.svh] - Blame information for rev 16

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 16 HanySalah
//
2
// -------------------------------------------------------------
3
//    Copyright 2010 Mentor Graphics Corporation
4
//    Copyright 2010 Synopsys, Inc.
5
//    All Rights Reserved Worldwide
6
//
7
//    Licensed under the Apache License, Version 2.0 (the
8
//    "License"); you may not use this file except in
9
//    compliance with the License.  You may obtain a copy of
10
//    the License at
11
//
12
//        http://www.apache.org/licenses/LICENSE-2.0
13
//
14
//    Unless required by applicable law or agreed to in
15
//    writing, software distributed under the License is
16
//    distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
17
//    CONDITIONS OF ANY KIND, either express or implied.  See
18
//    the License for the specific language governing
19
//    permissions and limitations under the License.
20
// -------------------------------------------------------------
21
//
22
 
23
//------------------------------------------------------------------------------
24
// Class: uvm_reg_mem_built_in_seq
25
//
26
// Sequence that executes a user-defined selection
27
// of pre-defined register and memory test sequences.
28
//
29
//------------------------------------------------------------------------------
30
 
31
class uvm_reg_mem_built_in_seq extends uvm_reg_sequence #(uvm_sequence #(uvm_reg_item));
32
 
33
   `uvm_object_utils(uvm_reg_mem_built_in_seq)
34
 
35
   function new(string name="uvm_reg_mem_built_in_seq");
36
     super.new(name);
37
   endfunction
38
 
39
   // Variable: model
40
   //
41
   // The block to be tested. Declared in the base class.
42
   //
43
   //| uvm_reg_block model;
44
 
45
 
46
   // Variable: tests
47
   //
48
   // The pre-defined test sequences to be executed.
49
   //
50
   bit [63:0] tests = UVM_DO_ALL_REG_MEM_TESTS;
51
 
52
 
53
   // Task: body
54
   //
55
   // Executes any or all the built-in register and memory sequences.
56
   // Do not call directly. Use seq.start() instead.
57
 
58
   virtual task body();
59
 
60
      if (model == null) begin
61
         `uvm_error("uvm_reg_mem_built_in_seq", "Not block or system specified to run sequence on");
62
         return;
63
      end
64
 
65
      uvm_report_info("START_SEQ",{"\n\nStarting ",get_name()," sequence...\n"},UVM_LOW);
66
 
67
      if (tests & UVM_DO_REG_HW_RESET &&
68
          uvm_resource_db#(bit)::get_by_name({"REG::",model.get_full_name()},
69
                                             "NO_REG_TESTS", 0) == null &&
70
          uvm_resource_db#(bit)::get_by_name({"REG::",model.get_full_name()},
71
                                             "NO_REG_HW_RESET_TEST", 0) == null ) begin
72
        uvm_reg_hw_reset_seq seq = uvm_reg_hw_reset_seq::type_id::create("reg_hw_reset_seq");
73
        seq.model = model;
74
        seq.start(null,this);
75
        `uvm_info("FINISH_SEQ",{"Finished ",seq.get_name()," sequence."},UVM_LOW)
76
      end
77
 
78
      if (tests & UVM_DO_REG_BIT_BASH &&
79
          uvm_resource_db#(bit)::get_by_name({"REG::",model.get_full_name()},
80
                                             "NO_REG_TESTS", 0) == null &&
81
          uvm_resource_db#(bit)::get_by_name({"REG::",model.get_full_name()},
82
                                             "NO_REG_BIT_BASH_TEST", 0) == null ) begin
83
        uvm_reg_bit_bash_seq seq = uvm_reg_bit_bash_seq::type_id::create("reg_bit_bash_seq");
84
        seq.model = model;
85
        seq.start(null,this);
86
        `uvm_info("FINISH_SEQ",{"Finished ",seq.get_name()," sequence."},UVM_LOW)
87
      end
88
 
89
      if (tests & UVM_DO_REG_ACCESS &&
90
          uvm_resource_db#(bit)::get_by_name({"REG::",model.get_full_name()},
91
                                             "NO_REG_TESTS", 0) == null &&
92
          uvm_resource_db#(bit)::get_by_name({"REG::",model.get_full_name()},
93
                                             "NO_REG_ACCESS_TEST", 0) == null ) begin
94
        uvm_reg_access_seq seq = uvm_reg_access_seq::type_id::create("reg_access_seq");
95
        seq.model = model;
96
        seq.start(null,this);
97
        `uvm_info("FINISH_SEQ",{"Finished ",seq.get_name()," sequence."},UVM_LOW)
98
      end
99
 
100
      if (tests & UVM_DO_MEM_ACCESS &&
101
          uvm_resource_db#(bit)::get_by_name({"REG::",model.get_full_name()},
102
                                             "NO_REG_TESTS", 0) == null &&
103
          uvm_resource_db#(bit)::get_by_name({"REG::",model.get_full_name()},
104
                                             "NO_MEM_TESTS", 0) == null &&
105
          uvm_resource_db#(bit)::get_by_name({"REG::",model.get_full_name()},
106
                                             "NO_MEM_ACCESS_TEST", 0) == null ) begin
107
        uvm_mem_access_seq seq = uvm_mem_access_seq::type_id::create("mem_access_seq");
108
        seq.model = model;
109
        seq.start(null,this);
110
        `uvm_info("FINISH_SEQ",{"Finished ",seq.get_name()," sequence."},UVM_LOW)
111
      end
112
 
113
      if (tests & UVM_DO_SHARED_ACCESS &&
114
          uvm_resource_db#(bit)::get_by_name({"REG::",model.get_full_name()},
115
                                             "NO_REG_TESTS", 0) == null &&
116
          uvm_resource_db#(bit)::get_by_name({"REG::",model.get_full_name()},
117
                                             "NO_REG_SHARED_ACCESS_TEST", 0) == null ) begin
118
        uvm_reg_mem_shared_access_seq seq = uvm_reg_mem_shared_access_seq::type_id::create("shared_access_seq");
119
        seq.model = model;
120
        seq.start(null,this);
121
        `uvm_info("FINISH_SEQ",{"Finished ",seq.get_name()," sequence."},UVM_LOW)
122
      end
123
 
124
      if (tests & UVM_DO_MEM_WALK &&
125
          uvm_resource_db#(bit)::get_by_name({"REG::",model.get_full_name()},
126
                                             "NO_REG_TESTS", 0) == null &&
127
          uvm_resource_db#(bit)::get_by_name({"REG::",model.get_full_name()},
128
                                             "NO_MEM_WALK_TEST", 0) == null ) begin
129
        uvm_mem_walk_seq seq = uvm_mem_walk_seq::type_id::create("mem_walk_seq");
130
        seq.model = model;
131
        seq.start(null,this);
132
        `uvm_info("FINISH_SEQ",{"Finished ",seq.get_name()," sequence."},UVM_LOW)
133
      end
134
 
135
   endtask: body
136
 
137
endclass: uvm_reg_mem_built_in_seq
138
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.