MatchLib
|
An n-way arbiter that connects multiple AXI master ports to a single AXI slave port. More...
#include <AxiArbiter.h>
Public Types | |
typedef axi::axi4< axiCfg > | axi_ |
typedef axi_::read::template slave::ARPort | axi_rd_slave_ar |
typedef axi_::read::template slave::RPort | axi_rd_slave_r |
typedef axi_::write::template slave::AWPort | axi_wr_slave_aw |
typedef axi_::write::template slave::WPort | axi_wr_slave_w |
typedef axi_::write::template slave::BPort | axi_wr_slave_b |
Public Member Functions | |
typedef | NVUINTW (numMasters_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_slave_ar, numMasters > | axi_rd_m_ar |
nvhls::nv_array< axi_rd_slave_r, numMasters > | axi_rd_m_r |
nvhls::nv_array< axi_wr_slave_aw, numMasters > | axi_wr_m_aw |
nvhls::nv_array< axi_wr_slave_w, numMasters > | axi_wr_m_w |
nvhls::nv_array< axi_wr_slave_b, numMasters > | axi_wr_m_b |
axi_::read::template master | axi_rd_s |
axi_::write::template master | 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_master |
Connections::Combinational< NVUINT1 > | w_last |
Static Public Attributes | |
static const int | kDebugLevel = 5 |
static const int | numMasters_width = nvhls::log2_ceil<numMasters>::val |
An n-way arbiter that connects multiple AXI master ports to a single AXI slave port.
axiCfg | A valid AXI config. |
numMasters | The number of masters 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.