SyoSil ApS UVM Scoreboard  1.0.3.0
cl_scb_test_ooo_std_tlm_filter_trfm.svh
1 /// Simple OOO compare test using the TLM based API and filter transforms
2 class cl_scb_test_ooo_std_tlm_filter_trfm extends cl_scb_test_single_scb;
3  //-------------------------------------
4  // Non randomizable variables
5  //-------------------------------------
6  cl_tb_tlm_monitor#(cl_tb_seq_item) monQ1P1;
7  cl_tb_tlm_monitor#(cl_tb_seq_item) monQ2P1;
8 
9  pk_utils_uvm::filter_trfm#(cl_tb_seq_item) filterQ1P1;
10  pk_utils_uvm::filter_trfm#(cl_tb_seq_item) filterQ2P1;
11 
12  //-------------------------------------
13  // UVM Macros
14  //-------------------------------------
15  `uvm_component_utils(cl_scb_test_ooo_std_tlm_filter_trfm)
16 
17  //-------------------------------------
18  // Constructor
19  //-------------------------------------
20  extern function new(string name = "cl_scb_test_ooo_std_tlm_filter_trfm",
21  uvm_component parent = null);
22  extern virtual function void pre_build();
23 
24  //-------------------------------------
25  // UVM Phase methods
26  //-------------------------------------
27  extern function void build_phase(uvm_phase phase);
28  extern function void connect_phase(uvm_phase phase);
29  extern task run_phase(uvm_phase phase);
31 
32 function cl_scb_test_ooo_std_tlm_filter_trfm::new(string name = "cl_scb_test_ooo_std_tlm_filter_trfm",
33  uvm_component parent = null);
34  super.new(name, parent);
35 endfunction : new
36 
37 function void cl_scb_test_ooo_std_tlm_filter_trfm::pre_build();
38  super.pre_build();
39 
40  this.syoscb_cfgs.syoscb_cfg[0].set_compare_type(pk_syoscb::SYOSCB_COMPARE_OOO);
41 endfunction : pre_build
42 
43 function void cl_scb_test_ooo_std_tlm_filter_trfm::build_phase(uvm_phase phase);
44  super.build_phase(phase);
45 
46  this.monQ1P1 = new("monQ1P1", this);
47  this.monQ2P1 = new("monQ2P1", this);
48  this.filterQ1P1 = new("filterQ1P1", this);
49  this.filterQ2P1 = new("filterQ2P1", this);
50 endfunction: build_phase
51 
52 function void cl_scb_test_ooo_std_tlm_filter_trfm::connect_phase(uvm_phase phase);
53  super.connect_phase(phase);
54 
55  // *NOTE*: This will hook up the TLM monitors with the TLM API of the
56  // scoreboard. Normally, this would not be done here but in the
57  // testbench environment which would have access to all of the
58  // montors and the scoreboard. However, these monitors only
59  // exists for this specific test. Thus, it is done here locally.
60  begin
61  cl_syoscb_subscriber subscriber;
62 
63  // Get the subscriber for Producer: P1 for queue: Q1 and connect it
64  // to the UVM monitor producing transactions for this queue
65  subscriber = this.scb_env.syoscb[0].get_subscriber("Q1", "P1");
66  this.filterQ1P1.ap.connect(subscriber.analysis_export);
67  this.monQ1P1.anls_port.connect(this.filterQ1P1.analysis_export);
68 
69  // Get the subscriber for Producer: P1 for queue: Q2 and connect it
70  // to the UVM monitor producing transactions for this queue
71  subscriber = this.scb_env.syoscb[0].get_subscriber("Q2", "P1");
72  this.filterQ2P1.ap.connect(subscriber.analysis_export);
73  this.monQ2P1.anls_port.connect(this.filterQ2P1.analysis_export);
74  end
75 endfunction: connect_phase
76 
77 task cl_scb_test_ooo_std_tlm_filter_trfm::run_phase(uvm_phase phase);
78  // Raise objection
79  phase.raise_objection(this);
80 
81  super.run_phase(phase);
82 
83  // *NOTE*: This test is intentionally empty since
84  // All of the stimulti is coming from the TLM monitors
85 
86  // Drop objection
87  phase.drop_objection(this);
88 endtask: run_phase
Simple OOO compare test using the TLM based API and filter transforms.
Generic subscriber for the scoreboard.
Base class for a filter transformation.
Definition: pk_utils_uvm.sv:18

Project: SyoSil ApS UVM Scoreboard, Revision: 1.0.3.0

Copyright 2014-2022 SyoSil ApS
All Rights Reserved Worldwide

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
doxygen
Doxygen Version: 1.8.14
Generated with IDV SV Filter Version: 2.6.3
Fri Sep 2 2022 14:38:23
Find a documentation bug? Report bugs to: scoreboard@syosil.com