docs: Record V1.2.4 in Script A's history and add the release note

Script A: header to V1.2.4 / 2026-10-01; entries for tray_id_stress.sh,
the Script A and Script B hooks, and 6_Blanton_Script_BER_Cycle.ttl,
with notes on the exec bit, the sleep-vs-Interval rule, the hard-coded
BDF, the hostname, the SONiC-only fan setting and the placeholder
password.

CLAUDE.md: status and last release to V1.2.4; the Tray ID stress and the
BER cycle in the overview; a commands block for tray_id_stress.sh; a
gotcha that prbsstat Ber must be read after the first interval is
published, and that Script A / C's own BER (Interval=30, sleep 30) sits
on that edge and has not been verified.

ARCHITECTURE.md: Script A ref and the tag checkbox to V1.2.4; Script 5's
current file name and the new macro 6 in the tree; tray_id_stress.sh in
the tree.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UniUXkxgCG2Ty74advL8Pd
This commit is contained in:
2026-10-01 13:32:14 +08:00
co-authored by Claude Opus 5.5
parent 7937ade30e
commit 4db9b45ce7
4 changed files with 131 additions and 7 deletions
+56 -2
View File
@@ -1,7 +1,7 @@
; =============================================================================
; Script A for Blanton
; Version : V1.2.3
; Date : 2026-09-23
; Version : V1.2.4
; Date : 2026-10-01
; Author : ETWen
; =============================================================================
; Version History:
@@ -740,6 +740,60 @@
; !! without -q the full PM table is printed every round, and
; Script 4 loops once a minute - the log grows by one full
; table per minute
; V1.2.4 2026-10-01 Blanton_Script/tray_id_stress.sh Created v1.0.0 - Tray ID I2C write / read-back stress
; Buses 34 / 35 / 38 / 39, device 0x70, register 0x02. Each
; bus: write 0xA5, read back, compare; write 0x5A, read back,
; compare - the two patterns put every bit in both states
; One line per step (PASS / FAIL / ERROR), then a per-bus
; Summary table and 'Tray ID stress RESULT: PASS|FAIL'
; Exit 0 = all PASS, 1 = any FAIL or I2C error, 2 = usage
; -n N repeats the sequence N times; buses / addr / reg /
; patterns are editable at the top of the file
; The original value is read first and written back at the
; end (verified by a read). -R leaves the register at 0x5A
; !! FAIL = the read worked but returned the wrong value;
; ERROR = i2cset / i2cget itself failed. They are counted
; apart because they point at different faults
; !! a bus whose original value cannot be read is NOT
; restored (there is nothing to restore to) - the line
; says so
; !! called by path, so it needs the exec bit on the DUT:
; chmod +x ~/Blanton_Script/*.sh
; ScriptA Add Tray ID stress after show_dmesg (one pass, baseline)
; ScriptB Add Tray ID stress to every soak round, before sleep 60
; Each round now writes 0xA5 / 0x5A to four Tray ID
; registers and restores them - 12 writes per round
; 6_Blanton_Script_BER_Cycle.ttl Added - Diag / SONiC BER cycle, a STANDALONE macro (not A/B/C)
; Each cycle: PRBS BER on unit 0 in the Diag OS, cold boot
; into SONiC, the same PRBS BER again, cold boot back to
; Diag; while 1, no end. Boot selection drives the BIOS
; Boot Manager ('USB Device' = Diag, 'Hard Drive' = SONiC)
; Log: Logs\Blanton_BER_Cycle_<ts>.log, timestamps always on
; Report tools (not shipped): tmp/BER_Test_Cycle/
; parse_multi.py, gen_multi_html.py, validate_prbsget.py
; prbsstat STArt Interval=30, then sleep 40, then Ber
; !! the sleep MUST be longer than the Interval. Checked
; against the error counts that 'prbs get' reports in the
; same cycle: with sleep 10 Diag read ~60x low and SONiC
; ~40x low; with sleep 30 (= Interval) Diag was still
; ~60x low - its Ber is sent 30.15 s after STArt, just
; before the first interval is published. Interval=30 +
; sleep 40 matched on both sides over 73 cycles. Every
; BER log taken before 2026-09-30 14:13 is low by 40-60x
; !! SONiC -> Diag cold boot writes pcimem
; /sys/bus/pci/devices/0000:05:00.0/resource0 0x480 with a
; hard-coded BDF (the Diag side uses fpga_switch.sh, which
; finds the FPGA itself). Check the BDF on every unit
; !! the SONiC password is the YourPaSsWoRd placeholder and
; the macro does not include config.ttl or secret/
; !! prompt_sonic_root is 'root@sonic:~#'. A unit whose
; hostname is not 'sonic' (M02 = Margin02) needs the
; prompts edited or the macro waits forever
; !! fan-speed-control.sh 30 is set on the SONiC side only;
; SONiC runs ~11 C hotter than Diag, a variable in any
; Diag vs SONiC comparison
; !! measures unit 0 only, port 268 not in the list, yet
; wait_init still waits for BOTH units (SWB_UNIT0/1 = 1)
; =============================================================================
include "config.ttl"