Merge pull request #1927 from daniestevez/patch-1
fuzzers: fix typo in 011-clb-ffconfig README
diff --git a/.github/autolabeler.yml b/.github/autolabeler.yml
index da07a7b..816b125 100644
--- a/.github/autolabeler.yml
+++ b/.github/autolabeler.yml
@@ -3,6 +3,6 @@
parts-minitests: ["minitests"]
parts-experiments: ["experiments"]
parts-docs: ["docs", "*.md", "COPYING"]
-parts-infra: [".travis.yml", ".github", ".style.yapf", "vagrant", "download-latest-db.sh"]
+parts-infra: [".github", ".style.yapf", "vagrant", "download-latest-db.sh"]
parts-tools: ["tools", "utils", "htmlgen"]
parts-third-party: ["third_party", ".gitmodules"]
diff --git a/.github/kokoro/ctest2junit.xsl b/.github/ctest2junit.xsl
similarity index 100%
rename from .github/kokoro/ctest2junit.xsl
rename to .github/ctest2junit.xsl
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index c4125e4..14e73a8 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -1,8 +1,13 @@
version: 2
updates:
- package-ecosystem: gitsubmodule
- directory: "/"
+ directory: /
schedule:
interval: weekly
day: saturday
open-pull-requests-limit: 10
+- package-ecosystem: github-actions
+ directory: /
+ schedule:
+ interval: weekly
+ open-pull-requests-limit: 99
diff --git a/.github/kokoro/continuous-db-artix7.cfg b/.github/kokoro/continuous-db-artix7.cfg
deleted file mode 100644
index e58de2f..0000000
--- a/.github/kokoro/continuous-db-artix7.cfg
+++ /dev/null
@@ -1,44 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-build_file: "symbiflow-prjxray-continuous-db-artix7/.github/kokoro/db-full.sh"
-
-timeout_mins: 4320
-
-action {
- define_artifacts {
- # File types
- regex: "**/diff.html"
- regex: "**/diff.json"
- regex: "**/diff.patch"
- regex: "**/*result*.xml"
- regex: "**/*sponge_log.xml"
- regex: "**/fuzzers/*.tgz"
- # Whole directories
- # regex: "**/build/**" - Currently kokoro dies on number of artifacts.
- regex: "**/build/*.log"
- regex: "**/logs_*/**"
- # The database
- regex: "**/database/artix7/**"
- strip_prefix: "github/symbiflow-prjxray-continuous-db-artix7/"
- }
-}
-
-env_vars {
- key: "KOKORO_TYPE"
- value: "continuous"
-}
-
-env_vars {
- key: "KOKORO_DIR"
- value: "symbiflow-prjxray-continuous-db-artix7"
-}
-
-env_vars {
- key: "XRAY_SETTINGS"
- value: "artix7"
-}
-
-env_vars {
- key: "XRAY_BUILD_TYPE"
- value: "full"
-}
diff --git a/.github/kokoro/continuous-db-kintex7.cfg b/.github/kokoro/continuous-db-kintex7.cfg
deleted file mode 100644
index 946d62f..0000000
--- a/.github/kokoro/continuous-db-kintex7.cfg
+++ /dev/null
@@ -1,53 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-build_file: "symbiflow-prjxray-continuous-db-kintex7/.github/kokoro/db-full.sh"
-
-timeout_mins: 4320
-
-action {
- define_artifacts {
- # File types
- regex: "**/diff.html"
- regex: "**/diff.json"
- regex: "**/diff.patch"
- regex: "**/*result*.xml"
- regex: "**/*sponge_log.xml"
- regex: "**/fuzzers/*.tgz"
- # Whole directories
- # regex: "**/build/**" - Currently kokoro dies on number of artifacts.
- regex: "**/build/*.log"
- regex: "**/logs_*/**"
- # The database
- regex: "**/database/kintex7/**"
- strip_prefix: "github/symbiflow-prjxray-continuous-db-kintex7/"
- }
-}
-
-env_vars {
- key: "KOKORO_TYPE"
- value: "continuous"
-}
-
-env_vars {
- key: "KOKORO_DIR"
- value: "symbiflow-prjxray-continuous-db-kintex7"
-}
-
-env_vars {
- key: "XRAY_SETTINGS"
- value: "kintex7"
-}
-
-env_vars {
- key: "XRAY_BUILD_TYPE"
- value: "full"
-}
-
-before_action {
- fetch_keystore {
- keystore_resource {
- keystore_config_id: 74045
- keyname: "foss-fpga-tools_xilinx-license"
- }
- }
-}
diff --git a/.github/kokoro/continuous-db-spartan7.cfg b/.github/kokoro/continuous-db-spartan7.cfg
deleted file mode 100644
index ebb7e3c..0000000
--- a/.github/kokoro/continuous-db-spartan7.cfg
+++ /dev/null
@@ -1,44 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-build_file: "symbiflow-prjxray-continuous-db-spartan7/.github/kokoro/db-full.sh"
-
-timeout_mins: 4320
-
-action {
- define_artifacts {
- # File types
- regex: "**/diff.html"
- regex: "**/diff.json"
- regex: "**/diff.patch"
- regex: "**/*result*.xml"
- regex: "**/*sponge_log.xml"
- regex: "**/fuzzers/*.tgz"
- # Whole directories
- # regex: "**/build/**" - Currently kokoro dies on number of artifacts.
- regex: "**/build/*.log"
- regex: "**/logs_*/**"
- # The database
- regex: "**/database/spartan7/**"
- strip_prefix: "github/symbiflow-prjxray-continuous-db-spartan7/"
- }
-}
-
-env_vars {
- key: "KOKORO_TYPE"
- value: "continuous"
-}
-
-env_vars {
- key: "KOKORO_DIR"
- value: "symbiflow-prjxray-continuous-db-spartan7"
-}
-
-env_vars {
- key: "XRAY_SETTINGS"
- value: "spartan7"
-}
-
-env_vars {
- key: "XRAY_BUILD_TYPE"
- value: "full"
-}
diff --git a/.github/kokoro/continuous-db-zynq7.cfg b/.github/kokoro/continuous-db-zynq7.cfg
deleted file mode 100644
index 272b49a..0000000
--- a/.github/kokoro/continuous-db-zynq7.cfg
+++ /dev/null
@@ -1,44 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-build_file: "symbiflow-prjxray-continuous-db-zynq7/.github/kokoro/db-full.sh"
-
-timeout_mins: 4320
-
-action {
- define_artifacts {
- # File types
- regex: "**/diff.html"
- regex: "**/diff.json"
- regex: "**/diff.patch"
- regex: "**/*result*.xml"
- regex: "**/*sponge_log.xml"
- regex: "**/fuzzers/*.tgz"
- # Whole directories
- # regex: "**/build/**" - Currently kokoro dies on number of artifacts.
- regex: "**/build/*.log"
- regex: "**/logs_*/**"
- # The database
- regex: "**/database/zynq7/**"
- strip_prefix: "github/symbiflow-prjxray-continuous-db-zynq7/"
- }
-}
-
-env_vars {
- key: "KOKORO_TYPE"
- value: "continuous"
-}
-
-env_vars {
- key: "KOKORO_DIR"
- value: "symbiflow-prjxray-continuous-db-zynq7"
-}
-
-env_vars {
- key: "XRAY_SETTINGS"
- value: "zynq7"
-}
-
-env_vars {
- key: "XRAY_BUILD_TYPE"
- value: "full"
-}
diff --git a/.github/kokoro/database.cfg b/.github/kokoro/database.cfg
deleted file mode 100644
index ebc11d8..0000000
--- a/.github/kokoro/database.cfg
+++ /dev/null
@@ -1,16 +0,0 @@
-build_file: "symbiflow-prjxray-db/.github/kokoro/database.sh"
-
-timeout_mins: 10
-
-action {
- define_artifacts {
- regex: "**/*result*.xml"
- regex: "**/build/*.log"
- regex: "**/logs/*.log"
- regex: "**/logs/*.xml"
- regex: "**/build/**"
- regex: "**/diff.*"
- regex: "**/database/**"
- strip_prefix: "github/symbiflow-prjxray-db/"
- }
-}
diff --git a/.github/kokoro/db-full.sh b/.github/kokoro/db-full.sh
deleted file mode 100755
index 319d3fa..0000000
--- a/.github/kokoro/db-full.sh
+++ /dev/null
@@ -1,216 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017-2020 The Project X-Ray Authors.
-#
-# Use of this source code is governed by a ISC-style
-# license that can be found in the LICENSE file or at
-# https://opensource.org/licenses/ISC
-#
-# SPDX-License-Identifier: ISC
-
-set -e
-
-cd github/$KOKORO_DIR/
-
-source ./.github/kokoro/steps/hostcheck.sh
-source ./.github/kokoro/steps/hostsetup.sh
-source ./.github/kokoro/steps/hostinfo.sh
-source ./.github/kokoro/steps/git.sh
-
-source ./.github/kokoro/steps/xilinx.sh
-
-source ./.github/kokoro/steps/prjxray-env.sh
-
-echo
-echo "========================================"
-echo "Downloading current database"
-echo "----------------------------------------"
-(
- script --return --flush --command "./download-latest-db.sh" -
-)
-echo "----------------------------------------"
-
-echo
-echo "========================================"
-echo "Preparing database"
-echo "----------------------------------------"
-(
- make db-prepare-${XRAY_SETTINGS}
-)
-echo "----------------------------------------"
-
-source settings/$XRAY_SETTINGS.sh
-
-echo
-echo "========================================"
-echo "Cleaning out current database"
-echo "----------------------------------------"
-(
- cd database
- make clean-${XRAY_SETTINGS}-db
-)
-echo "----------------------------------------"
-
-echo
-echo "========================================"
-echo "Running Database build"
-echo "----------------------------------------"
-(
- # Output which fuzzers we are going to run
- echo "make --dry-run"
- make --dry-run db-${XRAY_SETTINGS}-all
- echo "----------------------------------------"
-
- # Run the fuzzers
- set -x +e
- tmp=`mktemp`
- script --return --flush --command "make -j $CORES MAX_VIVADO_PROCESS=$MAX_VIVADO_PROCESS db-${XRAY_SETTINGS}-all" $tmp
- DATABASE_RET=$?
- set +x -e
-
- if [[ $DATABASE_RET != 0 ]] ; then
- # Collect the Vivado logs into one tgz archive
- echo "Packing failing test cases"
- grep "recipe for target" $tmp | awk 'match($0,/recipe for target.*'\''(.*)\/run\..*ok'\''/,res) {print "fuzzers/" res[1]}' | xargs tar -zcf fuzzers/fails.tgz
- echo "----------------------------------------"
- echo "A failure occurred during Database build."
- echo "----------------------------------------"
- rm $tmp
-
- echo "========================================"
- echo " Disk space in failure path"
- echo "----------------------------------------"
- du -sh
-
- exit $DATABASE_RET
- fi
-)
-echo "----------------------------------------"
-
-# Format the database
-make db-format-${XRAY_SETTINGS}
-# Update the database/Info.md file
-make db-info
-
-# Output if the database has differences
-echo
-echo "========================================"
-echo " Database Differences"
-echo "----------------------------------------"
-(
- cd database
- # Update the index with any new files
- git add \
- --verbose \
- --all \
- --ignore-errors \
- .
-
- # Output what git status
- echo
- echo "----------------------------------------"
- echo " Database Status"
- echo "----------------------------------------"
- git status
- echo "----------------------------------------"
-
-
- # Output a summary of how the files have changed
- echo
- echo "----------------------------------------"
- echo " Database Diff Summary"
- echo "----------------------------------------"
- git diff --stat --irreversible-delete --find-renames --find-copies --ignore-all-space origin/master
-
- # Save the diff to be uploaded as an artifact
- echo
- echo "----------------------------------------"
- echo " Saving diff output"
- echo "----------------------------------------"
- # Patch file
- git diff \
- --patch-with-stat --no-color --irreversible-delete --find-renames --find-copies origin/master \
- > diff.patch
-
- MAX_DIFF_LINES=50000
- DIFF_LINES="$(wc -l diff.patch | sed -e's/ .*$//')"
- if [ $DIFF_LINES -gt $MAX_DIFF_LINES ]; then
- echo
- echo "----------------------------------------"
- echo " Database Diff"
- echo "----------------------------------------"
- echo "diff has $DIFF_LINES lines which is too large to display!"
-
- echo
- echo "----------------------------------------"
- echo " Generating pretty diff output"
- echo "----------------------------------------"
- echo "diff has $DIFF_LINES lines which is too large for HTML output!"
- else
- # Output the actually diff
- echo
- echo "----------------------------------------"
- echo " Database Diff"
- echo "----------------------------------------"
- git diff --color --irreversible-delete --find-renames --find-copies --ignore-all-space origin/master
-
- echo
- echo "----------------------------------------"
- echo " Generating pretty diff output"
- echo "----------------------------------------"
- (
- # Allow the diff2html to fail.
- set +e
-
- # Pretty HTML file version
- diff2html --summary=open --file diff.html --format html \
- -- \
- --irreversible-delete --find-renames --find-copies \
- --ignore-all-space origin/master || true
-
- # Programmatic JSON version
- diff2html --file diff.json --format json \
- -- \
- --irreversible-delete --find-renames --find-copies \
- --ignore-all-space origin/master || true
- ) || true
- fi
-)
-echo "----------------------------------------"
-
-# Check the database and fail if it is broken.
-set -x +e
-make db-check-${XRAY_SETTINGS}
-CHECK_RET=$?
-set +x -e
-
-echo
-echo "========================================"
-echo " Testing HTML generation"
-echo "----------------------------------------"
-(
- cd htmlgen
- source htmlgen.sh $XRAY_SETTINGS
-)
-
-# If we get here, then all the fuzzers completed fine. Hence we are
-# going to assume we don't want to keep all the build / logs / etc (as
-# they are quite large). Thus do a clean to get rid of them.
-echo
-echo "========================================"
-echo " Cleaning up after success"
-echo "----------------------------------------"
-(
- cd fuzzers
- echo
- echo "Cleaning up so CI doesn't save all the excess data."
- make clean_fuzzers
- make clean_piplists
-)
-echo "----------------------------------------"
-
-echo "========================================"
-echo " Final disk space after cleanup"
-echo "----------------------------------------"
-du -sh
-
-exit $CHECK_RET
diff --git a/.github/kokoro/db-quick.sh b/.github/kokoro/db-quick.sh
deleted file mode 100755
index 7f063de..0000000
--- a/.github/kokoro/db-quick.sh
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017-2020 The Project X-Ray Authors.
-#
-# Use of this source code is governed by a ISC-style
-# license that can be found in the LICENSE file or at
-# https://opensource.org/licenses/ISC
-#
-# SPDX-License-Identifier: ISC
-
-set -e
-
-cd github/$KOKORO_DIR/
-
-source ./.github/kokoro/steps/hostcheck.sh
-source ./.github/kokoro/steps/hostsetup.sh
-source ./.github/kokoro/steps/hostinfo.sh
-source ./.github/kokoro/steps/git.sh
-
-source ./.github/kokoro/steps/xilinx.sh
-
-source ./.github/kokoro/steps/prjxray-env.sh
-
-echo
-echo "========================================"
-echo "Downloading current database"
-echo "----------------------------------------"
-(
- ./download-latest-db.sh
-)
-echo "----------------------------------------"
-
-echo
-echo "========================================"
-echo "Preparing database"
-echo "----------------------------------------"
-(
- make db-prepare-${XRAY_SETTINGS}
-)
-echo "----------------------------------------"
-
-source settings/$XRAY_SETTINGS.sh
-
-echo
-echo "========================================"
-echo "Running quick fuzzer sanity check"
-echo "----------------------------------------"
-(
- cd fuzzers
- echo "make --dry-run"
- make --dry-run
- echo "----------------------------------------"
- export MAX_VIVADO_PROCESS=$CORES
- set -x
- script --return --flush --command "make -j $CORES MAX_VIVADO_PROCESS=$CORES QUICK=y" -
- set +x
-)
-echo "----------------------------------------"
diff --git a/.github/kokoro/kokoro-cfg.py b/.github/kokoro/kokoro-cfg.py
deleted file mode 100755
index 58376d9..0000000
--- a/.github/kokoro/kokoro-cfg.py
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-#
-# Copyright (C) 2017-2020 The Project X-Ray Authors.
-#
-# Use of this source code is governed by a ISC-style
-# license that can be found in the LICENSE file or at
-# https://opensource.org/licenses/ISC
-#
-# SPDX-License-Identifier: ISC
-
-db_full = """\
-# Format: //devtools/kokoro/config/proto/build.proto
-
-build_file: "symbiflow-prjxray-%(kokoro_type)s-db-%(part)s/.github/kokoro/%(script)s"
-
-timeout_mins: 4320
-
-action {
- define_artifacts {
- # File types
- regex: "**/diff.html"
- regex: "**/diff.json"
- regex: "**/diff.patch"
- regex: "**/*result*.xml"
- regex: "**/*sponge_log.xml"
- regex: "**/fuzzers/*.tgz"
- # Whole directories
- # regex: "**/build/**" - Currently kokoro dies on number of artifacts.
- regex: "**/build/*.log"
- regex: "**/logs_*/**"
- # The database
- regex: "**/database/%(part)s/**"
- strip_prefix: "github/symbiflow-prjxray-%(kokoro_type)s-db-%(part)s/"
- }
-}
-
-env_vars {
- key: "KOKORO_TYPE"
- value: "%(kokoro_type)s"
-}
-
-env_vars {
- key: "KOKORO_DIR"
- value: "symbiflow-prjxray-%(kokoro_type)s-db-%(part)s"
-}
-
-env_vars {
- key: "XRAY_SETTINGS"
- value: "%(part)s"
-}
-
-env_vars {
- key: "XRAY_BUILD_TYPE"
- value: "full"
-}
-"""
-
-for part in ['artix7', 'kintex7', 'zynq7', 'spartan7']:
- if part != 'spartan7':
- script = 'db-full.sh'
- else:
- # Emit dummy script for spartan7 for now until it is working.
- script = 'nothing.sh'
-
- with open("continuous-db-%s.cfg" % part, "w") as f:
- f.write(
- db_full % {
- 'part': part,
- 'kokoro_type': 'continuous',
- 'script': script,
- })
-
- with open("presubmit-db-%s.cfg" % part, "w") as f:
- f.write(
- db_full % {
- 'part': part,
- 'kokoro_type': 'presubmit',
- 'script': script,
- })
diff --git a/.github/kokoro/nothing.sh b/.github/kokoro/nothing.sh
deleted file mode 100755
index edc8fa3..0000000
--- a/.github/kokoro/nothing.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017-2020 The Project X-Ray Authors.
-#
-# Use of this source code is governed by a ISC-style
-# license that can be found in the LICENSE file or at
-# https://opensource.org/licenses/ISC
-#
-# SPDX-License-Identifier: ISC
-echo "Doing nothing!"
-true
diff --git a/.github/kokoro/presubmit-db-artix7.cfg b/.github/kokoro/presubmit-db-artix7.cfg
deleted file mode 100644
index 38b62d2..0000000
--- a/.github/kokoro/presubmit-db-artix7.cfg
+++ /dev/null
@@ -1,44 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-build_file: "symbiflow-prjxray-presubmit-db-artix7/.github/kokoro/db-full.sh"
-
-timeout_mins: 4320
-
-action {
- define_artifacts {
- # File types
- regex: "**/diff.html"
- regex: "**/diff.json"
- regex: "**/diff.patch"
- regex: "**/*result*.xml"
- regex: "**/*sponge_log.xml"
- regex: "**/fuzzers/*.tgz"
- # Whole directories
- # regex: "**/build/**" - Currently kokoro dies on number of artifacts.
- regex: "**/build/*.log"
- regex: "**/logs_*/**"
- # The database
- regex: "**/database/artix7/**"
- strip_prefix: "github/symbiflow-prjxray-presubmit-db-artix7/"
- }
-}
-
-env_vars {
- key: "KOKORO_TYPE"
- value: "presubmit"
-}
-
-env_vars {
- key: "KOKORO_DIR"
- value: "symbiflow-prjxray-presubmit-db-artix7"
-}
-
-env_vars {
- key: "XRAY_SETTINGS"
- value: "artix7"
-}
-
-env_vars {
- key: "XRAY_BUILD_TYPE"
- value: "full"
-}
diff --git a/.github/kokoro/presubmit-db-kintex7.cfg b/.github/kokoro/presubmit-db-kintex7.cfg
deleted file mode 100644
index 5c948e5..0000000
--- a/.github/kokoro/presubmit-db-kintex7.cfg
+++ /dev/null
@@ -1,53 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-build_file: "symbiflow-prjxray-presubmit-db-kintex7/.github/kokoro/db-full.sh"
-
-timeout_mins: 4320
-
-action {
- define_artifacts {
- # File types
- regex: "**/diff.html"
- regex: "**/diff.json"
- regex: "**/diff.patch"
- regex: "**/*result*.xml"
- regex: "**/*sponge_log.xml"
- regex: "**/fuzzers/*.tgz"
- # Whole directories
- # regex: "**/build/**" - Currently kokoro dies on number of artifacts.
- regex: "**/build/*.log"
- regex: "**/logs_*/**"
- # The database
- regex: "**/database/kintex7/**"
- strip_prefix: "github/symbiflow-prjxray-presubmit-db-kintex7/"
- }
-}
-
-env_vars {
- key: "KOKORO_TYPE"
- value: "presubmit"
-}
-
-env_vars {
- key: "KOKORO_DIR"
- value: "symbiflow-prjxray-presubmit-db-kintex7"
-}
-
-env_vars {
- key: "XRAY_SETTINGS"
- value: "kintex7"
-}
-
-env_vars {
- key: "XRAY_BUILD_TYPE"
- value: "full"
-}
-
-before_action {
- fetch_keystore {
- keystore_resource {
- keystore_config_id: 74045
- keyname: "foss-fpga-tools_xilinx-license"
- }
- }
-}
diff --git a/.github/kokoro/presubmit-db-spartan7.cfg b/.github/kokoro/presubmit-db-spartan7.cfg
deleted file mode 100644
index 39caf3a..0000000
--- a/.github/kokoro/presubmit-db-spartan7.cfg
+++ /dev/null
@@ -1,44 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-build_file: "symbiflow-prjxray-presubmit-db-spartan7/.github/kokoro/db-full.sh"
-
-timeout_mins: 4320
-
-action {
- define_artifacts {
- # File types
- regex: "**/diff.html"
- regex: "**/diff.json"
- regex: "**/diff.patch"
- regex: "**/*result*.xml"
- regex: "**/*sponge_log.xml"
- regex: "**/fuzzers/*.tgz"
- # Whole directories
- # regex: "**/build/**" - Currently kokoro dies on number of artifacts.
- regex: "**/build/*.log"
- regex: "**/logs_*/**"
- # The database
- regex: "**/database/spartan7/**"
- strip_prefix: "github/symbiflow-prjxray-presubmit-db-spartan7/"
- }
-}
-
-env_vars {
- key: "KOKORO_TYPE"
- value: "presubmit"
-}
-
-env_vars {
- key: "KOKORO_DIR"
- value: "symbiflow-prjxray-presubmit-db-spartan7"
-}
-
-env_vars {
- key: "XRAY_SETTINGS"
- value: "spartan7"
-}
-
-env_vars {
- key: "XRAY_BUILD_TYPE"
- value: "full"
-}
diff --git a/.github/kokoro/presubmit-db-zynq7.cfg b/.github/kokoro/presubmit-db-zynq7.cfg
deleted file mode 100644
index f6e994b..0000000
--- a/.github/kokoro/presubmit-db-zynq7.cfg
+++ /dev/null
@@ -1,44 +0,0 @@
-# Format: //devtools/kokoro/config/proto/build.proto
-
-build_file: "symbiflow-prjxray-presubmit-db-zynq7/.github/kokoro/db-full.sh"
-
-timeout_mins: 4320
-
-action {
- define_artifacts {
- # File types
- regex: "**/diff.html"
- regex: "**/diff.json"
- regex: "**/diff.patch"
- regex: "**/*result*.xml"
- regex: "**/*sponge_log.xml"
- regex: "**/fuzzers/*.tgz"
- # Whole directories
- # regex: "**/build/**" - Currently kokoro dies on number of artifacts.
- regex: "**/build/*.log"
- regex: "**/logs_*/**"
- # The database
- regex: "**/database/zynq7/**"
- strip_prefix: "github/symbiflow-prjxray-presubmit-db-zynq7/"
- }
-}
-
-env_vars {
- key: "KOKORO_TYPE"
- value: "presubmit"
-}
-
-env_vars {
- key: "KOKORO_DIR"
- value: "symbiflow-prjxray-presubmit-db-zynq7"
-}
-
-env_vars {
- key: "XRAY_SETTINGS"
- value: "zynq7"
-}
-
-env_vars {
- key: "XRAY_BUILD_TYPE"
- value: "full"
-}
diff --git a/.github/kokoro/steps/git.sh b/.github/kokoro/steps/git.sh
deleted file mode 100755
index 779348e..0000000
--- a/.github/kokoro/steps/git.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017-2020 The Project X-Ray Authors.
-#
-# Use of this source code is governed by a ISC-style
-# license that can be found in the LICENSE file or at
-# https://opensource.org/licenses/ISC
-#
-# SPDX-License-Identifier: ISC
-
-set -e
-
-echo
-echo "========================================"
-echo "Git log"
-echo "----------------------------------------"
-echo "----------------------------------------"
-
-echo
-echo "========================================"
-echo "Git fetching tags"
-echo "----------------------------------------"
-git fetch --tags || true
-echo "----------------------------------------"
-
-echo
-echo "========================================"
-echo "Git version info"
-echo "----------------------------------------"
-git log -n1
-echo "----------------------------------------"
-git describe --tags || true
-echo "----------------------------------------"
-git describe --tags --always || true
-echo "----------------------------------------"
diff --git a/.github/kokoro/steps/hostcheck.sh b/.github/kokoro/steps/hostcheck.sh
deleted file mode 100755
index de37427..0000000
--- a/.github/kokoro/steps/hostcheck.sh
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017-2021 The Project X-Ray Authors.
-#
-# Use of this source code is governed by a ISC-style
-# license that can be found in the LICENSE file or at
-# https://opensource.org/licenses/ISC
-#
-# SPDX-License-Identifier: ISC
-
-set -e
-
-echo
-echo "========================================"
-echo "Waiting for storage"
-echo "----------------------------------------"
-STORAGE_CHECK_ATTEMPTS=1
-while true; do
- # Check that tmpfs has been mounted correctly.
- set -x +e
- mount | grep /tmpfs
- MOUNT_RET=$?
- set +x -e
- if [[ $MOUNT_RET == 0 ]] ; then
- break;
- else
- echo "----------------------------------------"
- echo "Error: No storage is mounted on /tmpfs."
- echo "----------------------------------------"
- echo ""
- fi
-
- # Dump debugging information.
- echo "========================================"
- echo "Mount output"
- echo "----------------------------------------"
- mount
-
- echo "========================================"
- echo "Dmesg dump"
- echo "----------------------------------------"
- dmesg
-
- echo "========================================"
- echo "Partition information"
- echo "----------------------------------------"
- echo ""
- echo "partprobe"
- echo "----------------------------------------"
- partprobe -s
- echo ""
- echo "cat /proc/partitions"
- echo "----------------------------------------"
- cat /proc/partitions
- echo ""
- echo "cat /etc/fstab"
- echo "----------------------------------------"
- cat /etc/fstab
- echo ""
- echo "cat /etc/mtab"
- echo "----------------------------------------"
- cat /etc/mtab
- echo ""
- echo "lsblk"
- echo "----------------------------------------"
- lsblk --list --output 'NAME,KNAME,FSTYPE,MOUNTPOINT,LABEL,UUID,PARTTYPE,PARTLABEL,PARTUUID'
- echo ""
- echo "sfdisk"
- echo "----------------------------------------"
- sudo sfdisk --list
- echo ""
- echo "systemctl | grep mount"
- echo "----------------------------------------"
- systemctl | grep mount
- echo ""
- echo "systemctl | grep dev"
- echo "----------------------------------------"
- systemctl | grep dev
-
- # Fail if we have waited to long.
- if [[ $STORAGE_CHECK_ATTEMPTS -gt 10 ]]; then
- echo "=============================="
- echo " ERROR: Storage check timeout"
- echo "=============================="
- exit $MOUNT_RET
- else
- STORAGE_CHECK_ATTEMPTS=$(( $STORAGE_CHECK_ATTEMPTS + 1 ))
- fi
-
- # Wait for a bit before rechecking.
- SLEEP_FOR=$(( STORAGE_CHECK_ATTEMPTS * 10 ))
- echo ""
- echo "Sleeping for $SLEEP_FOR seconds before trying again..."
- sleep $SLEEP_FOR
-done
diff --git a/.github/kokoro/steps/hostinfo.sh b/.github/kokoro/steps/hostinfo.sh
deleted file mode 100755
index 8e69c99..0000000
--- a/.github/kokoro/steps/hostinfo.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017-2020 The Project X-Ray Authors.
-#
-# Use of this source code is governed by a ISC-style
-# license that can be found in the LICENSE file or at
-# https://opensource.org/licenses/ISC
-#
-# SPDX-License-Identifier: ISC
-
-set -e
-
-echo
-echo "========================================"
-echo "Host Environment"
-echo "----------------------------------------"
-export
-echo "----------------------------------------"
-
-echo
-echo "========================================"
-echo "Host CPU"
-echo "----------------------------------------"
-export CORES=$(nproc --all)
-echo "Cores: $CORES"
-echo
-echo "Memory"
-echo "----------------------------------------"
-cat /proc/meminfo
-echo "----------------------------------------"
-export MEM_GB=$(($(awk '/MemTotal/ {print $2}' /proc/meminfo)/(1024*1024)))
-echo "Total Memory (GB): $MEM_GB"
-
-# Approx memory per grid process
-export MEM_PER_RUN=8
-export MAX_GRID_CPU=$(($MEM_GB/$MEM_PER_RUN))
-export MAX_VIVADO_PROCESS=$(($MEM_GB/$MEM_PER_RUN))
-
-echo
-echo "========================================"
-echo "Host files"
-echo "----------------------------------------"
-echo $PWD
-echo "----------------------------------------"
-find . | sort
-echo "----------------------------------------"
diff --git a/.github/kokoro/steps/hostsetup.sh b/.github/kokoro/steps/hostsetup.sh
deleted file mode 100755
index 91cc230..0000000
--- a/.github/kokoro/steps/hostsetup.sh
+++ /dev/null
@@ -1,123 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017-2020 The Project X-Ray Authors.
-#
-# Use of this source code is governed by a ISC-style
-# license that can be found in the LICENSE file or at
-# https://opensource.org/licenses/ISC
-#
-# SPDX-License-Identifier: ISC
-
-set -e
-
-echo
-echo "========================================"
-echo "Removing older packages"
-echo "----------------------------------------"
-sudo apt-get remove -y cmake
-echo "----------------------------------------"
-
-echo
-echo "========================================"
-echo "Update the CA certificates"
-echo "----------------------------------------"
-sudo apt-get install -y ca-certificates
-echo "----------------------------------------"
-sudo update-ca-certificates
-echo "----------------------------------------"
-
-echo
-echo "========================================"
-echo "Remove the expire letsencrypt.org cert "
-echo "----------------------------------------"
-wget https://helloworld.letsencrypt.org/ || true
-echo "----------------------------------------"
-sudo rm /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt
-echo "----------------------------------------"
-sudo update-ca-certificates
-echo "----------------------------------------"
-wget https://helloworld.letsencrypt.org/ || true
-echo "----------------------------------------"
-
-
-echo
-echo "========================================"
-echo "Host adding PPAs"
-echo "----------------------------------------"
-wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add -
-sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ xenial main'
-sudo add-apt-repository ppa:deadsnakes/ppa
-echo "----------------------------------------"
-
-echo
-echo "========================================"
-echo "Host updating packages"
-echo "----------------------------------------"
-sudo apt-get update
-echo "----------------------------------------"
-
-echo
-echo "========================================"
-echo "Host remove packages"
-echo "----------------------------------------"
-sudo apt-get remove -y \
- python-pytest \
-
-
-sudo apt-get autoremove -y
-
-echo "----------------------------------------"
-echo
-echo "========================================"
-echo "Host install packages"
-echo "----------------------------------------"
-sudo apt-get install -y \
- bash \
- bison \
- build-essential \
- ca-certificates \
- clang-format \
- cmake \
- colordiff \
- coreutils \
- curl \
- flex \
- fontconfig \
- git \
- jq \
- lsb \
- nodejs \
- psmisc \
- python3 \
- python3-dev \
- python3-venv
-
-echo "========================================"
-echo "Enter virtual env for python 3.8"
-echo "----------------------------------------"
-python3 -mvenv startup_python
-source startup_python/bin/activate
-which python
-python --version
-which python3
-python3 --version
-
-echo "----------------------------------------"
-
-(
- cd /tmp
- # Upgrade pstree to support the -T flag.
- wget https://storage.googleapis.com/prjxray-deps-debs/psmisc_23.2-1_amd64.deb
- sudo dpkg --install psmisc_23.2-1_amd64.deb
- which pstree
- pstree --help || true
-)
-
-echo "----------------------------------------"
-
-echo
-echo "========================================"
-echo "Getting diff2html to produce pretty database diffs"
-echo "----------------------------------------"
-(
- sudo npm install -g diff2html-cli
-)
diff --git a/.github/kokoro/steps/prjxray-env.sh b/.github/kokoro/steps/prjxray-env.sh
deleted file mode 100755
index 95d9515..0000000
--- a/.github/kokoro/steps/prjxray-env.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017-2020 The Project X-Ray Authors.
-#
-# Use of this source code is governed by a ISC-style
-# license that can be found in the LICENSE file or at
-# https://opensource.org/licenses/ISC
-#
-# SPDX-License-Identifier: ISC
-
-set -e
-
-echo
-echo "========================================"
-echo "Build the C++ tools"
-echo "----------------------------------------"
-make build --output-sync=target --warn-undefined-variables -j $CORES
-echo "----------------------------------------"
-
-echo
-echo "========================================"
-echo "Setup the Python environment"
-echo "----------------------------------------"
-make env --output-sync=target --warn-undefined-variables
diff --git a/.github/kokoro/steps/xilinx.sh b/.github/kokoro/steps/xilinx.sh
deleted file mode 100755
index a4a80c2..0000000
--- a/.github/kokoro/steps/xilinx.sh
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017-2020 The Project X-Ray Authors.
-#
-# Use of this source code is governed by a ISC-style
-# license that can be found in the LICENSE file or at
-# https://opensource.org/licenses/ISC
-#
-# SPDX-License-Identifier: ISC
-
-echo
-echo "========================================"
-echo "Xilinx proprietary toolchain setup."
-echo "----------------------------------------"
-
-echo
-echo "Fix up the Xilinx configuration directory"
-echo "----------------------------------------"
-ls -l ~/.Xilinx
-sudo chown -R $USER ~/.Xilinx
-
-export XILINX_LOCAL_USER_DATA=no
-echo "----------------------------------------"
-
-echo
-echo "Select Xilinx Vivado version"
-echo "----------------------------------------"
-(
- set -e
- cd /opt
- if [ x"$XRAY_SETTINGS" = x"kintex7" ]; then
- echo "Using Xilinx Vivado Design Edition for $XRAY_SETTINGS build."
- echo
- echo "Making /opt mount rw"
- sudo mount -o remount,rw /opt
- echo
- echo "Replacing /opt/Xilinx link."
- sudo rm -f Xilinx
- sudo ln -s Xilinx-design Xilinx
- ls -l Xilinx
- echo
- echo "Making /opt mount ro"
- sudo mount -o remount,ro /opt
- echo
- else
- echo "Using Xilinx Vivado WebPack Edition for $XRAY_SETTINGS build."
- ls -l Xilinx
- fi
-)
-echo "----------------------------------------"
-
-
-echo
-echo "List /opt directory"
-echo "----------------------------------------"
-ls -l /opt
-echo "----------------------------------------"
-
-# Create a tunnel to the server which has the Xilinx licenses and port forward
-# them.
-echo
-echo "Setting up license server tunnel"
-echo "----------------------------------------"
-
-LICENSE_TUNNEL_KEY=$KOKORO_KEYSTORE_DIR/74045_foss-fpga-tools_xilinx-license
-echo "SSH Key for license server tunnel should be found @ $LICENSE_TUNNEL_KEY"
-ls -l $LICENSE_TUNNEL_KEY || true
-
-if [ -f $LICENSE_TUNNEL_KEY ]; then
- echo
- echo "Xilinx license server ssh key found, setting up tunnel"
-
- chmod 600 $LICENSE_TUNNEL_KEY
- cat <<EOF > ssh_config
-Host xilinx-license
- HostName 10.128.15.194
- User kokoro
- IdentityFile $LICENSE_TUNNEL_KEY
- StrictHostKeyChecking no
- ExitOnForwardFailure yes
- # SessionType none
- LocalForward localhost:2100 172.18.0.3:2100
- LocalForward localhost:2101 172.18.0.3:2101
-EOF
- echo "127.0.0.1 xlic.int" | sudo tee -a /etc/hosts
-
- export GIT_SSH_COMMAND="ssh -F $(pwd)/ssh_config -f -N"
- ${GIT_SSH_COMMAND} xilinx-license
-
- (
- source /opt/Xilinx/Vivado/2017.2/settings64.sh
- export PATH=/opt/Xilinx/Vivado/2017.2/bin/unwrapped/lnx64.o:$PATH
- echo "-----"
- lmutil lmstat -a -c 2100@localhost -i || true
- echo "-----"
- )
-
- export XILINXD_LICENSE_FILE=2100@localhost
-
-else
- echo
- echo "**No** Xilinx license server ssh key found."
-fi
-echo "----------------------------------------"
diff --git a/.github/kokoro/tests.cfg b/.github/kokoro/tests.cfg
deleted file mode 100644
index 93b8528..0000000
--- a/.github/kokoro/tests.cfg
+++ /dev/null
@@ -1,19 +0,0 @@
-build_file: "symbiflow-prjxray-tests/.github/kokoro/tests.sh"
-
-timeout_mins: 10
-
-action {
- define_artifacts {
- regex: "**/*.log"
- regex: "**/*sponge_log.xml"
- regex: "**/build/**/*.xml"
- regex: "**/build/*.xml"
- regex: "*result*.xml"
- strip_prefix: "github/symbiflow-prjxray-tests/"
- }
-}
-
-env_vars {
- key: "KOKORO_DIR"
- value: "symbiflow-prjxray-tests"
-}
diff --git a/.github/kokoro/tests.sh b/.github/kokoro/tests.sh
deleted file mode 100755
index 5722445..0000000
--- a/.github/kokoro/tests.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-# Copyright (C) 2017-2020 The Project X-Ray Authors.
-#
-# Use of this source code is governed by a ISC-style
-# license that can be found in the LICENSE file or at
-# https://opensource.org/licenses/ISC
-#
-# SPDX-License-Identifier: ISC
-
-set -e
-
-cd github/$KOKORO_DIR/
-
-source ./.github/kokoro/steps/hostsetup.sh
-source ./.github/kokoro/steps/hostinfo.sh
-source ./.github/kokoro/steps/git.sh
-
-source ./.github/kokoro/steps/prjxray-env.sh
-
-echo
-echo "========================================"
-echo "Running tests"
-echo "----------------------------------------"
-(
- make test --output-sync=target --warn-undefined-variables
-)
-echo "----------------------------------------"
-
-echo
-echo "========================================"
-echo "Copying tests logs"
-echo "----------------------------------------"
-(
- cat build/*test_results.xml
- mkdir build/py
- cp build/py_test_results.xml build/py/sponge_log.xml
- mkdir build/cpp
- cp build/cpp_test_results.xml build/cpp/sponge_log.xml
-)
-echo "----------------------------------------"
diff --git a/.github/workflows/Automerge.yml b/.github/workflows/Automerge.yml
index cdb61b1..7acc0e3 100644
--- a/.github/workflows/Automerge.yml
+++ b/.github/workflows/Automerge.yml
@@ -1,5 +1,9 @@
name: Automerge
+concurrency:
+ group: ${{ github.repository }}-${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
on:
pull_request:
push:
@@ -13,6 +17,8 @@
Pipeline:
if: ${{ !(github.event_name != 'pull_request' && github.actor == 'dependabot[bot]') }}
uses: ./.github/workflows/Pipeline.yml
+ secrets:
+ LICENSE_TUNNEL_KEY_DATA: ${{ secrets.LICENSE_TUNNEL_KEY_DATA }}
Automerge:
diff --git a/.github/workflows/Pipeline.yml b/.github/workflows/Pipeline.yml
index b38fa03..e45a4c9 100644
--- a/.github/workflows/Pipeline.yml
+++ b/.github/workflows/Pipeline.yml
@@ -2,12 +2,15 @@
on:
workflow_call:
+ secrets:
+ LICENSE_TUNNEL_KEY_DATA:
+ required: false
jobs:
BuildDatabase:
- container: ubuntu:bionic
+ container: ubuntu:focal
runs-on: [self-hosted, Linux, X64]
@@ -17,22 +20,52 @@
family: ['artix7', 'zynq7', 'kintex7', 'spartan7']
env:
+ GHA_SSH_TUNNEL_KEY: "${{ secrets.LICENSE_TUNNEL_KEY_DATA }}"
+ GHA_SSH_TUNNEL_CONFIG: "${{ secrets.LICENSE_TUNNEL_SSH_CONFIG }}"
+ GHA_SSH_TUNNEL_CONFIG_SECRET_NAME: "xilinx_license_server_config"
+ GHA_SSH_TUNNEL_KEY_SECRET_NAME: "xilinx_license_server_key"
ALLOW_ROOT: true
GHA_EXTERNAL_DISK: "tools"
XILINX_LOCAL_USER_DATA: "no"
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
submodules: recursive
- name: Install
run: |
- apt update
- apt install -y \
- bash bison build-essential ca-certificates clang-format cmake psmisc \
- colordiff coreutils git flex python3 python3-dev python3-venv xsltproc
+ DEBIAN_FRONTEND=noninteractive apt update -qq
+ DEBIAN_FRONTEND=noninteractive apt install -qq -y \
+ bash \
+ bison \
+ build-essential \
+ ca-certificates \
+ clang-format \
+ cmake \
+ colordiff \
+ coreutils \
+ flex \
+ git \
+ iproute2 \
+ iputils-ping \
+ libtinfo5 \
+ netcat-openbsd \
+ psmisc \
+ python3 \
+ python3-dev \
+ python3-venv \
+ xsltproc \
+ sudo \
+
+ - name: Xilinx Setup
+ run: |
+ git config --global --add safe.directory /root/prjxray/prjxray
+ .github/workflows/scripts/xilinx.sh
+ env:
+ USE_LICENSE_SERVER: "true"
+ XRAY_SETTINGS: ${{ matrix.family }}
- name: Build
run: make build --output-sync=target --warn-undefined-variables -j$(nproc)
@@ -45,7 +78,7 @@
env:
XRAY_SETTINGS: ${{ matrix.family }}
- - uses: actions/upload-artifact@v2
+ - uses: actions/upload-artifact@v3
if: ${{ always() }}
with:
name: ${{ matrix.family }}
@@ -61,7 +94,7 @@
Tests:
- container: ubuntu:bionic
+ container: ubuntu:focal
runs-on: [self-hosted, Linux, X64]
@@ -70,16 +103,16 @@
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
submodules: recursive
- name: Install
run: |
- apt update
- apt install -y \
+ DEBIAN_FRONTEND=noninteractive apt update -qq
+ DEBIAN_FRONTEND=noninteractive apt install -qq -y \
bash bison build-essential ca-certificates clang-format cmake psmisc \
- colordiff coreutils git flex python3 python3-dev python3-venv xsltproc
+ colordiff coreutils git flex python3 python3-dev python3-venv xsltproc libtinfo5
- name: Build
run: make build --output-sync=target --warn-undefined-variables -j$(nproc)
@@ -90,7 +123,7 @@
- name: Run Test
run: make test --output-sync=target --warn-undefined-variables
- - uses: actions/upload-artifact@v2
+ - uses: actions/upload-artifact@v3
if: ${{ always() }}
with:
path: |
diff --git a/.github/workflows/scripts/db.sh b/.github/workflows/scripts/db.sh
index 82ad251..ab94616 100755
--- a/.github/workflows/scripts/db.sh
+++ b/.github/workflows/scripts/db.sh
@@ -15,7 +15,6 @@
echo "======================================="
echo "Creating Vivado Symbolic Link"
echo "---------------------------------------"
-ln -s /mnt/aux/Xilinx /opt/Xilinx
ls /opt/Xilinx/Vivado
source /opt/Xilinx/Vivado/2017.2/settings64.sh
vivado -version
diff --git a/.github/workflows/scripts/xilinx.sh b/.github/workflows/scripts/xilinx.sh
new file mode 100755
index 0000000..2290d08
--- /dev/null
+++ b/.github/workflows/scripts/xilinx.sh
@@ -0,0 +1,77 @@
+#!/bin/bash
+# Copyright (C) 2017-2022 The Project X-Ray Authors.
+#
+# Use of this source code is governed by a ISC-style
+# license that can be found in the LICENSE file or at
+# https://opensource.org/licenses/ISC
+#
+# SPDX-License-Identifier: ISC
+
+echo
+echo "========================================"
+echo "Xilinx proprietary toolchain setup."
+echo "----------------------------------------"
+
+echo
+echo "Fix up the Xilinx configuration directory"
+echo "----------------------------------------"
+mkdir -p ~/.Xilinx
+ls -l ~/.Xilinx
+mkdir ~/.ssh
+echo
+echo "Fixing loader to be able to run lmutils"
+echo "----------------------------------------"
+ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
+
+export XILINX_LOCAL_USER_DATA=no
+echo "----------------------------------------"
+
+echo
+echo "Select Xilinx Vivado version"
+echo "----------------------------------------"
+(
+ set -e
+ cd /opt
+ if [ x"$XRAY_SETTINGS" = x"kintex7" ]; then
+ echo "Using Xilinx Vivado Design Edition for $XRAY_SETTINGS build."
+ echo
+ ln -s /mnt/aux/Xilinx-design /opt/Xilinx
+ ls -l Xilinx
+ echo
+ else
+ ln -s /mnt/aux/Xilinx /opt/Xilinx
+ echo "Using Xilinx Vivado WebPack Edition for $XRAY_SETTINGS build."
+ ls -l Xilinx
+ fi
+)
+echo "----------------------------------------"
+
+
+echo
+echo "List /opt directory"
+echo "----------------------------------------"
+ls -l /opt
+echo "----------------------------------------"
+
+echo $GHA_SSH_TUNNEL_CONFIG_SECRET_NAME
+if [[ ! -z "$USE_LICENSE_SERVER" ]]; then
+
+ echo
+ echo "Xilinx license server ssh key found, checking the license"
+ echo
+
+ echo "127.0.0.1 xlic.int" | sudo tee -a /etc/hosts
+
+ source /opt/Xilinx/Vivado/2017.2/settings64.sh
+ export PATH=/opt/Xilinx/Vivado/2017.2/bin/unwrapped/lnx64.o:$PATH
+ echo "-----"
+ lmutil lmstat -a -c 2100@localhost -i || true
+ echo "-----"
+
+ export XILINXD_LICENSE_FILE=2100@localhost
+
+else
+ echo
+ echo "**No** Xilinx license server ssh key found."
+fi
+echo "----------------------------------------"
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 5a0ef70..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-os: linux
-dist: trusty
-language: python
-python: 3.6
-addons:
- apt:
- sources:
- - ubuntu-toolchain-r-test
- - llvm-toolchain-trusty-5.0
- packages:
- - clang-format-5.0
- - g++-6
- - xsltproc
-
-install:
- - export CC=gcc-6
- - export CXX=g++-6
- - make env
-
-
-jobs:
- include:
- # State 1 - Tests
- - stage: "Tests"
- name: "C++ Tests"
- script: make test-cpp
-
- - name: "Python Tests"
- script: make test-py
-
- - name: "Format"
- script:
- - make format
- - test $(git status --porcelain | wc -l) -eq 0 || { git diff; false; }
-
- - name: "License Checks"
- script:
- - ./.github/check_license.sh
- - ./.github/check_python_scripts.sh
diff --git a/Makefile b/Makefile
index acb7f42..a331094 100644
--- a/Makefile
+++ b/Makefile
@@ -63,7 +63,7 @@
cd build && cmake -DPRJXRAY_BUILD_TESTING=ON ..
cd build && $(MAKE) -s
cd build && ctest --no-compress-output -T Test -C RelWithDebInfo --output-on-failure
- xsltproc .github/kokoro/ctest2junit.xsl build/Testing/*/Test.xml > build/cpp_test_results.xml
+ xsltproc .github/ctest2junit.xsl build/Testing/*/Test.xml > build/cpp_test_results.xml
test-tools:
$(MAKE) -f Makefile.tools_tests
@@ -189,7 +189,7 @@
ARTIX_PARTS=artix7_50t artix7_200t
ZYNQ_PARTS=zynq7010
-KINTEX_PARTS=
+KINTEX_PARTS=kintex7_160t
SPARTAN_PARTS=
XRAY_PARTS=${ARTIX_PARTS} ${ZYNQ_PARTS} ${KINTEX_PARTS} ${SPARTAN_PARTS}
diff --git a/docs/db_dev_process/parts.rst b/docs/db_dev_process/parts.rst
index be6dc0d..53ec472 100644
--- a/docs/db_dev_process/parts.rst
+++ b/docs/db_dev_process/parts.rst
@@ -4,3 +4,58 @@
`SymbiFlow/prjxray/tools/`
Here, you can find various programs to work with bitstreams, mainly to assist building fuzzers.
+
+bitread:
+ Used to read a bitstream file to output a readable bitfile that can be than used
+ to get the various FASM features.
+segmatch:
+ Used in the fuzzing process to correlate the different bits and find which one belong to which feature.
+gen_part_base_yaml:
+ Used to get a high level information on the device structure (number of
+ configuration rows/columns and maximum frame addresses)
+xc7frames2bit:
+ Used to write a bitstream file starting from a frames one. Where, in turn,
+ the frames file can be generated starting from a FASM file.
+xc7patch:
+ Used to patch a pre-existing bitstream with additional bits.
+bittool:
+ ???
+bits2rbt:
+ ???
+frame_address_decoder:
+ ???
+
+segmatch
+--------
+This tools takes input files of the format:
+
+code::
+ seg 00000000_050
+ bit 38_15
+ bit 39_14
+ <....>
+ tag HCLK_IOI3.LVDS_25_IN_USE 0
+ tag HCLK_IOI3.ONLY_DIFF_IN_USE 0
+ <...>
+ seg 00001C80_050
+ bit 38_15
+ bit 38_26
+
+where `seg <base_frame_address>_<tile_offset>` indicates how to address the tile,
+and `bit <frame_address_offset>_<bit_position>` indicates the position of the bit
+within the tile.
+
+base_frame_address:
+ The frame address of the first frame that configures the tile.
+
+tile_offset:
+ The word index of the first word that configures the tile within a frame.
+
+frame_address_offset:
+ frame_address - base_frame_address
+
+bit_position:
+ The index of the bit within the words of this frame that configure this tile.
+
+The `prjxray.segmaker.Segmaker` is a helper class that can be used to write these
+files inside the fuzzer's `generate.py`.
diff --git a/fuzzers/005-tilegrid/Makefile b/fuzzers/005-tilegrid/Makefile
index a880d07..f0ad42b 100644
--- a/fuzzers/005-tilegrid/Makefile
+++ b/fuzzers/005-tilegrid/Makefile
@@ -49,8 +49,11 @@
# Kintex7 only fuzzers
ifeq (${XRAY_DATABASE}, kintex7)
+# These kintex parts give an empty design
+ifneq (${XRAY_FABRIC}, $(filter ${XRAY_FABRIC}, xc7k160t xc7k325t xc7k480t))
TILEGRID_TDB_DEPENDENCIES += orphan_int_column/$(BUILD_FOLDER)/segbits_tilegrid.tdb
endif
+endif
BASICDB_TILEGRID=$(BUILD_FOLDER)/basicdb/${XRAY_FABRIC}/tilegrid.json
diff --git a/fuzzers/074-dump_all/ignored_wires/kintex7/xc7k160tffg676-2_ignored_wires.txt b/fuzzers/074-dump_all/ignored_wires/kintex7/xc7k160tffg676-2_ignored_wires.txt
new file mode 100644
index 0000000..3c8095b
--- /dev/null
+++ b/fuzzers/074-dump_all/ignored_wires/kintex7/xc7k160tffg676-2_ignored_wires.txt
@@ -0,0 +1,176 @@
+CMT_TOP_L_LOWER_T_X181Y122/CMT_PHASER_DOWN_DQS_TO_PHASER_A
+CMT_TOP_L_LOWER_T_X181Y18/CMT_PHASER_DOWN_DQS_TO_PHASER_A
+CMT_TOP_L_LOWER_T_X181Y70/CMT_PHASER_DOWN_DQS_TO_PHASER_A
+CMT_TOP_L_UPPER_B_X181Y135/CMT_PHASER_UP_DQS_TO_PHASER_D
+CMT_TOP_L_UPPER_B_X181Y31/CMT_PHASER_UP_DQS_TO_PHASER_D
+CMT_TOP_L_UPPER_B_X181Y83/CMT_PHASER_UP_DQS_TO_PHASER_D
+CMT_TOP_R_LOWER_T_X8Y122/CMT_PHASER_DOWN_DQS_TO_PHASER_A
+CMT_TOP_R_LOWER_T_X8Y174/CMT_PHASER_DOWN_DQS_TO_PHASER_A
+CMT_TOP_R_LOWER_T_X8Y18/CMT_PHASER_DOWN_DQS_TO_PHASER_A
+CMT_TOP_R_LOWER_T_X8Y226/CMT_PHASER_DOWN_DQS_TO_PHASER_A
+CMT_TOP_R_LOWER_T_X8Y70/CMT_PHASER_DOWN_DQS_TO_PHASER_A
+CMT_TOP_R_UPPER_B_X8Y135/CMT_PHASER_UP_DQS_TO_PHASER_D
+CMT_TOP_R_UPPER_B_X8Y187/CMT_PHASER_UP_DQS_TO_PHASER_D
+CMT_TOP_R_UPPER_B_X8Y239/CMT_PHASER_UP_DQS_TO_PHASER_D
+CMT_TOP_R_UPPER_B_X8Y31/CMT_PHASER_UP_DQS_TO_PHASER_D
+CMT_TOP_R_UPPER_B_X8Y83/CMT_PHASER_UP_DQS_TO_PHASER_D
+LIOI3_TBYTESRC_X0Y107/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y107/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y119/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y119/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y131/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y131/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y143/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y143/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y157/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y157/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y169/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y169/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y181/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y181/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y19/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y19/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y193/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y193/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y207/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y207/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y219/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y219/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y231/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y231/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y243/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y243/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y31/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y31/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y43/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y43/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y57/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y57/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y69/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y69/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y7/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y7/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y81/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y81/LIOI_I2GCLK_TOP1
+LIOI3_TBYTESRC_X0Y93/LIOI_I2GCLK_BOT1
+LIOI3_TBYTESRC_X0Y93/LIOI_I2GCLK_TOP1
+LIOI3_TBYTETERM_X0Y113/LIOI_I2GCLK_BOT1
+LIOI3_TBYTETERM_X0Y113/LIOI_I2GCLK_TOP1
+LIOI3_TBYTETERM_X0Y13/LIOI_I2GCLK_BOT1
+LIOI3_TBYTETERM_X0Y13/LIOI_I2GCLK_TOP1
+LIOI3_TBYTETERM_X0Y137/LIOI_I2GCLK_BOT1
+LIOI3_TBYTETERM_X0Y137/LIOI_I2GCLK_TOP1
+LIOI3_TBYTETERM_X0Y163/LIOI_I2GCLK_BOT1
+LIOI3_TBYTETERM_X0Y163/LIOI_I2GCLK_TOP1
+LIOI3_TBYTETERM_X0Y187/LIOI_I2GCLK_BOT1
+LIOI3_TBYTETERM_X0Y187/LIOI_I2GCLK_TOP1
+LIOI3_TBYTETERM_X0Y213/LIOI_I2GCLK_BOT1
+LIOI3_TBYTETERM_X0Y213/LIOI_I2GCLK_TOP1
+LIOI3_TBYTETERM_X0Y237/LIOI_I2GCLK_BOT1
+LIOI3_TBYTETERM_X0Y237/LIOI_I2GCLK_TOP1
+LIOI3_TBYTETERM_X0Y37/LIOI_I2GCLK_BOT1
+LIOI3_TBYTETERM_X0Y37/LIOI_I2GCLK_TOP1
+LIOI3_TBYTETERM_X0Y63/LIOI_I2GCLK_BOT1
+LIOI3_TBYTETERM_X0Y63/LIOI_I2GCLK_TOP1
+LIOI3_TBYTETERM_X0Y87/LIOI_I2GCLK_BOT1
+LIOI3_TBYTETERM_X0Y87/LIOI_I2GCLK_TOP1
+LIOI3_X0Y105/LIOI_I2GCLK_TOP1
+LIOI3_X0Y109/LIOI_I2GCLK_BOT1
+LIOI3_X0Y117/LIOI_I2GCLK_TOP1
+LIOI3_X0Y121/LIOI_I2GCLK_BOT1
+LIOI3_X0Y129/LIOI_I2GCLK_TOP1
+LIOI3_X0Y133/LIOI_I2GCLK_BOT1
+LIOI3_X0Y141/LIOI_I2GCLK_TOP1
+LIOI3_X0Y145/LIOI_I2GCLK_BOT1
+LIOI3_X0Y155/LIOI_I2GCLK_TOP1
+LIOI3_X0Y159/LIOI_I2GCLK_BOT1
+LIOI3_X0Y167/LIOI_I2GCLK_TOP1
+LIOI3_X0Y17/LIOI_I2GCLK_TOP1
+LIOI3_X0Y171/LIOI_I2GCLK_BOT1
+LIOI3_X0Y179/LIOI_I2GCLK_TOP1
+LIOI3_X0Y183/LIOI_I2GCLK_BOT1
+LIOI3_X0Y191/LIOI_I2GCLK_TOP1
+LIOI3_X0Y195/LIOI_I2GCLK_BOT1
+LIOI3_X0Y205/LIOI_I2GCLK_TOP1
+LIOI3_X0Y209/LIOI_I2GCLK_BOT1
+LIOI3_X0Y21/LIOI_I2GCLK_BOT1
+LIOI3_X0Y217/LIOI_I2GCLK_TOP1
+LIOI3_X0Y221/LIOI_I2GCLK_BOT1
+LIOI3_X0Y229/LIOI_I2GCLK_TOP1
+LIOI3_X0Y233/LIOI_I2GCLK_BOT1
+LIOI3_X0Y241/LIOI_I2GCLK_TOP1
+LIOI3_X0Y245/LIOI_I2GCLK_BOT1
+LIOI3_X0Y29/LIOI_I2GCLK_TOP1
+LIOI3_X0Y33/LIOI_I2GCLK_BOT1
+LIOI3_X0Y41/LIOI_I2GCLK_TOP1
+LIOI3_X0Y45/LIOI_I2GCLK_BOT1
+LIOI3_X0Y5/LIOI_I2GCLK_TOP1
+LIOI3_X0Y55/LIOI_I2GCLK_TOP1
+LIOI3_X0Y59/LIOI_I2GCLK_BOT1
+LIOI3_X0Y67/LIOI_I2GCLK_TOP1
+LIOI3_X0Y71/LIOI_I2GCLK_BOT1
+LIOI3_X0Y79/LIOI_I2GCLK_TOP1
+LIOI3_X0Y83/LIOI_I2GCLK_BOT1
+LIOI3_X0Y9/LIOI_I2GCLK_BOT1
+LIOI3_X0Y91/LIOI_I2GCLK_TOP1
+LIOI3_X0Y95/LIOI_I2GCLK_BOT1
+RIOI_TBYTESRC_X73Y107/RIOI_I2GCLK_BOT1
+RIOI_TBYTESRC_X73Y107/RIOI_I2GCLK_TOP1
+RIOI_TBYTESRC_X73Y119/RIOI_I2GCLK_BOT1
+RIOI_TBYTESRC_X73Y119/RIOI_I2GCLK_TOP1
+RIOI_TBYTESRC_X73Y131/RIOI_I2GCLK_BOT1
+RIOI_TBYTESRC_X73Y131/RIOI_I2GCLK_TOP1
+RIOI_TBYTESRC_X73Y143/RIOI_I2GCLK_BOT1
+RIOI_TBYTESRC_X73Y143/RIOI_I2GCLK_TOP1
+RIOI_TBYTESRC_X73Y19/RIOI_I2GCLK_BOT1
+RIOI_TBYTESRC_X73Y19/RIOI_I2GCLK_TOP1
+RIOI_TBYTESRC_X73Y31/RIOI_I2GCLK_BOT1
+RIOI_TBYTESRC_X73Y31/RIOI_I2GCLK_TOP1
+RIOI_TBYTESRC_X73Y43/RIOI_I2GCLK_BOT1
+RIOI_TBYTESRC_X73Y43/RIOI_I2GCLK_TOP1
+RIOI_TBYTESRC_X73Y57/RIOI_I2GCLK_BOT1
+RIOI_TBYTESRC_X73Y57/RIOI_I2GCLK_TOP1
+RIOI_TBYTESRC_X73Y69/RIOI_I2GCLK_BOT1
+RIOI_TBYTESRC_X73Y69/RIOI_I2GCLK_TOP1
+RIOI_TBYTESRC_X73Y7/RIOI_I2GCLK_BOT1
+RIOI_TBYTESRC_X73Y7/RIOI_I2GCLK_TOP1
+RIOI_TBYTESRC_X73Y81/RIOI_I2GCLK_BOT1
+RIOI_TBYTESRC_X73Y81/RIOI_I2GCLK_TOP1
+RIOI_TBYTESRC_X73Y93/RIOI_I2GCLK_BOT1
+RIOI_TBYTESRC_X73Y93/RIOI_I2GCLK_TOP1
+RIOI_TBYTETERM_X73Y113/RIOI_I2GCLK_BOT1
+RIOI_TBYTETERM_X73Y113/RIOI_I2GCLK_TOP1
+RIOI_TBYTETERM_X73Y13/RIOI_I2GCLK_BOT1
+RIOI_TBYTETERM_X73Y13/RIOI_I2GCLK_TOP1
+RIOI_TBYTETERM_X73Y137/RIOI_I2GCLK_BOT1
+RIOI_TBYTETERM_X73Y137/RIOI_I2GCLK_TOP1
+RIOI_TBYTETERM_X73Y37/RIOI_I2GCLK_BOT1
+RIOI_TBYTETERM_X73Y37/RIOI_I2GCLK_TOP1
+RIOI_TBYTETERM_X73Y63/RIOI_I2GCLK_BOT1
+RIOI_TBYTETERM_X73Y63/RIOI_I2GCLK_TOP1
+RIOI_TBYTETERM_X73Y87/RIOI_I2GCLK_BOT1
+RIOI_TBYTETERM_X73Y87/RIOI_I2GCLK_TOP1
+RIOI_X73Y105/RIOI_I2GCLK_TOP1
+RIOI_X73Y109/RIOI_I2GCLK_BOT1
+RIOI_X73Y117/RIOI_I2GCLK_TOP1
+RIOI_X73Y121/RIOI_I2GCLK_BOT1
+RIOI_X73Y129/RIOI_I2GCLK_TOP1
+RIOI_X73Y133/RIOI_I2GCLK_BOT1
+RIOI_X73Y141/RIOI_I2GCLK_TOP1
+RIOI_X73Y145/RIOI_I2GCLK_BOT1
+RIOI_X73Y17/RIOI_I2GCLK_TOP1
+RIOI_X73Y21/RIOI_I2GCLK_BOT1
+RIOI_X73Y29/RIOI_I2GCLK_TOP1
+RIOI_X73Y33/RIOI_I2GCLK_BOT1
+RIOI_X73Y41/RIOI_I2GCLK_TOP1
+RIOI_X73Y45/RIOI_I2GCLK_BOT1
+RIOI_X73Y5/RIOI_I2GCLK_TOP1
+RIOI_X73Y55/RIOI_I2GCLK_TOP1
+RIOI_X73Y59/RIOI_I2GCLK_BOT1
+RIOI_X73Y67/RIOI_I2GCLK_TOP1
+RIOI_X73Y71/RIOI_I2GCLK_BOT1
+RIOI_X73Y79/RIOI_I2GCLK_TOP1
+RIOI_X73Y83/RIOI_I2GCLK_BOT1
+RIOI_X73Y9/RIOI_I2GCLK_BOT1
+RIOI_X73Y91/RIOI_I2GCLK_TOP1
+RIOI_X73Y95/RIOI_I2GCLK_BOT1
diff --git a/settings/kintex7/devices.yaml b/settings/kintex7/devices.yaml
index e889e78..9b1e792 100644
--- a/settings/kintex7/devices.yaml
+++ b/settings/kintex7/devices.yaml
@@ -1,3 +1,6 @@
# device to fabric mapping
"xc7k70t":
fabric: "xc7k70t"
+"xc7k160t":
+ fabric: "xc7k160t"
+
diff --git a/settings/kintex7_160t.sh b/settings/kintex7_160t.sh
new file mode 100644
index 0000000..05a806c
--- /dev/null
+++ b/settings/kintex7_160t.sh
@@ -0,0 +1,36 @@
+# Copyright (C) 2017-2020 The Project X-Ray Authors.
+#
+# Use of this source code is governed by a ISC-style
+# license that can be found in the LICENSE file or at
+# https://opensource.org/licenses/ISC
+#
+# SPDX-License-Identifier: ISC
+export XRAY_DATABASE="kintex7"
+export XRAY_PART="xc7k160tffg676-2"
+export XRAY_ROI_FRAMES="0x00000000:0xffffffff"
+
+# All CLB's in the part, all BRAM's in the part, all DSP's in the part.
+# those are site coordinats: bottom half rectangle / top half rectangle for each site type
+export XRAY_ROI_TILEGRID="SLICE_X0Y0:SLICE_X109Y149 SLICE_X0Y150:SLICE_X101Y249 DSP48_X0Y0:DSP48_X5Y59 DSP48_X0Y60:DSP48_X5Y99 RAMB18_X0Y0:RAMB18_X6Y59 RAMB18_X0Y60:RAMB18_X5Y99 RAMB36_X0Y0:RAMB36_X6Y29 RAMB36_X0Y30:RAMB36_X5Y49"
+
+export XRAY_EXCLUDE_ROI_TILEGRID=""
+
+export XRAY_IOI3_TILES="LIOI3_X0Y9"
+
+# These settings must remain in sync
+export XRAY_ROI="SLICE_X0Y100:SLICE_X19Y149 DSP48_X0Y40:DSP48_X0Y59 RAMB18_X0Y40:RAMB18_X0Y59 RAMB36_X0Y20:RAMB36_X0Y29 IOB_X0Y100:IOB_X0Y149"
+# Part of CMT X0Y1
+export XRAY_ROI_GRID_X1="0"
+export XRAY_ROI_GRID_X2="68"
+# Include VBRK / VTERM
+export XRAY_ROI_GRID_Y1="154"
+export XRAY_ROI_GRID_Y2="206"
+
+source $(dirname ${BASH_SOURCE[0]})/../utils/environment.sh
+
+env=$(python3 ${XRAY_UTILS_DIR}/create_environment.py)
+ENV_RET=$?
+if [[ $ENV_RET != 0 ]] ; then
+ return $ENV_RET
+fi
+eval $env
diff --git a/third_party/abseil-cpp b/third_party/abseil-cpp
index bcefbdc..1b97698 160000
--- a/third_party/abseil-cpp
+++ b/third_party/abseil-cpp
@@ -1 +1 @@
-Subproject commit bcefbdcdf6ad85046ccacee0aeffba5404d3e528
+Subproject commit 1b976982d8cdbfd8320f34209b065bae7adefb09
diff --git a/third_party/cctz b/third_party/cctz
index a272110..83ffd88 160000
--- a/third_party/cctz
+++ b/third_party/cctz
@@ -1 +1 @@
-Subproject commit a272110719c3abd28e468661132d0ddffb57e72f
+Subproject commit 83ffd88d7c9a48d1dc61f04cb649cd52966d2fff
diff --git a/third_party/fasm b/third_party/fasm
index 052f629..ffafe82 160000
--- a/third_party/fasm
+++ b/third_party/fasm
@@ -1 +1 @@
-Subproject commit 052f629217119b699ea83e03c412bc6fafb2313a
+Subproject commit ffafe821bae68637fe46e36bcfd2a01b97cdf6f2
diff --git a/third_party/googletest b/third_party/googletest
index bf66935..912db74 160000
--- a/third_party/googletest
+++ b/third_party/googletest
@@ -1 +1 @@
-Subproject commit bf66935e07825318ae519675d73d0f3e313b3ec6
+Subproject commit 912db742531bf82efb01194bc08140416e3b3467
diff --git a/third_party/python-sdf-timing b/third_party/python-sdf-timing
index 0afbbfe..119eee0 160000
--- a/third_party/python-sdf-timing
+++ b/third_party/python-sdf-timing
@@ -1 +1 @@
-Subproject commit 0afbbfe5cec97330b3261d811a4d604a471a5d98
+Subproject commit 119eee06c5a8700da594c5e066259a96858ececa
diff --git a/third_party/yaml-cpp b/third_party/yaml-cpp
index 420c982..1b50109 160000
--- a/third_party/yaml-cpp
+++ b/third_party/yaml-cpp
@@ -1 +1 @@
-Subproject commit 420c98231094b1cd2e5de3a714c4e3ee9b4f1118
+Subproject commit 1b50109f7bea60bd382d8ea7befce3d2bd67da5f
diff --git a/third_party/yosys b/third_party/yosys
index 29c0a59..31c15e5 160000
--- a/third_party/yosys
+++ b/third_party/yosys
@@ -1 +1 @@
-Subproject commit 29c0a595892f36ca8755386c448105f8e2f499d6
+Subproject commit 31c15e5fa60b8cb47e7785fc420d90e860708034
diff --git a/utils/environment.sh b/utils/environment.sh
index fdb0b66..6e246cf 100644
--- a/utils/environment.sh
+++ b/utils/environment.sh
@@ -49,7 +49,7 @@
# Verify an approved version is in use
export XRAY_VIVADO_SETTINGS="${XRAY_VIVADO_SETTINGS:-/opt/Xilinx/Vivado/2017.2/settings64.sh}"
# Vivado v2017.2 (64-bit)
-if [ $(${XRAY_VIVADO} -h |grep Vivado |cut -d\ -f 2) != "v2017.2" ] ; then
+if [ "$(${XRAY_VIVADO} -h |grep Vivado |cut -d\ -f 2)" != "v2017.2" ] ; then
echo "Requires Vivado 2017.2. See https://github.com/SymbiFlow/prjxray/issues/14"
# Can't exit since sourced script
# Trash a key environment variable to preclude use