From 7d81f59ee0be63758284dda6ac9835fc84f26369 Mon Sep 17 00:00:00 2001 From: Myfro9 <36755290+Myfro9@users.noreply.github.com> Date: Wed, 2 Sep 2026 14:54:09 -0500 Subject: [PATCH] =?UTF-8?q?zynq-imx6-flow:=20analyze=20=E9=98=B6=E6=AE=B5?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=A2=91=E8=B0=B1=E4=BB=AA=E5=8F=96=E8=AF=81?= =?UTF-8?q?=E8=A6=81=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RF/发射类验收不能只靠数字侧证据。analyze 节点新增一节,规定用已注册的 频谱仪 MCP(N9320B / DSA815)取证:需求点名哪台就用哪台,未点名默认 DSA815;只读抓图优先,改了设置要还原;artifact 路径、峰值频率/功率与 扫描设置一并写进 analysis_log。频谱仪连不上时报缺证,不得仅凭数字证据 判定 RF 需求通过。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_015tMFjKGgxdmxJ28dyXdx1u --- zynq-imx6-flow/SKILL.md | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) 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