MatchLib
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
AxiArbiter< axiCfg, numManagers, maxOutstandingRequests > Class Template Reference

An n-way arbiter that connects multiple AXI manager ports to a single AXI subordinate port. More...

#include <AxiArbiter.h>

Inheritance diagram for AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >:

Public Types

typedef axi::axi4< axiCfg > axi_
 
typedef axi_::read::template subordinate ::ARPort axi_rd_subordinate_ar
 
typedef axi_::read::template subordinate ::RPort axi_rd_subordinate_r
 
typedef axi_::write::template subordinate ::AWPort axi_wr_subordinate_aw
 
typedef axi_::write::template subordinate ::WPort axi_wr_subordinate_w
 
typedef axi_::write::template subordinate ::BPort axi_wr_subordinate_b
 

Public Member Functions

typedef NVUINTW (numManagers_width) inFlight_t
 
 SC_HAS_PROCESS (AxiArbiter)
 
 AxiArbiter (sc_module_name name)
 
void run_ar ()
 
void run_r ()
 
void run_aw ()
 
void run_w ()
 
void run_b ()
 

Public Attributes

sc_in< bool > clk
 
sc_in< bool > reset_bar
 
nvhls::nv_array< axi_rd_subordinate_ar, numManagers > axi_rd_m_ar
 
nvhls::nv_array< axi_rd_subordinate_r, numManagers > axi_rd_m_r
 
nvhls::nv_array< axi_wr_subordinate_aw, numManagers > axi_wr_m_aw
 
nvhls::nv_array< axi_wr_subordinate_w, numManagers > axi_wr_m_w
 
nvhls::nv_array< axi_wr_subordinate_b, numManagers > axi_wr_m_b
 
axi_::read::template manager axi_rd_s
 
axi_::write::template manager axi_wr_s
 
FIFO< inFlight_t, maxOutstandingRequests > readQ
 
Connections::Combinational< inFlight_t > read_in_flight
 
FIFO< inFlight_t, maxOutstandingRequests > writeQ
 
Connections::Combinational< inFlight_t > write_in_flight
 
Connections::Combinational< inFlight_t > active_write_manager
 
Connections::Combinational< NVUINT1 > w_last
 

Static Public Attributes

static const int kDebugLevel = 5
 
static const int numManagers_width = nvhls::log2_ceil<numManagers>::val
 

Detailed Description

template<typename axiCfg, int numManagers, int maxOutstandingRequests>
class AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >

An n-way arbiter that connects multiple AXI manager ports to a single AXI subordinate port.

Template Parameters
axiCfgA valid AXI config.
numManagersThe number of managers to arbitrate between.
maxOutstandingRequestsThe number of oustanding read or write requests that can be tracked with internal state.
Overview
AxiArbiter connects one or more AXI managers to a single AXI subordinate. In the case of contention, a round-robin Arbiter selects the next request to pass through.
  • The arbiter assumes that responses are returned in the order that requests are sent. Downstream request reordering is currently not supported.
  • The AXI configs of all ports must be the same.
Usage Guidelines

This module sets the stall mode to flush by default to mitigate possible RTL bugs that can occur in the default stall mode. If you are confident that this class of bugs will not occur in your use case, you can change the stall mode via TCL directive:

directive set /path/to/AxiArbiter/run_ar/while -PIPELINE_STALL_MODE stall
An n-way arbiter that connects multiple AXI manager ports to a single AXI subordinate port.
Definition: AxiArbiter.h:58

This may reduce area/power.

Definition at line 58 of file AxiArbiter.h.


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