Script A's Version History gains the reboot-cycle macro, the Script B timeout fix, the tmp/ rule and the stress knobs. CLAUDE.md: current status to V1.1.7, a Script 5 paragraph, tmp/ in the folder list, and two gotchas rewritten - the timeout one now covers both restore positions, and --runtime is described as the job's overall limit rather than "a 24 hour ceiling". Dropped the stale "TR518 not scripted yet" line. ARCHITECTURE.md: Script 5 in the tree and in Key Features, tmp/ in the tree, constraint 14 extended with "copy the :label along with the goto", and two known issues added for the parts not yet run on hardware. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014RetWKFZFG1ZHcitQAyhwM
74 lines
5.9 KiB
Markdown
74 lines
5.9 KiB
Markdown
# v1.1.7 — A way back from a margin, and a reboot cycle that runs itself
|
||
|
||
## ✨ New features
|
||
|
||
**`blanton_multiphase_margin.sh normal` — put the rails back without a power cycle**
|
||
* `normal` returns all 38 multiphase rails to their nominal set point, with the same per-rail reporting as the margin profiles (`SWB0_0V9_ANLG0 - 0.930V Configure Done`). `-u 0|1|all` as usual.
|
||
* Until now the only way out of a margin was to power-cycle the DUT. That mattered more than it sounds: `save` run while the board was still margined would have written the offsets into NVM, where a power cycle does not help either.
|
||
* The commands it sends are in `tools/Multiphase_Normal.txt` for anyone driving the bench by hand.
|
||
|
||
> ⚠️ `TH6_CORE` is 0.8 V nominal but settles near **0.8591 V** once the load line is active. Reading back 0.859 after `normal` is the load line doing its job, not a failed write.
|
||
|
||
**`5_Blanton_Script_Reboot_Cycle.ttl` — an unattended reboot-cycle run**
|
||
* A standalone macro, like Script 4: it does **not** chain to A → B → C and does not use `hw-test-session`. Every cycle is a fresh boot, so there is nothing to carry over and nothing to tear down.
|
||
* Each round: login → `sudo -i` → `date -s` → fan speed → `wait_init` → **Check Pt1 … Pt13** → `show uptime` → `reboot` → wait for the next boot. The cycle number is printed in the banner of every round.
|
||
|
||
| | | | |
|
||
|---|---|---|---|
|
||
| **Pt1** DUT info | **Pt2** BMC info + tools | **Pt3** mgmt ping | **Pt4** NFC poll |
|
||
| **Pt5** SSD stress | **Pt6** USB stress | **Pt7** BMC USB net | **Pt8** port status + 15 s traffic |
|
||
| **Pt9** BER sweep | **Pt10** NVMe errors | **Pt11** platform data | **Pt12** dmesg i2c |
|
||
| **Pt13** PCIe error counters | | | |
|
||
|
||
* The USB step takes its device node from `usb_target.sh`, not a hard-coded `/dev/sda1`.
|
||
|
||
**The SSD and USB stress durations are declared in `config.ttl`**
|
||
* `SSD_RUNTIME` / `SSD_COUNT` and `USB_RUNTIME` / `USB_COUNT` replace the values that were hard-coded in Script B, so a site changes them in one place. `COUNT` is passed straight through as `--passes`.
|
||
|
||
## 🐛 Bug fixes
|
||
|
||
**Script B left the global `timeout` at 15 s for the rest of the cdc_ncm section**
|
||
* The NCM probe sets `timeout = 15` and restored it only at `:skip_ping` — which the *success* path reaches several `wait`s later. Until then every `wait` gave up after 15 s instead of blocking, and a `wait` that returns without eating the prompt puts the whole macro a beat ahead of the DUT. It is now restored on the success path too.
|
||
|
||
**`goto skip_ping` in the reboot-cycle macro had no label to jump to**
|
||
* The probe was copied out of Script B without its `:skip_ping` label. Tera Term does not check labels when it loads a macro — it raises the error only when it actually jumps, which here means only when the NCM interface is missing. The failure mode was an error dialog stopping the whole cycle, on the one run where something was already wrong. The label is there now, and the `timeout` is restored **before** the branch so one line covers both paths.
|
||
|
||
**Two check points both numbered 12**
|
||
* `Dmesg_i2c` and `PCIE Error Counters` both announced themselves as `Check Pt12`. The second is now `Pt13`; Pt1 … Pt13 are unique.
|
||
|
||
## 📦 Downloads
|
||
|
||
| File | Contents |
|
||
|---|---|
|
||
| `Script_ABC_Blanton_V1.1.7.zip` | The full Tera Term working directory, including `Blanton_Script/` to copy onto the DUT |
|
||
|
||
**After copying to the DUT:**
|
||
|
||
```bash
|
||
chmod +x ~/Blanton_Script/*.sh # see below
|
||
grep -rlU $'\r' ~/Blanton_Script # expect no output
|
||
```
|
||
|
||
`blanton_ber.sh`, `nfc_polling.sh`, `blanton_tr518.sh`, `blanton_multiphase_margin.sh`, `pwr_brick.sh` and the two `TH6_SWB*_power_readback.sh` are invoked through `./` or `~/`, so they need the execute bit along with `bmc_monitor.sh` and `usb_target.sh` — neither git nor a Windows/USB copy carries it reliably.
|
||
|
||
## ⚠️ Before you run
|
||
|
||
* **`--runtime` is the job's overall limit, not a per-pass one.** `qfx5252-stress-*` stops after `RUNTIME` seconds whatever `--passes` says, so `SSD_RUNTIME=600` is a **10 minute** stress, not 600 × `SSD_COUNT`. For a 24 hour soak set `RUNTIME` to `86400`. The shipped defaults are 600.
|
||
* **Script 5 has not been run on hardware yet.** Two things to confirm on the bench: that `wait "Booting in blind mode"` really appears in this build's boot output — it has no `timeout` guard, so a changed string waits forever — and that re-running `bmc-first-enroll` every cycle is safe.
|
||
* **Script 5 has no exit condition.** `while 1` with a `reboot` at the end of each round; stop it by closing the Tera Term macro.
|
||
* **`blanton_multiphase_margin.sh save` is permanent**, and must not be mixed with `margin.sh` — same rails, two access paths, no interlock. Never run it while the board is margined.
|
||
* **`READ_VIN` and `READ_IIN` are still not in the ADPM12200 coefficient table** — `pwr_brick.sh` decodes them with the voltage and current coefficients. Confirm before quoting brick Vin.
|
||
* **The BMC USB service log only exists on the USB stick.**
|
||
* **Script 4 (thermal/safety) has no teardown** — finish with `blanton_tr518.sh stop` and `kill $(jobs -p)`.
|
||
* **These three cannot share the switch**: `blanton_ber.sh`, `blanton_tr518.sh`, `blanton_traffic_linespeed`.
|
||
* **`FAN_SPEED` is 100.**
|
||
* **Still unverified from v1.1.0**: the `ce0` ingress mirror, the 120 s settle in `blanton_tr518.sh`, and `test mode nr=no` on stop.
|
||
|
||
## 🔗 Links
|
||
|
||
* [ARCHITECTURE.md](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/src/branch/main/ARCHITECTURE.md) — test flow, data models, constraints
|
||
* [CLAUDE.md](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/src/branch/main/CLAUDE.md) — commands and the bench gotchas
|
||
* [Blanton_Test_Flow.drawio](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/src/branch/main/docs/Blanton_Test_Flow.drawio) — the scripts side by side
|
||
|
||
**Full changelog:** [V1.1.6...V1.1.7](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/compare/V1.1.6...V1.1.7)
|