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

Add GTP primitives to artix7 architectures #2112

Merged
merged 10 commits into from Apr 14, 2021

Conversation

acomodi
Copy link
Contributor

@acomodi acomodi commented Mar 18, 2021

This is a PR which adds GTP primitives to the SymbiFlow toolchain:

  • GTPE2_COMMON
  • IBUFDS_GTE2
  • GTPE2_CHANNEL

For artix7 achitectures:

  • xc7a50t
  • xc7a100t
  • xc7a200t

@probot-autolabeler probot-autolabeler bot added arch-artix7 lang-python Issue uses (or requires) Python language. lang-xml Issues uses (or requires) XML language. third-party type-infra Issues related to infra like travis. type-utils Issues is related to the scripts inside the repo. type-vpr labels Mar 18, 2021
@acomodi acomodi force-pushed the add-gtp-primitives branch 2 times, most recently from f8bfc4e to ac5fe6b Compare March 18, 2021 15:21
@acomodi
Copy link
Contributor Author

acomodi commented Mar 22, 2021

Apart from 200T vendor check, and install, all the other CIs went green.

I am not sure what went wrong in the failing ones:

  • install: This one got killed and no output log was produced.
  • 200T Vendor: Given that not all targets completed, and no error log was produced, this may correspond to some part of the flow being stuck somewhere preventing the completion of some of the targets.

@litghost
Copy link
Contributor

litghost commented Mar 22, 2021

  • 200T Vendor: Given that not all targets completed, and no error log was produced, this may correspond to some part of the flow being stuck somewhere preventing the completion of some of the targets.

Looks like Vivado got stuck on the 200T CI:

              total        used        free      shared  buff/cache   available
Mem:           102G        856M         40G         16M         60G        100G
Swap:          1.0G         25M        998M
Filesystem      Size  Used Avail Use% Mounted on
udev             52G     0   52G   0% /dev
tmpfs            11G   17M   11G   1% /run
/dev/sda1        99G   69G   26G  73% /
tmpfs            52G     0   52G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            52G     0   52G   0% /sys/fs/cgroup
/dev/sdc1       246G   43G  203G  18% /opt/Xilinx
cgmfs           100K     0  100K   0% /run/cgmanager/fs
/dev/sdb1       4.0T   86G  3.9T   3% /tmpfs
tmpfs            11G     0   11G   0% /run/user/1000
/dev/sdd        246G   29G  217G  12% /image
Sat Mar 20 10:04:22 PDT 2021
 10:04:22 up 20:00,  0 users,  load average: 0.00, 0.00, 0.00
              total        used        free      shared  buff/cache   available
Mem:           102G        856M         40G         16M         60G        100G
Swap:          1.0G         25M        998M
Filesystem      Size  Used Avail Use% Mounted on
udev             52G     0   52G   0% /dev
tmpfs            11G   17M   11G   1% /run
/dev/sda1        99G   69G   26G  73% /
tmpfs            52G     0   52G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            52G     0   52G   0% /sys/fs/cgroup
/dev/sdc1       246G   43G  203G  18% /opt/Xilinx
cgmfs           100K     0  100K   0% /run/cgmanager/fs
/dev/sdb1       4.0T   86G  3.9T   3% /tmpfs
tmpfs            11G     0   11G   0% /run/user/1000
/dev/sdd        246G   29G  217G  12% /image


ERROR: Aborting VM command due to timeout of 72000 seconds```

@litghost
Copy link
Contributor

  • install: This one got killed and no output log was produced.
VPR succeeded
The entire flow of VPR took 9.47 seconds (max_rss 3281.7 MiB)
cd build_basys3 && symbiflow_place -e top.eblif -d xc7a50t_test -n top.net -P xc7a35tcpg236-1 -a "--seed 1024"
Using default VPR options.
Generating coinstrains ...
usage: prjxray_create_place_constraints.py [-h] [--input INPUT]
                                           [--output OUTPUT] --net NET
                                           --vpr_grid_map VPR_GRID_MAP --arch
                                           ARCH --db_root DB_ROOT --part PART
                                           --blif BLIF [--roi]
                                           [--allow-bufg-logic-sources]
                                           [--graph_limit GRAPH_LIMIT]
prjxray_create_place_constraints.py: error: the following arguments are required: --db_root, --part
make: *** [Makefile:25: build_basys3/top.place] Error 2


0% tests passed, 1 tests failed out of 1

Total Test time (real) =  29.66 sec

The following tests FAILED:
	  1 - binary_toolchain_test_50t (Failed)
Errors while running CTest


[ID: 3369515] Build finished after 16266 secs, exit value: 1

Likely a disk-space overflow on toolchain test failure. Should probably fix that.

@acomodi
Copy link
Contributor Author

acomodi commented Mar 22, 2021

Looks like Vivado got stuck on the 200T CI:

I wonder what this could be due to... no GTP test is currently performed in the diff_fasm flow, so "hopefully" this is an intermittent issue. I'll try to reproduce it locally

Likely a disk-space overflow on toolchain test failure. Should probably fix that.

Ok, thanks for the info, I'll try to figure out what is happening here

@acomodi
Copy link
Contributor Author

acomodi commented Mar 22, 2021

I have added the XML autogeneration with timings from the SDF directory and modified the [autogeneration script]
(#2073). This requires f4pga/prjxray#1628 to have more precise information of the port types from the <primitive>_ports.json.

Given that the cells_sim and techmap require some manual modifications, those are not part of the flow at the moment, at least until a better generalization mechanism is added for those files.
An idea might be to split the quite large cells_sim and cells_map into the belonging primitives and merge it. This way we can have a more fine-grained approach that can let us auto-generate at least some of the primitives mapping files.

@acomodi
Copy link
Contributor Author

acomodi commented Mar 23, 2021

Likely a disk-space overflow on toolchain test failure. Should probably fix that.

Ok, thanks for the info, I'll try to figure out what is happening here

This was actually due to a missing update to the toolchain wrappers, as the device info needs to be available now at placement constriants generation, to correctly constrain IOPADs of the GTP tiles at the correct sub_tile location. Fixed now

@acomodi acomodi force-pushed the add-gtp-primitives branch 3 times, most recently from 8f8a546 to 7a12efe Compare March 23, 2021 20:43
@acomodi acomodi requested a review from litghost March 24, 2021 09:04
@acomodi
Copy link
Contributor Author

acomodi commented Mar 24, 2021

@litghost CI went green, this PR is ready for review. Given that the XML autogeneration requires f4pga/prjxray#1628, for now the XML are checked-in, and can either be removed later on, or we can wait for f4pga/prjxray#1628 to land and the output integrated in the db

@acomodi acomodi force-pushed the add-gtp-primitives branch 2 times, most recently from 2d7aa58 to 6d0ed08 Compare March 25, 2021 16:55
@acomodi acomodi requested a review from litghost March 25, 2021 22:12

sites[site.type].append((site, input_wires, output_wires))
# If enabled, sort sites by name
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there ever a reason to not sort them?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually yes, I bumped into an issue after applying sorting to all the capacity, I got an error for which the SLICEM and SLICEL were swapped in the sub_tile definitions, causing the wrong prefix to be assigned, given the different placement.

Thinking about it, I might have missed to sort also when generating the architecture layout, therefore having the tiles and their location prefixes not in sync.

As a long term more robust solution though, we would need to enhance VPR so that the sub_tile index is not defined by the order of the sub tile, but by an attribute that we can control.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed the tile prefix ordering in the arch-layout, so now all sites are sorted.

@kowalewskijan kowalewskijan mentioned this pull request Mar 30, 2021
2 tasks
@mithro
Copy link
Contributor

mithro commented Mar 30, 2021

@acomodi - I'm updating the base image to fix the permission issue.

@acomodi
Copy link
Contributor Author

acomodi commented Mar 30, 2021

I'm updating the base image to fix the permission issue.

@mithro seems to be working now, thanks. There seems to be yet another issue with the vendor tool tests

@mithro
Copy link
Contributor

mithro commented Mar 30, 2021

@acomodi - It seems the disks are getting automounted now.

@acomodi acomodi force-pushed the add-gtp-primitives branch 2 times, most recently from abb9ce6 to e8106ad Compare April 12, 2021 09:10
Jan Kowalewski and others added 10 commits April 13, 2021 09:40
Signed-off-by: Jan Kowalewski <jkowalewski@antmicro.com>
Signed-off-by: Alessandro Comodi <acomodi@antmicro.com>
This also adds placement constraints capabilities addition to correctly
place the various tiles and blocks at the right location, based on the
device database.

Signed-off-by: Alessandro Comodi <acomodi@antmicro.com>
Signed-off-by: Jan Kowalewski <jkowalewski@antmicro.com>
Signed-off-by: Alessandro Comodi <acomodi@antmicro.com>
Signed-off-by: Jan Kowalewski <jkowalewski@antmicro.com>
Signed-off-by: Alessandro Comodi <acomodi@antmicro.com>
Signed-off-by: Jan Kowalewski <jkowalewski@antmicro.com>
Signed-off-by: Alessandro Comodi <acomodi@antmicro.com>
Signed-off-by: Jan Kowalewski <jkowalewski@antmicro.com>
Signed-off-by: Alessandro Comodi <acomodi@antmicro.com>
Signed-off-by: Jan Kowalewski <jkowalewski@antmicro.com>
Signed-off-by: Alessandro Comodi <acomodi@antmicro.com>
Signed-off-by: Alessandro Comodi <acomodi@antmicro.com>
Signed-off-by: Alessandro Comodi <acomodi@antmicro.com>
@acomodi acomodi merged commit 3a055cd into f4pga:master Apr 14, 2021
@acomodi acomodi deleted the add-gtp-primitives branch April 14, 2021 06:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
arch-artix7 lang-python Issue uses (or requires) Python language. lang-xml Issues uses (or requires) XML language. third-party type-infra Issues related to infra like travis. type-utils Issues is related to the scripts inside the repo. type-vpr
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants