AXI muckbucket
Public Member Functions | Public Attributes | List of all members
axi_monitor Class Reference

monitors all 5 channels for activity More...

Inheritance diagram for axi_monitor:
Inheritance graph
[legend]
Collaboration diagram for axi_monitor:
Collaboration graph
[legend]

Public Member Functions

 uvm_component_utils (axi_monitor) uvm_analysis_port< axi_seq_item > ap
 
 new (string name="axi_monitor", uvm_component parent=null)
 Constructor. More...
 
void build_phase (uvm_phase phase)
 Creates the analysis port and virtual interface. More...
 
void connect_phase (uvm_phase phase)
 
task run_phase (uvm_phase phase)
 Starts the monitoring threads. More...
 
task write_address ()
 monitors Write Address channel More...
 
task write_data ()
 monitors Write Data channel More...
 
task write_response ()
 monitors Write Response channel and sends out TLM pkt Loop Wait for activity on the Write Response Channel Convert into an axi_seq_item Send out analysis port More...
 
task read_address ()
 monitors Read Address channel More...
 
task read_data ()
 monitors Read Data channel and sends out TLM pkt Loop Wait for activity on the Read Data Channel,store in queue Once read address packet received, store queue contents into tlm pkt When rlast received, send out analysis port More...
 

Public Attributes

uvm_analysis_port< axi_seq_itemdriver_activity_ap
 
axi_if_abstract vif
 
axi_agent_config m_config
 
memory m_memory
 
mailbox< axi_seq_itemwritedata_mbx = new(0)
 
mailbox< axi_seq_itemreaddata_mbx = new(0)
 

Detailed Description

monitors all 5 channels for activity

Definition at line 41 of file axi_monitor.svh.

Member Function Documentation

void axi_monitor::build_phase ( uvm_phase  phase)

Creates the analysis port and virtual interface.

Definition at line 77 of file axi_monitor.svh.

References driver_activity_ap, and vif.

void axi_monitor::connect_phase ( uvm_phase  phase)

Definition at line 87 of file axi_monitor.svh.

axi_monitor::new ( string  name = "axi_monitor",
uvm_component  parent = null 
)

Constructor.

Definition at line 70 of file axi_monitor.svh.

task axi_monitor::read_address ( )

monitors Read Address channel

and sends out TLM pkt. If this monitor's agent is a responder, then also creates another TLM packet for Read Data channel monitoring thread to use to send back to the master Loop Wait for activity on the Write Address Channel Convert into an axi_seq_item Send out analysis port If responder, read from agent's memory, create another TLM packet and send to Read Data channel to send back to master

Definition at line 316 of file axi_monitor.svh.

References axi_seq_item::addr, ADDR_WIDTH, ar_to_class(), axi_seq_item::burst_size, axi_seq_item::burst_type, calculate_axlen(), axi_seq_item::cmd, axi_seq_item::convert2string(), axi_seq_item::data, driver_activity_ap, axi_agent_config::drv_type, e_READ, e_READ_DATA, e_RESPONDER, get_beat_N_byte_lanes(), axi_if_abstract::get_data_bus_width(), get_next_address(), axi_seq_item::len, m_config, m_memory, memory::read(), read_data(), readdata_mbx, axi_agent_config::rvalid, axi_seq_item::valid, vif, and axi_if_abstract::wait_for_read_address().

Referenced by run_phase().

Here is the call graph for this function:

Here is the caller graph for this function:

task axi_monitor::read_data ( )

monitors Read Data channel and sends out TLM pkt Loop Wait for activity on the Read Data Channel,store in queue Once read address packet received, store queue contents into tlm pkt When rlast received, send out analysis port

Definition at line 478 of file axi_monitor.svh.

References axi_seq_item::cmd, axi_seq_item::data, e_READ_DATA, axi_seq_item::len, readdata_mbx, axi_seq_item_r_vector_s::rlast, vif, and axi_if_abstract::wait_for_read_data().

Referenced by read_address(), and run_phase().

Here is the call graph for this function:

Here is the caller graph for this function:

task axi_monitor::run_phase ( uvm_phase  phase)

Starts the monitoring threads.

Definition at line 93 of file axi_monitor.svh.

References read_address(), read_data(), write_address(), write_data(), and write_response().

Here is the call graph for this function:

axi_monitor::uvm_component_utils ( axi_monitor  )
task axi_monitor::write_address ( )

monitors Write Address channel

and sends out TLM pkt. If this monitor's agent is a responder, then also creates another TLM packet for Write Data channel monitoring thread to use Loop Wait for activity on the Write Address Channel Convert into an axi_seq_item Send out analysis port Add to Write Data Channel monitoring thread's queue

Definition at line 116 of file axi_monitor.svh.

References aw_to_class(), axi_seq_item::cmd, axi_seq_item::convert2string(), driver_activity_ap, axi_agent_config::drv_type, e_RESPONDER, e_WRITE, axi_seq_item::len, m_config, vif, axi_if_abstract::wait_for_write_address(), and writedata_mbx.

Referenced by run_phase().

Here is the call graph for this function:

Here is the caller graph for this function:

task axi_monitor::write_data ( )

monitors Write Data channel

and sends out TLM pkt. Loop Wait for activity on the Write Data Channel and push it into a queue When a write address isavailable,

  • pop all queued write data into the write address packet.
  • write to m_memory (likely the agent's local memory memory instantiation Once number of expected beats is received (matches awlen), then send out analysis port

Definition at line 169 of file axi_monitor.svh.

References axi_seq_item::addr, ADDR_WIDTH, axi_seq_item::burst_size, axi_seq_item::burst_type, axi_seq_item::cmd, axi_seq_item::data, axi_agent_config::drv_type, e_RESPONDER, e_WRITE_DATA, get_beat_N_byte_lanes(), axi_if_abstract::get_data_bus_width(), get_next_address(), axi_seq_item::len, m_config, m_memory, vif, axi_if_abstract::wait_for_write_data(), axi_seq_item_w_vector_s::wdata, axi_seq_item_w_vector_s::wlast, memory::write(), writedata_mbx, axi_seq_item::wstrb, and axi_seq_item_w_vector_s::wstrb.

Referenced by run_phase().

Here is the call graph for this function:

Here is the caller graph for this function:

task axi_monitor::write_response ( )

monitors Write Response channel and sends out TLM pkt Loop Wait for activity on the Write Response Channel Convert into an axi_seq_item Send out analysis port

Definition at line 283 of file axi_monitor.svh.

References b_to_class(), axi_seq_item::cmd, e_WRITE_RESPONSE, vif, and axi_if_abstract::wait_for_write_response().

Referenced by run_phase().

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

uvm_analysis_port<axi_seq_item> axi_monitor::driver_activity_ap

Definition at line 45 of file axi_monitor.svh.

Referenced by build_phase(), axi_agent::connect_phase(), read_address(), and write_address().

axi_agent_config axi_monitor::m_config

Definition at line 48 of file axi_monitor.svh.

Referenced by axi_agent::build_phase(), read_address(), write_address(), and write_data().

memory axi_monitor::m_memory

Definition at line 49 of file axi_monitor.svh.

Referenced by axi_agent::build_phase(), read_address(), and write_data().

mailbox<axi_seq_item> axi_monitor::readdata_mbx = new(0)

Definition at line 52 of file axi_monitor.svh.

Referenced by read_address(), and read_data().

axi_if_abstract axi_monitor::vif
mailbox<axi_seq_item> axi_monitor::writedata_mbx = new(0)

Definition at line 51 of file axi_monitor.svh.

Referenced by write_address(), and write_data().


The documentation for this class was generated from the following file: