Script A: four entries under V1.2.2 for blanton_ber.sh v1.1.0 and v1.1.1, bcm_100g_dsc_cycle.sh, and tools/100G_dsc_cycle.txt; header date to 2026-09-15. CLAUDE.md: status to V1.2.2; the BER paragraph notes port 268 and the per-unit group summary; a commands block for bcm_100g_dsc_cycle.sh; the BER command block notes the three summary rows and that a zero-lane group is a failure; and a new gotcha that 'prbs get' output is data, not diagnostics. ARCHITECTURE.md: Script A ref to V1.2.2; the BER row covers port 268 and the group summary; a Key Features row for the 100G cycle test; both new files in the tree; the git tag checkbox to V1.2.2; a known issue for the unverified cycle script; and one recording that a completeness check which cannot see a failure has now bitten this repo three times - bcm_dsc_scan.sh counting its own markers, blanton_ber.sh reading lane results as shell errors, and the power-cycle report parser turning a 100% packet loss into "no data". Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014RetWKFZFG1ZHcitQAyhwM
5.7 KiB
5.7 KiB
v1.2.2 — The 100G uplink joins the BER sweep, and a boot cycle that can pull the power
✨ New features
The BER sweep now measures port 268, the 100G uplink
- The port list ran
256-259straight to270-308, soce0(268)— the 100G uplink — was never in it. It is now its own group alongside the 200G ports. - The summary gives each unit three rows:
200G ports,100G p268, andTOTAL. Unit 0 and unit 1 each have their ownce0(268), and a marginal uplink lane averaged into 432 others is invisible; on its own row it is not. - A group that reports no lane at all now counts as a failure, not a pass. Silence on the port under test is the easiest way to ship a green report that measured nothing.
Script 5 is now a boot cycle, warm or cold
5_Blanton_Script_Reboot_Cycle.ttl→5_Blanton_Script_Boot_Cycle.ttl, withEN_Cold_Warm_bootinconfig.ttlchoosing:1=reboot(warm),2= a cold cycle by writing the CB FPGA,0= neither.- The log file and the per-round banner are named after the kind of boot:
Blanton_Reboot_Cycle_<ts>.log/Reboot Cycle : N, orBlanton_Power_Cycle_<ts>.log/Power Cycle : N. - Both stress logs are removed before each run.
qfx5252-stress-*appends to its--logand the macrocats the whole thing, so every cycle was printing back everything the earlier cycles had written — 289 lines at cycle 1 and 36,555 by cycle 199. At roughly 6.2 ms a line on a 115200 console that accounted for +212 s of the +214 s the cycle grew over a 199-cycle run. The DUT was never getting slower.
bcm_100g_dsc_cycle.sh — 100G link down/up cycling with SerDes capture
- Tuning once, then N cycles of
port 268 en=0→ wait →en=1→ wait →phydiag 268 dscon both units → retimerserdes-tx-get/serdes-rx-getforsys 0..7. One log per run under~/dsc_log/, split by### TEST CYCLE n/N. - Waiting is a poll of
bcmcmd ps 268, notshow interfaces status.port en=changes the SDK, and the SONiC table only follows once gbsyncd has synced it — and this test pauses gbsyncd. -dechoes every command as a grey[CMD]line before running it;-nis a dry run that touches nothing; the cycle count can be a bare argument (./bcm_100g_dsc_cycle.sh 200).
🐛 Bug fixes
blanton_ber.sh init reported a hard error on runs that were working
[ERR ] unit 1: the BCM shell rejected 'phydiag ... prbs get'— except the command was fine.prbs getprints one line per lane, a lane that has not locked saysPRBS Error!, and the rejection check grepped the whole output case-insensitively forERROR|Invalid|....- Worse than the false alarm: the function returned early, so the lock count that was meant to judge those very lanes never ran. The operator saw an error they could not act on, and did not see which lanes had failed to lock. That check has been there since v1.0.0.
- Per-lane result lines are now excluded, the match is case-sensitive, and a genuine rejection prints the offending line.
🔧 Changes
- Script A takes a BER baseline before its first traffic run (v1.2.1), so together with Script C's closing sweep the pair brackets the soak.
EN_TX_FIRgates the SerDes DSC scans in Script A and Script C. Default0: a full scan is ~10 min and both scripts do one.
📦 Downloads
| File | Contents |
|---|---|
Script_ABC_Blanton_V1.2.2.zip |
The full Tera Term working directory, including Blanton_Script/ to copy onto the DUT |
chmod +x ~/Blanton_Script/*.sh
grep -rlU $'\r' ~/Blanton_Script # expect no output
ls ~/hammer/tools/amd/mlucas-avx2 # must already be there
⚠️ Before you run
- Replace
config.ttlwith the macros.EN_Cold_Warm_bootis new, and Tera Term aborts on an undefined variable rather than treating it as 0. - Do not run the boot cycle with
EN_Cold_Warm_boot = 0. Nothing reboots, thewait "Booting in blind mode"underneath has no timeout, and since v1.2.2 there is nologopeneither — so it hangs and leaves no log showing where.0is the value for the A → B → C flow, where that macro is not used. - The cold path writes a raw FPGA register.
0x480isICB_CTRL_REG; the register map carries no bit definitions for it and0xD0000is not documented anywhere in this repo. The BDF0000:05:00.0is hard-coded whileblanton_fpga_pcimem.shauto-detects it because it moves per unit — check the BDF on every board before running the cold path. - Anything that parses these logs must accept both banners,
Reboot Cycle : NandPower Cycle : N. A parser that greps only the first finds zero cycles in a power-cycle log and reports nothing without complaining. bcm_100g_dsc_cycle.shhas not been run on hardware. It pausesgbsyncd0/1for tuning and unpauses them on exit, Ctrl-C included;-Pleaves them alone.sleep 30andBER_INTERVALnow live in three places — Script A, Script C andblanton_ber.sh.- BER, the DSC cycle,
blanton_traffic_linespeedandblanton_tr518.shcannot overlap. They all take the same ports. - Script 4 has no teardown: finish it with
blanton_tr518.sh stopandsystemctl stop mlucas-amm. blanton_multiphase_margin.sh saveis permanent, and must not be mixed withmargin.sh.READ_VINandREAD_IINare still not in the ADPM12200 coefficient table.FAN_SPEEDis 100.
🔗 Links
- ARCHITECTURE.md — test flow, data models, constraints
- CLAUDE.md — commands and the bench gotchas
Full changelog: V1.2.1...V1.2.2