zynq-imx6-flow: analyze 阶段增加频谱仪取证要求

RF/发射类验收不能只靠数字侧证据。analyze 节点新增一节,规定用已注册的
频谱仪 MCP(N9320B / DSA815)取证:需求点名哪台就用哪台,未点名默认
DSA815;只读抓图优先,改了设置要还原;artifact 路径、峰值频率/功率与
扫描设置一并写进 analysis_log。频谱仪连不上时报缺证,不得仅凭数字证据
判定 RF 需求通过。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015tMFjKGgxdmxJ28dyXdx1u
This commit is contained in:
Myfro9
2026-09-02 14:54:09 -05:00
co-authored by Claude Opus 5
parent bb71470e07
commit 7d81f59ee0
+26 -1
View File
@@ -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 | | `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}` | | `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"}` | | `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":"..."}` | | `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. re-sequence (`flash_burn → power_off`). This is the big closed loop.
- `"$PY" "$RUN" status --thread-id zynq-<name>` re-prints the current state without advancing. - `"$PY" "$RUN" status --thread-id zynq-<name>` 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 ## Step 3 — Finish
On exit 0 (`status: done`), report iterations completed and whether the design met On exit 0 (`status: done`), report iterations completed and whether the design met