circuit-analyze
硬件原理图分析——上传电路图截图,AI 识别拓扑/元件/连接关系,分类每个元件的功能角色,计算关键参数,给出工程加固建议。覆盖模拟电路、数字电路、电源电路、混合信号电路。触发词:"分析电路"/"电路分析"/"analyze circuit"/"看看这个电路"/"帮我分析下这张电路图"/"这个电路是什么"。
来源信息
- 仓库
- q1109/Hardware_analyze
- 最近来源活动
- 2026年5月18日 16:31
- 检测到的 SKILL.md 语言
- 中文
- 星标
- 6
- 分支
- 4
安装方式
默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。
检查来源文件
决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。
正在显示 SKILL.md
SKILL.md
来源说明 · 只读预览- name
- circuit-analyze
- description
- 硬件原理图分析——上传电路图截图,AI 识别拓扑/元件/连接关系,分类每个元件的功能角色,计算关键参数,给出工程加固建议。覆盖模拟电路、数字电路、电源电路、混合信号电路。触发词:"分析电路"/"电路分析"/"analyze circuit"/"看看这个电路"/"帮我分析下这张电路图"/"这个电路是什么"。
- argument-hint
- <image-path>
- allowed-tools
- Read, Bash(*), WebSearch, WebFetch
# /circuit-analyze — 硬件原理图分析
结构化分析流水线:识别 → 连接表 → 确认 → 角色分类 → 参数计算 → 工程加固 → 报告。
核心价值:回答"每个元件为什么在这里"和"这个电路拿到产线上会出什么问题"。
## Overview
```
用户上传原理图图片(单张或多张)
↓
判断模式: 单图 / 多图(同项目分页)/ 连续分析
↓
Phase 1: 电路识别 — 提取元件/值/连接/拓扑 + 跨页网络标签
↓
Phase 2: 连接表(初学) + 解读(教学) + 网表(计算) — 三层输出,各司其职
↓
Phase 3: 元件角色分类 + 选型依据 — 基于网表,每个元件为什么在这里 + 为什么选这个型号
↓
Phase 4: 关键参数计算 — 基于网表(内部数据模型)推导传递函数/增益/截止频率
↓
Phase 5: 工程加固检查 — 从原理图到产品电路,给出补完建议
↓
Phase 6: 结构化报告 — 控制台输出(多图时附加板级汇总)
```
## 多图/项目模式
### 识别规则
当前分析启动时,检查是否存在**之前的分析上下文**:
- **单图模式**: 用户传一张图,没有前序上下文 → 独立分析
- **批量模式**: 用户一次传多张图 → 逐张分析 + 最后汇总
- **连续模式**: 用户分析完一张后又传一张 → 视为同一项目的下一页,维护上下文
### 上下文追踪
分析每张图时,记录该页出现的**跨页网络标签**(如 `VPRO`、`485A`、`VLCD`、`+5V`、`GND` 等带有跨页连接属性的 net name):
| 追踪项 | 作用 |
|--------|------|
| 电源轨 | `+12V`、`+5V`、`VLCD`、`V11`... → 构建板级电源树 |
| 信号跨页 | `485A`、`ADC_OUT`、`ISN_P`... → 标记信号来源/去向 |
| 未解析 net | 某个 net 的来源不在当前页 → 标注"来自页 X?" |
### 板级汇总
所有页分析完后,询问用户"要做板级汇总吗?"如果用户同意:
```
┌─────────────────────────────────────────┐
│ 项目板级汇总 │
│ │
│ 📐 电源树 │
│ 24V → Buck → 5V → VLCD → 运放电路 │
│ 5V → RS-485 收发器 │
│ 24V → V11(?) → VPRO编程 │
│ │
│ 🔗 信号流 │
│ [传感器] → ISN_P/N → 差分放大 → ADC_OUT │
│ MCU → 485_TX → RS-485收发器 → 485总线 │
│ │
│ ⚠️ 跨页悬空 net: V11 来源未找到 │
│ │
│ 🛡️ 全局问题 │
│ - 电源入口无保险丝(Buck 输入侧) │
│ - 无统一 ESD 策略(各接口各自为政) │
└─────────────────────────────────────────┘
```
### 上下文清除
用户说"新项目"/"重新开始" → 清除所有上下文。
---
## 适用范围
覆盖所有常见硬件原理图类型:
| 类别 | 典型电路 |
|------|---------|
| 模拟电路 | 运放电路(反相/同相/差分/跟随器/求和/仪表放大器/积分器/微分器)、有源滤波器(Sallen-Key/MFB/状态变量)、三极管放大电路(共射/共基/共集/差分对)、MOSFET 开关/放大、二极管电路(整流/钳位/稳压/续流) |
| 电源电路 | 线性稳压(78xx/LDO)、DC-DC 开关电源(Buck/Boost/Buck-Boost)、电荷泵、电源滤波/保护 |
| 数字电路 | 逻辑门电路、电平转换、隔离(光耦/磁耦)、MCU 外围(复位/晶振/调试接口)、接口电路(RS232/RS485/CAN/USB) |
| 混合信号 | ADC/DAC 前端调理、采样保持、Vref 基准源 |
遇到超出当前知识覆盖的冷门电路时,先 WebSearch 搜索,搜不到则用已知的电路原理进行类推分析,标注不确定性。
## Inputs
| 必填 | 说明 |
|---|---|
| `<image-path>` | 原理图图片 (PNG/JPG/截图/照片),支持单张或多张 |
无需任何本地文件依赖。分析所需的知识来自模型训练数据。
**Datasheet 策略**: 不确定的型号/参数先 WebSearch 搜 datasheet。搜不到或信息不全时,标注"⚠️ 推测值"并给出区间估算,同时提示用户"如果有 datasheet 可以发给我修正"。
## Workflow
### Phase 1: 电路识别
利用视觉能力分析原理图,提取:
- **元件清单**: 对每个可见元件提取 — 位号 (R1/U1/C2/Q1/D1...)、类型 (电阻/电容/电感/运放/三极管/MOSFET/二极管/IC/晶振/连接器...)、标称值(含单位)、封装/型号(如有标注)、置信度 (高/中/低)
- **连接关系**: 构建节点连接表。标注关键节点——优先用原理图上的 net label (VIN/VOUT/+5V/GND...),无名节点自动编号 N001/N002...。**目标是直接可转换为网表**
- **拓扑识别**: 根据元件配置和连接模式判断电路类型
**标记低置信度项**:
- 模糊/遮挡的元件值 → 🔴 低
- 多个可能类型的元件 → 🟡 中
- 不清晰/推断的连接关系 → 🟡 中
- 拓扑不确定 → 🟡 中,准备候选
**不确定的型号/参数** → 先 WebSearch 搜 datasheet。搜不到则用已知的器件典型值估算;关键参数无法确定时,标注为推测值并给出区间。提示用户"有 datasheet 可发我修正"。
---
### Phase 2: 连接表 + 解读 + 确认
**目标**: 将 Phase 1 的识别结果转换为三层输出——既有初学者的可读性,又有从业者的精确性。
#### 三层输出结构
```
┌─ Layer 1: 功能块连接表 ──── 按电路功能分组,初学者可读
│ │
│ 【反相放大器 — U1 运放】
│ +IN: pin3 ── GND
│ -IN: VIN ── R1(1k) ── pin2
│ pin2 ── Rf(10k) ── pin1(OUT)
│ OUT: pin1 ── VOUT
│ │
│ ← 每行 = 一条精确的节点连接,无串/并联歧义
│ ← 用信号名和引脚名,不用 N001 自动编号
│
├─ Layer 2: 自然语言解读 ──── 一段话解释电路做什么
│ │
│ "U1 和 R1/Rf 构成反相放大器,增益 = -Rf/R1 = -10。
│ C1 是输入隔直电容,防止前级直流偏置影响虚地..."
│ │
│ ← 适合初学者理解电路意图
│
└─ Layer 3: SPICE 网表 (可选) ──── 用户说"导出网表"时输出
* 反相放大器
R1 VIN N001 1k
Rf N001 VOUT 10k
```
#### Layer 1: 功能块连接表
输出格式:
```
📐 电路连接:
【功能块1 — 核心描述】
关键节点: 信号流方向
PIN (pinX): NODE_A ──元件(值)── NODE_B (作用注释)
...
【功能块2 — 核心描述】
...
【电源】
+5V: U1(pin8), ...
GND: U1(pin4), ...
```
格式规则:
- 用原理图上的 net label 作为节点名 (VIN/VOUT/INA/CC...),不用 N001
- 用 IC 引脚名而不是编号 (in+/in-/out/vcc...),后面括号标注 pin number
- 箭头 `──→` 表示信号流向
- `∥` 表示并联,如 `R16∥C26`
- 非关键去耦/滤波可以用一行汇总,不需逐个列出
- 看不清的值标 🔴,已确认的标 🟢
#### Layer 2: 自然语言解读
连接表之后,用 3-5 句话解释:
- 电路整体做什么
- 每个功能块扮演什么角色
- 信号流从哪到哪
- 关键设计意图(为什么这样接)
```
💡 一句话: 这是一个反相放大器,增益 Av=-10。
U1 和 R1/Rf 构成反相放大器的核心——输入信号经 R1
进入运放反相端,输出经 Rf 反馈回来,放大倍数由
Rf/R1 的比值决定。C1 串联在输入路径上,隔断前级可能
存在的直流偏置电压,只让交流信号通过。
```
#### Layer 3: SPICE 网表(可选)
用户说 `导出网表` 或 `save netlist` 时输出。使用标准 SPICE 格式,节点名映射回 N001/N002... 自动编号。
写入 `.cir` 文件,路径由用户指定。
#### 确认流程
三层输出后标注 🔴 项:
```
⚠️ 请确认:
🔴 Rf 的值是 10k 还是 100k?影响增益
🔴 Q24 的源极是接 V11 还是接 GND?
🟡 C3 的容值?(不影响核心分析)
回复 "ok" 或直接纠正,如 "Rf=100k, Q24源极→V11"
```
用户纠正后更新 Layer 1 和 Layer 2。
**确认上限**: 最多 3 轮。
---
### Phase 3: 元件角色分类
**基于已确认的网表**(内部数据模型,非人读的 Layer 1 连接表)进行分析。对每个元件按以下 8 类角色归类,写一句解释它为什么在这里:
| 角色 | 含义 | 典型元件 |
|------|------|---------|
| gain-setting | 决定放大倍数/衰减量 | Rf, Rin, Rg |
| frequency-shaping | 决定工作频率和频率响应 | 滤波电容、补偿电容、LC 谐振 |
| DC-bias | 设定直流工作点或隔直 | 耦合电容、偏置分压电阻、Vref |
| stability-compensation | 防振荡/防过冲 | 相位补偿电容、输出隔离电阻、snubber |
| protection/isolation | 防 ESD/过压/过流/短路/反接 | TVS、钳位二极管、保险丝、光耦、串联限流电阻 |
| structural/essential | 电路骨架,拿走不工作 | 有源器件(运放/三极管/MOSFET/IC)、负载电阻、电源 |
| power-delivery | 供电、去耦、滤波、稳压 | 去耦电容、旁路电容、磁珠、LDO |
| impedance-matching | 设定/匹配输入输出阻抗 | 终端电阻、串联匹配电阻 |
输出格式:
```
🔧 每个元件是干嘛的:
| 位号 | 值 | 角色 | 为什么在这里 |
|------|-------|-------------------|-----------------------------------|
| R1 | 1kΩ | gain-setting | 与Rf共同设定增益Av=-Rf/R1=-10 |
| C1 | 100nF | DC-bias | 输入隔直电容,阻断前级直流偏置 |
| D1 | 1N4148| protection | 输入钳位,防止负压损坏运放输入级 |
```
#### 选型依据(关键元件)
角色分类之后,对**有具体型号或关键参数的核心元件**分析选型依据。回答"为什么选这个型号而不是别的":
**分析维度**(每类元件挑相关项,不需全部):
- **电压应力**: 额定电压 vs 电路中承受的最大电压 → 裕度是否够
- **电流应力**: 额定电流 vs 实际峰值/持续电流 → 裕度是否够
- **速度/频率**: 开关速度/GBW/反向恢复时间 → 是否满足电路频率要求
- **精度**: 容差/温漂/匹配精度 → 是否满足电路精度要求
- **功耗/热**: 封装功耗 vs 实际耗散 → 是否需要散热
- **成本/替代**: 为什么不用更便宜/更常见的型号
输出格式:
```
📋 选型依据:
| 元件 | 型号/值 | 关键参数 | 选型理由 |
|------|---------|---------|---------|
| D9 | B540C | 40V/5A Schottky | Buck续流,反压=24V→40V裕度67%;5A远超负载电流;Schottky低Vf降导通损耗 |
| Q25 | 2N7002 | 60V/115mA N-ch | 仅驱动栅极,电流需求极小;60V耐压远超24V输入;SOT-23小封装 |
| R3 | 52.3k/1%| E96, 1% | 反馈分压决定VOUT精度;E96标准值;1%精度保证输出误差<2% |
| C6 | 100μF | — | 输出滤波大电容,降低低频纹波;耐压需≥10V(选16V规格保裕度)|
```
**关键规则**:
- 有明确型号的优先查 datasheet 找极限参数,与电路实际应力对比
- 无型号的(如通用电阻电容),根据电路参数反推选型约束(如"此处电容耐压需≥25V")
- 如果某元件选型有明显不合理处 → 标 🟡 并提出替代型号
---
### Phase 4: 关键参数计算
**基于网表的节点和元件值**(内部数据模型),直接推导传递函数或计算公式。
**模拟电路**:增益(DC/AC)、截止频率(-3dB点)、输入/输出阻抗、直流工作点、带宽(GBW限制)、Q值(滤波器)、CMRR(差分电路)
**电源电路**:输出电压、纹波估算、效率、开关频率(如适用)、输入/输出电压范围
**数字电路**:逻辑电平、上拉/下拉值、时间常数(RC延时)、电流驱动能力
**交叉校验**:计算结果是否合理?电阻值在优选范围?增益是否超过器件能力?截止频率是否合理?
不确定的器件参数(如运放 GBW、三极管 β)先 WebSearch 搜 datasheet,搜不到用典型值代入并标注"推测值"。**未知电压/频率等关键参数**无法从电路推断时,用**区间分析法**——列出"如果 X=12V 则...如果 X=15V 则...",供用户对照实际确认。用户可提供 datasheet 或实测值来收窄区间。
输出格式:
```
📊 关键参数:
直流增益: Av = -10 (20dB)
输入阻抗: Zin ≈ 1kΩ
输出阻抗: Zout < 1Ω (闭环)
-3dB 带宽: ≈ 91kHz (LM358 GBW=1MHz / 噪声增益=11)
⚠️ 需 datasheet 确认: LM358 GBW 容差 ±30%,实际带宽 70-100kHz
```
---
### Phase 5: 工程加固检查
从"能工作"到"能投产"。逐项检查并给出:
- **缺了什么** → **生产上会出什么问题** → **怎么修** → **有什么副作用**
检查维度(根据电路类型选相关项,不需要全部):
- **ESD/浪涌防护**: 对外接口是否有 TVS/钳位/ESD 保护
- **电源完整性**: 芯片电源引脚是否有去耦电容;电容是否紧贴引脚;电源入口是否有滤波
- **信号完整性**: 输入是否有 RF/EMI 滤波;高速信号是否有终端匹配
- **稳定性**: 反馈环路是否可能振荡;大反馈电阻是否需要补偿电容;容性负载是否隔离
- **偏置/直流路径**: 输入偏置电流是否有直流通路;单电源运放是否有偏置
- **热/功耗**: 功率元件是否有散热考虑;LDO 压差×电流是否可接受
- **保护/鲁棒性**: 输出是否有短路保护;输入是否有过压保护;电源是否有反接保护
- **启动行为**: 上电瞬间输出是否会冲到满幅;电源是否有软启动
- **容差/量产**: 电阻精度是否足够(特别是差分/匹配电阻);电容材质是否合适(滤波用 C0G,去耦用 X7R)
标记:
| 标记 | 含义 |
|------|------|
| 🔴 | 缺失,强烈建议加 |
| 🟡 | 需注意/条件性建议 |
| 🟢 | 已正确处理 |
---
### Phase 6: 报告输出
汇总 Phase 3-5 输出结构化报告。
报告末尾提示:
```
下一步:
- "这个电路如果[改动],会怎样?" → 进入修改讨论
- "帮我把这个分析写成视频稿" → 生成脚本
- "分析下一张图" → 连续分析(同项目),维护板级上下文
- "做板级汇总" → 将所有分析过的页汇总为板级报告
- "新项目" → 清除上下文,从头开始
```
---
## Key Rules
1. **三层输出:连接表(人读) + 解读(教学) + 网表(内部分析)**。Phase 2 输出 Layer 1 连接表作为确认界面;Phase 3-5 的分析基于网表(内部数据模型),计算在其上执行
2. **角色分类 + 选型依据是教学内容**。每个元件一句"为什么在这里"+"为什么选这个型号",这是通用 AI 不会主动做的事
3. **工程加固要有后果**。不只说加什么,要说"不加会怎样"(击穿/振荡/噪声/烧毁/漂移...)
4. **参数要交叉校验**。算完增益查电阻值范围;算完 fc 查是否合理;算完功耗查封装是否扛得住
5. **不编造元件值**。看不清就标 🔴 低置信度让用户补充
6. **未知参数用区间分析**。用户也不知道某参数时,列"如果 A 则 B"的区间表,不凭空猜一个值
7. **datasheet 先搜再问**。不确定的型号/参数先 WebSearch 搜,搜不到标注"推测值"并告诉用户"有 datasheet 可发我修正"
8. **覆盖所有硬件电路类型**。模拟/数字/电源/混合信号都支持
9. **多图维护上下文**。用户连续分析多张图时,追踪跨页 net 和电源轨,最后可做板级汇总
## Refusals
- 「图片完全看不清」→ 列出能辨认的轮廓,建议用户提供清晰版
- 「不是原理图(PCB 版图 / 实物照片)」→ 说明需要原理图而非版图,建议先导出原理图
- 「用户要跳过 Phase 2 网表确认」→ 拒绝。网表确认是质量兜底——串/并联看错,后面全错
在 GitHub 查看