User-facing docs: --commands-md flag, doc/user/ tree, anonymised script.

- `essim --commands-md [file]` instantiates the Tui, calls
  `Tui::DumpCommandsMd(ostream&)` which iterates the live registry and
  emits Markdown grouped by interactive/other, then exits. Single
  source of truth: a new `CommandSpec` field surfaces automatically.
- CMake `doc` target now `DEPENDS essim` and chains:
    doxygen → gen_api_md.py → doc/api/
    essim --commands-md      → doc/user/commands.md
- `doc/user/` adds:
    - index.md (hand-written) — first session, interactive-screen
      conventions, save/restore/replay overview.
    - scripting.md (hand-written) — `set`/`$var` expansion semantics,
      `source` event-paced execution, script-save denylist, worked
      example pointing at test/system.essim.
    - commands.md (auto-generated, regenerated by the `doc` target).
- Top-level README refocused on quick start; pointers to the new
  doc tree (user/, api/, DESIGN.md) instead of an inline command table.
- doc/README.md and DESIGN.md document the two-pipeline doc workflow.
- `test/system.essim` and user docs anonymised: bkp → backplane,
  vdn1/2/3 → payload1/2/3, cb3p → payload4, bpb/cob/ssu →
  peripheral1/2/3; netlist file names + variable names + paths all
  replaced with generic equivalents.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-12 08:29:45 +02:00
parent 66460262af
commit 043fef0a31
16 changed files with 825 additions and 242 deletions

View File

@@ -1,86 +1,89 @@
# essim system bring-up script.
# essim system bring-up script (anonymised sample).
#
# Layout: one VPX 3U backplane carrying four payload cards (three of the
# same kind, one specialised) and three peripheral cards wired non-VPX.
new
# ---------------------------------------------------------------- variables
set test_dir /home/francois/Projets/essim_test
set bpb_nets $test_dir/BPB-2177-10222_NETLIST_3_1.qcv
set bkp_nets $test_dir/MERCVPX3UBPA_20221122.NET
set cb3p_nets $test_dir/CB3P-6359-10232_NETLIST_3_0.qcv
set vdn_nets $test_dir/VDN-2910.qcv
set cob_nets $test_dir/COB-2277_NETLIST_10211_2_0.qcv
set ssu_nets $test_dir/SSU-2134_PCB873.qcv
set netlist_dir /path/to/netlists
set peripheral1_nets $netlist_dir/peripheral1.qcv
set backplane_nets $netlist_dir/backplane.NET
set payload4_nets $netlist_dir/payload4.qcv
set payload_nets $netlist_dir/payload.qcv
set peripheral2_nets $netlist_dir/peripheral2.qcv
set peripheral3_nets $netlist_dir/peripheral3.qcv
# ---------------------------------------------------------------- modules
load vdn1 $vdn_nets mentor
duplicate vdn1 vdn2
duplicate vdn1 vdn3
load bpb $bpb_nets mentor
load bkp $bkp_nets altium
load cb3p $cb3p_nets mentor
load cob $cob_nets mentor
load ssu $ssu_nets mentor
load payload1 $payload_nets mentor
duplicate payload1 payload2
duplicate payload1 payload3
load peripheral1 $peripheral1_nets mentor
load backplane $backplane_nets altium
load payload4 $payload4_nets mentor
load peripheral2 $peripheral2_nets mentor
load peripheral3 $peripheral3_nets mentor
# ---------------------------------------------------------------- VPX tags
# Backplane payload-side connectors on BKP, one slot per (Jx0,Jx1,Jx2):
# J2x → VDN1, J3x → VDN2, J4x → VDN3, J5x → CB3P.
set-type bkp J20 vpx-3u-bkp-p0
set-type bkp J21 vpx-3u-bkp-p1
set-type bkp J22 vpx-3u-bkp-p2
set-type bkp J30 vpx-3u-bkp-p0
set-type bkp J31 vpx-3u-bkp-p1
set-type bkp J32 vpx-3u-bkp-p2
set-type bkp J40 vpx-3u-bkp-p0
set-type bkp J41 vpx-3u-bkp-p1
set-type bkp J42 vpx-3u-bkp-p2
set-type bkp J50 vpx-3u-bkp-p0
set-type bkp J51 vpx-3u-bkp-p1
set-type bkp J52 vpx-3u-bkp-p2
# Backplane payload-side connectors, one slot per (Jx0,Jx1,Jx2):
# J2x → payload1, J3x → payload2, J4x → payload3, J5x → payload4.
set-type backplane J20 vpx-3u-bkp-p0
set-type backplane J21 vpx-3u-bkp-p1
set-type backplane J22 vpx-3u-bkp-p2
set-type backplane J30 vpx-3u-bkp-p0
set-type backplane J31 vpx-3u-bkp-p1
set-type backplane J32 vpx-3u-bkp-p2
set-type backplane J40 vpx-3u-bkp-p0
set-type backplane J41 vpx-3u-bkp-p1
set-type backplane J42 vpx-3u-bkp-p2
set-type backplane J50 vpx-3u-bkp-p0
set-type backplane J51 vpx-3u-bkp-p1
set-type backplane J52 vpx-3u-bkp-p2
# Payload connectors on each plug-in card.
set-type vdn1 P0 vpx-3u-payload-p0
set-type vdn1 P1 vpx-3u-payload-p1
set-type vdn1 P2 vpx-3u-payload-p2
set-type vdn2 P0 vpx-3u-payload-p0
set-type vdn2 P1 vpx-3u-payload-p1
set-type vdn2 P2 vpx-3u-payload-p2
set-type vdn3 P0 vpx-3u-payload-p0
set-type vdn3 P1 vpx-3u-payload-p1
set-type vdn3 P2 vpx-3u-payload-p2
set-type cb3p P0 vpx-3u-payload-p0
set-type cb3p P1 vpx-3u-payload-p1
set-type cb3p P2 vpx-3u-payload-p2
set-type payload1 P0 vpx-3u-payload-p0
set-type payload1 P1 vpx-3u-payload-p1
set-type payload1 P2 vpx-3u-payload-p2
set-type payload2 P0 vpx-3u-payload-p0
set-type payload2 P1 vpx-3u-payload-p1
set-type payload2 P2 vpx-3u-payload-p2
set-type payload3 P0 vpx-3u-payload-p0
set-type payload3 P1 vpx-3u-payload-p1
set-type payload3 P2 vpx-3u-payload-p2
set-type payload4 P0 vpx-3u-payload-p0
set-type payload4 P1 vpx-3u-payload-p1
set-type payload4 P2 vpx-3u-payload-p2
# ---------------------------------------------------------------- VPX wiring
# Each connect dispatches via the registered vpx-3u transform.
connect bkp J20 vdn1 P0
connect bkp J21 vdn1 P1
connect bkp J22 vdn1 P2
connect backplane J20 payload1 P0
connect backplane J21 payload1 P1
connect backplane J22 payload1 P2
connect bkp J30 vdn2 P0
connect bkp J31 vdn2 P1
connect bkp J32 vdn2 P2
connect backplane J30 payload2 P0
connect backplane J31 payload2 P1
connect backplane J32 payload2 P2
connect bkp J40 vdn3 P0
connect bkp J41 vdn3 P1
connect bkp J42 vdn3 P2
connect backplane J40 payload3 P0
connect backplane J41 payload3 P1
connect backplane J42 payload3 P2
connect bkp J50 cb3p P0
connect bkp J51 cb3p P1
connect bkp J52 cb3p P2
connect backplane J50 payload4 P0
connect backplane J51 payload4 P1
connect backplane J52 payload4 P2
# ---------------------------------------------------------------- non-VPX
# Both ends untagged → IdentityTransform (matches by canonical pin name,
# so e.g. A1 ↔ A001 is paired thanks to canonical_pin_name).
connect cob P3 ssu P6
connect bkp J1 ssu P1
connect peripheral2 P3 peripheral3 P6
connect backplane J1 peripheral3 P1
# BPB ↔ BKP
connect bkp P100 bpb J100
connect bkp P101 bpb J101
connect bkp P102 bpb J102
# peripheral1 ↔ backplane
connect backplane P100 peripheral1 J100
connect backplane P101 peripheral1 J101
connect backplane P102 peripheral1 J102
# BPB ↔ COB
connect bpb J0 cob P0
connect bpb J1 cob P1
connect bpb J2 cob P2
# peripheral1 ↔ peripheral2
connect peripheral1 J0 peripheral2 P0
connect peripheral1 J1 peripheral2 P1
connect peripheral1 J2 peripheral2 P2