An n-way arbiter that connects multiple AXI manager ports to a single AXI subordinate port. More...
#include <AxiArbiter.h>
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 |
An n-way arbiter that connects multiple AXI manager ports to a single AXI subordinate port.
axiCfg | A valid AXI config. |
numManagers | The number of managers to arbitrate between. |
maxOutstandingRequests | The number of oustanding read or write requests that can be tracked with internal state. |
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:
This may reduce area/power.
Definition at line 58 of file AxiArbiter.h.
typedef axi::axi4<axiCfg> AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::axi_ |
Definition at line 64 of file AxiArbiter.h.
typedef axi_::read::template subordinate ::ARPort AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::axi_rd_subordinate_ar |
Definition at line 67 of file AxiArbiter.h.
typedef axi_::read::template subordinate ::RPort AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::axi_rd_subordinate_r |
Definition at line 68 of file AxiArbiter.h.
typedef axi_::write::template subordinate ::AWPort AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::axi_wr_subordinate_aw |
Definition at line 69 of file AxiArbiter.h.
typedef axi_::write::template subordinate ::WPort AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::axi_wr_subordinate_w |
Definition at line 70 of file AxiArbiter.h.
typedef axi_::write::template subordinate ::BPort AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::axi_wr_subordinate_b |
Definition at line 71 of file AxiArbiter.h.
|
inline |
Definition at line 94 of file AxiArbiter.h.
|
inline |
Definition at line 127 of file AxiArbiter.h.
|
inline |
Definition at line 170 of file AxiArbiter.h.
|
inline |
Definition at line 215 of file AxiArbiter.h.
|
inline |
Definition at line 269 of file AxiArbiter.h.
|
inline |
Definition at line 294 of file AxiArbiter.h.
|
static |
Definition at line 60 of file AxiArbiter.h.
sc_in<bool> AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::clk |
Definition at line 61 of file AxiArbiter.h.
sc_in<bool> AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::reset_bar |
Definition at line 62 of file AxiArbiter.h.
|
static |
Definition at line 65 of file AxiArbiter.h.
nvhls::nv_array<axi_rd_subordinate_ar, numManagers> AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::axi_rd_m_ar |
Definition at line 76 of file AxiArbiter.h.
nvhls::nv_array<axi_rd_subordinate_r, numManagers> AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::axi_rd_m_r |
Definition at line 77 of file AxiArbiter.h.
nvhls::nv_array<axi_wr_subordinate_aw, numManagers> AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::axi_wr_m_aw |
Definition at line 78 of file AxiArbiter.h.
nvhls::nv_array<axi_wr_subordinate_w, numManagers> AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::axi_wr_m_w |
Definition at line 79 of file AxiArbiter.h.
nvhls::nv_array<axi_wr_subordinate_b, numManagers> AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::axi_wr_m_b |
Definition at line 80 of file AxiArbiter.h.
axi_::read::template manager AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::axi_rd_s |
Definition at line 81 of file AxiArbiter.h.
axi_::write::template manager AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::axi_wr_s |
Definition at line 82 of file AxiArbiter.h.
FIFO<inFlight_t, maxOutstandingRequests> AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::readQ |
Definition at line 85 of file AxiArbiter.h.
Connections::Combinational<inFlight_t> AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::read_in_flight |
Definition at line 86 of file AxiArbiter.h.
FIFO<inFlight_t, maxOutstandingRequests> AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::writeQ |
Definition at line 87 of file AxiArbiter.h.
Connections::Combinational<inFlight_t> AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::write_in_flight |
Definition at line 88 of file AxiArbiter.h.
Connections::Combinational<inFlight_t> AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::active_write_manager |
Definition at line 89 of file AxiArbiter.h.
Connections::Combinational<NVUINT1> AxiArbiter< axiCfg, numManagers, maxOutstandingRequests >::w_last |
Definition at line 90 of file AxiArbiter.h.