Skip to content

Introduce verification framework, regression testing, GitHub/GitLab CI, and fractional-priority arbiter#77

Draft
FrancescoConti wants to merge 25 commits intomasterfrom
smazzola/verif
Draft

Introduce verification framework, regression testing, GitHub/GitLab CI, and fractional-priority arbiter#77
FrancescoConti wants to merge 25 commits intomasterfrom
smazzola/verif

Conversation

@FrancescoConti
Copy link
Member

This pull request introduces a comprehensive verification and regression testing infrastructure to the repository, along with several improvements to the project configuration and documentation. The main changes include the addition of CI workflows, a full regression test suite with supporting scripts and configuration, enhancements to the verification flow documentation, and updates to authorship and source lists.
It also introduces all the changes of #76 into master.

Verification and Regression Infrastructure:

  • Added a full regression testing suite:

    • Introduced regr/basic.yml for defining test cases and regr/hardware/hci/hardware.json for hardware configuration. [1] [2]
    • Added regr/bwruntests.py, a Python script to run tests in parallel, collect results, and optionally output JUnit reports and performance data.
    • Added regr/full_regression.sh to automate running the full regression suite.
  • Integrated continuous integration (CI) workflows:

    • Added .github/workflows/gitlab-ci.yml for GitHub Actions integration and .gitlab-ci.yml for GitLab CI, enabling automated builds and regression tests on pushes and pull requests. [1] [2]

Project Configuration and Documentation:

  • Expanded and clarified the verification flow in README.md, including step-by-step instructions, cleanup targets, and notes for different environments.
  • Updated Bender.yml:
    • Fixed an author email typo and added a new author.
    • Updated the verification source files, replacing latency/throughput monitors with request/grant and bandwidth monitors.
  • Updated copyright years in bender.mk.

These changes collectively provide a robust foundation for automated testing and verification, improving both development workflow and code quality.

FrancescoConti and others added 17 commits March 5, 2026 12:33
…oduce hci_core_split

- Revert application_driver to initial state, which does not employ FIFOs at interface
- Remove r_valid generation from TCDM wrapper (r_valid is generated in the LIC, generating it in TCDM wrapper creates HCI violation asserts)
- Use hci_core_split instead of manual splitting of wide HWPE interfaces (higher perf thanks to FIFOs
- Stimuli generation also outputs a memory map that is gonna be accessed
- HWPE dataflow can be flexibly configured from workload.json (see workload.schema.json)
- Added a traffic opion to the access patterns to be generated
- Added support for HWPE custom dataflow inside testbench (supporta all mode: HCI, LOG, MUX)
- Removed old parameters substituted by more advanced functionalities
- Added possibility to select custom ranges for specific access patterns in vector generation
Previously, HCI supported QoS by switching to the low-priority chan
for 1 stall-cycle out of N, where N-1 was specified as the low_prio_max_stall
configuration from a CSR in the system.
This commit changes the mechanism in a more flexible fractional priority.
The counter has two configuration params (8-bit), both from CSRs:
priority_cnt_numerator and priority_cnt_denominator. The former is the
same as low_prio_max_stall, i.e., the number of stall-cycles the arbiter
spends prioritizing the high-priority side. The latter is the total number
of stall cycles after which the counter is cleared, meaning that the
arbiter will spend priority_cnt_denominator-priority_cnt_numerator stall-cycles
prioritizing the low-priority side.
In other words, the arbiter will dedicate a fraction numerator/denominator
of the available bandwidth (on average) to the high priority side.

Hardware-wise the change is minimal, touching only how the counter works
and the CSRs.
@FrancescoConti FrancescoConti changed the title Smazzola/verif Introduce regression testing, GitHub/GitLab CI, and fractional-priority arbiter Mar 9, 2026
@FrancescoConti FrancescoConti changed the title Introduce regression testing, GitHub/GitLab CI, and fractional-priority arbiter Introduce verification framework, regression testing, GitHub/GitLab CI, and fractional-priority arbiter Mar 9, 2026
@sermazz sermazz force-pushed the smazzola/verif branch 6 times, most recently from 5675774 to 70c863a Compare March 11, 2026 10:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants