cva6
cva6 copied to clipboard
[TASK] Setup and maintain embedded CI on Thales servers
What Provide code coverage metrics in an automated way without consuming too much energy.
Howto First do not run heavy tests if smoke tests fail. Then add another workflow running on master once a week, to provide metrics and their history.
Current status There are currently no metrics available.
Risks The amount of code and infrastructure to change might be significant.
Prerequisites Complete CI simplification before adding new things.
KPI None
Description of done The metrics dashboard is available.
- CI simplification done, with a distinct workflow to run on master once a week
- PR #1517 merged
- do not run heavy tests if a smoke test fails.
- update conditions to run jobs.
- switch configurations to embedded.
- "Code coverage reports" part not started yet.
Would be useful to refer the related PR.
- Fewer jobs are run thanks to https://github.com/openhwgroup/cva6/pull/1535 which changes PR pipelines to be dev instead of regress. However there is no job status checker in dev pipelines yet: added in https://github.com/openhwgroup/cva6/pull/1548
- Two remaining steps to significantly reduce latency, see this comment: https://github.com/openhwgroup/cva6/pull/1535#pullrequestreview-1679757493
- regress pipeline is still running on
masterbranch - Scheduled verif pipeline to run every Sunday, however some verif jobs may be timing out. It will be possible to fix that later.
- Synthesis only runs when
core/orcorev_apu/is changed: https://github.com/openhwgroup/cva6/pull/1550
This description includes notion of code coverage, which is the topic of https://github.com/openhwgroup/cva6/issues/1436
However the current task focuses on "when is each job run?".
Notes from meeting:
- #1436: when we have coverage results on several weeks, add a graph with coverage result in the dashboard
- Add a new color (gray?) for ignored tests: they are run for information but they are allowed to fail without making the whole pipeline fail. (Needs to update
report_generator.pyfor report generation and the dashboard for report rendering)
For first point from last message see https://github.com/openhwgroup/cva6/issues/1436
For second point, we need to discuss how we want to specify which tests we want to ignore.
We wanted to ignore tests that are known to be failing on master. As we do not run these tests before merging PRs, do we still want to ignore them?
Note: the failing tests are in the compliance and riscv-tests-p jobs. Actually these tests are "crashing", not only "failing". This implies that subsequent tests in the same job are not run. So we thought that 2 tests were failing (one in each job) while more are crashing! I had to list them to debug my own stuff so I share it with you below.
List of crashing tests on c430c6c34be0e24175e03d3c91478e349bfaaf4e (2024-01-05):
- In
compliance(verif/tests/testlist_riscv-compliance-cv32a6_embedded.yaml)rv32uc-rvcrv32ui-jalrv32ui-bgerv32ui-bltrv32ui-bgeurv32ui-swrv32ui-lburv32ui-sbrv32ui-sltiNote: this test, compilingslti.S, is actually namedrv32ui-swin the test list. Looks like a typo.rv32ui-srarv32ui-srlrv32ui-shrv32ui-lwrv32ui-andirv32ui-srlirv32ui-sllirv32ui-beqrv32ui-sllrv32ui-addirv32ui-lhrv32ui-andrv32ui-xorirv32ui-subrv32ui-sltrv32ui-lbrv32ui-orrv32ui-luirv32ui-orirv32ui-blturv32ui-fence_irv32ui-auipcrv32ui-srairv32ui-jalrrv32ui-xorrv32ui-simplerv32ui-lhurv32ui-bnerv32ui-addrv32ui-sltiurv32ui-slturv32si-sbreakrv32si-scallrv32si-ma_fetchrv32si-wfirv32si-csr- Note that there are 2 failing tests,
rv32mi-scallandrv32mi-csr, but at least the job runs to completion after removing the above tests.
- In
riscv-tests-p(verif/tests/testlist_riscv-tests-cv32a6_embedded-p.yaml)rv32mi-p-scallrv32si-p-csrrv32si-p-ma_fetchrv32si-p-scallrv32si-p-wfirv32si-p-sbreak- Note that there is 1 failing test,
rv32mi-p-csr, but at least the job runs to completion after removing the above tests.
The crashes seem related to the two letters after rv32.
Can we consider this task as done?
Yes, this task is completed but the tests which are crashed are to be fixed. A new GitHub Issue shall be open for this issue.
Done #1944