Merge pull request #2022 from bl0x/patch-1

Update README.md link to f4pga readthedocs
diff --git a/.github/workflows/Automerge.yml b/.github/workflows/Automerge.yml
index c835ba6..7acc0e3 100644
--- a/.github/workflows/Automerge.yml
+++ b/.github/workflows/Automerge.yml
@@ -17,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 d2aff1e..e45a4c9 100644
--- a/.github/workflows/Pipeline.yml
+++ b/.github/workflows/Pipeline.yml
@@ -2,6 +2,9 @@
 
 on:
   workflow_call:
+    secrets:
+      LICENSE_TUNNEL_KEY_DATA:
+        required: false
 
 jobs:
 
@@ -17,6 +20,10 @@
         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"
@@ -31,8 +38,34 @@
         run: |
           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 libtinfo5
+            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)
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/fuzzers/011-clb-ffconfig/README.md b/fuzzers/011-clb-ffconfig/README.md
index b2a0178..faddb7e 100644
--- a/fuzzers/011-clb-ffconfig/README.md
+++ b/fuzzers/011-clb-ffconfig/README.md
@@ -36,8 +36,8 @@
 
 | FFSYNC | Reset        | Applicable prims          |
 |--------|--------------|---------------------------|
-|0       | Synchronous  | FDPE, FDCE, LDCE, LDPE    |
-|1       | Asynchronous | FDSE, FDRE                |
+|0       | Asynchronous | FDPE, FDCE, LDCE, LDPE    |
+|1       | Synchronous  | FDSE, FDRE                |
 
 
 ### LATCH
diff --git a/third_party/abseil-cpp b/third_party/abseil-cpp
index 9398fa7..1b97698 160000
--- a/third_party/abseil-cpp
+++ b/third_party/abseil-cpp
@@ -1 +1 @@
-Subproject commit 9398fa76a3436bfb89f7a6ec5c74a21f1e4d6029
+Subproject commit 1b976982d8cdbfd8320f34209b065bae7adefb09
diff --git a/third_party/cctz b/third_party/cctz
index ec5d1d3..83ffd88 160000
--- a/third_party/cctz
+++ b/third_party/cctz
@@ -1 +1 @@
-Subproject commit ec5d1d33ed5d2d80dc19143a39ee165f8c124442
+Subproject commit 83ffd88d7c9a48d1dc61f04cb649cd52966d2fff
diff --git a/third_party/googletest b/third_party/googletest
index 63907e1..912db74 160000
--- a/third_party/googletest
+++ b/third_party/googletest
@@ -1 +1 @@
-Subproject commit 63907e1bfe6f78806b17d094daf2198ee27aad62
+Subproject commit 912db742531bf82efb01194bc08140416e3b3467
diff --git a/third_party/yaml-cpp b/third_party/yaml-cpp
index c73ee34..1b50109 160000
--- a/third_party/yaml-cpp
+++ b/third_party/yaml-cpp
@@ -1 +1 @@
-Subproject commit c73ee34704c512ebe915b283645aefa9f424a22f
+Subproject commit 1b50109f7bea60bd382d8ea7befce3d2bd67da5f
diff --git a/third_party/yosys b/third_party/yosys
index fcd1be1..31c15e5 160000
--- a/third_party/yosys
+++ b/third_party/yosys
@@ -1 +1 @@
-Subproject commit fcd1be14225730147941aa78a85d0c30ccf1cf30
+Subproject commit 31c15e5fa60b8cb47e7785fc420d90e860708034