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
Refactor how fabric data is shared between parts #1475
Comments
In order to help with this, where are the data sources they are derived from? |
When Vivado opens a design, it has both the
From the device you can find all of the packages for that device:
You can also just get all parts that Vivado supports, but you'd want to filter by family:
|
@litghost Where do we get the fabric from? I could not find a tcl property which relates to that. |
@hansfbaier - Did you start working on this issue? |
@dnltz No, after playing the tcl commands for a while I figured out that I still lack quite a bit of knowledge. I now try start smaller and add two FPGAs to enhance my understanding of how everything works |
@litghost , @dnltz Yesterday I was trying to add a new part (from 2am to 6pm), and now I understand why this ticket exists. 32GB RAM do not seem to be enough for create_node_tree in |
@dnltz When do you have time to work on it? |
@hansfbaier - I started yesterday to set up the project. Not sure if you got further. I neither want to do the same work twice nor "steal" you the PR. Do you want to finish or should I try? |
@dnltz Please go ahead. I still have a very steep learning curve ahead of me, and currently it looks like I first want to learn the ins and outs of litex and get more familiar with the details of FPGAs. Actually it is very easy to use sqlite3 from vivado:
as soon as the symlink into the local tcl store is in place, it is possible to use sqlite3 from the vivado tcl shell. |
So as a first pass you can treat device as equivalent to fabric, as that is generally true. Some exceptions exist, specifically we know that the One thing we could do is simply output all of the artix7 devices and then compare the outputs to verify that several devices are actually the same fabric. Does that make sense? |
@dnltz Great work! I could not have done that with my current knowledge. Good that I got out of the way :) |
Before adding data for all parts (e.g. pinouts), a refactoring of how fabric data is shared is required. For terminology:
Currently prjxray-db only has families (e.g. artix7, kintex7, zynq7) and parts (e.g. xc7a35tcpg236-1). Because prjxray-db is missing the explicit idea of a device and fabric, fabric data is currently duplicated between parts that have the same device. To be very specific:
prjxray-db/<family>/<part>
with the following files:node_wires.json
tilegrid.json
tileconn.json
Because some parts share fabrics with multiple parts, these files are copied between the parts. This is wasteful. The solution is to:
Then the fabric data (e.g.
tilegrid.json
, etc) should be moved to fabric folder rather than a part folder. Theprjxray
library should be updated to transparently handle the fabric/device split from the part.This change is required before adding part data for all parts.
The text was updated successfully, but these errors were encountered: