|
| WHVCSourceRouter (sc_module_name name_) |
|
| NVUINTW (num_ports) out_dest[num_ports][num_vchannels] |
|
| NVUINTW (num_ports) out_stall |
|
void | inputvc_arbiter (NVUINTW(log_num_vchannels) vcin[num_ports], NVUINTW(num_ports) &in_valid) |
|
void | compute_route (Flit_t flit_in[num_ports], NVUINTW(log_num_vchannels) vcin[num_ports], NVUINTW(num_ports) in_valid) |
|
void | flit_output (bool is_push[num_ports], NVUINTW(log_num_vchannels) vcout[num_ports]) |
|
void | arbitration (Flit_t flit_in[num_ports], NVUINTW(num_ports) in_valid, NVUINTW(log_num_vchannels) vcin[num_ports], NVUINTW(num_ports) valid[num_ports], NVUINTW(num_ports) select[num_ports], NVUINTW(log_num_ports) select_id[num_ports]) |
|
void | reset () |
|
void | run () |
|
typedef | NVUINTW (log_buffersizeplus1) Credit_t |
|
typedef | NVUINTW (1) Credit_ret_t |
|
| SC_HAS_PROCESS (WHVCRouterBase) |
|
| WHVCRouterBase (sc_module_name name_) |
|
void | receive_credit () |
|
void | send_credit () |
|
void | fill_ififo () |
|
void | peek_ififo (Flit_t flit_in[num_ports], NVUINTW(log_num_vchannels) vcin[num_ports], NVUINTW(num_ports) in_valid) |
|
void | crossbar_traversal (Flit_t flit_in[num_ports], bool is_push[num_ports], NVUINTW(log_num_ports) select_id[num_ports], NVUINTW(log_num_vchannels) vcin[num_ports], NVUINTW(log_num_vchannels) vcout[num_ports]) |
|
void | process () |
|
template<int NumLPorts, int NumRports, int NumVchannels, int BufferSize, typename FlitType, int MaxHops>
class WHVCSourceRouter< NumLPorts, NumRports, NumVchannels, BufferSize, FlitType, MaxHops >
Wormhole Router with virtual channels.
- Template Parameters
-
NumLPorts | Number of local ingress/egress ports |
NumRports | Number of remote ports |
NumVchannels | Number of virtual channels |
BufferSize | Buffersize of input fifo |
FlitType | Indicates the Flit type |
MaxHops | Indicates Max. number of hops for SourceRouting |
- A Simple Example
#include <WHVCRouter.h>
...
WHVCRouter<kNumLPorts, kNumRPorts, kNumVChannels, kBufferSize, Flit_t, kNumMaxHops> router;
Connections::In<Flit_t> in_port[kNumPorts];
Connections::Out<Flit_t> out_port[kNumPorts];
Connections::In<Credit_t> in_credit[kNumCredits];
Connections::Out<Credit_t> out_credit[kNumCredits];
for (int i = 0; i < kNumPorts; i++) {
router.in_port[i](in_port[i]);
router.out_port[i](out_port[i]);
for (int j = 0; j < kNumVChannels; j++) {
router.in_credit[i * kNumVChannels + j](
in_credit[i * kNumVChannels + j]);
router.out_credit[i * kNumVChannels + j](
out_credit[i * kNumVChannels + j]);
}
}
...
Definition at line 257 of file WHVCRouter.h.