ci: refactor job descriptions

Each job needs less code in cva6.yml

It also fixes an issue in CVV pipelines, where the CVA6 hash in the
dashboard was not the one used in some jobs of the pipeline.
This commit is contained in:
Côme Allart 2023-07-07 11:38:20 +02:00
parent 7a040e74c6
commit 5944f1d581
3 changed files with 75 additions and 196 deletions

View file

@ -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

View file

@ -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

View file

@ -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"