Skip to content

Add Verification and Regression Tests for base/ and axi/#1386

Merged
bengineerd merged 71 commits intopre-releasefrom
verification
Apr 2, 2026
Merged

Add Verification and Regression Tests for base/ and axi/#1386
bengineerd merged 71 commits intopre-releasefrom
verification

Conversation

@bengineerd
Copy link
Copy Markdown
Contributor

@bengineerd bengineerd commented Mar 26, 2026

Description

Add the Phase-1 SURF RTL regression baseline for the simulator-friendly base/, axi/, and initial dsp/ modules using the project’s Python-first flow (pytest + cocotb + GHDL + ruckus). This PR adds subsystem-organized cocotb regressions, checked-in IP-integrator wrappers where flat AXI/AXI-Lite/AXIS interfaces are needed, shared regression utilities, and updated planning/progress artifacts under docs/_meta/ so rollout state is recoverable without re-discovery. It also updates CI and local setup so the new regression tiers run reliably in parallel while legacy top-level benches still run in a separate serial pass.

Details

This branch validates the current axi-first Phase-1 queue through the final simulator-friendly axi/ modules and expands base/ coverage across FIFO, sync, delay, RAM, CRC, and general utility blocks, with the first dsp/ leaf now included. It also standardizes common GHDL compile flags, cocotb module discovery helpers, pytest parallel defaults, and the generated RTL queue artifacts used by the planning docs.

Existing Tests

The pre-existing cocotb tests were all folded into the new test structure.
In some cases they were re-written from VHDL driven testbenchs to cocotb.

Known expected-open items on this branch remain:

  • tests/axi/axi4/test_AxiResize.py for the restored 32-bit -> 64-bit upsize case
  • tests/axi/dma/test_AxiStreamDmaV2Read.py due to the current internal CONV_INTEGER assertion under GHDL

- Introduced three new markdown files outlining the objectives, methodologies, and progress for the SURF RTL regression system.
- The documents detail the transition to a Python-only executable test framework, the scope of the regression efforts, and the planned phases for implementation.
- Included immediate next tasks and important repo facts to guide future development and ensure consistency across the regression process.
- Added the initial regression inventory schema in `docs/_meta/rtl_regression_inventory.yaml`, detailing the first pilot modules: `FifoAsync`, `AxiStreamFifoV2`, and `AxiLiteAsync`.
- Updated the handoff documentation to reflect the inclusion of the inventory and the selected pilot modules.
- Defined the next steps for implementing the shared Python regression helper structure and initiating the first pilot regression.
- Introduced `scripts/setup_regression_env.sh` to automate the local environment setup for the regression framework, including virtual environment creation and dependency installation.
- Added `.vscode/tasks.json` to define tasks for setting up the regression environment, importing HDL sources, and running regression tests.
- Updated documentation to reflect the new bootstrap process and local `ruckus` linking, ensuring a smoother workflow for future development.
…itial pilot implementation

- Established a structured layout for regression tests under `tests/`, categorizing them by subsystem to improve organization and maintainability.
- Implemented the first pilot regression for `FifoAsync`, validating its functionality with a comprehensive test suite located in `tests/base/fifo/test_FifoAsync.py`.
- Introduced shared regression helpers in `tests/common/regression_utils.py` to streamline future test implementations.
- Updated the regression inventory to reflect the new test paths and statuses, ensuring clarity on the progress of pilot modules.
- Documented the new test layout policy in `tests/README.md` to guide future contributions and maintain consistency across the regression framework.
…tation enhancements

- Documented the results of a quick HDL coverage check against the local Homebrew `ghdl` build, noting the absence of `--coverage` support.
- Highlighted the need for a separate tooling decision regarding HDL source coverage availability with the current `ghdl` LLVM build.
- Added insights on the effectiveness of existing Python regressions as reusable verification assets and emphasized the importance of maintaining a structured test layout.
…entation updates

- Migrated `AxiStreamFifoV2` regression tests into a structured package under `tests/axi/axi_stream/`, implementing a new test file that follows the shared helper structure.
- Added a purpose-built thin wrapper for `AxiLiteAsync` and initiated its regression tests under `tests/axi/axi_lite/`.
- Updated the regression inventory to reflect the new test paths and statuses, ensuring clarity on the progress of pilot modules.
- Enhanced documentation to emphasize the importance of commenting new Python regression code for better understanding of test intent and framework behavior.
- Organized new regressions by subsystem to improve maintainability and clarity in the test structure.
- Introduced a new `pytest.ini` file to set default options for parallel test execution using xdist.
- Updated the CI workflow to align with the new pytest configuration, removing redundant command-line options.
- Expanded the `FifoAsync` regression test suite to include a validated 12-case parameter matrix, improving coverage and organization.
- Enhanced documentation to reflect the new pytest defaults and the structure of the expanded regression tests.
- Added a new section to the RTL regression plan outlining the coverage policy for VHDL packages, specifying that they are treated transitively unless a behavioral function requires a dedicated wrapper.
- Updated the RTL regression handoff and progress documents to reflect the new policy, ensuring clarity on the treatment of VHDL packages in the regression framework.
…tantiation graph

- Implemented and validated an 11-case regression matrix for `FifoSync`, adding the test suite in `tests/base/fifo/test_FifoSync.py`.
- Introduced a first-pass RTL instantiation graph, generated and checked in as `docs/_meta/rtl_instantiation_graph.{md,json}`, to guide bottom-up rollout decisions.
- Updated documentation to reflect the new test structure and the instantiation graph's role in planning future regression efforts.
- Introduced a new RTL instantiation graph in `docs/_meta/rtl_instantiation_graph.{md,json}` to assist in bottom-up rollout decisions and reduce redundant testing across hierarchy levels.
- The graph summarizes entity and edge counts, highlights duplicate entity names, and provides insights into instantiated entities and assemblers.
- Updated related documentation to reflect the graph's role in guiding future regression efforts and planning strategies.
- Added a new regression test suite for the `Synchronizer` module, including a validated 6-case parameter matrix in `tests/base/sync/test_Synchronizer.py`.
- Updated the RTL regression handoff and inventory documentation to reflect the addition of the `Synchronizer` and its test coverage.
- Enhanced guidance on using the repo's virtual environment for local Python commands to ensure consistent execution across different setups.
…documentation updates

- Added regression tests for `SynchronizerVector`, `RstPipeline`, `SimpleDualPortRam`, `FifoOutputPipeline`, and `FifoWrFsm`, each with validated parameter matrices in their respective test files.
- Updated the RTL regression handoff and inventory documentation to reflect the new modules and their coverage.
- Enhanced guidance on commenting new Python regression code to adopt a tutorial-style approach, ensuring clarity for readers unfamiliar with cocotb.
- Organized new regressions under subsystem packages to improve maintainability and clarity in the test structure.
…ve test coverage

- Implemented and validated regression tests for `Crc32Parallel`, `Crc32`, and `CRC32Rtl`, each with detailed parameter matrices in their respective test files.
- Added a new test utility module for CRC operations to streamline test implementations and maintain consistency.
- Updated the RTL regression handoff and inventory documentation to reflect the addition of new modules and their validated coverage.
- Enhanced the existing regression framework by organizing tests under subsystem packages and improving the structure of shared helper functions.
- Documented the use of a thin wrapper for `Crc32` to address simulator limitations with generic overrides, ensuring clarity for future implementations.
…ng coverage and organization

- Added regression tests for `Arbiter`, `ClockDivider`, `Debouncer`, `Gearbox`, `Heartbeat`, `Mux`, `OneShot`, `RegisterVector`, `RstPipelineVector`, `Scrambler`, `WatchDogRst`, `SlvDelay`, and `SlvFixedDelay`, each with validated parameter matrices in their respective test files.
- Introduced a shared generated-wrapper path in `tests/common/regression_utils.py` and migrated `Heartbeat` and `Debouncer` tests away from checked-in one-off VHDL wrappers to streamline future implementations.
- Updated the RTL regression handoff and progress documentation to reflect the expanded coverage and the new test organization structure.
- Enhanced guidance on using generated wrappers for real- or vector-generic leaves to maintain clarity and reduce clutter in the repository.
- Added detailed comments throughout the `SlvDelay`, `SlvFixedDelay`, and various general test files to improve understanding of test behavior and expectations.
- Updated testbench initialization to ensure clocks are started early, allowing tests to focus on stimulus and output verification.
- Enhanced reset behavior tests to confirm state changes and proper handling of edge cases, ensuring robust validation of module functionality.
…verage and organization

- Added regression tests for `DspComparator`, `Fifo`, `FifoCascade`, `FifoMux`, and `AsyncGearbox`, each with validated parameter matrices in their respective test files.
- Introduced a shared generated-wrapper path in `tests/common/regression_utils.py` and migrated relevant tests to streamline future implementations.
- Updated the RTL regression handoff and progress documentation to reflect the expanded coverage and new test organization structure.
- Enhanced guidance on using generated wrappers for real- or vector-generic leaves to maintain clarity and reduce clutter in the repository.
…ests

- Completed the implementation and validation of the remaining non-vendor, non-dummy `base/` modules: `MasterRamIpIntegrator`, `SlaveRamIpIntegrator`, `DualPortRam`, `SlvDelayRam`, `SlvDelayFifo`, `SyncClockFreq`, `SyncTrigRate`, and `SyncTrigRateVector`.
- Added corresponding regression tests for each module, ensuring comprehensive coverage and functionality.
- Updated the RTL regression handoff and inventory documentation to reflect the newly validated modules and their test statuses.
- Enhanced the regression progress documentation to indicate the completion of the practical phase-1 rollout for the `base/` modules, with only `LutFixedDelay` remaining deferred due to vendor dependencies.
- Introduced a new utility module `ram_test_utils.py` to facilitate dual-clock RAM testing, including methods for clock management and reset handling.
- Refactored existing dual-port RAM tests to utilize the new utility, improving code organization and reducing redundancy.
- Enhanced test methodologies for `DualPortRam`, `SimpleDualPortRam`, and `TrueDualPortRam` to cover various operational modes and reset behaviors.
- Updated documentation to reflect the new test structure and methodologies, ensuring clarity and maintainability in the regression framework.
…idelines

- Updated the documentation for Python regression tests to require a two-layer comment style: a module-specific `Test methodology` block and in-body tutorial comments.
- The methodology block must include wrapped bullets for `Sweep`, `Stimulus`, `Checks`, and `Timing`, detailing the specific behavior of the module under test.
- Emphasized the importance of clarity and readability in comments to assist users unfamiliar with cocotb, ensuring that both the methodology and tutorial comments serve distinct purposes.
- Introduced the `AxiStreamPipelineIpIntegrator.vhd` as a thin flat-port wrapper for the `AxiStreamPipeline`, enabling streamlined integration with cocotb.
- Implemented regression tests for `AxiStreamPipeline` in `tests/axi/axi_stream/test_AxiStreamPipeline.py`, covering zero-stage pass-through, staged pipeline behavior, and reset handling.
- Added validation tests for `AxiLiteCrossbar` in `tests/axi/axi_lite/test_AxiLiteCrossbar.py`, focusing on address decoding, transaction routing, and concurrent traffic management.
- Updated documentation to reflect the new modules and their testing methodologies, ensuring clarity and maintainability in the regression framework.
- Updated the RTL regression handoff to clarify that the reviewed flat module build order in `rtl_regression_plan.md` is now the primary source for implementation tasks, replacing the need to re-analyze the instantiation graph for daily operations.
- Documented the current phase-1 build order, detailing completed modules and the next queued items, ensuring a streamlined approach for future development.
- Emphasized the importance of using the flat build order for day-to-day target selection while retaining the instantiation graph for provenance and justified reordering decisions.
- Introduced the `AxiStreamMuxIpIntegrator.vhd` as a thin flat-port wrapper for the `AxiStreamMux`, facilitating integration with cocotb.
- Implemented regression tests in `tests/axi/axi_stream/test_AxiStreamMux.py`, covering indexed arbitration with explicit priority, routed `TDEST`/`TID` remap under backpressure, and staged asynchronous reset behavior.
- Updated documentation to reflect the new module and its testing methodologies, ensuring clarity and maintainability in the regression framework.
- Validated the `AxiStreamMux` functionality, confirming proper handling of `disableSel` and priority masking in the test scenarios.
- Introduced the `AxiStreamDeMuxIpIntegrator.vhd` as a thin flat-port wrapper for the `AxiStreamDeMux`, enabling integration with cocotb.
- Implemented regression tests in `tests/axi/axi_stream/test_AxiStreamDeMux.py`, covering indexed routing to both outputs, routed exact-match decode under output backpressure, and dynamic-route table behavior including unmatched-destination drop and staged asynchronous reset flush.
- Updated documentation to reflect the new module and its testing methodologies, ensuring clarity and maintainability in the regression framework.
- Validated the `AxiStreamDeMux` functionality, confirming proper handling of routing and reset behaviors in the test scenarios.
- Introduced `AxiLiteAsyncIpIntegrator.vhd`, `AxiLiteMasterIpIntegrator.vhd`, `AxiStreamResizeIpIntegrator.vhd`, and `AxiLiteToDrpIpIntegrator.vhd` as thin flat-port wrappers for their respective modules, enabling integration with cocotb.
- Implemented regression tests for each new module in their respective test files, ensuring comprehensive coverage of functionality, including request/ack sequencing, reset behaviors, and data handling.
- Updated documentation to reflect the new modules and their testing methodologies, ensuring clarity and maintainability in the regression framework.
- Validated the functionality of the new modules, confirming proper operation in various test scenarios, including common-clock and asynchronous reset conditions.
- Updated the RTL instantiation graph in `rtl_instantiation_graph.json` and `rtl_instantiation_graph.md` to reflect changes in entity and edge counts, now totaling 686 entities and 1336 edges.
- Added new entries for `AxiLiteMaster`, `AxiStreamMux`, and `AxiStreamDeMux` with updated instantiation counts.
- Introduced a new phase-1 queue in `rtl_phase1_queue.json` and `rtl_phase1_queue.md`, detailing the bottom-up order of modules for implementation, with manual deferrals and overrides documented in `rtl_phase1_queue_overrides.json`.
- Enhanced documentation to clarify the new workflow for module implementation, emphasizing the use of the generated phase-1 queue as the primary source of truth for development tasks.
- Introduced `AxiReadPathMuxIpIntegrator.vhd`, `AxiWritePathMuxIpIntegrator.vhd`, `AxiResizeIpIntegrator.vhd`, and `AxiToAxiLiteIpIntegrator.vhd` as new modules for AXI4 integration, enabling streamlined functionality with cocotb.
- Implemented regression tests for each new module in their respective test files, ensuring comprehensive coverage of functionality, including read/write operations and data handling.
- Updated documentation to reflect the new modules and their testing methodologies, ensuring clarity and maintainability in the regression framework.
- Validated the functionality of the new modules, confirming proper operation in various test scenarios, including concurrent access and data integrity checks.
- Introduced multiple new modules including `AxiLiteMasterProxyIpIntegrator.vhd`, `AxiLiteSequencerRamIpIntegrator.vhd`, `AxiStreamCompactIpIntegrator.vhd`, `AxiStreamConcatIpIntegrator.vhd`, `AxiStreamFrameRateLimiterIpIntegrator.vhd`, `AxiStreamPrbsFlowCtrlIpIntegrator.vhd`, `AxiStreamRepeaterIpIntegrator.vhd`, and `AxiStreamShiftIpIntegrator.vhd` to enhance AXI integration capabilities.
- Implemented regression tests for each new module, ensuring comprehensive coverage of functionality, including data handling and reset behaviors.
- Updated documentation to reflect the new modules and their testing methodologies, ensuring clarity and maintainability in the regression framework.
- Validated the functionality of the new modules, confirming proper operation in various test scenarios, including concurrent access and data integrity checks.
- Introduced multiple new modules including `AxiStreamTapIpIntegrator.vhd`, `AxiStreamTimerIpIntegrator.vhd`, `AxiStreamTrailerRemoveIpIntegrator.vhd`, `AxiLiteToIpBusIpIntegrator.vhd`, and `IpBusToAxiLiteIpIntegrator.vhd` to enhance AXI integration capabilities.
- Implemented regression tests for each new module, ensuring comprehensive coverage of functionality, including data handling and reset behaviors.
- Updated documentation to reflect the new modules and their testing methodologies, ensuring clarity and maintainability in the regression framework.
- Validated the functionality of the new modules, confirming proper operation in various test scenarios, including concurrent access and data integrity checks.
- Introduced new VHDL wrapper files: `DebouncerWrapper.vhd`, `HeartbeatWrapper.vhd`, `SyncClockFreqWrapper.vhd`, `SynchronizerOneShotCntVectorFlatWrapper.vhd`, `SyncStatusVectorFlatWrapper.vhd`, `SyncTrigRateVectorFlatWrapper.vhd`, and `SyncTrigRateWrapper.vhd`.
- Each wrapper provides a cocotb-facing interface for the corresponding SURF components, allowing for integer-based parameterization and improved testability.
- Updated test files to utilize the new wrappers, streamlining the testing process and enhancing maintainability of the test suite.
- Removed obsolete wrapper generation functions from test files to simplify the codebase and improve clarity.
- Added new signals for AXI write and read operations in `AxiMemTesterIpIntegrator.vhd`, improving the interface for AXI transactions.
- Updated the `M_AXI_AWREGION` signal type in `AxiRateGenIpIntegrator.vhd` to ensure consistency in signal definitions across the integrators, enhancing code clarity and maintainability.
- Standardized spacing in port declarations across `AxiRateGenIpIntegrator.vhd`, `AxiReadEmulateIpIntegrator.vhd`, `DebouncerWrapper.vhd`, `HeartbeatWrapper.vhd`, `SyncClockFreqWrapper.vhd`, `SyncStatusVectorFlatWrapper.vhd`, and `SyncTrigRateWrapper.vhd`.
- Enhanced code readability and maintainability by aligning signal declarations and ensuring consistent formatting throughout the files.
- Added instructions to run the `vsg` linter with CI's configuration on any created or edited VHDL files across multiple documentation files.
- Emphasized the use of `--fix` for autofixing issues before manual cleanup to ensure code quality and consistency.
Comment thread axi/axi-lite/ip_integrator/AxiLiteAsyncIpIntegrator.vhd
- Introduced new VHDL wrapper files: `AxiStreamPkgWrapper.vhd`, `EventFrameSequencerWrapper.vhd`, `HammingEccWrapper.vhd`, `LineCode8b10bWrapper.vhd`, `LineCode10b12bWrapper.vhd`, `LineCode12b14bWrapper.vhd`, `Pgp4CoreLiteWrapper.vhd`, `Pgp4CoreWrapper.vhd`, `SaciAxiLiteMasterWrapper.vhd`, and `Saci2ToAxiLiteWrapper.vhd`.
- Each wrapper provides a cocotb-facing interface for the corresponding SURF components, allowing for improved testability and integration.
- Updated CI configuration to include additional test directories, ensuring comprehensive coverage during testing.
- Enhanced the testing framework by adding new test cases that utilize the newly created wrappers, streamlining the testing process and improving maintainability of the test suite.
- Introduced `FwftCntWrapper.vhd`, `SrpV3AxiWrapper.vhd`, and `SsiResizeFifoEofeWrapper.vhd` to provide cocotb-facing interfaces for FWFT FIFO count testing, SRPv3 AXI integration, and SSI resize FIFO EOFE propagation, respectively.
- Added corresponding test files: `test_FwftCnt.py`, `test_SrpV3Axi.py`, and `test_SsiResizeFifoEofe.py`, implementing comprehensive test methodologies for each wrapper.
- Removed obsolete test files for FWFT, SRPv3, and SSI, streamlining the test suite and enhancing maintainability.
- Updated the SRP protocol test directory structure to include an `__init__.py` file for better organization.
- Deleted multiple legacy test files including `test_AxiLiteCrossbarTb.py`, `test_AxiRamTb.py`, `test_AxiRingBufferTb.py`, `test_AxiStreamBatchingFifoTb.py`, `test_AxiStreamDemuxMuxTb.py`, `test_AxiStreamDmaReadTb.py`, `test_AxiStreamGearboxTb.py`, `test_AxiStreamPipelineTb.py`, `test_AxiStreamResizeTb.py`, and `test_AxiVersionIpIntegrator.py` as they are no longer needed, streamlining the test suite.
- This cleanup enhances maintainability and reduces clutter in the codebase.
…e testing process and enhance maintainability.
Comment thread docs/_meta/rtl_instantiation_graph.json Outdated
Comment thread docs/_meta/rtl_instantiation_graph.md Outdated
bengineerd and others added 7 commits March 31, 2026 11:01
Crc32PolyWrapper.vhd declared a crcClkRst port and attempted to map it
to surf.Crc32, but Crc32 has no such port. GHDL rejected the elaboration
with "port crcClkRst is not an interface name", failing all test_Crc32
regression tests. Remove the port declaration and port-map entry.

Update .gitignore to add a bare "ruckus" pattern (in addition to the
existing "ruckus/") so that a symlink named ruckus is also ignored.
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a Phase-1 simulator-friendly SURF regression baseline using pytest + cocotb + GHDL + ruckus, with subsystem-organized test structure and checked-in thin VHDL wrappers to expose flat interfaces needed by cocotb.

Changes:

  • Adds new cocotb/pytest regressions for AXI-Lite and AXI4 modules (plus initial protocol/base wrappers to support further tests).
  • Introduces multiple IP-integrator / “flat” VHDL wrappers to bridge SURF record-based interfaces to cocotb-friendly flat ports.
  • Updates local setup + CI + GHDL flag plumbing to run the new parallel regression tiers reliably.

Reviewed changes

Copilot reviewed 120 out of 295 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
tests/axi/axi_lite/test_AxiLiteFifoPushPop.py New AXI-Lite FIFO combined pop/loop/push regression
tests/axi/axi_lite/test_AxiLiteFifoPush.py New AXI-Lite FIFO push-path regression
tests/axi/axi_lite/test_AxiLiteFifoPop.py New AXI-Lite FIFO pop + loop regression
tests/axi/axi_lite/init.py Marks AXI-Lite test package + brief module docstring
tests/axi/axi4/test_AxiWritePathFifo.py New AXI4 write-path FIFO regression against AXI RAM model
tests/axi/axi4/test_AxiWriteEmulate.py New AXI4 write-emulation regression (manual burst driving)
tests/axi/axi4/test_AxiRingBuffer.py New AXI ring buffer regression using AXI RAM + AXIS sink
tests/axi/axi4/test_AxiResize.py New AXI resize regression with parameter sweep + xfail upsize case
tests/axi/axi4/test_AxiReadPathFifo.py New AXI4 read-path FIFO regression against AXI RAM model
tests/axi/axi4/test_AxiReadEmulate.py New AXI4 read-emulation regression (manual burst driving)
tests/axi/axi4/test_AxiRam.py New AXI RAM regression (burst + sparse overwrite)
tests/axi/axi4/test_AxiMonAxiL.py New AXI monitor AXI-Lite surface/register regression
tests/axi/axi4/test_AxiMemTester.py New AXI mem tester regression (AXI RAM + AXI-Lite status)
tests/axi/axi4/init.py Marks AXI4 test package
tests/axi/init.py Marks AXI subsystem test package + docstring
tests/init.py Marks tests as a package for shared utilities/imports
tests/README.md Documents subsystem-organized regression layout/policy
scripts/setup_regression_env.sh Adds local bootstrap script for venv + ruckus + pytest commands
pytest.ini Excludes tests/legacy from default collection
protocols/ssi/wrappers/SsiPrbsWrapper.vhd Adds cocotb-facing SSI PRBS loopback wrapper
protocols/line-codes/wrappers/LineCode8b10bWrapper.vhd Adds cocotb-facing 8b10b encode/decode wrapper
protocols/line-codes/wrappers/LineCode12b14bWrapper.vhd Adds cocotb-facing 12b14b encode/decode wrapper
protocols/line-codes/wrappers/LineCode10b12bWrapper.vhd Adds cocotb-facing 10b12b encode/decode wrapper
protocols/hamming-ecc/wrappers/HammingEccWrapper.vhd Adds cocotb-facing Hamming ECC wrapper with error injection mask
conda.yml Adds a conda env recipe for the Python/GHDL cocotb flow
base/sync/wrappers/SynchronizerOneShotCntVectorFlatWrapper.vhd Flattens counter array output for cocotb inspection
base/sync/wrappers/SyncTrigRateWrapper.vhd Cocotb wrapper mapping integer generics to real-valued DUT generics
base/sync/wrappers/SyncTrigRateVectorFlatWrapper.vhd Flattens per-lane trig-rate array to an slv for cocotb
base/sync/wrappers/SyncStatusVectorFlatWrapper.vhd Flattens SyncStatusVector counter array to an slv
base/sync/wrappers/SyncClockFreqWrapper.vhd Cocotb wrapper mapping integer generics to real-valued clock monitor generics
base/general/wrappers/HeartbeatWrapper.vhd Cocotb wrapper mapping integer period to real-valued Heartbeat generics
base/general/wrappers/DebouncerWrapper.vhd Cocotb wrapper mapping integer debounce window to real-valued DUT period
base/fifo/wrappers/FwftCntWrapper.vhd Cocotb-facing FWFT FIFO count wrapper (inferred/distributed variants)
base/crc/wrappers/Crc32PolyWrapper.vhd Cocotb wrapper enabling integer override of CRC polynomial under GHDL
axi/dma/rtl/v1/AxiStreamDmaRingWrite.vhd Adjusts pointer arithmetic to avoid range issues in narrower wrappers
axi/dma/ip_integrator/AxiStreamDmaIpIntegrator.vhd Adds narrow AXI-Lite shim wrapper for AxiStreamDma
axi/dma/ip_integrator/AxiStreamDmaFifoIpIntegrator.vhd Adds narrow AXI-Lite shim wrapper for AxiStreamDmaFifo
axi/bridge/ip_integrator/SlvArraytoAxiLiteIpIntegrator.vhd Adds IP integrator wrapper for SlvArraytoAxiLite
axi/bridge/ip_integrator/IpBusToAxiLiteIpIntegrator.vhd Adds IP integrator wrapper for IpBusToAxiLite
axi/bridge/ip_integrator/AxiLiteToIpBusIpIntegrator.vhd Adds IP integrator wrapper for AxiLiteToIpBus
axi/bridge/ip_integrator/AxiLiteToDrpIpIntegrator.vhd Adds IP integrator wrapper for AxiLiteToDrp
axi/axi4/ip_integrator/AxiWriteEmulateIpIntegrator.vhd Adds flat AXI4 shim wrapper for AxiWriteEmulate
axi/axi4/ip_integrator/AxiReadEmulateIpIntegrator.vhd Adds flat AXI4 shim wrapper for AxiReadEmulate
axi/axi4/ip_integrator/AxiMonAxiLIpIntegrator.vhd Adds IP integrator wrapper for AxiMonAxiL
axi/axi-stream/wrappers/AxiStreamPkgWrapper.vhd Adds wrapper exposing genTKeep for cocotb checks
axi/axi-stream/ip_integrator/AxiStreamTrailerRemoveIpIntegrator.vhd Adds flat AXIS wrapper for TrailerRemove
axi/axi-stream/ip_integrator/AxiStreamShiftIpIntegrator.vhd Adds flat AXIS wrapper for Shift
axi/axi-stream/ip_integrator/AxiStreamResizeIpIntegrator.vhd Adds flat AXIS wrapper for Resize with sideband
axi/axi-stream/ip_integrator/AxiStreamPrbsFlowCtrlIpIntegrator.vhd Adds flat AXIS wrapper for PRBS flow control
axi/axi-stream/ip_integrator/AxiStreamPipelineIpIntegrator.vhd Adds flat AXIS wrapper for Pipeline with sideband
axi/axi-stream/ip_integrator/AxiStreamMonIpIntegrator.vhd Adds flat AXIS wrapper for Stream monitor outputs
axi/axi-stream/ip_integrator/AxiStreamGearboxUnpackIpIntegrator.vhd Adds flat AXIS wrapper for GearboxUnpack
axi/axi-stream/ip_integrator/AxiStreamGearboxPackIpIntegrator.vhd Adds flat AXIS wrapper for GearboxPack
axi/axi-stream/ip_integrator/AxiStreamFlushIpIntegrator.vhd Adds flat AXIS wrapper for Flush
axi/axi-stream/ip_integrator/AxiStreamCompactIpIntegrator.vhd Adds flat AXIS wrapper for Compact
axi/axi-lite/ip_integrator/AxiLiteSlaveIpIntegrator.vhd Adds flat AXI-Lite wrapper for AxiLiteSlave req/ack interface
axi/axi-lite/ip_integrator/AxiLiteRingBufferIpIntegrator.vhd Adds flat AXI-Lite wrapper for AxiLiteRingBuffer
axi/axi-lite/ip_integrator/AxiLiteRespTimerIpIntegrator.vhd Adds flat AXI-Lite wrapper for AxiLiteRespTimer
axi/axi-lite/ip_integrator/AxiLiteRegsIpIntegrator.vhd Adds flat AXI-Lite wrapper for AxiLiteRegs
axi/axi-lite/ip_integrator/AxiLiteRamSyncStatusVectorIpIntegrator.vhd Adds flat AXI-Lite wrapper for AxiLiteRamSyncStatusVector
axi/axi-lite/ip_integrator/AxiLiteMasterIpIntegrator.vhd Adds flat AXI-Lite wrapper for AxiLiteMaster req/ack interface
axi/axi-lite/ip_integrator/AxiLiteFifoPushIpIntegrator.vhd Adds flat AXI-Lite wrapper for AxiLiteFifoPush (single-lane flattening)
Makefile Centralizes GHDL flags and conditionally disables unsupported warnings
.github/workflows/surf_ci.yml Updates CI to run new parallel regression tiers + adds concurrency controls

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread protocols/line-codes/wrappers/LineCode8b10bWrapper.vhd
Comment thread protocols/line-codes/wrappers/LineCode12b14bWrapper.vhd
Comment thread protocols/line-codes/wrappers/LineCode10b12bWrapper.vhd
Comment thread axi/axi-stream/ip_integrator/AxiStreamMonIpIntegrator.vhd Outdated
Comment thread tests/axi/axi4/test_AxiWritePathFifo.py Outdated
Comment thread tests/axi/axi4/test_AxiReadPathFifo.py Outdated
Comment thread axi/dma/rtl/v1/AxiStreamDmaRingWrite.vhd
Comment thread .github/workflows/surf_ci.yml Outdated
Comment thread .github/workflows/surf_ci.yml Outdated
- Added a `wait_for` method in both `test_AxiReadPathFifo.py` and `test_AxiWritePathFifo.py` to streamline waiting for AXI handshakes, enhancing readability and maintainability.
- Updated the AXI read and write methods to utilize the new `wait_for` method, replacing the previous while loops with a more efficient approach.
- Fixed a minor issue in `AxiStreamMonIpIntegrator.vhd` by correctly mapping the `axisSlave` port.
@bengineerd bengineerd merged commit 3fba58b into pre-release Apr 2, 2026
5 checks passed
@bengineerd bengineerd deleted the verification branch April 2, 2026 20:37
@ruck314 ruck314 mentioned this pull request Apr 2, 2026
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.

3 participants