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

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:21
Find a documentation bug? Report bugs to: scoreboard@syosil.com