NoC Router

NocRouter

This file defines the NocRouter class.

Overview

The NocRouter represents a physical router in the NoC. The NocRouter acts as nodes in the NoC and is used as entry points to the NoC. The NocRouters are created based on the topology information provided by the user in the arch file.

The NocRouter contains the following information:

  • The router id. This represents the unique ID given by the user in the architecture description file when describing a router. The purpose of this is to help the user identify the router when logging information or displaying errors.

  • The grid position of the physical router tile this object represents. Each router in the NoC represents a physical router tile in the FPGA device. By storing the grid positions, we can quickly get the corresponding physical router tile information by searching the DeviceGrid in the device context.

  • The design module (router cluster blocks) currently occupying this tile. Within the user design there will be a number of instantiations of NoC routers. The user will also provide information about which router blocks will be communication with each other. During placement, it is possible for the router blocks to move between the physical router tiles, so by storing the module reference, we can determine which physical router tiles are communicating between each other and find a route between them.

class NocRouter
#include <noc_router.h>

Public Functions

NocRouter(int id, int grid_position_x, int grid_position_y, int layer_position)
int get_router_user_id(void) const

Gets the unique id assigned by the user for the physical router.

Returns:

A numerical value (integer) that represents the physical router id

int get_router_grid_position_x(void) const

Gets the horizontal position on the FPGA device that the physical router is located.

Returns:

A numerical value (integer) that represents horizontal position of the physical router

int get_router_grid_position_y(void) const

Gets the vertical position on the FPGA device that the physical router is located.

Returns:

A numerical value (integer) that represents vertical position of the physical router

int get_router_layer_position(void) const

Gets the layer number of the die the the physical router is located.

Returns:

A numerical value (integer) that represents layer position of the physical router

t_physical_tile_loc get_router_physical_location(void) const

Gets the physical location where the the physical router is located.

Returns:

t_physical_tile_loc that contains x-y coordinates and the layer number

ClusterBlockId get_router_block_ref(void) const

Gets the unique id of the router block that is current placed on the physical router.

Returns:

A ClusterBlockId that identifies a router block in the clustered netlist

void set_router_block_ref(ClusterBlockId router_block_ref_id)

Sets the router block that is placed on the physical router.

Parameters:

router_block_ref_id – A ClusterBlockId that represents a router block

Private Members

int router_user_id

This represents a unique id provided by the user when describing the NoC topology in the arch file. The intended use is to report errors with router ids the user understands

int router_grid_position_x

Represents the horizontal grid position on the device the physical router tile is located

int router_grid_position_y

Represents the vertical grid position on the device the physical router is located

int router_layer_position

Represents the layer number of the die that the physical router is located

ClusterBlockId router_block_ref

A unique identifier that represents a router block in the clustered netlist that is placed on the physical router