-
Notifications
You must be signed in to change notification settings - Fork 415
Define different I/Os #268
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
Comments
You will need to create a top-level You can use the grid location specifications to the place the blocks wherever you wish. Roughly: ...
<layout>
<fixed_layout width="10" height="10">
<col type="io_left", startx="0"/>
<row type="io_top", starty="H-1"/>
...
</fixed_layout>
</layout>
...
<complexblocklist>
...
<pb_type name="io_left" capacity="2">
....
<pinlocations type="custom">
<loc side="right"> .... </loc>
</pinlocations>
</pb_type>
<pb_type name="io_top" capacity="4">
...
<pinlocations type="custom">
<loc side="bottom"> .... </loc>
</pinlocations>
</pb_type>
...
</complexblocklist>
... |
I get the following message: Note: for each <pb_type>, I did the following specification:
|
There were some legacy assumptions about a single IO type in the code, which I've removed in fb085bd. Your architecture should no longer cause errors related to multiple blocks with primary inputs/outputs. However VPR currently packs all IOs into the first type it sees (eg |
Is an improvement of the packer planned in order to make the IOs placement independent of the IO type? |
I've added a very simple heuristic to the packer in fe0d75e, which tries to balance resource usage between different blocks which can implement the same type of primitive. This should mean that all of the IO types get used. However, it is not a fully general solution. In particular, any I/O which the packer maps to a particular type (e.g. For example, even if an Providing a fully general solution would break a large number of assumptions VPR currently makes, so it would be a much more drastic change which is unlikely to happen anytime soon. |
Is it possible to define or fix the IO type of each I/O according to the pad locations (use --fix_pins option)? If it is not possible, what other way do I have to specify an architecture with different I/O types in accordance with the IO placement? |
The VPR does not support additional constraints to fine-tune the implementation, so there is no way to specify which block type (e.g. |
To sum up: However, we need to implement an fpga with different I/O blocks and to specify I/O pad locations during placement. What are your feelings about that? |
Correct, if you need IO blocks with different characteristics (e.g. different numbers of I/Os per block) each must be defined as their own top-level
Correct. The
This might work, but it seems very awkward and fragile. It also does not solve the more general problem of fine-tuning the design implementation based on user knowledge. As a result it is not an approach I would recommend. The correct way to support this is by adding region-based location constraints to VPR. This would require updating VPR's algorithms (packing, placement, routing) to respect these constraints. However once this was done, it would allow you to control VPR's implementation in a variety of ways; including ensuring an IO was implemented in the correct block type. However, we currently have many other higher priority things to working on, and limited motivation to add support for location constraints. As a result there is no timeline for adding such support. If you would like to see location constraints added to VPR we could discuss further. |
Modelling different IO tiles with alternate pin-outs and capacities is now supported with the new equivalent placement site support from #988, so closing. |
I need to define 4 different I/Os, one for each side of the FPGA.
I would like to define a different I/Os capacity according to the side of the FPGA.
Is it possible ? If yes, I would like an example of Architecture Specification.
The text was updated successfully, but these errors were encountered: