SyoSil ApS UVM Scoreboard  1.0.3.0
All Classes Functions Variables Typedefs Pages
cl_scb_test_ooo_md5_tlm.svh
1 /// Simple OOO compare test using the TLM based API and MD5 queues
2 class cl_scb_test_ooo_md5_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_md5_tlm)
13 
14  //-------------------------------------
15  // Constructor
16  //-------------------------------------
17  extern function new(string name = "cl_scb_test_ooo_md5_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_md5_tlm
27 
28 function cl_scb_test_ooo_md5_tlm::new(string name = "cl_scb_test_ooo_md5_tlm",
29  uvm_component parent = null);
30  super.new(name, parent);
31 endfunction : new
32 
33 function void cl_scb_test_ooo_md5_tlm::pre_build();
34  super.pre_build();
35 
36  this.syoscb_cfgs.syoscb_cfg[0].set_queue_type(pk_syoscb::SYOSCB_QUEUE_MD5);
37  this.syoscb_cfgs.syoscb_cfg[0].set_compare_type(pk_syoscb::SYOSCB_COMPARE_OOO);
38 endfunction : pre_build
39 
40 function void cl_scb_test_ooo_md5_tlm::build_phase(uvm_phase phase);
41  super.build_phase(phase);
42 
43  this.monQ1P1 = new("monQ1P1", this);
44  this.monQ2P1 = new("monQ2P1", this);
45 endfunction: build_phase
46 
47 function void cl_scb_test_ooo_md5_tlm::connect_phase(uvm_phase phase);
48  super.connect_phase(phase);
49 
50  // *NOTE*: This will hook up the TLM monitors with the TLM API of the
51  // scoreboard. Normally, this would not be done here but in the
52  // testbench environment which would have access to all of the
53  // montors and the scoreboard. However, these monitors only
54  // exists for this specific test. Thus, it is done here locally.
55  begin
56  cl_syoscb_subscriber subscriber;
57 
58  // Get the subscriber for Producer: P1 for queue: Q1 and connect it
59  // to the UVM monitor producing transactions for this queue
60  subscriber = this.scb_env.syoscb[0].get_subscriber("Q1", "P1");
61  this.monQ1P1.anls_port.connect(subscriber.analysis_export);
62 
63  // Get the subscriber for Producer: P1 for queue: Q2 and connect it
64  // to the UVM monitor producing transactions for this queue
65  subscriber = this.scb_env.syoscb[0].get_subscriber("Q2", "P1");
66  this.monQ2P1.anls_port.connect(subscriber.analysis_export);
67  end
68 endfunction: connect_phase
69 
70 task cl_scb_test_ooo_md5_tlm::run_phase(uvm_phase phase);
71  // Raise objection
72  phase.raise_objection(this);
73 
74  super.run_phase(phase);
75 
76  // *NOTE*: This test is intentionally empty since
77  // All of the stimulti is coming from the TLM monitors
78 
79  // Drop objection
80  phase.drop_objection(this);
81 endtask: run_phase
Generic subscriber for the scoreboard.
Simple OOO compare test using the TLM based API and MD5 queues.

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