Skip to content
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

Fabric placement constraints #263

Open
litghost opened this issue Mar 29, 2021 · 1 comment
Open

Fabric placement constraints #263

litghost opened this issue Mar 29, 2021 · 1 comment
Labels
enhancement New feature or request

Comments

@litghost
Copy link

Current Status

In 7-series and UltraScale+, some cells have placement rules that the current FPGA interchange does not express. Following these rules are important for good clock placement. In some cases, it will be required to create valid design. The current FPGA interchange implementation doesnt' detect or implement proper placement in these cases.

Examples

  • 7-series CCIO IO pins have a dedicated path from the IO pin to the BUFG/BUFGCTRL if the BUFG is placed in the same half of the fabric.
  • 7-series PLL/MMCM's have dedicate paths from other PLL/MMCM's in the CMT's above and below their location
  • 7-series PLL/MMCM's have dedicate paths from clock buffers in the same CMT (BUFR/BUFH) or neighboring CMT (BUFMR) or fabric half (e.g. BUFG)
  • 7-series IDELAYCTRL have implicit connections to IDELAY2 elements within the same IO bank

These types of constraints are enforced in the symbiflow-arch-def's script https://github.com/SymbiFlow/symbiflow-arch-defs/blob/master/xc/common/utils/prjxray_create_place_constraints.py

Discussion

Some of these rules could be discovered by examine the routing fabric, but it may be easier to constraint these explicitly. In the case of the IDELAYCTRL, these rules have to be supplied, because the routing fabric lacks the connection altogether.

@litghost litghost added this to To Do in FPGA interchange bootstrapping via automation Mar 29, 2021
@litghost litghost added the enhancement New feature or request label Mar 29, 2021
@gatecat
Copy link

gatecat commented Mar 31, 2021

Other than in the IDELAYCTRL case I think an interesting way to specify these would be a way of preferring placements that use certain, or minimum, routing resources for certain cell pin pairs.

This is a bit like how nextpnr-nexus does it: https://github.com/YosysHQ/nextpnr/blob/edecc06fcfbedf23773cd8ba04f1eb6f5bd64358/nexus/pack.cc#L674-L816

GitHub
nextpnr portable FPGA place and route tool. Contribute to YosysHQ/nextpnr development by creating an account on GitHub.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Development

No branches or pull requests

2 participants