-
Notifications
You must be signed in to change notification settings - Fork 415
Improve support for contant generators #163
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
The new option '--constant_net_method' controls how nets driven by a constant value are treated by VPR: * global: The nets are treated as global and not routed * route : The nets are treated as regular nets and routed The default is 'global' to match previous behaviour. Warnings are produced if a global net connects to a non-global pin. In the longer term VPR should be taught to understand which pins in an architecture are tie-able to vcc/gnd (Issue #163). The 'global' method above is effectively an approximation of this where it is assumed all pins in the architecture are tie-able.
As an update VPR no longer treats #292 added support for controlling whether VPR routes constant nets or not. However the long-term solution of describing tie-able pins in the architecture and making use of them remains open. |
I believe solving the VCC/GND in the packer is insufficient for the general case. In the case of the 7-series routable VCC and GND signals enter a routing node that can support a constant signal or can route high fanout non-constant signals. In the case of the 7-series constant support there are two "types" of constant signals supported:
I believe support for both is required. Thoughts? |
I can envision 3 potential ways to handle constant nets:
I agree that modelling tie-offs solely within the packer is likely insufficient. However with (1) I believe we cover the general case**, and methods (2) and (3) are simply optimizations aimed at reducing wirelength. Depending exactly whether an architecture supports (2) or (3) there may be some optimizations which are possible/not possible. For instance, if there is a dedicated tie-off in the RR graph, but no block-internal tie-offs, the external source could be used to route the constant into all the blocks which need it -- meaning the dedicated constant LUT used by (1) would be redundant. However these are pretty small details which likely just don't matter very much, so it may not be worth the time to support/exploit them fully. ** Making reasonable assumptions, like a fully connected routing network where a LUT output is routable to any other pin in the device. |
Sure, but they are potentially significant, as VPR currently only emits one constant LUT and then proceeds to route that constant throughout the network. I don't have numbers on me but in the example I was looking it, it consumed at least one routing resource in basically every column of the interconnect network. |
That is what the 7-series arch supports, and yes, the constant LUT would become redundant. |
This issue has been inactive for a year and has been marked as stale. It will be closed in 15 days if it continues to be stale. If you believe this is still an issue, please add a comment. |
This issue has been marked stale for 15 days and has been automatically closed. |
Expected Behavior
If supported by the target architecture, VPR should make use of programmable pins which can be tied to vcc/gnd to specify constants.
Current Behavior
Currently VPR treats nets named 'vcc' and 'gnd' as a special case, treating them as global nets in the CLB netlist, which causes them not to be routed.
The constant LUT driver from the BLIF remains in the netlist.
This is an inaccurate (since the nets are not routed) and fragile workaround (since it does not handle constants not named 'vcc' or 'gnd).
Possible Solution
tieable
):The text was updated successfully, but these errors were encountered: