Skip to content

Needed features in VTR description to represent Xilinx architecture #2071

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
7 of 12 tasks
WhiteNinjaZ opened this issue Jun 23, 2022 · 1 comment
Open
7 of 12 tasks

Comments

@WhiteNinjaZ
Copy link
Contributor

WhiteNinjaZ commented Jun 23, 2022

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:

Core functionality

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

  • Support for non-uniform chanel widths

  • Support for the two points above for custom SB.

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

  • 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.

  • 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.

Additional features

  • 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).
  • 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).

  • Xilinx multipliers have input widths that are not equal (25x18 vs. 32x32). This causes some packing issues on certain benchmarks that need to be fixed.

  • 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. This can be implemented by lengthening wires by +1 in their respective cardinal directions.

@WhiteNinjaZ
Copy link
Contributor Author

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

@jgoeders jgoeders mentioned this issue Feb 22, 2023
13 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant