Introduce verification framework, regression testing, GitHub/GitLab CI, and fractional-priority arbiter#77
Draft
FrancescoConti wants to merge 25 commits intomasterfrom
Draft
Introduce verification framework, regression testing, GitHub/GitLab CI, and fractional-priority arbiter#77FrancescoConti wants to merge 25 commits intomasterfrom
FrancescoConti wants to merge 25 commits intomasterfrom
Conversation
…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.
5675774 to
70c863a
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
regr/basic.ymlfor defining test cases andregr/hardware/hci/hardware.jsonfor hardware configuration. [1] [2]regr/bwruntests.py, a Python script to run tests in parallel, collect results, and optionally output JUnit reports and performance data.regr/full_regression.shto automate running the full regression suite.Integrated continuous integration (CI) workflows:
.github/workflows/gitlab-ci.ymlfor GitHub Actions integration and.gitlab-ci.ymlfor GitLab CI, enabling automated builds and regression tests on pushes and pull requests. [1] [2]Project Configuration and Documentation:
README.md, including step-by-step instructions, cleanup targets, and notes for different environments.Bender.yml:bender.mk.These changes collectively provide a robust foundation for automated testing and verification, improving both development workflow and code quality.