AXI muckbucket
|
monitors all 5 channels for activity More...
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_item > | driver_activity_ap |
axi_if_abstract | vif |
axi_agent_config | m_config |
memory | m_memory |
mailbox< axi_seq_item > | writedata_mbx = new(0) |
mailbox< axi_seq_item > | readdata_mbx = new(0) |
monitors all 5 channels for activity
Definition at line 41 of file axi_monitor.svh.
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().
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().
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().
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().
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,
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().
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().
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 |
Definition at line 47 of file axi_monitor.svh.
Referenced by build_phase(), read_address(), read_data(), write_address(), write_data(), and write_response().
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().