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

Reduce Unique Tiles in FPGA Fabric to Simplify Implementation Efforts #1903

Open
AhmadHouraniah opened this issue Nov 18, 2024 · 2 comments
Open

Comments

@AhmadHouraniah
Copy link

AhmadHouraniah commented Nov 18, 2024

Is your feature request related to a problem? Please describe.
The current implementation often leads to the generation of a large number of unique tiles based on the FPGA layout. However, when using a hierarchical approach, the area of each grid location is typically based on the largest tiles. This can result in significant additional implementation efforts with minimal gains.

Describe the solution you'd like
It would be highly beneficial to have an option to generate fewer unique tiles in the FPGA design. While this could involve adding extra hardware that isn't utilized in the final layout (e.g., unused routing logic in corner tiles), it would greatly reduce implementation efforts while maintaining the hierarchical approach.

For example, consider using a single CLB tile throughout the FPGA fabric. In this case, tiles in the corners may contain routing logic that isn't used, but due to the grid layout, this would not impact the required die area. Ideally, we would want to produce only one unique tile for each type, such as CLBs, DSPs, BRAMs, and GPIOs.

The implementation of this feature would likely require support in both the RTL generation and the bitstream generation flows.
Describe alternatives you've considered
I've attempted to simplify the layout by making the layout more uniform, which reduced the number of unique tiles by about 50%. However, the FPGA design still includes approximately 18 unique tiles, which significantly increases the implementation workload. Each tile requires individual timing closure and implementation efforts, complicating the implementation process.

Additional context
Reducing the number of unique tiles would streamline the design flow, especially during implementation and timing closure. This change would make the FPGA design and implementation process more efficient and scalable, particularly for larger and more complex architectures.

@tangxifan
Copy link
Collaborator

@AhmadHouraniah This is indeed a critical concern for many physical design engineers. OpenFPGA is continuously improving the tiling strategy.
Here are the options that you may give a try

An ultimate way is to customize your routing resource graph.

@AhmadHouraniah
Copy link
Author

Thank you for your reply, I was able to reduce the number of tiles to 11 by considering the pin organizations, adjusting the different tiles to have the same number of output pins, and by adjusting the floorplan/layout of the FPGA.

I would like to reduce this further if possible, how can I customize the routing resource graph? Are there any examples for this?

Thanks!

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

2 participants