Release Candidate v2.71.1#1423
Draft
ruck314 wants to merge 17 commits into
Draft
Conversation
Each AXIL transaction previously wrote a single byte to the I2C MUX
channel-select register and assumed the device would atomically replace
the prior channel. On the BittWare XUP-VV8 this leaves enough sticky
state on TCA9548 channels 5 and 7 (QSFP slots 1 and 3) that the second
I2C transaction targeting those slots returns RESP=2 SLVERR and every
subsequent access cascades. Channels 4 and 6 (slots 0, 2) happen to
tolerate the same sequence, which made the failure look QSFP+ specific
when the actual differential is the TCA9548 channel mask.
Insert an explicit deselect-all write (0x00) before the channel-select
write. 0x00 is the documented "no channel selected" state for every
device in I2cMuxPkg.vhd (TCA9548, PCA9547, PCA9544A, PCA9546A, PCA9540B),
so the fix applies uniformly regardless of which decode map is used.
Two new states are added to the existing FSM:
DESELECT_S - waits for the 0x00 write to ack, then loads the saved
target channel mask and pulses i2cRstL low again.
MUX_RST_S - mirrors RST_S but transitions straight to MUX_S so the
deselect path does not re-enter DESELECT_S.
The chanMask record field carries the target channel mask through the
deselect-write phase. Flow is now:
IDLE_S -> RST_S -> DESELECT_S -> MUX_RST_S -> MUX_S -> XBAR_S -> IDLE_S
Validated on a BittWare XUP-VV8 (VU13P) with QSFP28 in slot 0 and QSFP+
modules in slots 1, 2, 3:
Before: slots 1 and 3 fail every transaction after the first one;
Qsfp[1].ReadDevice() cascades into hundreds of SLVERRs.
After: 300/300 ok on every slot in a sustained burst (~940 txn/s),
Qsfp[i].ReadDevice() succeeds on all 4 slots, ErrorCount = 0.
The change is additive for existing surf users - the deselect step is a
single extra I2C byte write per AXIL transaction and gives every
MUX-fronted bus the same clean channel-select handshake regardless of
whether the previous downstream device left the bus in a marginal state.
Removed redundant description attribute causing software to fail
Post-PR #1421 cleanup pass focused on English-word typos in user-facing prose, plus one small kwargs-collision fix retained from the original audit. No behavioural change. Net changes: 143 files, +237/-237 lines. Python typos -- 24 files, 39 fixes Audited every .py under python/ and tests/ via 6 parallel review passes. tests/ was clean. Highlights: analog_devices/_Adt7420.py Analod Deviced -> Analog Devices analog_devices/_Ad9249.py Regsisters -> Registers analog_devices/_Ad9249.py Compliment -> Complement silabs/_Si5{324,326,5345Lite,5394Lite}.py conflagration -> configuration silabs/_Si5345Pages.py Ready Only -> Read Only ti/_Ads54J54.py dcimation -> decimation ti/_Lmk61e2.py retreived -> retrieved xilinx/_AxiSysMonUltraScale.py Managment -> Management xilinx/_AxiSysMonUltraScale.py defatul -> default protocols/jesd204b/_JesdRx.py / _JesdTx.py brake/missaligned/Indicades/undeflow/funtionality/ checkes/re-syncronisations -> fixed British spellings (synchronised, re-synchronisations) preserved where already used. VHDL typos -- 119 files, 197 fixes Audited every .vhd under axi/, base/, devices/, dsp/, ethernet/, protocols/, and xilinx/ via 8 parallel review passes (1146 files total). Only -- comment text was touched. No signal, port, process, entity, generic, or component names were renamed; no string literals in report/assert statements were modified. Most prevalent (boilerplate copy-paste families): 7Series GT clones (gtx7/gth7/gtp7) sucessfully -> successfully (x9) Tranceiver -> Transceiver (x3) PGP Axi banners Errror -> Error (x6) pgp2b/pgp2fc/pgp3 *Pkg / *RxPhy / *RxCell occured -> occurred (x10) XauiCore wrappers adn -> and (x16 in repeated boilerplate) AD9249/AD9681 readout primatives/primative/curDealy -> primitives/primitive/curDelay xvc-udp JTAG paylod/paralle/the the -> fixed Real-English-word substitutions verified per occurrence (not bulk-replaced): weather->whether, it->if, na->and, od->of, got->go, dessert->deassert, rests->resets, with->without, read->ready, an->and, save->same, though->through, knowns->knows, incase->in case, to to->to, the the->the, Interfac e->Interface Pre-flight verified that every misspelled string only appears in -- comment lines (never as an identifier or in code) before any bulk substitution. British spellings preserved. AdcTester kwargs fix -- 1 file The only kwarg-hardening change retained from the post-PR #1421 audit: python/surf/devices/analog_devices/_Ad9249.py AdcTester.__init__ accepts description as a named parameter, eliminating the TypeError: got multiple values for keyword argument 'description' when a caller passes description=. The other 8 wrappers identified in the original audit (AxiMonAxiL, Ltm4664, Si5345, Si5394, PhantomS711, PMBus, Pgp3AxiL, Pgp4AxiL) were prepared but reverted; they remain at their pre-release shape. Verification: python -m compileall -f python/ -- clean flake8 --count python/ -- 0 scripts/vsg_linter.sh -- No issues found cocotb regression suite NOT run locally; it requires the make MODULES=$PWD import HDL pipeline only available in CI.
Typo cleanup: Python descriptions/comments and VHDL comments
AxiLiteCrossbarI2cMux: deselect TCA9548 channels between transactions
Add targeted cocotb regression coverage for FIFO pressure and recovery, RAM collision and enable semantics, SynchronizerFifo read-enable gaps, Arbiter starvation rotation, WatchDogRst near-timeout keepalive noise, and SlvDelayFifo/SlvDelayRam reset and runtime-delay behavior. Document the SlvDelayRam runtime maxCount contract in the RTL description header. Formalize the cocotb regression test style guide in tests/README.md and refine the CoaXPress regression docs and tests.
Deepen base regression coverage
Document SURF agent and contributor conventions
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