diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 6f2f6d782648c..f5234716ed8d8 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -159,6 +159,67 @@ jobs: artifact-name: fpga_cw340_sival_nightly-test-results bucket-destination: ${{ steps.bucket_destination.outputs.BUCKET_PATH }} + fpga_cw340_slow_sival_nightly: + name: FPGA CW340 slow SiVal tests + runs-on: [ubuntu-22.04-fpga, cw340] + + env: + GS_PATH: opentitan-test-results + BAZEL_TEST_RESULTS: test_results.xml + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 # Required for the bitstream cache to work. + ref: ${{ inputs.branch || 'earlgrey_1.0.0' }} # Schedule only work on the default branch, but we want to run on a different branch. + + - name: Install dependencies + uses: ./.github/actions/prepare-env + with: + service_account_json: '${{ secrets.BAZEL_CACHE_CREDS }}' + + - uses: google-github-actions/setup-gcloud@v2 + + - name: Update hyperdebug + # We run the update command twice to workaround an issue with udev on the container. + # Where rusb cannot dynamically update its device list in CI (udev is not completely + # functional). If the device is in normal mode, the first thing that opentitantool + # does is to switch it to DFU mode and wait until it reconnects. This reconnection is + # never detected. But if we run the tool another time, the device list is queried again + # and opentitantool can finish the update. The device will now reboot in normal mode + # and work for the hyperdebug job. + run: | + ./bazelisk.sh run //sw/host/opentitantool -- --interface=hyperdebug_dfu transport update-firmware \ + || ./bazelisk.sh run //sw/host/opentitantool -- --interface=hyperdebug_dfu transport update-firmware + + - name: Run tests + if: success() || failure() + run: | + module load xilinx/vivado + bazel_tests="$(mktemp)" + + ./bazelisk.sh query 'attr("tags", "[\[ ]cw340_sival_rom_ext[,\]]", tests(//sw/device/...))' \ + 'intersect attr("tags", "slow_test", tests(//sw/device/...))' \ + | grep -v examples \ + | grep -v penetrationtests \ + > "$bazel_tests" + + ./bazelisk.sh test --build_tests_only --target_pattern_file="$bazel_tests" + + - name: Compute bucket destination + id: bucket_destination + if: ${{ !cancelled() }} + run: | + BUCKET_PATH=$GS_PATH/job/${{ github.job }}/branch/${{ inputs.branch || 'earlgrey_1.0.0'}}/$(date +%Y-%m-%d-%H%M%S)_test_results.xml + echo "BUCKET_PATH=$BUCKET_PATH" >> $GITHUB_OUTPUT + + - name: Publish Bazel test results + uses: ./.github/actions/publish-bazel-test-results + if: ${{ !cancelled() }} + with: + artifact-name: fpga_cw340_slow_sival_nightly-test-results + bucket-destination: ${{ steps.bucket_destination.outputs.BUCKET_PATH }} + rom_e2e: name: ROM E2E Tests runs-on: [ubuntu-22.04-fpga, cw310] diff --git a/sw/device/tests/crypto/cryptotest/cryptotest.bzl b/sw/device/tests/crypto/cryptotest/cryptotest.bzl index 097f98c259a6c..142ff36da0913 100644 --- a/sw/device/tests/crypto/cryptotest/cryptotest.bzl +++ b/sw/device/tests/crypto/cryptotest/cryptotest.bzl @@ -21,6 +21,7 @@ CRYPTOTEST_EXEC_ENVS = { "//hw/top_earlgrey:fpga_cw310_test_rom": None, "//hw/top_earlgrey:fpga_cw310_sival_rom_ext": None, "//hw/top_earlgrey:fpga_cw340_test_rom": "fpga_cw340", + "//hw/top_earlgrey:fpga_cw340_sival_rom_ext": "fpga_cw340", "//hw/top_earlgrey:silicon_owner_sival_rom_ext": "silicon", }