AXI muckbucket
axi_responder_seq.svh
Go to the documentation of this file.
1 //
3 // Copyright (C) 2017, Matt Dew @ Dew Technologies, LLC
4 //
5 // This program is free software (logic verification): you can redistribute it
6 // and/or modify it under the terms of the GNU Lesser General Public License (LGPL)
7 // as published by the Free Software Foundation, either version 3 of the License,
8 // or (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful, but WITHOUT
11 // ANY WARRANTY; without even the implied warranty of MERCHANTIBILITY or
12 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
13 // for more details.
14 //
15 // License: LGPL, v3, as defined and found on www.gnu.org,
16 // http://www.gnu.org/licenses/lgpl.html
17 //
18 //
19 // Author's intent: If you use this AXI verification code and find or fix bugs
20 // or make improvements, then share those fixes or improvements.
21 // If you use this in a bigger project, I don't care about,
22 // or want, any changes or code outside this block.
23 // Example: If you use this in an SoC simulation/testbench
24 // I don't want, or care about, your SoC or other blocks.
25 // I just care about the enhancements to these AXI files.
26 // That's why I have choosen the LGPL instead of the GPL.
28 
31 class axi_responder_seq : public axi_seq { public:
32 
34 
35  uvm_declare_p_sequencer (axi_sequencer)
36 
37 
38  logic <7:0> mem [];
39 
40  new (string name="axi_responder_seq");
41  task body();
42 
43 };
44 
48  axi_responder_seq::new (string name="axi_responder_seq") {
49  super.new(name);
50 }
51 
65  axi_seq_item drv_item;
66  axi_seq_item item;
67 
68  uvm_info(this.get_type_name(), "YO~! starting responder_seq", UVM_HIGH)
69 
70  forever {
71  // recommended by verilab but doesn't
72  // this break the child-doesn't-know-about-parent model?
73 
74  // Get from monitor (or wherever)
75 
76  p_sequencer.request_fifo.get(drv_item);
77 
78 
79  uvm_info(this.get_type_name(),
80  $sformatf(" <-HEY0HEY0HEY0 -> %s",
81  drv_item.convert2string()),
82  UVM_HIGH)
83  // SEnd to responder
84 
85  start_item(drv_item);
86  finish_item(drv_item);
87 
88  uvm_info(this.get_type_name(),
89  $sformatf(" <-HEY1HEY1HEY1 -> %s",
90  drv_item.convert2string()),
91  UVM_HIGH)
92  }
93 
94 }
string convert2string()
Convert item&#39;s variable into one printable string.
Normal sequencer with an extra analysis fifo and export.
task body()
Does all the work.
Forever running sequence that setups up responder *ready toggle patterns, then receives TLM packet fr...
uvm_object_utils(axi_responder_seq) uvm_declare_p_sequencer(axi_sequencer) logic<7 new(string name="axi_responder_seq")
Constructor.
uvm_object_utils(axi_seq) const int clearmemory=0
Writes to memory over AXI, backdoor readback, then AXI readback.
Definition: axi_seq.svh:33
contains all data and functions related to axi and usage