vtr-verilog-to-routing icon indicating copy to clipboard operation
vtr-verilog-to-routing copied to clipboard

Needed features in VTR description to represent Xilinx architecture

Open WhiteNinjaZ opened this issue 2 years ago • 1 comments

Proposed Behaviour

The following is a list of functionality that would need to be supported in VTR in order to obtain an approximate capture of the Xilinx architecture:

  • [x] Support for different distributions of wires in the vertical/horizontal.

    • Most of the functionality for this was brought in with PR #1883 although porting the functionality to work with custom SB's remains as an action item.
  • [x] Support for non-uniform chanel widths

    • As above, PR #1883 has allowed for this functionality but work still needs to be done with custom SBs.
  • [x] Support for the two points above for custom SB.

  • [x] Support for different shaped wires (diagonals/T shaped in particular).

    • PR #2067 will make the necessary changes to allow for this feature although diagonal wires will need to be modeled through custom SB.
  • [ ] In the Xilinx arch switch blocks and connection blocks are combined into one (improving space and routablitiy). The island style FPGA supported by VTR currently separates the two.

  • [x] In xilinx there are stubs, or jumps between SB (i.e. a wire terminates in two SB instead of one).

  • [ ] Xilinx has several highly connected PIPJ's called bounce pips to which alternative pip's can connect.

  • [ ] Support for tile layouts beyond that currently supported by VTR.

    • Following the island style, VTR currently has a pattern of CB, Logic, CB, ...
    • Xilinx has a pattern of SB/CB, SB/CB, Logic, Logic, SB/CB, SB/CB, ... (see images in following post).
  • [x] Xilinx has sets of wires that leave a connection block, enter an SB, and then bounce back into the same connection block (termed as a bounce pip in Xilinx). Although this is not technically supported by VTR the same affect can be modeled using internal crossbars.

  • [ ] Support for both bi-directional and uni-directional segments in the same arch. VTR currently only supports one or the other. This item is not too important since only the longest wire segments in the Xilinx arch are bi-directional (L12 and L18).

  • [ ] Xilinx allows for all of its wires to make connections to wires traveling in the opposite direction of travel (i.e. any wire traveling south may connect to a wire of length one traveling north). VTR currently does not allow for this or at the very least it is not fully supported. This could prove important because it allows for wires to easily connect to LB that are an odd length away (i.e. an LB located west 3 units can be accessed by using WW4->E1).

WhiteNinjaZ avatar Jun 23 '22 00:06 WhiteNinjaZ

The following shows the difference between Xilinx and VTR: image Xilinx: In green SB, in red CLB image

WhiteNinjaZ avatar Jun 23 '22 00:06 WhiteNinjaZ