-
Notifications
You must be signed in to change notification settings - Fork 152
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
071-ppips: In Kintex7, two wires are permanently connected to RIOI_O[01] #2063
base: master
Are you sure you want to change the base?
Conversation
@kgugala - Who should review this? |
@kgugala - It seems like we have lost the upload to BuildEventStore in the migration to GitHub Actions? |
5ae6059
to
909d14a
Compare
Signed-off-by: Hans Baier <[email protected]>
909d14a
to
9b77019
Compare
The red Artix fuzzer seems to be a flicker? Seems totally unrelated... |
I reran the Artix job. Will inspect the db diffs after it finishes to verify if that helped with the missing bits. @hansfbaier I guess there is still the problem with the switchbox pips instead of ppips, correct? |
@tmichalak Yes, this only generates the ppips that got missing on Kintex (and are needed by nextpnr). |
@tmichalak RapidWright has something promising: http://www.rapidwright.io/javadoc/com/xilinx/rapidwright/device/PseudoPIPHelper.html |
@tmichalak I wrote a little python script that uses RapidWright to get the pseudo pips of a tile: #!/usr/bin/env python3
import sys
import rapidwright
from com.xilinx.rapidwright.device import PseudoPIPHelper, Device
import com.xilinx.rapidwright.device.TileTypeEnum as TileType
part = "xc7k70tfbg676-2"
tiletype = sys.argv[1]
device = Device.getDevice(part)
ppipmap = PseudoPIPHelper.getPseudoPIPMap(device)
tiletype = TileType.valueOf(tiletype)
rioi = ppipmap[tiletype]
ppipnames = [str(ph.getPseudoPIPName()) for ph in list(rioi.values())]
print("\n".join(ppipnames)) running it I get:
|
If we had RapidWright available with the python interface, getting the PPIPs would be as easy as that |
Actually as those never change, dumping them once and commiting them should be fine |
@hansfbaier I don't mind installing RW python package and calling your script. Actually this option is cleaner than checking in a file that at some point in the future no one will know where it came from. |
@tmichalak comparing the RW results with current results, it also looks like RW is missing some ppips, most notably the marked ones here, which nextpnr-xilinx currently uses: I started writing a replacement for 071-ppips based on RW, but I am hesitating, because the results |
OK here we go, let's compare the results: #2068 |
@tmichalak According to @mithro here #2068 |
Some nodes, for example RIOI_O0 and RIOI_O1 have multiple uphill pips,
which both seem connected to the same output.
In that case the documentation would suggest to generate a hint in the ppips database file:
https://f4pga.readthedocs.io/projects/prjxray/en/latest/dev_database/common/ppips.html
"The tag hint is used for PIPs that are used by Vivado to tell the router that two logic slice outputs drive the same value, i.e., behave like they are connected as far as the routing process is concerned."
Currently, as suggested by @tmichalak here: https://chipsalliance.slack.com/archives/C033M7FLURZ/p1669982485158029, I generate
always
for those.