feat(thermal): Add a standalone thermal/safety run, and move margin out of the soak loop
4_Blanton_Script_thermal_safety.ttl brings the DUT up the way Script A does, then loads it - mlucas-avx2 -cpu 0:15 in the background plus blanton_tr518.sh start - and samples platform data and both switch boards' rail power every minute. Power per rail under sustained full load, over hours, is the whole point of it. It is standalone: nothing starts it, it starts nothing, and it must not share a DUT with Script B because both take over the cd ports. It also has no teardown. When you interrupt it the unit is still in port cd lb=mac / l2 learn off / test mode nr=yes and mlucas is still running, and show interfaces status does not reveal any of that. Called out in the version history, the release notes, CLAUDE.md gotchas and the ARCHITECTURE future-work list, because whoever uses the box next will not find out on their own. Script B's per-round loop drops the margin scan. The loop is meant to be a quick minute-by-minute sample and margin_status_all.sh walks nine LTC2980s over I2C, which dominated the round. Script C takes it instead, once, before show uptime. The trade-off is real: margin drift DURING the soak is no longer visible, only a start and an end reading. Documented rather than glossed over, with a suggestion (scan every N rounds) if it needs to come back. Script C also sends exit and waits for "Script done" before hw-test-session finish, so finish runs in the login shell rather than inside the session it is closing. Adds docs/Blanton_Test_Flow.drawio: all four scripts side by side, with the config flags that change each step marked, Script B's one real goto drawn, and the A->B->C handoffs shown as the manual steps they are. The new script arrived LF-only while every other .ttl is CRLF and .gitattributes marks *.ttl as -text, so what is committed is exactly what Tera Term reads. Converted. Script A -> V1.1.4. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014RetWKFZFG1ZHcitQAyhwM
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
# v1.1.4 — A thermal and safety run that loads the box and watches the rails
|
||||
|
||||
## ✨ New features
|
||||
|
||||
**`4_Blanton_Script_thermal_safety.ttl`**
|
||||
* A **standalone** script — it is not part of the A → B → C chain and is not started by any of them. Run it on its own when the question is thermal or safety rather than functional.
|
||||
* Brings the DUT up the same way Script A does (login, session reset, fan speed, `wait_init`, DUT inventory, BMC, PCIe error clear, `pcie_bus`, PMON, dmesg), then loads it: `mlucas-avx2 -cpu 0:15` in the background and `blanton_tr518.sh start` on the data plane.
|
||||
* Then loops every minute: platform data, **both switch boards' rail power** via `TH6_SWB0/1_power_readback.sh`, and `bgctl list` / `jobs`. That is the point of the script — power per rail under sustained full load, sampled over hours.
|
||||
* **It has no teardown.** When you interrupt it the DUT is still in `port cd lb=mac`, `l2 learn off` and `test mode nr=yes`, and `mlucas-avx2` is still running. Run `blanton_tr518.sh stop` and `kill $(jobs -p)` before anything else uses the box — nothing in `show interfaces status` reveals the leftover state.
|
||||
* **It cannot share a DUT with Script B.** Both take over the `cd` ports.
|
||||
|
||||
**Test flow diagram**
|
||||
* `docs/Blanton_Test_Flow.drawio` draws all four scripts side by side, with the config flags that change each step marked, the one real `goto` in Script B drawn, and the manual handoffs between A → B → C shown as such.
|
||||
|
||||
## 🐛 Bug fixes
|
||||
|
||||
**The soak loop spent most of its minute reading margin**
|
||||
* Script B's per-round loop is meant to be a quick sample. `margin_status_all.sh` walks nine LTC2980s over I2C and dominated the round. The scan moved to Script C, which takes it once before `show uptime`.
|
||||
* **The trade-off is real and worth knowing**: margin is now only measured at the start (Script A) and the end (Script C). Drift that happens *during* the soak is no longer visible.
|
||||
|
||||
**`hw-test-session finish` ran from inside the session's own shell**
|
||||
* Script C now sends `exit` and waits for `Script done` first, so `finish` runs in the login shell that opened the session.
|
||||
|
||||
**The new script arrived with LF line endings**
|
||||
* Every other `.ttl` in the repo is CRLF, and `.gitattributes` marks `*.ttl` as `-text` — whatever is committed is exactly what Tera Term gets. Converted to CRLF to match.
|
||||
|
||||
## 📦 Downloads
|
||||
|
||||
| File | Contents |
|
||||
|---|---|
|
||||
| `Script_ABC_Blanton_V1.1.4.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` 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
|
||||
|
||||
* **Script 4 leaves the switch loaded and looped back.** Always finish with `blanton_tr518.sh stop`. If the next test starts without it, traffic and BER results are meaningless and nothing warns you.
|
||||
* **Do not run Script 4 and Script B on the same DUT.** Same ports, same L2 settings.
|
||||
* **Margin is no longer sampled during the soak** — only Script A (start) and Script C (end).
|
||||
* **Re-baseline your margin limits if you have not already**: `VNOM` became the measured median in v1.1.3, which moved both the deviation % and the margin window.
|
||||
* **These three cannot share the switch**: `blanton_ber.sh`, `blanton_tr518.sh`, `blanton_traffic_linespeed`.
|
||||
* **PRBS takes the links down** while `blanton_ber.sh` is armed.
|
||||
* **`ce0` keeps circulating until you stop it.**
|
||||
* **Two numbers must stay in step**: Script C's `sleep 30` and `blanton_ber.sh`'s `BER_INTERVAL`.
|
||||
* **`FAN_SPEED` is 100** — relevant here more than anywhere: a thermal run at full fan is not the same test as one at 30%.
|
||||
* **The three items listed as unverified in v1.1.0 are still unverified**: the `ce0` ingress mirror, the 120s settle in `blanton_tr518.sh`, and `test mode nr=no` on stop. The settle matters most for this release — Script 4 depends on `tr 518` still driving traffic minutes after it was started.
|
||||
|
||||
## 🔗 Links
|
||||
|
||||
* [Blanton_Test_Flow.drawio](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/src/branch/main/docs/Blanton_Test_Flow.drawio) — the four scripts side by side
|
||||
* [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
|
||||
|
||||
**Full changelog:** [V1.1.3...V1.1.4](https://etgit.et-wen.com/etwen/Blanton_TTL_Script/compare/V1.1.3...V1.1.4)
|
||||
Reference in New Issue
Block a user