diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index da31d2b7e..77021522b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -104,6 +104,7 @@ cva6: - project: '$CI_PROJECT_NAMESPACE/setup-ci' ref: '$SETUP_CI_CVA6_BRANCH' file: 'cva6/core-v-verif-cva6.yml' + - local: .gitlab-ci/core-v-verif-cva6.yml strategy: depend variables: TAGS_RUNNER: $TAGS_RUNNER diff --git a/.gitlab-ci/core-v-verif-cva6.yml b/.gitlab-ci/core-v-verif-cva6.yml new file mode 100644 index 000000000..f82108ead --- /dev/null +++ b/.gitlab-ci/core-v-verif-cva6.yml @@ -0,0 +1,5 @@ +before_script: + - echo no need to enter core-v-verif, already in it + +after_script: + - echo no need to move artifacts, already in core-v-verif diff --git a/.gitlab-ci/cva6.yml b/.gitlab-ci/cva6.yml index 383642376..358441448 100644 --- a/.gitlab-ci/cva6.yml +++ b/.gitlab-ci/cva6.yml @@ -71,6 +71,32 @@ stages: - backend tests - report +.verif_test: + stage: verif tests + before_script: + - !reference [before_script] + - mv artifacts/tools/spike tools + - rm -rf artifacts/ + - mkdir -p artifacts/{reports,logs} + - python3 .gitlab-ci/scripts/report_fail.py + - echo $SYN_VCS_BASHRC; source $SYN_VCS_BASHRC + artifacts: &artifacts + when: always + paths: + - artifacts/ + +.initjob: &initjob + job: pub_initjob + optional: true + +.backend_test: + stage: backend tests + before_script: + - !reference [before_script] + - mkdir -p artifacts/{reports,logs} + - python3 .gitlab-ci/scripts/report_fail.py + artifacts: *artifacts + # In the scope of a CI triggered by core-v-verif repository: # This job will get the HASH of the given CVA6 branch # This HASH will be used by the next jobs instead of the CVA6 given BRANCH name @@ -167,11 +193,9 @@ pub_smoke: DASHBOARD_JOB_DESCRIPTION: "Short tests to challenge most architectures with most testbenchs configurations" DASHBOARD_SORT_INDEX: 0 DASHBOARD_JOB_CATEGORY: "Basic" + before_script: + - !reference [.verif_test, before_script] script: - - mkdir -p artifacts/reports artifacts/logs - - mv artifacts/tools/spike tools - - python3 .gitlab-ci/scripts/report_fail.py - - echo $SYN_VCS_BASHRC; source $SYN_VCS_BASHRC # In order to capture logs in case of test failure, the test script cannot fail. - source cva6/regress/smoke-tests.sh || true # The list of files must NOT fail on various DV_SIMULATORS values, so use 'v*_sim' to match @@ -179,15 +203,11 @@ pub_smoke: # at least until new RTL simulator configurations are added.) - for i in cva6/sim/*/v*_sim/*.log.iss ; do head -10000 $i > artifacts/logs/$(basename $i).head ; done - python3 .gitlab-ci/scripts/report_simu.py cva6/sim/logfile.log - artifacts: - when: always - paths: - - artifacts/reports/*.yml - - artifacts/logs/*.log.iss.head + artifacts: *artifacts pub_riscv_arch_test: - stage: verif tests extends: + - .verif_test - .template_job_short_ci parallel: matrix: @@ -199,20 +219,12 @@ pub_riscv_arch_test: DASHBOARD_SORT_INDEX: 0 DASHBOARD_JOB_CATEGORY: "Test suites" script: - - mkdir -p artifacts/reports - - mv artifacts/tools/spike tools - - python3 .gitlab-ci/scripts/report_fail.py - - echo $SYN_VCS_BASHRC; source $SYN_VCS_BASHRC - source cva6/regress/dv-riscv-arch-test.sh - python3 .gitlab-ci/scripts/report_simu.py cva6/sim/logfile.log - artifacts: - when: always - paths: - - "artifacts/reports/*.yml" csr_test: - stage: verif tests extends: + - .verif_test - .template_job_short_ci parallel: matrix: @@ -224,20 +236,12 @@ csr_test: DASHBOARD_SORT_INDEX: 0 DASHBOARD_JOB_CATEGORY: "Test suites" script: - - mkdir -p artifacts/reports - - mv artifacts/tools/spike tools - - python3 .gitlab-ci/scripts/report_fail.py - - echo $SYN_VCS_BASHRC; source $SYN_VCS_BASHRC - source cva6/regress/dv-riscv-csr-access-test.sh - python3 .gitlab-ci/scripts/report_simu.py cva6/sim/logfile.log - artifacts: - when: always - paths: - - "artifacts/reports/*.yml" pub_hwconfig: - stage: verif tests extends: + - .verif_test - .template_job_short_ci parallel: matrix: @@ -250,20 +254,12 @@ pub_hwconfig: DASHBOARD_SORT_INDEX: 1 DASHBOARD_JOB_CATEGORY: "Basic" script: - - mkdir -p artifacts/reports - - mv artifacts/tools/spike tools - - python3 .gitlab-ci/scripts/report_fail.py - - echo $SYN_VCS_BASHRC; source $SYN_VCS_BASHRC - source ./cva6/regress/hwconfig_tests.sh - python3 .gitlab-ci/scripts/report_pass.py - artifacts: - when: always - paths: - - artifacts/reports/*.yml pub_compliance: - stage: verif tests extends: + - .verif_test - .template_job_short_ci parallel: matrix: @@ -275,21 +271,12 @@ pub_compliance: DASHBOARD_SORT_INDEX: 2 DASHBOARD_JOB_CATEGORY: "Test suites" script: - - mkdir -p artifacts/reports - - mv artifacts/tools/spike tools - - python3 .gitlab-ci/scripts/report_fail.py - - echo $SYN_VCS_BASHRC; source $SYN_VCS_BASHRC - source cva6/regress/dv-riscv-compliance.sh - python3 .gitlab-ci/scripts/report_simu.py cva6/sim/logfile.log - artifacts: - when: always - paths: - - "artifacts/reports/*.yml" - pub_tests-v: - stage: verif tests extends: + - .verif_test - .template_job_short_ci parallel: matrix: @@ -302,21 +289,12 @@ pub_tests-v: DASHBOARD_SORT_INDEX: 3 DASHBOARD_JOB_CATEGORY: "Test suites" script: - - mkdir -p artifacts/reports - - mv artifacts/tools/spike tools - - python3 .gitlab-ci/scripts/report_fail.py - - echo $SYN_VCS_BASHRC; source $SYN_VCS_BASHRC - source cva6/regress/dv-riscv-tests.sh - python3 .gitlab-ci/scripts/report_simu.py cva6/sim/logfile.log - artifacts: - when: always - paths: - - "artifacts/reports/*.yml" - pub_tests-p: - stage: verif tests extends: + - .verif_test - .template_job_short_ci parallel: matrix: @@ -329,85 +307,28 @@ pub_tests-p: DASHBOARD_SORT_INDEX: 4 DASHBOARD_JOB_CATEGORY: "Test suites" script: - - mkdir -p artifacts/reports - - mv artifacts/tools/spike tools - - python3 .gitlab-ci/scripts/report_fail.py - - echo $SYN_VCS_BASHRC; source $SYN_VCS_BASHRC - source cva6/regress/dv-riscv-tests.sh - python3 .gitlab-ci/scripts/report_simu.py cva6/sim/logfile.log - artifacts: - when: always - paths: - - "artifacts/reports/*.yml" - - -pub_synthesis: - stage: verif tests - timeout: 2 hours - extends: - - .template_job_always_manual - parallel: - matrix: - - TARGET: [cv32a6_embedded] - PERIOD: ["0.85"] - variables: - INPUT_DELAY: "0.46" - OUTPUT_DELAY: "0.11" - DASHBOARD_JOB_TITLE: "ASIC Synthesis $TARGET" - DASHBOARD_JOB_DESCRIPTION: "Synthesis indicator with specific Techno" - DASHBOARD_SORT_INDEX: 5 - DASHBOARD_JOB_CATEGORY: "Synthesis" - script: - - mkdir -p artifacts/reports - - mv artifacts/tools/spike tools - - python3 .gitlab-ci/scripts/report_fail.py - #ack trick to manage float gitlab-ci variables that seems to support only string or integer - - echo $(echo $SYNTH_PERIOD) - - echo $(echo $INPUT_DELAY) - - echo $(echo $OUTPUT_DELAY) - - echo $(echo $NAND2_AREA) - - echo $FOUNDRY_PATH - - echo $PERIOD - - echo $TECH_NAME - - echo $TARGET - - source ./cva6/regress/install-cva6.sh - - echo $SYN_DCSHELL_BASHRC; source $SYN_DCSHELL_BASHRC - - make -C core-v-cores/cva6/pd/synth cva6_synth PERIOD=$(echo $PERIOD) NAND2_AREA=$(echo $NAND2_AREA) FOUNDRY_PATH=$FOUNDRY_PATH TECH_NAME=$TECH_NAME INPUT_DELAY=$(echo $INPUT_DELAY) OUTPUT_DELAY=$(echo $OUTPUT_DELAY) TARGET=$TARGET - - mv core-v-cores/cva6/pd/synth/cva6_${TARGET}_synth_modified.v artifacts/cva6_${TARGET}_synth_modified.v - - python3 .gitlab-ci/scripts/report_synth.py core-v-cores/cva6/pd/synth/cva6_${TARGET}/reports/$PERIOD/cva6_$(echo $TECH_NAME)_synth_area.rpt core-v-cores/cva6/pd/synth/synthesis_batch.log - artifacts: - when: always - paths: - - artifacts/cva6_${TARGET}_synth_modified.v - - "artifacts/reports/*.yml" pub_synthesis_others: - stage: two timeout: 2 hours extends: + - .verif_test - .template_job_always_manual - needs: - - job: pub_build_tools - artifacts: true - - job: pub_smoke - artifacts: false parallel: matrix: - TARGET: [cv64a6_imafdc_sv39] PERIOD: ["1.1"] - TARGET: [cv32a60x] PERIOD: ["0.95"] - variables: + variables: &synth_vars INPUT_DELAY: "0.46" OUTPUT_DELAY: "0.11" DASHBOARD_JOB_TITLE: "ASIC Synthesis $TARGET" DASHBOARD_JOB_DESCRIPTION: "Synthesis indicator with specific Techno" DASHBOARD_SORT_INDEX: 5 DASHBOARD_JOB_CATEGORY: "Synthesis" - script: - - mkdir -p artifacts/reports - - mv artifacts/tools/spike tools - - python3 .gitlab-ci/scripts/report_fail.py + script: &synth_script #ack trick to manage float gitlab-ci variables that seems to support only string or integer - echo $(echo $SYNTH_PERIOD) - echo $(echo $INPUT_DELAY) @@ -422,35 +343,38 @@ pub_synthesis_others: - make -C core-v-cores/cva6/pd/synth cva6_synth PERIOD=$(echo $PERIOD) NAND2_AREA=$(echo $NAND2_AREA) FOUNDRY_PATH=$FOUNDRY_PATH TECH_NAME=$TECH_NAME INPUT_DELAY=$(echo $INPUT_DELAY) OUTPUT_DELAY=$(echo $OUTPUT_DELAY) TARGET=$TARGET - mv core-v-cores/cva6/pd/synth/cva6_${TARGET}_synth_modified.v artifacts/cva6_${TARGET}_synth_modified.v - python3 .gitlab-ci/scripts/report_synth.py core-v-cores/cva6/pd/synth/cva6_${TARGET}/reports/$PERIOD/cva6_$(echo $TECH_NAME)_synth_area.rpt core-v-cores/cva6/pd/synth/synthesis_batch.log - artifacts: - when: always - paths: - - artifacts/cva6_${TARGET}_synth_modified.v - - "artifacts/reports/*.yml" rules: - when: manual allow_failure: true +pub_synthesis: + timeout: 2 hours + extends: + - .verif_test + - .template_job_always_manual + variables: + <<: *synth_vars + TARGET: cv32a6_embedded + PERIOD: "0.85" + script: *synth_script pub_smoke-gate: - stage: backend tests + extends: + - .backend_test + - .template_job_always_manual needs: + - *initjob - pub_build_tools - pub_synthesis - extends: - - .template_job_always_manual - parallel: - matrix: - - TARGET: [cv32a6_embedded] variables: DASHBOARD_JOB_TITLE: "Smoke Gate $TARGET" DASHBOARD_JOB_DESCRIPTION: "Simple test to check netlist from ASIC synthesis" DASHBOARD_SORT_INDEX: 6 DASHBOARD_JOB_CATEGORY: "Post Synthesis" + TARGET: cv32a6_embedded script: - - mkdir -p artifacts/reports - mv artifacts/tools/spike tools - - python3 .gitlab-ci/scripts/report_fail.py + - echo $SYN_VCS_BASHRC; source $SYN_VCS_BASHRC - echo $LIB_VERILOG - echo $FOUNDRY_PATH - echo $PERIOD @@ -459,20 +383,15 @@ pub_smoke-gate: - source ./cva6/regress/install-riscv-dv.sh - source ./cva6/regress/install-riscv-tests.sh - mv artifacts/cva6_${TARGET}_synth_modified.v core-v-cores/cva6/pd/synth/cva6_${TARGET}_synth_modified.v - - echo $SYN_VCS_BASHRC; source $SYN_VCS_BASHRC - cd cva6/sim - make vcs_clean_all - python3 cva6.py --testlist=../tests/testlist_riscv-tests-cv32a60x-p.yaml --test rv32ui-p-lw --iss_yaml cva6.yaml --target $TARGET --iss=spike,vcs-gate $DV_OPTS - - cd ../.. + - cd - - python3 .gitlab-ci/scripts/report_simu.py cva6/sim/logfile.log - artifacts: - when: always - paths: - - "artifacts/reports/*.yml" pub_coremark: - stage: verif tests extends: + - .verif_test - .template_job_full_ci variables: DASHBOARD_JOB_TITLE: "CoreMark" @@ -480,19 +399,12 @@ pub_coremark: DASHBOARD_SORT_INDEX: 5 DASHBOARD_JOB_CATEGORY: "Performance" script: - - mkdir -p artifacts/reports - - mv artifacts/tools/spike tools - - python3 .gitlab-ci/scripts/report_fail.py - bash cva6/regress/coremark.sh --no-print - python3 .gitlab-ci/scripts/report_benchmark.py --coremark cva6/sim/out_*/veri-testharness_sim/core_main.log - artifacts: - when: always - paths: - - "artifacts/reports/*.yml" pub_dhrystone: - stage: verif tests extends: + - .verif_test - .template_job_full_ci variables: DASHBOARD_JOB_TITLE: "Dhrystone" @@ -500,20 +412,13 @@ pub_dhrystone: DASHBOARD_SORT_INDEX: 5 DASHBOARD_JOB_CATEGORY: "Performance" script: - - mkdir -p artifacts/reports - - mv artifacts/tools/spike tools - - python3 .gitlab-ci/scripts/report_fail.py - bash cva6/regress/dhrystone.sh - python3 .gitlab-ci/scripts/report_benchmark.py --dhrystone cva6/sim/out_*/veri-testharness_sim/dhrystone_main.log - artifacts: - when: always - paths: - - "artifacts/reports/*.yml" pub_fpga-build: - stage: verif tests timeout: 90 minutes extends: + - .verif_test - .template_job_short_ci variables: DASHBOARD_JOB_TITLE: "FPGA Build $TARGET" @@ -524,23 +429,17 @@ pub_fpga-build: matrix: - TARGET: [cv64a6_imafdc_sv39, cv32a60x] script: - - mkdir -p artifacts/reports - - python3 .gitlab-ci/scripts/report_fail.py - source $VIVADO_SETUP - source cva6/regress/install-cva6.sh - make -C core-v-cores/cva6 fpga target=$TARGET - mkdir -p artifacts/reports - mv core-v-cores/cva6/corev_apu/fpga/work-fpga/ariane_xilinx.bit artifacts/ariane_xilinx_$TARGET.bit - python3 .gitlab-ci/scripts/report_fpga.py core-v-cores/cva6/corev_apu/fpga/reports/ariane.utilization.rpt - artifacts: - when: always - paths: - - "artifacts/ariane_xilinx_$TARGET.bit" - - "artifacts/reports/*.yml" pub_generated_tests: - stage: verif tests tags: [$TAGS_RUNNER] + extends: + - .verif_test variables: DASHBOARD_SORT_INDEX: 11 DASHBOARD_JOB_CATEGORY: "Code Coverage" @@ -563,10 +462,6 @@ pub_generated_tests: DASHBOARD_JOB_DESCRIPTION: "Generate Random Arithmetic Jump tests using the RISCV-DV" script: - mkdir -p artifacts/coverage - - mkdir -p artifacts/reports - - mv artifacts/tools/spike tools - - python3 .gitlab-ci/scripts/report_fail.py - - echo $SYN_VCS_BASHRC; source $SYN_VCS_BASHRC - source ./cva6/regress/dv-generated-tests.sh - mv cva6/sim/vcs_results/default/vcs.d/simv.vdb artifacts/coverage - mv cva6/sim/seedlist.yaml artifacts/coverage @@ -576,16 +471,12 @@ pub_generated_tests: allow_failure: true timeout: 4h artifacts: - when: always - paths: - - artifacts/coverage/simv.vdb - - artifacts/coverage/seedlist.yaml - - "artifacts/reports/*.yml" expire_in: 3 week pub_directed_isacov-tests: - stage: verif tests tags: [$TAGS_RUNNER] + extends: + - .verif_test variables: DASHBOARD_SORT_INDEX: 13 DASHBOARD_JOB_CATEGORY: "Functional Coverage" @@ -596,10 +487,6 @@ pub_directed_isacov-tests: DASHBOARD_JOB_DESCRIPTION: "Execute directed tests to improve functional coverage of ISA" script: - mkdir -p artifacts/coverage - - mkdir -p artifacts/reports - - mv artifacts/tools/spike tools - - python3 .gitlab-ci/scripts/report_fail.py - - echo $SYN_VCS_BASHRC; source $SYN_VCS_BASHRC - source ./cva6/regress/dv-generated-tests.sh - mv cva6/sim/vcs_results/default/vcs.d/simv.vdb artifacts/coverage - python3 .gitlab-ci/scripts/report_pass.py @@ -608,16 +495,14 @@ pub_directed_isacov-tests: allow_failure: true timeout: 4h artifacts: - when: always - paths: - - artifacts/coverage/simv.vdb - - "artifacts/reports/*.yml" expire_in: 3 week pub_fpga-boot: tags: [fpga,shell] - stage: backend tests + extends: + - .backend_test needs: + - *initjob - pub_build_tools - pub_fpga-build variables: @@ -628,9 +513,6 @@ pub_fpga-boot: DASHBOARD_SORT_INDEX: 10 DASHBOARD_JOB_CATEGORY: "Synthesis" script: - - mkdir -p artifacts/reports - - mv artifacts/tools/spike tools - - python3 .gitlab-ci/scripts/report_fail.py - source cva6/regress/install-cva6.sh - source $VIVADO2022_SETUP - mkdir -p core-v-cores/cva6/corev_apu/fpga/work-fpga @@ -639,15 +521,13 @@ pub_fpga-boot: - source check_fpga_boot.sh - cd - - python3 .gitlab-ci/scripts/report_fpga_boot.py core-v-cores/cva6/corev_apu/fpga/scripts/fpga_boot.rpt - artifacts: - when: always - paths: - - "artifacts/reports/*.yml" code_coverage-report: tags: [$TAGS_RUNNER] - stage: backend tests + extends: + - .backend_test needs: + - *initjob - pub_generated_tests - pub_directed_isacov-tests variables: @@ -656,23 +536,17 @@ code_coverage-report: DASHBOARD_SORT_INDEX: 12 DASHBOARD_JOB_CATEGORY: "Code Coverage" script: - - mkdir -p artifacts/reports + - echo $SYN_VCS_BASHRC; source $SYN_VCS_BASHRC - mkdir -p artifacts/cov_reports/ - - python3 .gitlab-ci/scripts/report_fail.py - mkdir -p cva6/sim/vcs_results/default/vcs.d - mv artifacts/coverage/simv.vdb cva6/sim/vcs_results/default/vcs.d/ - mv artifacts/coverage/seedlist.yaml cva6/sim/seedlist.yaml - - echo $SYN_VCS_BASHRC; source $SYN_VCS_BASHRC - make -C cva6/sim generate_cov_dash - mv cva6/sim/urgReport artifacts/cov_reports/ - python3 .gitlab-ci/scripts/report_pass.py rules: - when: on_success artifacts: - when: always - paths: - - "artifacts/cov_reports/urgReport" - - "artifacts/reports/*.yml" expire_in: 3 week merge reports: @@ -690,4 +564,3 @@ merge reports: when: always paths: - "artifacts/reports/pipeline_report_$CI_PIPELINE_ID.yml" -