Flame thrower is a On-Chip Network router written in bluespec (Can be compiled down to verilog).
Before you go ahead and try building the router, the following project has been designed using bluesspec system verilog so you will need the bsc compiler.
$ git clone https://github.com/JoyenBenitto/flame_thrower.git
$ cd flame_thrower
$ make generate_verilog
The current version of the router is capable of being integrated in a 2d mesh topology. The micro-arch spec:
-
4 Statically allocated Multi Queue buffers (SAMQ), which provide VCs(virtual channels) for incoming flits from north, south, east and west direction, also provides a VC for associated processing element.
-
4 x 4x1 crossbar interface, provide interface to connect and communicate with a mesh topology of routers.
-
Round Robin Arbiter (No priority arbiteration added yet).
-
XY routing scheme (Route along the X direction and then Y as in this routing scheme the location of every router is known).
Note
|
The above architercture does bring in a lot of drawbacks, for example the duplication of hardware for every direction such as the need for 4 4x1 crossbars and a seperate arbiter for each and ofcourse some of the virtual channels may go unused if the traffic is not uniform. The later version of the router are expected to overcome these drawbacks. |