gem5
v20.1.0.0
|
#include <OutputUnit.hh>
Public Member Functions | |
OutputUnit (int id, PortDirection direction, Router *router, uint32_t consumerVcs) | |
~OutputUnit ()=default | |
void | set_out_link (NetworkLink *link) |
void | set_credit_link (CreditLink *credit_link) |
void | wakeup () |
flitBuffer * | getOutQueue () |
void | print (std::ostream &out) const |
void | decrement_credit (int out_vc) |
void | increment_credit (int out_vc) |
bool | has_credit (int out_vc) |
bool | has_free_vc (int vnet) |
int | select_free_vc (int vnet) |
PortDirection | get_direction () |
int | get_credit_count (int vc) |
int | get_outlink_id () |
void | set_vc_state (VC_state_type state, int vc, Tick curTime) |
bool | is_vc_idle (int vc, Tick curTime) |
void | insert_flit (flit *t_flit) |
int | getVcsPerVnet () |
uint32_t | functionalWrite (Packet *pkt) |
Public Member Functions inherited from Consumer | |
Consumer (ClockedObject *_em) | |
virtual | ~Consumer () |
virtual void | storeEventInfo (int info) |
bool | alreadyScheduled (Tick time) |
void | insertScheduledWakeupTime (Tick time) |
ClockedObject * | getObject () |
void | scheduleEventAbsolute (Tick timeAbs) |
void | scheduleEvent (Cycles timeDelta) |
Private Attributes | |
Router * | m_router |
int M5_CLASS_VAR_USED | m_id |
PortDirection | m_direction |
int | m_vc_per_vnet |
NetworkLink * | m_out_link |
CreditLink * | m_credit_link |
flitBuffer | outBuffer |
std::vector< OutVcState > | outVcState |
Definition at line 47 of file OutputUnit.hh.
OutputUnit::OutputUnit | ( | int | id, |
PortDirection | direction, | ||
Router * | router, | ||
uint32_t | consumerVcs | ||
) |
Definition at line 40 of file OutputUnit.cc.
References Router::get_net_ptr(), Router::get_num_vnets(), ArmISA::i, m_router, and outVcState.
|
default |
void OutputUnit::decrement_credit | ( | int | out_vc | ) |
Definition at line 53 of file OutputUnit.cc.
References Clocked::curCycle(), DPRINTF, get_credit_count(), get_direction(), Router::get_id(), Router::getPortDirectionName(), m_credit_link, m_router, SimObject::name(), and outVcState.
uint32_t OutputUnit::functionalWrite | ( | Packet * | pkt | ) |
Definition at line 167 of file OutputUnit.cc.
References flitBuffer::functionalWrite(), and outBuffer.
|
inline |
Definition at line 67 of file OutputUnit.hh.
References outVcState.
Referenced by decrement_credit(), and increment_credit().
|
inline |
Definition at line 64 of file OutputUnit.hh.
References m_direction.
Referenced by decrement_credit(), and increment_credit().
|
inline |
Definition at line 73 of file OutputUnit.hh.
References NetworkLink::get_id(), and m_out_link.
flitBuffer * OutputUnit::getOutQueue | ( | ) |
Definition at line 142 of file OutputUnit.cc.
References outBuffer.
Referenced by Router::addOutPort().
|
inline |
Definition at line 93 of file OutputUnit.hh.
References m_vc_per_vnet.
bool OutputUnit::has_credit | ( | int | out_vc | ) |
Definition at line 80 of file OutputUnit.cc.
References ACTIVE_, curTick(), and outVcState.
Referenced by SwitchAllocator::send_allowed().
bool OutputUnit::has_free_vc | ( | int | vnet | ) |
Definition at line 89 of file OutputUnit.cc.
References curTick(), is_vc_idle(), and m_vc_per_vnet.
void OutputUnit::increment_credit | ( | int | out_vc | ) |
Definition at line 65 of file OutputUnit.cc.
References Clocked::curCycle(), DPRINTF, get_credit_count(), get_direction(), Router::get_id(), Router::getPortDirectionName(), m_credit_link, m_router, SimObject::name(), and outVcState.
Referenced by wakeup().
void OutputUnit::insert_flit | ( | flit * | t_flit | ) |
Definition at line 160 of file OutputUnit.cc.
References Clocked::clockEdge(), flitBuffer::insert(), m_out_link, m_router, outBuffer, and Consumer::scheduleEventAbsolute().
Referenced by CrossbarSwitch::wakeup().
|
inline |
Definition at line 85 of file OutputUnit.hh.
References IDLE_, and outVcState.
Referenced by has_free_vc(), and select_free_vc().
|
inlinevirtual |
Implements Consumer.
Definition at line 57 of file OutputUnit.hh.
int OutputUnit::select_free_vc | ( | int | vnet | ) |
Definition at line 102 of file OutputUnit.cc.
References ACTIVE_, curTick(), is_vc_idle(), m_vc_per_vnet, and outVcState.
Referenced by SwitchAllocator::vc_allocate().
void OutputUnit::set_credit_link | ( | CreditLink * | credit_link | ) |
Definition at line 154 of file OutputUnit.cc.
References m_credit_link.
Referenced by Router::addOutPort().
void OutputUnit::set_out_link | ( | NetworkLink * | link | ) |
Definition at line 148 of file OutputUnit.cc.
References m_out_link.
Referenced by Router::addOutPort().
|
inline |
|
virtual |
Implements Consumer.
Definition at line 124 of file OutputUnit.cc.
References NetworkLink::consumeLink(), curTick(), flit::get_vc(), IDLE_, increment_credit(), Credit::is_free_signal(), NetworkLink::isReady(), m_credit_link, Consumer::scheduleEvent(), and set_vc_state().
|
private |
Definition at line 106 of file OutputUnit.hh.
Referenced by decrement_credit(), increment_credit(), set_credit_link(), and wakeup().
|
private |
Definition at line 103 of file OutputUnit.hh.
Referenced by get_direction().
|
private |
Definition at line 102 of file OutputUnit.hh.
|
private |
Definition at line 105 of file OutputUnit.hh.
Referenced by get_outlink_id(), insert_flit(), and set_out_link().
|
private |
Definition at line 101 of file OutputUnit.hh.
Referenced by decrement_credit(), increment_credit(), insert_flit(), and OutputUnit().
|
private |
Definition at line 104 of file OutputUnit.hh.
Referenced by getVcsPerVnet(), has_free_vc(), and select_free_vc().
|
private |
Definition at line 109 of file OutputUnit.hh.
Referenced by functionalWrite(), getOutQueue(), and insert_flit().
|
private |
Definition at line 111 of file OutputUnit.hh.
Referenced by decrement_credit(), get_credit_count(), has_credit(), increment_credit(), is_vc_idle(), OutputUnit(), select_free_vc(), and set_vc_state().