Home

Awesome

ix_yukio

Yukio's interconnect

I'm a resident of the looking-glass world!! (Every figure in this page is mirrored by y-axis)

The modules are in src directory. There is a testbench for each module in testbench directory.

The unidirectional version is in unidir_src directory. Its README is also in that directory.

parameters

parameters from modules

parameters to top module

I define a big-tile as a figure below. It has one column for MAC and MEM in the middle. There may be multiple MAC modules and MEM modules in one big-tile, then the MAC modules are placed upper than all of the MEM modules. On the edges of FPGA, there are io blocks, one for each SB on the edges, two for each SB at the corners. There are also data io blocks for DSBs.

fpga.v in fpgatop branch implements this, but it has problems and yet to be simulated. iverilog ran into internal errors (buffer overflaw) when I increased some parameters. verilator seems to have problems in 2D array. Anyway it might help you understand how these parameters should be treated.

図2

modules

The signals starting with "c" represent configuration bits.

transmission_gate

I use this cell when one of the data is not inout. This enables verilator to compile the modules. The cell design of this module would be the same as transmission_gate.v.

transmission_gate_oneway

switch_box_element_one

switch_box_element_two

disjoint_swtich_box

One universal switch box for single lines and the following circuit for double lines.

universal_swtich_box_double

This is used as a switch box where there is no horizontal line in layered interconnect.

vertical_disjoint_switch_box

The number of inputs of CLB is CLBIN, but only first CLBIN0(CLBIN1) bits are connected to the tracks. When CLBX, a boolean parameter, is 1, there are direct connections. The number of switches for each output is limited by a parameter, and the place of switches is shifted per output. The amount of the last shift is passed to the next connection block as a bias. Please notice the places of c31 and c32.

connection_block

For data input/output for MAC/MEM.

data_connection_block

For control (address) input for MAC/MEM.

control_connection_block

io_block

data_io_block

Just connecting wires under modulus. Short circuit should not happen because the other end of wire can be 1'bz in switch boxes.

switch_box_connector v