Repository navigation
feat: integrate xcomm coverage-v2 and native clock ownership - #115
Merged
Merged
Conversation
Dispatch Release Picker after the release bundle is uploaded, and wait for the source Tagged CI run to finish successfully before publishing. Replace the workflow_run listener to support builds dispatched with GITHUB_TOKEN.
Require xspcomm>=0.2.0,<0.3 and pin development builds to the published v0.2.0 commit. Check native ABI 2 in wheel verification and require libxspcomm.so.2 in release archives so development, wheel and native release packages use the same supported runtime generation. Replace removed XPin wrappers with direct XData objects in Python and UVM DUTs, including internal signals and indexed port access. Update the MultiClock example and document the native rebuild and signal API migration. Add a generated Adder regression for ABI identity, direct XData leaves, port aliases, assignment protection and 128-bit arithmetic. Validation: - All 24 native CTest programs and 11 release-policy tests pass. - Generated Adder, VPI internal-signal and MultiClock simulations pass. - UVM transaction/from-RTL pack rendering passes; VCS runtime unavailable. - Built Picker and xcomm v0.2.0 wheels install and pass verification in a fresh offline environment; pip rejects pairing Picker with xcomm 0.1.1. - Installed native AppDir contains the ABI 2 SONAME and a working command. - Workflow and shell syntax checks pass (existing queue field excluded from actionlint v1.7.12). BREAKING CHANGE: generated Python and UVM signals expose XData directly. Replace dut.signal.xdata with dut.signal and rebuild existing generated DUT extensions against the xcomm 0.2 / ABI 2 headers and runtime.
Co-authored-by: Makiras <22570332+Makiras@users.noreply.github.com>
Pin development builds to xcomm 83ab5b2, which shares native Trigger matching with Coverage bins and exports native ABI 3 with coverage descriptor protocol 4. Require the xspcomm 0.3 series, including its explicit 0.3.0.dev0 preview, and build that preview in Development CI until a compatible stable release exists. Tagged builds continue to require published stable xcomm releases. Align installed-wheel checks, generated Python signal regression checks and native release archive verification with ABI 3. Keep the existing ARM value assertion correction inherited from the current Picker PR branch. Apply -fno-strict-aliasing to the embedded xcomm target and its consumers, standalone xcomm wheel builds, and generated simulator libraries while retaining the existing optimization flags. Update the UVM template to consume python.i and pubsub.cpp from the installed TLM source SDK through XSP_COMM_TLM. Document dependency versions, preview builds, native compatibility and SDK paths. Validation: - Fresh combined Release build: all 27 Picker/xcomm C++ tests pass. - All 11 release-policy tests pass; modified shell scripts pass syntax checks. - Built Picker wheel installs with the xspcomm preview in a clean environment; pip check, metadata/native versions, ABI/protocol and CLI checks pass. - Installed wheels generate and compile a Python Adder DUT; direct XData access, 128-bit arithmetic and carry regression checks pass against native ABI 3. - Native installation exports libxspcomm.so.3 with SONAME 3. Native and wheel TLM SDK paths resolve, and SWIG wrapper generation passes. VCS commands were only dry-run because the simulator toolchain is unavailable. - Workflow lint introduces no diagnostics relative to the existing baseline. BREAKING CHANGE: native clients and generated DUT extensions must rebuild against xcomm ABI 3. Picker now selects xspcomm 0.3; formal releases require a published compatible xcomm release rather than a development preview.
Pin development builds to xcomm e64d862, which exposes XCoveragePoint, bin.point_id and explicit engine acquisition of XClock. Keep native ABI 3 relative to master's ABI 2 and require coverage descriptor protocol 5. Raise the minimum preview and the Development CI preview build version to 0.3.0.dev2 so older coverage descriptors and clock APIs cannot satisfy the updated dependency. Keep stable release selection within the xcomm 0.3 series. Extend clean-wheel verification to check the renamed descriptors and native clock ownership. Extend the generated Python Adder regression to reject DUT Step, raw/half stepping and competing engines while owned, exercise native cycle triggers and coverage counters, and verify manual stepping after release. Retain the existing direct XData and 128-bit arithmetic checks. Document the descriptor migration, ownership scope and phase-preserving release. Generated DUT Step already delegates to XClock, so the native guard protects it without another stepping implementation.
Pin development builds to xcomm c39db66, including typed bit-vector expressions and live-program collection. Align the Python requirement with the planned 1.x release and build CI previews as 1.0.0.dev0 while retaining native ABI 3 and coverage descriptor protocol 5. Extend installed-wheel verification to exercise 128-bit arithmetic and expression collection. Condense the maintainer guide to version and dependency alignment, local validation, release sequencing and recovery. Validation: 28 native tests, 11 release-policy tests, generated Python Adder integration, and clean installation and verification of both wheels.
yaozhicheng
approved these changes
Oct 22, 2026
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.
Description
Adapt Picker to the coverage-v2 xcomm SDK and native clock ownership in xcomm #30. Generated DUT signals use XData directly, and their Step entry points honor the native engine's exclusive clock ownership. Manual stepping resumes after the engine releases the clock.
This branch includes all three commits from Picker #114, followed by the coverage-v2 integration. The PRs overlap; #114 remains open for review history, and no PR is merged or closed by this change.
Release and compatibility
Release intent: release:minor for Picker. The paired xcomm PR is intended for a major package release; its native ABI remains 3, independently of the package version.
Rebuild generated native DUT extensions against matching xcomm headers and runtime. Generated leaves are XData objects: pass dut.signal directly to backend APIs in place of dut.signal.xdata. Coverage descriptors use XCoveragePoint and bin.point_id.
Merge prerequisite: the current development requirement, xspcomm>=0.3.0.dev2,<0.4, excludes the planned xcomm 1.x release. Before merging/releasing Picker, align its dependency range, preview-wheel version and maintainer documentation with the agreed xcomm major version, and rerun installation/release checks. The compatible xcomm release must be published first. This PR records that prerequisite without changing or publishing any tag.
Type of change
How Has This Been Tested?
Tests ran from an isolated checkout of 4dd442c using xcomm e64d862, GCC 11, CPython 3.12 and Verilator 5.026.
Checklist