From 988fa5fef3e2256d8900587f494973ec3a3d575f Mon Sep 17 00:00:00 2001 From: Douglas Reis Date: Thu, 5 Dec 2024 16:47:15 +0000 Subject: [PATCH] [SiVal] Add nightly job with the cw340_sival* exec_env Signed-off-by: Douglas Reis (cherry picked from commit df8469ca0694ef4bf6f38178af70b887bd518c61) --- .github/workflows/nightly.yml | 65 +++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 6d720929385588..6e72e954edf7cb 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -82,3 +82,68 @@ jobs: BUCKET_PATH=$GS_PATH/job/${{ github.job }}/branch/${{ inputs.branch || 'earlgrey_1.0.0'}}/$(date +%Y-%m-%d-%H%M%S)_${BAZEL_TEST_RESULTS} gcloud storage cp $BAZEL_TEST_RESULTS "$BUCKET_PATH" + + fpga_cw340_sival_nightly: + name: FPGA CW340 SiVal tests + runs-on: [ubuntu-22.04-fpga, cw340] + + env: + GS_PATH: gs://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 after ROM boot stage + if: success() || failure() + run: | + module load xilinx/vivado + bazel_tests="$(mktemp)" + ./bazelisk.sh query 'attr("tags", "[\[ ]cw340_sival[,\]]", tests(//sw/device/...))' \ + | grep -v examples \ + | grep -v penetrationtests \ + > "$bazel_tests" + ./bazelisk.sh test --build_tests_only --test_tag_filters=-skip_in_nightly_ci --target_pattern_file="$bazel_tests" + + - name: Run tests after ROM_EXT boot stage + if: success() || failure() + run: | + module load xilinx/vivado + bazel_tests="$(mktemp)" + ./bazelisk.sh query 'attr("tags", "[\[ ]cw340_sival_rom_ext[,\]]", tests(//sw/device/...))' \ + | grep -v examples \ + | grep -v penetrationtests \ + > "$bazel_tests" + ./bazelisk.sh test --build_tests_only --test_tag_filters=-skip_in_nightly_ci --target_pattern_file="$bazel_tests" + + - name: Publish bazel test results + if: success() || failure() + run: | + # Bazel produce one xml for each test. So we merge them together. + find -L bazel-out -name "test.xml" | xargs merge-junit -o "$BAZEL_TEST_RESULTS" + + BUCKET_PATH=$GS_PATH/job/${{ github.job }}/branch/${{ inputs.branch || 'earlgrey_1.0.0'}}/$(date +%Y-%m-%d-%H%M%S)_${BAZEL_TEST_RESULTS} + gcloud storage cp $BAZEL_TEST_RESULTS "$BUCKET_PATH" +