-
released this
2026-09-07 10:02:48 +08:00 | 4 commits to main since this release✨ New features
Full-machine SerDes DSC capture, before and after the soak
bcm_dsc_scan.shrunsphydiag <port> dscthrough the Broadcom diag shell across the whole port list — one 100G port plus the 200G ranges, about 445 per unit, on both units — and writes the raw log underBlanton_Script/log/, then copies it to/host/hw-eval/jobs/.- Script A takes a baseline and Script C takes a closing dump, so the pair brackets the stress run and the two are directly comparable.
-u 0scans one unit,-f <name>names the log (%u→u0/u1,%t→ timestamp),-Foverwrites,-ndry runs,-Cskips the copy. A name without%ugets_u0/_u1inserted automatically, so unit 1 can never overwrite unit 0.- Every run ends with
### DSC_SCAN_DONE rc=<n>.rc=0means every port returned a complete dump. phydiag ... dscis read-only — it does not change any SerDes setting.
bcm_dsc_parse.shturns a raw DSC log into two CSVs<prefix>_lane.csv— one row per lane: TXEQ, RXFFE, DFE, EYE, SNR and the rest.<prefix>_pm.csv— one row perpm_id: temperature, PLL, lane count, SNR/EYE statistics.- POSIX
sh+awk, no Python, so it runs on the DUT as happily as on a laptop. Lane rows are read by the order of their bracket groups rather than by fixed column positions, so the SDK re-spacing its output does not break parsing; a row that does not yield 9 groups is reported asUNPARSEDon stderr instead of being parsed wrongly.
EN_TX_FIRinconfig.ttl— the DSC scan is off by default- A full scan is about 10 minutes and both Script A and Script C do one, so the shipped default (
0) keeps ~20 minutes out of a routine run. Set it to1when the SerDes data is what you are after.
The macro now waits on the DUT instead of on itself
- Every
pause Nin Scripts A, B and C becamesendln "sleep N"followed bywait prompt_sonic_root. pausestopped the macro for N seconds without touching the DUT — the shell sat idle and the macro was guessing how long the previous command would take. On a loaded DUT the guess ran short and the next command went out before the previous one had finished, putting the whole run a beat ahead of the switch. Now the wait happens on the DUT and the macro resumes when the prompt actually comes back.- It also means the wait appears in the console log with a timestamp, so a round that ran long is visible afterwards.
- Timings changed with it: the management-ping sample in Script A is 15 s (was 30), the settle after each traffic
clearis 5 s (was 15). The traffic run itself stays 15 s and Script B's monitor loop stays 60 s.
🐛 Bug fixes
The DSC scan only ever scanned one port — and reported success
- The scan loop read its port list on stdin, and
bcmcmdreads stdin too, so the first call swallowed the rest of the file and the loop ended after a single port. - Nothing looked wrong. The log held one port marker and one dsc block, the marker-to-dump comparison passed because both numbers shrank together, the exit code was 0, and a 445-port scan simply finished in seconds.
- The loop now reads on file descriptor 3 and
bcmcmdis given< /dev/null, and there is a new check that the number of iterations matches the number of ports in the list — a check that cannot be fooled by the loop ending early.
Dead call sites removed from Scripts A, B and C
- The commented-out 100G PRBS calls, a duplicated commented 100G port-status block in Script A, and the stale
bmc_monitor_ddr.shblock in Script C have been deleted. They had been dead since bring-up. port_prbs_monitor.shstill ships and still runs by hand — but re-enabling it means writing the calls again, not un-commenting them.
🔧 Changes
- Script C no longer prints the BMC poll log or the mlucas log to the console. Both files are still copied to
/host/hw-eval/jobs/and out to the USB stick with everything else; only the master log got shorter.
📦 Downloads
File Contents Script_ABC_Blanton_V1.2.0.zipThe full Tera Term working directory, including Blanton_Script/to copy onto the DUTAfter copying to the DUT:
chmod +x ~/Blanton_Script/*.sh # bcm_dsc_scan.sh is invoked as ./Blanton_Script/... and needs it grep -rlU $'\r' ~/Blanton_Script # expect no output ls ~/hammer/tools/amd/mlucas-avx2 # must already be there⚠️ Before you run
- Replace
config.ttlalong with the macros.EN_TX_FIRis new, and Tera Term aborts on an undefined variable rather than treating it as 0. bcm_dsc_scan.shneeds the execute bit. Script A and Script C invoke it as./Blanton_Script/bcm_dsc_scan.sh. Withoutchmod +xit fails withPermission denied, the macro walks straight past it, and Script C's fourcplines then each report a missing file.- The DSC scan shares the ports with
blanton_ber.sh,blanton_traffic_linespeedandblanton_tr518.sh— do not run it alongside any of them. - Script 4 and Script 5 still use
pause. Only A, B and C were converted. --runtimeis the job's overall limit, not a per-pass one.--passesdoes not extend it; for a 24 hour soak setRUNTIMEto86400.- Script 4 has no teardown: finish it with
blanton_tr518.sh stopandsystemctl stop mlucas-amm. - Script 5 (reboot cycle) is still unverified on hardware, has no exit condition, and its
wait "Booting in blind mode"has notimeoutguard. blanton_multiphase_margin.sh saveis permanent, and must not be mixed withmargin.sh.READ_VINandREAD_IINare still not in the ADPM12200 coefficient table.- The BMC USB service log only exists on the USB stick.
FAN_SPEEDis 100.- Still unverified from v1.1.0: the
ce0ingress mirror, the 120 s settle inblanton_tr518.sh, andtest mode nr=noon stop.
🔗 Links
- ARCHITECTURE.md — test flow, data models, constraints
- CLAUDE.md — commands and the bench gotchas
- Blanton_Test_Flow.drawio — the scripts side by side
Full changelog: V1.1.8...V1.2.0
Downloads