AXI muckbucket
axi_agent_config.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 
38 class axi_agent_config : public uvm_object { public:
40 
41  //defaults
42  uvm_active_passive_enum m_active = UVM_PASSIVE;
43  driver_type_t drv_type = e_DRIVER; /*<! Driver or responder */
44 
45  bit has_scoreboard = 0b1; /*<! Enable scoreboard? */
46  bit has_coverage = 0b1; /*<! Turn on coverage collection? */
47 
48 
49 
50  bit rvalid [];
51  bit wvalid [];
52 
53  // Use toggle patterns. The interface can directly handle all the ready* toggling
54  // without requiring the driver.
55  // Keep it to where in the future the responder sequences could do this by
56  // directly toggling the *ready signals
57  // used if master driver
58  rand bit <31:0> bready_toggle_pattern;
59  rand bit <31:0> rready_toggle_pattern;
60 
61  // used if slave driver / responder
62  rand bit <31:0> awready_toggle_pattern;
63  rand bit <31:0> wready_toggle_pattern;
64  rand bit <31:0> arready_toggle_pattern;
65 
66  // If multiple write transfers are queued,
67  // this allows easily testing back to back or pausing between write address transfers.
70 
73 
76 
79 
82 
83 
84  // AXI spec, A3.2.2, states once valid is asserted,it must stay asserted until
85  // ready asserts. These varibles let us toggle valid to beat on the ready/valid
86  // logic
90  //bit axi_incompatible_arvalid_toggling_mode=0;
92 // \todo:issing ar toggling mode
93 
94  // Prevent ready and valid not overlapping, which results in data never sending,
95  // which hangs the sim.
98 
99 
100  //
101  // If multiple write transfers are queued,
102  // this allows easily testing back to back or pausing between write address transfers.
103 
104 
105  new (string name="axi_agent_config");
106 
107 };
108 
112  axi_agent_config::new (string name="axi_agent_config") {
113  super.new(name);
114 }
rand bit< 31:0 > arready_toggle_pattern
bit axi_incompatible_bvalid_toggling_mode
byte clks_without_rvalid_or_rready_max
rand bit< 31:0 > awready_toggle_pattern
rand bit< 31:0 > rready_toggle_pattern
bit axi_incompatible_awvalid_toggling_mode
byte clks_without_wvalid_or_wready_max
rand byte max_clks_between_r_transfers
rand byte min_clks_between_aw_transfers
rand byte max_clks_between_b_transfers
rand byte max_clks_between_aw_transfers
rand byte max_clks_between_w_transfers
bit axi_incompatible_rvalid_toggling_mode
driver_type_t
Config variable that tells axi_driver whether it is a master driver or slave driver(responder) ...
Definition: axi_uvm_pkg.sv:77
uvm_object_utils(axi_agent_config) uvm_active_passive_enum m_active
bit axi_incompatible_wvalid_toggling_mode
rand bit< 31:0 > bready_toggle_pattern
rand byte min_clks_between_w_transfers
rand byte min_clks_between_r_transfers
driver_type_t drv_type
new(string name="axi_agent_config")
Constructor.
Configuration object for an axi_agent.
rand bit< 31:0 > wready_toggle_pattern
rand byte min_clks_between_b_transfers
rand byte min_clks_between_ar_transfers
rand byte max_clks_between_ar_transfers