diff --git a/zynq-imx6-flow/SKILL.md b/zynq-imx6-flow/SKILL.md index 5b04f7d..12e84a1 100644 --- a/zynq-imx6-flow/SKILL.md +++ b/zynq-imx6-flow/SKILL.md @@ -109,7 +109,7 @@ Perform it, then resume the **same `--thread-id`**. Repeat until exit 0. | `action` | excalidraw node | What you (the session) do | Resume JSON | |---|---|---|---| -| `analyze` | 通过ila/串口分析 | Grab ILA + the `sources` consoles (ps_console, and imx6_console if xmod); summarize | `{"analysis_log":"<摘要/路径>"}` | +| `analyze` | 通过ila/串口分析 | Grab ILA + listed consoles; for RF/TX requirements also capture the requested analyzer spectrum; summarize all evidence | `{"analysis_log":"<摘要/路径>"}` | | `meets_requirement` | 符合设计要求? | Judge analysis vs the design requirement | `{"meets": true}` or `{"meets": false}` | | `propose` | 分析原因,提方案 | Diagnose; **review the plan with `/langgraph-plan-review`**; decide what to change + next program mode | `{"reason":"...","need_fpga":bool,"need_imx6":bool,"need_ps":bool,"program_mode":"bitstream"或"flash"}` | | `modify_fpga` | 改 RTL→综合→bit/flash | Edit RTL, run Vivado synth/impl, produce bit + flash | `{"bit_path":"...","flash_path":"..."}` | @@ -142,6 +142,31 @@ Notes: re-sequence (`flash_burn → power_off`). This is the big closed loop. - `"$PY" "$RUN" status --thread-id zynq-` re-prints the current state without advancing. +### Spectrum-analyzer evidence during `analyze` + +For RF/transmitter acceptance, use a registered analyzer MCP in addition to ILA and +console logs: + +- N9320B (tool prefix `mcp__mcp_n9320b__`): `get_idn` → `get_settings` → + `get_spectrum` with `mark_peak=true` and a stable `csv_path`. +- DSA815 (tool prefix `mcp__mcp_dsa815__`): `dsa_get_identity` → `dsa_get_status` → + `dsa_capture_plot`. + +Use the analyzer named by the requirement. If none is named, prefer DSA815; use both only +for an explicit cross-check or independent confirmation. For DSA815 specifically: + +1. `dsa_get_identity` → `dsa_get_status` verifies serial `DSA8A194401321` and records + the current sweep, unit, RBW and VBW. +2. `dsa_capture_plot` captures the current Trace and returns PNG/CSV evidence; call + `dsa_capture_spectrum` only when all 601 points are needed for numerical analysis. +3. Put artifact paths, peak frequency/power and sweep settings in `analysis_log`. +4. Prefer read-only capture. If a required mask/channel needs different settings, + record the original status and restore it after capture. Do not enable raw SCPI write. + +Always record the selected analyzer identity with the RF artifacts. If the analyzer cannot +be verified or reached, report the missing RF evidence and do not mark an RF requirement +as passed from digital evidence alone. + ## Step 3 — Finish On exit 0 (`status: done`), report iterations completed and whether the design met