wiki:Component/VirtualDspinRouter

SocLib Components General Index

VirtualDspinRouter

1) Functional Description

This is the elementary node of a VirtualDspinArray.

The Virtual Dspin Router is a component which connects up to five inputs (one local, four for the adjacent Virtual Dspin Router) to five outputs (idem) for each virtual channel.

Both channels share the same bus for routing. Thus, each input has a time multiplexing register, to decide which channel writes on the bus.

It implements the X-First algorithm for multicast, and X-First or Y-First for broadcast, depending on the sender's coordinates' parity.

During broadcast, order of outputs is determined by their priority : in case of X-First routing, EAST and WEST Output are chosen first (NORTH and SOUTH for Y-routing).

Input INFSM States

FSM_REQ Waiting for paquet or sending first flit
FSM_DTN Allocated to correct output for multicast
FSM_DT_11 Sending second flit to first output in multicast
FSM_REQ_12 Sending first flit to second output in multicast
FSM_DT_12 Sending second flit to second output in multicast
FSM_REQ_21 Sending first flit to third output in multicast
FSM_DT_21 Sending second flit to third output in multicast
FSM_REQ_22 Sending first flit to fourth output in multicast
FSM_DT_22 Sending second flit to fourth output in multicast
FSM_REQ_LOCAL Sending first flit to fifth (LOCAL) output in multicast
FSM_DT_LOCAL Sending second flit to fifth (LOCAL) output in multicast

Output INFSM States

LOCAL Allocated to LOCAL input
NORTH Allocated to NORTH input
SOUTH Allocated to SOUTH input
EAST Allocated to EAST input
WEST Allocated to WEST input
NOP_LOCAL Not allocated, and last allocated was LOCAL
NOP_NORTH Not allocated, and last allocated was NORTH
NOP_SOUTH Not allocated, and last allocated was SOUTH
NOP_EAST Not allocated, and last allocated was EAST
NOP_WEST Not allocated, and last allocated was WEST
NOP Not allocated, and last allocated is unkwnow (equivalent of NOP_LOCAL)

2) Component definition & usage

source:trunk/soclib/soclib/module/network_component/virtual_dspin_router/caba/metadata/virtual_dspin_router.sd

3) CABA implementation

CABA sources

interface source:trunk/soclib/soclib/module/network_component/virtual_dspin_router/caba/source/include/virtual_dspin_router.h
implementation source:trunk/soclib/soclib/module/network_component/virtual_dspin_router/caba/source/src/virtual_dspin_router.cpp

CABA Internal registers

sc_signal<int> r_output_index for each channel & each output, input index (INFSM)
sc_signal<bool> r_tdm for each input, Time Multiplexing
sc_signal<sc_uint<data_size> > r_buf for each channel & each input, fifo extension
sc_signal<int> r_infsm for each channel & each input FSM state

CABA Template parameters

int data_size Size of flit
int io_mask_offset Emplacement of IO checking
int io_mask_size Size of IO checking
int io_number_offset Emplacement of IO index in IO table
int io_number_size Size of IO index
int x_addressing_offset Emplacement of target x in first flit
int x_addressing_size Size of target x
int y_addressing_offset Emplacement of target y in first flit
int y_addressing_size Size of target y
int eop_offset Emplacement of eop checking
int broadcast_offset Emplacement of broadcast checking
int in_fifo_size Size of input fifos
int out_fifo_size Size of output fifos
int x_min_offset Emplacement of x_min for broadcast confinement
int x_max_offset Emplacement of x_max for broadcast confinement
int y_min_offset Emplacement of y_min for broadcast confinement
int y_max_offset Emplacement of y_max for broadcast confinement

CABA Constructor parameters

sc_module_name insname instance name
int x x position in the network
int y y position in the network
bool n North connexion enabled
bool s South connexion enabled
bool e East connexion enabled
bool w West connexion enabled
bool broadcast0 Broadcast activated for channel 0
bool broadcast1 Broadcast activated for channel 1
bool io0 IO enable for channel 0
bool io1 IO enable for channel 1
clusterCoordinates<x_addressing_size, y_addressing_size> * aIO_table list of IO Clusters

CABA ports

sc_in<bool> p_clk Global system clock
sc_in<bool> p_resetn Global system reset
DspinOutput<cmd_data_size> p_out For each output and each virtual channel
DspinInput<cmd_data_size> p_in For each input and each virtual channel

4) TLMT implementation

The TLM-T implementation is not available yet.

Last modified 15 years ago Last modified on Oct 22, 2009, 9:40:25 PM

Attachments (2)

Download all attachments as: .zip