Skip to content

Update xrfdc package to v2025.2 - #1669

Open
jogomojo wants to merge 2 commits into
Xilinx:pynq-nextfrom
jogomojo:update-xrfdc
Open

jogomojo wants to merge 2 commits into
Xilinx:pynq-nextfrom
jogomojo:update-xrfdc

Conversation

@jogomojo

Copy link
Copy Markdown
Collaborator

This PR is a comprehensive update to the RFSoC xrfdc driver moving to the latest PYNQ-supported version of the tools (2025.2) and exposing much more of the embeddedSW C driver functionality than before (including MTS). This should be almost entirely backwards compatible with code targeting the old driver (except the RFSoC-MTS repo, and a few non-critical functions described at the bottom here), so no changes to your codebase should be necessary.

Classic driver (sdbuild/packages/xrfdc)

  • Build libxrfdc.so from embeddedsw xilinx_v2025.2 (was xilinx-v2020.2), with the updated stubs and xparameters.h
  • Resync xrfdc_functions.c structs and prototypes with the 2025.2 xrfdc.h, including the reworked clock distribution and signal detector structs
  • Wrap the full C API using C-mirroring names, adding:
    • MTS: MultiConverter_Init, MultiConverter_Sync, MTS_Sysref_Config, MTSEnable
    • Tile control: CustomStartUp, WaitForState, MultiBand
    • Settings: SignalDetector, Coupling/LinkCoupling, DACDataScaler, ConnectedIQData, SetClkDistribution
    • Queries: Max/MinSampleRate, GetFabClkFreq, GetDriverVersion, GetTileLayout, block/tile enable and data-type getters
    • Register helpers: RDReg, ClrSetReg, ClrReg
  • Add module constants for tile type, tile states, data types, multiband modes, link coupling, signal detector modes, calibration blocks, tile layouts and MTS sysref
  • Fix GetConnectedIData/GetConnectedQData not returning a value; GetCalCoefficients and GetFIFOStatusObs now return values and SetCalCoefficients takes a dict
  • Read the new NCOFreq and DAC LinkCoupling HWH parameters, with defaults so older HWH files still load
  • Rename ShutDown to Shutdown to match C (ShutDown kept as an alias); bump the package to 2.0
  • Update README with the 2025.2 API list and the supported IP versions

Remote driver (pynq-cpp gRPC server and pynq.remote.xrfdc)

  • Extend xrfdc.proto with RPCs for every newly wrapped function and reshape clock distribution to the 2025.2 struct (old field numbers reserved)
  • Add the matching server handlers in xrfdc.cc/xrfdc.h
  • Bring the remote client to parity with the classic API (same names and dict shapes); regenerate xrfdc_pb2*.py

Breaking changes

  • ClkDistribution is now read-only and returns the 2025.2 system struct (Distributions[8]); write through SetClkDistribution(dict)
  • GetCalCoefficients(block) returns a dict, SetCalCoefficients(block, dict) takes one, and GetFIFOStatusObs() returns the value directly

@codecov-commenter

codecov-commenter commented Oct 18, 2026 •

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 34.04%. Comparing base (d90670c) to head (4bc5b2a).
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@            Coverage Diff             @@
##           pynq-next    #1669   +/-   ##
==========================================
  Coverage      34.04%   34.04%           
==========================================
  Files             42       42           
  Lines           4814     4814           
  Branches         837      837           
==========================================
  Hits            1639     1639           
  Misses          3110     3110           
  Partials          65       65           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

This branch has not been deployed

No deployments
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