prjxray icon indicating copy to clipboard operation
prjxray copied to clipboard

Kintex7 xc7k325 support

Open jrrk2 opened this issue 3 years ago • 47 comments

I followed the guide to add new parts, more or less, some experimental features had to be commented out. No validation on real hardware has been done, this is just to establish if the pull request changes can run

jrrk2 avatar Dec 07 '21 14:12 jrrk2

@kgugala Who should review this?

mithro avatar Dec 07 '21 14:12 mithro

The build failed, but a necessary step: 'make db-prepare-kintex7' does not seem to be included in the regression flow. As far as I can see this needs to run before 'make -C fuzzers part_only'

jrrk2 avatar Dec 07 '21 15:12 jrrk2

I believe that make db-prepare-kintex7 should be run and committed?

mithro avatar Dec 07 '21 17:12 mithro

Actually maybe I'm wrong...

mithro avatar Dec 07 '21 17:12 mithro

https://github.com/SymbiFlow/prjxray/blob/60168e9b7e89956ce8a197f3cfdf6d4bc80926d3/.github/kokoro/db-full.sh#L32-L39

mithro avatar Dec 07 '21 17:12 mithro

========================================
Preparing database
----------------------------------------

Preparing kintex7 files
============================
Part xc7k160tfbg484-1 has an unsupported device xc7k160t
Part xc7k160tfbg484-2 has an unsupported device xc7k160t
Part xc7k160tfbg484-2L has an unsupported device xc7k160t
Part xc7k160tfbg484-3 has an unsupported device xc7k160t
Part xc7k160tfbg676-1 has an unsupported device xc7k160t
Part xc7k160tfbg676-2 has an unsupported device xc7k160t
Part xc7k160tfbg676-2L has an unsupported device xc7k160t
Part xc7k160tfbg676-3 has an unsupported device xc7k160t
Part xc7k160tfbv484-1 has an unsupported device xc7k160t
Part xc7k160tfbv484-2 has an unsupported device xc7k160t
Part xc7k160tfbv484-2L has an unsupported device xc7k160t
Part xc7k160tfbv484-3 has an unsupported device xc7k160t
Part xc7k160tfbv676-1 has an unsupported device xc7k160t
Part xc7k160tfbv676-2 has an unsupported device xc7k160t
Part xc7k160tfbv676-2L has an unsupported device xc7k160t
Part xc7k160tfbv676-3 has an unsupported device xc7k160t
Part xc7k160tffg676-1 has an unsupported device xc7k160t
Part xc7k160tffg676-2 has an unsupported device xc7k160t
Part xc7k160tffg676-2L has an unsupported device xc7k160t
Part xc7k160tffg676-3 has an unsupported device xc7k160t
Part xc7k160tffv676-1 has an unsupported device xc7k160t
Part xc7k160tffv676-2 has an unsupported device xc7k160t
Part xc7k160tffv676-2L has an unsupported device xc7k160t
Part xc7k160tffv676-3 has an unsupported device xc7k160t
Part xc7k160tifbv676-2L has an unsupported device xc7k160ti
Part xc7k160tifbg484-2L has an unsupported device xc7k160ti
Part xc7k160tifbg676-2L has an unsupported device xc7k160ti
Part xc7k160tifbv484-2L has an unsupported device xc7k160ti
Part xc7k160tiffv676-2L has an unsupported device xc7k160ti
Part xc7k160tiffg676-2L has an unsupported device xc7k160ti
Find pins for xc7k70tfbg484-1
Find pins for xc7k70tfbg676-1
Find pins for xc7k70tfbv484-1
Find pins for xc7k70tfbv676-1
----------------------------------------

mithro avatar Dec 07 '21 17:12 mithro

make[1]: Entering directory '/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/fuzzers'
.//run_fuzzer.py 000-init-db
2021-12-07T14:56:38 - xc7k70tfbv676-3/000-init-db               -    0s: Running fuzzer attempt: 0
mkdir -p fuzzer_ok
touch fuzzer_ok/fuzzer_000-init-db_xc7k70tfbv676-3.ok
.//run_fuzzer.py 001-part-yaml
2021-12-07T14:56:38 - xc7k70tfbv676-3/001-part-yaml             -    0s: Running fuzzer attempt: 0
.//run_fuzzer.py 075-pins
2021-12-07T14:56:38 - xc7k70tfbv676-3/075-pins                  -    0s: Running fuzzer attempt: 0
make[1]: Leaving directory '/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/fuzzers'
source settings/kintex7_325t.sh && make -C fuzzers part_only
Traceback (most recent call last):
  File "/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/utils/create_environment.py", line 66, in <module>
    main()
  File "/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/utils/create_environment.py", line 59, in main
    environment = get_environment_variables()
  File "/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/utils/create_environment.py", line 37, in get_environment_variables
    part_info = get_part_information(db_root, part)
  File "/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/prjxray/util.py", line 48, in get_part_information
    assert part, "Part {} not found in {}".format(part, part_mapping)
AssertionError: Part None not found in {'xc7k70tfbg484-1': {'device': 'xc7k70t', 'package': 'fbg484', 'speedgrade': '1'}, 'xc7k70tfbg484-2': {'device': 'xc7k70t', 'package': 'fbg484', 'speedgrade': '2'}, 'xc7k70tfbg484-2L': {'device': 'xc7k70t', 'package': 'fbg484', 'speedgrade': '2L'}, 'xc7k70tfbg484-3': {'device': 'xc7k70t', 'package': 'fbg484', 'speedgrade': '3'}, 'xc7k70tfbg676-1': {'device': 'xc7k70t', 'package': 'fbg676', 'speedgrade': '1'}, 'xc7k70tfbg676-2': {'device': 'xc7k70t', 'package': 'fbg676', 'speedgrade': '2'}, 'xc7k70tfbg676-2L': {'device': 'xc7k70t', 'package': 'fbg676', 'speedgrade': '2L'}, 'xc7k70tfbg676-3': {'device': 'xc7k70t', 'package': 'fbg676', 'speedgrade': '3'}, 'xc7k70tfbv484-1': {'device': 'xc7k70t', 'package': 'fbv484', 'speedgrade': '1'}, 'xc7k70tfbv484-2': {'device': 'xc7k70t', 'package': 'fbv484', 'speedgrade': '2'}, 'xc7k70tfbv484-2L': {'device': 'xc7k70t', 'package': 'fbv484', 'speedgrade': '2L'}, 'xc7k70tfbv484-3': {'device': 'xc7k70t', 'package': 'fbv484', 'speedgrade': '3'}, 'xc7k70tfbv676-1': {'device': 'xc7k70t', 'package': 'fbv676', 'speedgrade': '1'}, 'xc7k70tfbv676-2': {'device': 'xc7k70t', 'package': 'fbv676', 'speedgrade': '2'}, 'xc7k70tfbv676-2L': {'device': 'xc7k70t', 'package': 'fbv676', 'speedgrade': '2L'}, 'xc7k70tfbv676-3': {'device': 'xc7k70t', 'package': 'fbv676', 'speedgrade': '3'}}
Makefile:204: recipe for target 'db-part-only-kintex7_325t' failed
make: *** [db-part-only-kintex7_325t] Error 1


[ID: 1446474] Build finished after 197 secs, exit value: 1


Warning: Permanently added 'localhost' (ED25519) to the list of known hosts.
[06:56:39] Collecting build artifacts from build VM
Build script failed with exit code: 1

mithro avatar Dec 07 '21 17:12 mithro

This is what I get running locally:

jrrk@jonathan-NUC10i7FNK:~/prjxray$ make db-prepare-kintex7


Preparing kintex7 files
============================
Part xc7k160tfbg484-1 has an unsupported device xc7k160t
Part xc7k160tfbg484-2 has an unsupported device xc7k160t
Part xc7k160tfbg484-2L has an unsupported device xc7k160t
Part xc7k160tfbg484-3 has an unsupported device xc7k160t
Part xc7k160tfbg676-1 has an unsupported device xc7k160t
Part xc7k160tfbg676-2 has an unsupported device xc7k160t
Part xc7k160tfbg676-2L has an unsupported device xc7k160t
Part xc7k160tfbg676-3 has an unsupported device xc7k160t
Part xc7k160tfbv484-1 has an unsupported device xc7k160t
Part xc7k160tfbv484-2 has an unsupported device xc7k160t
Part xc7k160tfbv484-2L has an unsupported device xc7k160t
Part xc7k160tfbv484-3 has an unsupported device xc7k160t
Part xc7k160tfbv676-1 has an unsupported device xc7k160t
Part xc7k160tfbv676-2 has an unsupported device xc7k160t
Part xc7k160tfbv676-2L has an unsupported device xc7k160t
Part xc7k160tfbv676-3 has an unsupported device xc7k160t
Part xc7k160tffg676-1 has an unsupported device xc7k160t
Part xc7k160tffg676-2 has an unsupported device xc7k160t
Part xc7k160tffg676-2L has an unsupported device xc7k160t
Part xc7k160tffg676-3 has an unsupported device xc7k160t
Part xc7k160tffv676-1 has an unsupported device xc7k160t
Part xc7k160tffv676-2 has an unsupported device xc7k160t
Part xc7k160tffv676-2L has an unsupported device xc7k160t
Part xc7k160tffv676-3 has an unsupported device xc7k160t
Part xc7k160tifbv676-2L has an unsupported device xc7k160ti
Part xc7k160tifbg484-2L has an unsupported device xc7k160ti
Part xc7k160tifbg676-2L has an unsupported device xc7k160ti
Part xc7k160tifbv484-2L has an unsupported device xc7k160ti
Part xc7k160tiffv676-2L has an unsupported device xc7k160ti
Part xc7k160tiffg676-2L has an unsupported device xc7k160ti
Part xc7k325tiffv676-2L has an unsupported device xc7k325ti
Part xc7k325tiffv900-2L has an unsupported device xc7k325ti
Part xc7k325tifbg676-2L has an unsupported device xc7k325ti
Part xc7k325tifbg900-2L has an unsupported device xc7k325ti
Part xc7k325tifbv676-2L has an unsupported device xc7k325ti
Part xc7k325tifbv900-2L has an unsupported device xc7k325ti
Part xc7k325tiffg900-2L has an unsupported device xc7k325ti
Part xc7k325tiffg676-2L has an unsupported device xc7k325ti
Part xc7k355tiffg901-2L has an unsupported device xc7k355ti
Part xc7k355tiffv901-2L has an unsupported device xc7k355ti
Part xc7k355tffg901-1 has an unsupported device xc7k355t
Part xc7k355tffg901-2 has an unsupported device xc7k355t
Part xc7k355tffg901-2L has an unsupported device xc7k355t
Part xc7k355tffg901-3 has an unsupported device xc7k355t
Part xc7k355tffv901-1 has an unsupported device xc7k355t
Part xc7k355tffv901-2 has an unsupported device xc7k355t
Part xc7k355tffv901-2L has an unsupported device xc7k355t
Part xc7k355tffv901-3 has an unsupported device xc7k355t
Part xc7k410tfbg676-1 has an unsupported device xc7k410t
Part xc7k410tfbg676-2 has an unsupported device xc7k410t
Part xc7k410tfbg676-2L has an unsupported device xc7k410t
Part xc7k410tfbg676-3 has an unsupported device xc7k410t
Part xc7k410tfbg900-1 has an unsupported device xc7k410t
Part xc7k410tfbg900-2 has an unsupported device xc7k410t
Part xc7k410tfbg900-2L has an unsupported device xc7k410t
Part xc7k410tfbg900-3 has an unsupported device xc7k410t
Part xc7k410tfbv676-1 has an unsupported device xc7k410t
Part xc7k410tfbv676-2 has an unsupported device xc7k410t
Part xc7k410tfbv676-2L has an unsupported device xc7k410t
Part xc7k410tfbv676-3 has an unsupported device xc7k410t
Part xc7k410tfbv900-1 has an unsupported device xc7k410t
Part xc7k410tfbv900-2 has an unsupported device xc7k410t
Part xc7k410tfbv900-2L has an unsupported device xc7k410t
Part xc7k410tfbv900-3 has an unsupported device xc7k410t
Part xc7k410tffg676-1 has an unsupported device xc7k410t
Part xc7k410tffg676-2 has an unsupported device xc7k410t
Part xc7k410tffg676-2L has an unsupported device xc7k410t
Part xc7k410tffg676-3 has an unsupported device xc7k410t
Part xc7k410tffg900-1 has an unsupported device xc7k410t
Part xc7k410tffg900-2 has an unsupported device xc7k410t
Part xc7k410tffg900-2L has an unsupported device xc7k410t
Part xc7k410tffg900-3 has an unsupported device xc7k410t
Part xc7k410tffv676-1 has an unsupported device xc7k410t
Part xc7k410tffv676-2 has an unsupported device xc7k410t
Part xc7k410tffv676-2L has an unsupported device xc7k410t
Part xc7k410tffv676-3 has an unsupported device xc7k410t
Part xc7k410tffv900-1 has an unsupported device xc7k410t
Part xc7k410tffv900-2 has an unsupported device xc7k410t
Part xc7k410tffv900-2L has an unsupported device xc7k410t
Part xc7k410tffv900-3 has an unsupported device xc7k410t
Part xc7k410tiffv900-2L has an unsupported device xc7k410ti
Part xc7k410tiffv676-2L has an unsupported device xc7k410ti
Part xc7k410tiffg900-2L has an unsupported device xc7k410ti
Part xc7k410tiffg676-2L has an unsupported device xc7k410ti
Part xc7k410tifbv900-2L has an unsupported device xc7k410ti
Part xc7k410tifbv676-2L has an unsupported device xc7k410ti
Part xc7k410tifbg900-2L has an unsupported device xc7k410ti
Part xc7k410tifbg676-2L has an unsupported device xc7k410ti
Part xc7k420tffg1156-1 has an unsupported device xc7k420t
Part xc7k420tffg1156-2 has an unsupported device xc7k420t
Part xc7k420tffg1156-2L has an unsupported device xc7k420t
Part xc7k420tffg1156-3 has an unsupported device xc7k420t
Part xc7k420tffg901-1 has an unsupported device xc7k420t
Part xc7k420tffg901-2 has an unsupported device xc7k420t
Part xc7k420tffg901-2L has an unsupported device xc7k420t
Part xc7k420tffg901-3 has an unsupported device xc7k420t
Part xc7k420tffv1156-1 has an unsupported device xc7k420t
Part xc7k420tffv1156-2 has an unsupported device xc7k420t
Part xc7k420tffv1156-2L has an unsupported device xc7k420t
Part xc7k420tffv1156-3 has an unsupported device xc7k420t
Part xc7k420tffv901-1 has an unsupported device xc7k420t
Part xc7k420tffv901-2 has an unsupported device xc7k420t
Part xc7k420tffv901-2L has an unsupported device xc7k420t
Part xc7k420tffv901-3 has an unsupported device xc7k420t
Part xc7k420tiffv901-2L has an unsupported device xc7k420ti
Part xc7k420tiffv1156-2L has an unsupported device xc7k420ti
Part xc7k420tiffg901-2L has an unsupported device xc7k420ti
Part xc7k420tiffg1156-2L has an unsupported device xc7k420ti
Part xc7k480tiffv901-2L has an unsupported device xc7k480ti
Part xc7k480tiffv1156-2L has an unsupported device xc7k480ti
Part xc7k480tiffg901-2L has an unsupported device xc7k480ti
Part xc7k480tiffg1156-2L has an unsupported device xc7k480ti
Part xc7k480tffv901-1 has an unsupported device xc7k480t
Part xc7k480tffv901-2 has an unsupported device xc7k480t
Part xc7k480tffv901-2L has an unsupported device xc7k480t
Part xc7k480tffv901-3 has an unsupported device xc7k480t
Part xc7k480tffv1156-1 has an unsupported device xc7k480t
Part xc7k480tffv1156-2 has an unsupported device xc7k480t
Part xc7k480tffv1156-2L has an unsupported device xc7k480t
Part xc7k480tffv1156-3 has an unsupported device xc7k480t
Part xc7k480tffg901-1 has an unsupported device xc7k480t
Part xc7k480tffg901-2 has an unsupported device xc7k480t
Part xc7k480tffg901-2L has an unsupported device xc7k480t
Part xc7k480tffg901-3 has an unsupported device xc7k480t
Part xc7k480tffg1156-1 has an unsupported device xc7k480t
Part xc7k480tffg1156-2 has an unsupported device xc7k480t
Part xc7k480tffg1156-2L has an unsupported device xc7k480t
Part xc7k480tffg1156-3 has an unsupported device xc7k480t
Find pins for xc7k325tfbg676-1
Find pins for xc7k325tfbg900-1
Find pins for xc7k325tfbv676-1
Find pins for xc7k325tfbv900-1
Find pins for xc7k325tffg676-1
Find pins for xc7k325tffg900-1
Find pins for xc7k325tffv676-1
Find pins for xc7k325tffv900-1
Find pins for xc7k70tfbg484-1
Find pins for xc7k70tfbg676-1
Find pins for xc7k70tfbv484-1
Find pins for xc7k70tfbv676-1

Perhaps there is a problem getting the license for non-webpack parts ?

jrrk2 avatar Dec 07 '21 19:12 jrrk2

The CI system only currently has access to WebPack parts.

mithro avatar Dec 07 '21 22:12 mithro

Is the xc7k325 part a non-webpack part?

mithro avatar Dec 07 '21 22:12 mithro

Looks like only Kintex®-7 FPGA: • XC7K70T, XC7K160T are supported by the WebPack version.

mithro avatar Dec 07 '21 22:12 mithro

Perhaps we need two X-Ray databases, one that can be generated from WebPack, another (for larger parts) that has to be generated by owners of suitable boards (that come with an unlimited number of node-locked and device-locked threads). Another way would be to affiliate with an academic institution that has access to bulk licenses. Meanwhile, I will try and get a bitstream running on a real board to see if we have something usable.

jrrk2 avatar Dec 08 '21 06:12 jrrk2

I committed my new database here (https://github.com/jrrk2/prjxray-db/tree/k325). I suppose that means that eventually anybody can use this part license-free.

GitHub
Project X-Ray Database: XC7 Series. Contribute to jrrk2/prjxray-db development by creating an account on GitHub.

jrrk2 avatar Dec 08 '21 07:12 jrrk2

jrrk2 makes a good point here; for example, the 7k325t and 7k420t dev kits are actually cheaper on aliexpress than the 7k160t. I suspect this because the larger parts are more popular in the supply chain, and 160t can fetch a higher price as the latest webpack can be used.

Using these parts without a vivado license is actually a major reason I am interested in the open source FPGA tooling.

jeremyherbert avatar Dec 09 '21 12:12 jeremyherbert

Furthermore the 7k325t part is used in the frequently encountered KC705 board from Xilinx and the Genesys2 board from Diligent. The latter comes with a Vivado node/device-locked license which may be used to generate the open-source database.

jrrk2 avatar Dec 09 '21 12:12 jrrk2

I'm very close to being able to access our license server on our Kokoro system.

mithro avatar Dec 15 '21 02:12 mithro

Thanks for the heads-up but this will not take us much further forward unless support is added for kintex7 in the symbiflow-arch-defs repo. I'm not familiar with CMake config files nor can I find any documentation on how to do this. In addition the Python support seems to be Ubuntu/Debian specific. I tried it on Fedora-35 and it didn't work.

jrrk2 avatar Dec 15 '21 08:12 jrrk2

@jrrk2 Did you log a bug about it not working on Fedora-35 somewhere?

mithro avatar Dec 15 '21 17:12 mithro

@jrrk2 - @acomodi was providing some guidance for the Spartan 7 part @ https://github.com/SymbiFlow/prjxray/issues/1789#issuecomment-994546002

mithro avatar Dec 15 '21 17:12 mithro

Kintex 7 failed really fast. First make --dry-run and source settings/kintex7.sh && make -C fuzzers ran without actually running any fuzzers, then source settings/kintex7_325t.sh && make -C fuzzers part_only failed, which seems to be caused by make failing to find xc7k325t amongst a list consisted only of xc7k70t parts. My initial guess is some Makefiles aren't written correctly, haven't looked into it yet though.

MidsummerNight avatar Dec 16 '21 06:12 MidsummerNight

Kintex 7 failed really fast. First make --dry-run and source settings/kintex7.sh && make -C fuzzers ran without actually running any fuzzers, then source settings/kintex7_325t.sh && make -C fuzzers part_only failed, which seems to be caused by make failing to find xc7k325t amongst a list consisted only of xc7k70t parts. My initial guess is some Makefiles aren't written correctly, haven't looked into it yet though.

You need to run make db-prepare-kintex7 before source settings/kintex7_325t.sh as per the documentation (mutatis mutandis). Also the whole thing will fall flat if you don't have the Vivado license for this device. I just checked out mithro's patches and it seems to run OK (probably will take a day or so on 12 cores).

jrrk2 avatar Dec 16 '21 08:12 jrrk2

I spoke too soon, XRAY_ROI_TILEGRID is commented out which I took to mean (based on the comment above) that the whole device would be considered. Mea culpa.

jrrk2 avatar Dec 16 '21 08:12 jrrk2

@jrrk2 No I was referring to Kokoro's build log. I f you scroll down to the end you'll find that no fuzzy tests ran at all, with main error being:

source settings/kintex7_325t.sh && make -C fuzzers part_only
Traceback (most recent call last):
  File "/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/utils/create_environment.py", line 66, in <module>
    main()
  File "/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/utils/create_environment.py", line 59, in main
    environment = get_environment_variables()
  File "/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/utils/create_environment.py", line 37, in get_environment_variables
    part_info = get_part_information(db_root, part)
  File "/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/prjxray/util.py", line 48, in get_part_information
    assert part, "Part {} not found in {}".format(part, part_mapping)
AssertionError: Part None not found in {'xc7k70tfbg484-1': {'device': 'xc7k70t', 'package': 'fbg484', 'speedgrade': '1'}, 'xc7k70tfbg484-2': {'device': 'xc7k70t', 'package': 'fbg484', 'speedgrade': '2'}, 'xc7k70tfbg484-2L': {'device': 'xc7k70t', 'package': 'fbg484', 'speedgrade': '2L'}, 'xc7k70tfbg484-3': {'device': 'xc7k70t', 'package': 'fbg484', 'speedgrade': '3'}, 'xc7k70tfbg676-1': {'device': 'xc7k70t', 'package': 'fbg676', 'speedgrade': '1'}, 'xc7k70tfbg676-2': {'device': 'xc7k70t', 'package': 'fbg676', 'speedgrade': '2'}, 'xc7k70tfbg676-2L': {'device': 'xc7k70t', 'package': 'fbg676', 'speedgrade': '2L'}, 'xc7k70tfbg676-3': {'device': 'xc7k70t', 'package': 'fbg676', 'speedgrade': '3'}, 'xc7k70tfbv484-1': {'device': 'xc7k70t', 'package': 'fbv484', 'speedgrade': '1'}, 'xc7k70tfbv484-2': {'device': 'xc7k70t', 'package': 'fbv484', 'speedgrade': '2'}, 'xc7k70tfbv484-2L': {'device': 'xc7k70t', 'package': 'fbv484', 'speedgrade': '2L'}, 'xc7k70tfbv484-3': {'device': 'xc7k70t', 'package': 'fbv484', 'speedgrade': '3'}, 'xc7k70tfbv676-1': {'device': 'xc7k70t', 'package': 'fbv676', 'speedgrade': '1'}, 'xc7k70tfbv676-2': {'device': 'xc7k70t', 'package': 'fbv676', 'speedgrade': '2'}, 'xc7k70tfbv676-2L': {'device': 'xc7k70t', 'package': 'fbv676', 'speedgrade': '2L'}, 'xc7k70tfbv676-3': {'device': 'xc7k70t', 'package': 'fbv676', 'speedgrade': '3'}}
Makefile:205: recipe for target 'db-part-only-kintex7_325t' failed
make: *** [db-part-only-kintex7_325t] Error 1


[ID: 8383546] Build finished after 221 secs, exit value: 1

From the log, it seems that Kokoro halted at the preparation stage, hence why we can see it failed mere minutes after the build test started. Note how 'make db-part-only-kintex7_325t' when looking for 325t parts in that list of 70t parts. I suspect something is wrong with the files that set up the CI process, since you have successfully created your own prjxray-db repo that has 325t parts' info in it, though unfortunately I can't help you test it (don't have a paid Vivado license for 325t).

Just to reduce potential confusion, "Kokoro" is a CI system used by Google internally. In this case it automatically compiles and runs all of X-Ray's fuzzers for all of X-Ray's supported parts (on Google's servers, I think). In my experience the files that tells Kokoro how to run the tests are here but that's about all I know. I'm pretty new to SymbiFlow too, and I'm not a Googler either. Maybe you can ask @mithro @acomodi @kgugala for more details.

MidsummerNight avatar Dec 16 '21 13:12 MidsummerNight

It seems to me the automated process preferably should be modified to include utils/prjxray_form_channels.py and friends, this is also a lengthy process which takes a number of hours per part. Also there is a potential boostrapping issue with prjxray/database directory that gets replaced by the newly created prjxray-db repo. I'm not sure how to solve either of these problems at the moment. I think there might be a temporary way to generate the channels for kintex7 using 'make -n -B' on a working artix7 part, capturing the output as a shell script, and then globally replacing the old part with the new one. However that's not good except as a proof of concept to see if the scripts can run. Another issue is that the xc7k325t has six global clock regions and I don't know if there is a general solution to the problem of how to connect them in VPR. There are references to _bottom and presumably _top in smaller devices but this needs to be made scalable and documented by somebody familiar with the flow. I don't know if there are designs that cross clock regions but it would make sense that there would be a timing penalty and the possibility of hold violations to be taken into account.

jrrk2 avatar Dec 21 '21 09:12 jrrk2

So, the Kintex 7 build failed after ~5 hours and I'm unclear why.

make[1]: Leaving directory '/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/fuzzers'
Makefile:181: recipe for target 'db-kintex7' failed
make: *** [db-kintex7] Error 2

.....

2021-12-21T19:45:51 - xc7k325tffg900-2/074-dump_all              - 5h15m: make[3]: Leaving directory '/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/fuzzers/074-dump_all'

2021-12-21T19:45:51 - xc7k325tffg900-2/074-dump_all              - 5h15m: # Clean up intermediate files after successful pushdb.

2021-12-21T19:45:51 - xc7k325tffg900-2/074-dump_all              - 5h15m: find build_xc7k325tffg900-2 -name "*.json5" -delete

2021-12-21T19:45:51 - xc7k325tffg900-2/074-dump_all              - 5h15m: touch run.xc7k325tffg900-2.ok

2021-12-21T19:45:51 - xc7k325tffg900-2/074-dump_all              - 5h15m: make[2]: Leaving directory '/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/fuzzers/074-dump_all'

2021-12-21T19:45:51 - xc7k325tffg900-2/074-dump_all              - 5h15m: 

2021-12-21T19:45:51 - xc7k325tffg900-2/074-dump_all              - 5h15m: --------------------------------------------------------------------------

2021-12-21T19:45:51 - xc7k325tffg900-2/074-dump_all              - 5h15m: Succeeded! @ 2021-12-21T19:45:51.395225

make[1]: Leaving directory '/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/fuzzers'

Script done, file is /tmpfs/tmp/tmp.eaE7a4s3sK
+ DATABASE_RET=2
+ set +x -e
Packing failing test cases
----------------------------------------
A failure occurred during Database build.
----------------------------------------
========================================
 Disk space in failure path
----------------------------------------
108G	.

[ID: 3389105] Build finished after 29135 secs, exit value: 2


Warning: Permanently added 'localhost' (ED25519) to the list of known hosts.
[13:18:20] Executor 1406036175 is unresponsive. Build terminated.

mithro avatar Dec 21 '21 23:12 mithro

I'm wondering if it is running out of disk space...

The current run is working on;


2021-12-22T03:29:10 - xc7k325tffg900-2/074-dump_all              - 3h18m: Still running (1m:2.46%, 5m:2.79%, 15m:11.46% Mem:14.0Gi used, 338.0Gi free).

2021-12-22T03:29:10 - xc7k325tffg900-2/074-dump_all              - 3h18m: make---make---bash---generate_after_---python3

2021-12-22T03:29:20 - xc7k325tffg900-2/074-dump_all              - 3h19m: Still running (1m:2.40%, 5m:2.77%, 15m:11.35% Mem:14.0Gi used, 337.0Gi free).

2021-12-22T03:29:20 - xc7k325tffg900-2/074-dump_all              - 3h19m: make---make---bash---generate_after_---python3

2021-12-22T03:29:30 - xc7k325tffg900-2/074-dump_all              - 3h19m: Still running (1m:2.35%, 5m:2.75%, 15m:11.27% Mem:15.0Gi used, 337.0Gi free).

2021-12-22T03:29:30 - xc7k325tffg900-2/074-dump_all              - 3h19m: make---make---bash---generate_after_---python3

mithro avatar Dec 22 '21 03:12 mithro

I also logged https://github.com/SymbiFlow/prjxray/issues/1810

mithro avatar Dec 22 '21 03:12 mithro

Ahh ha!

2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: ++ md5sum
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: ++ echo /tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/fuzzers/051-pip-imuxlout-bypalts/build/1/specimen_008
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: + echo '`define SEED 32'\''h84da4d6f'
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: + make -f /tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/utils/top_generate.mk
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: Traceback (most recent call last):
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s:   File "/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/fuzzers/int_generate.py", line 103, in <module>
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s:     segmk.compile(bitfilter=get_bitfilter(os.getenv('XRAY_DATABASE'), 'INT'))
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s:   File "/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/prjxray/segmaker.py", line 391, in compile
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s:     assert this_tile_tags == 0, "Tile %s does not have bitstream info but %s tags" % (
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: AssertionError: Tile INT_L_X24Y151 does not have bitstream info but 50 tags
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: make[4]: *** [generate.ok] Error 1
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: make[3]: *** [/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/fuzzers/051-pip-imuxlout-bypalts/build/1/specimen_003/OK] Error 2
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: make[3]: *** Waiting for unfinished jobs....
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: Traceback (most recent call last):
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s:   File "/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/fuzzers/int_generate.py", line 103, in <module>
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s:     segmk.compile(bitfilter=get_bitfilter(os.getenv('XRAY_DATABASE'), 'INT'))
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s:   File "/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/prjxray/segmaker.py", line 391, in compile
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s:     assert this_tile_tags == 0, "Tile %s does not have bitstream info but %s tags" % (
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: AssertionError: Tile INT_L_X24Y151 does not have bitstream info but 50 tags
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: make[4]: *** [generate.ok] Error 1
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: make[3]: *** [/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/fuzzers/051-pip-imuxlout-bypalts/build/1/specimen_007/OK] Error 2
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: Traceback (most recent call last):
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s:   File "/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/fuzzers/int_generate.py", line 103, in <module>
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s:     segmk.compile(bitfilter=get_bitfilter(os.getenv('XRAY_DATABASE'), 'INT'))
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s:   File "/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/prjxray/segmaker.py", line 391, in compile
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s:     assert this_tile_tags == 0, "Tile %s does not have bitstream info but %s tags" % (
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: AssertionError: Tile INT_L_X24Y151 does not have bitstream info but 50 tags
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: make[4]: *** [generate.ok] Error 1
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: make[3]: *** [/tmpfs/src/github/symbiflow-prjxray-presubmit-db-kintex7/fuzzers/051-pip-imuxlout-bypalts/build/1/specimen_004/OK] Error 2
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: make[2]: *** [run] Error 2
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: 
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: --------------------------------------------------------------------------
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: !Failed! @ 2021-12-21T13:54:03.214741 with exit code: 2
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: --------------------------------------------------------------------------
2021-12-21T13:54:03 - xc7k70tfbg676-2/051-pip-imuxlout-bypalts  - 58m03s: WARNING: Fuzzer failed!

mithro avatar Dec 22 '21 04:12 mithro

I haven’t tried to build the xc7k70 support and I’m not aware of any cost-effective boards that use it. My recollection is that the xc7k325 support peaks at around 250GB disk space but difficult to be sure because the clean up when it comes takes a matter of seconds on SSD disk.

jrrk2 avatar Dec 22 '21 07:12 jrrk2

@jrrk2 - Was the xc7k70t not building before?

mithro avatar Dec 24 '21 00:12 mithro