42 uvm_analysis_port <axi_seq_item> ap;
54 new (
string name=
"axi_agent", uvm_component parent=null);
64 super.new(name, parent);
73 super.build_phase(phase);
76 if (!uvm_config_db <axi_agent_config> ::get(
this,
"",
"m_config",
m_config)) {
77 uvm_info(this.get_type_name,
"Unable to fetch axi_agent_config from config db. Using defaults", UVM_INFO)
80 m_config = axi_agent_config::type_id::create(
"m_config",
this);
86 if (
m_config.m_active == UVM_ACTIVE) {
88 m_driver = axi_driver::type_id::create(
"m_driver",
this);
92 m_responder = axi_responder::type_id::create(
"m_responder",
this);
97 m_seqr = axi_sequencer::type_id::create(
"m_seqr",
this);
100 m_monitor = axi_monitor::type_id::create(
"m_monitor",
this);
103 m_scoreboard = axi_scoreboard::type_id::create(
"m_scoreboard",
this);
113 super.connect_phase(phase);
115 if (
m_config.m_active == UVM_ACTIVE) {
Logic to act as an AXI slave (responder) for all 5 channels.
Normal sequencer with an extra analysis fifo and export.
Logic to act as an AXI master for all 5 channels.
Extremely simple memory model with just write() and read() methods.
uvm_analysis_port< axi_seq_item > driver_activity_ap
axi_agent_config m_config
axi_coveragecollector m_coveragecollector
uvm_component_utils(axi_agent) uvm_analysis_port< axi_seq_item > ap
monitors all 5 channels for activity
axi_scoreboard m_scoreboard
new(string name="axi_agent", uvm_component parent=null)
Constructor.
void build_phase(uvm_phase phase)
Create sub-components as configured.
axi_responder m_responder
Encapsulates driver, monitor, coverage collector, a local memory.
axi_agent_config m_config
axi_agent_config m_config
axi_agent_config m_config
Configuration object for an axi_agent.
void connect_phase(uvm_phase phase)