| name | easyeda-draw-strategies |
| description | Post-drawing optimization strategies for EasyEDA Pro schematics. Invoke after all modules are drawn to apply consolidation and cleanup optimizations. |
绘制后优化策略
所有模块绘制完成后,调用此策略集进行一次系统性优化。
本策略集是 SOP 原则九 的详细展开。
绘制时的操作规范请参考 SOP 原则一~八。
策略总览
| # | 策略 | 场景 | 操作 |
|---|
| 1 | 同名电源/地合并 | 连续同名引脚各自拉线 | 竖线短接 → 共 1 个 NetFlag |
| 2 | NetFlag 终点对齐 | NetFlag 与导线分离 | 移动 NetFlag 到导线终点 |
| 3 | 冗余导线合并 | 同网络平行裸引出导线 | 评估合并 |
| 4 | NC 标注 | 未分配功能引脚 | mark-nc |
| 5 | 信号标注规范 | 用了 NetPort/文本标注 | replace-netports |
| 6 | 导线网络名检查 | 空网络名导线 | check-wire-nets |
| 7 | 重复标签清理 | 同一坐标多标签 | check-duplicates --clean |
| 8 | DRC 检查 | 最终验证 | drc / drc --show-ui |
策略 14 为布局优化,策略 58 为合规检查。
策略应用时机
所有模块绘制完成 → check-all 通过 → 应用本策略集(按序) → 再次 check-all → DRC
策略 1: 同名电源/地合并
场景:同一芯片侧面上有多个连续的、同名的电源或地引脚。
优化方法:
- 在所有连续同名引脚之间画竖线段短接
- 从其中一个引脚引出 1 根水平导线
- 在水平导线末端放 1 个 NetFlag(覆盖所有)
- 删除其余引脚各自独立的导线和 NetFlag
规则:
- 只有连续排列(中间无其他信号引脚)的同名引脚才合并
- 左/右侧各独立处理,不跨侧合并
- VCC 和 GND 分开处理
示例:PIN3=GND (y=470), PIN4=GND (y=450) — 连续排列
优化前: 优化后:
│ GND ──导线── NetFlag(GND) │ GND ──┐
│ GND ──导线── NetFlag(GND) │ GND ──┤ 竖线短接 ── 导线 ── NetFlag(GND)
策略 2: NetFlag 终点对齐与距离检查
场景:电源/地引脚延伸导线后放置了 NetFlag。
摆放规则(关键):
- 左侧引脚:文字左对齐,尽量靠近导线末端,但远离 PIN 脚编号
- 右侧引脚:文字右对齐,同上
- 上侧引脚:文字上对齐,同上
- 下侧引脚:文字下对齐,同上
检查方法:
- 检查 NetFlag 是否与同网络导线在同一端点 (±3 单位内)
- 检查 NetFlag BBox 是否与引脚编号/导线重叠
- 若 NetFlag 文字会覆盖引脚编号,需调整位置
修复方法:
- 若 NetFlag 与导线端点距离 > 10 单位:调整坐标到导线端点附近
- 若 NetFlag 与引脚编号重叠:旋转 180° 或调整 y 坐标使其反向展开
- 若文字仍重叠:缩短导线长度,将标签中心推离编号区域
策略 3: 冗余导线合并
场景:同一网络的多条导线在同侧平行排列,远端形成相同网络。
优化方法:
- 若多条同网络导线在同方向且相邻,评估是否可合并为一根
- 仅合并未进入模块内部连接的裸引出导线
- 已连接到模块内部器件(开关、二极管等)的导线不合并
策略 4: 未使用引脚 NC 标注
场景:IC 引脚未分配功能。
操作:
./scripts/draw_cli.py mark-nc U1 14
./scripts/draw_cli.py mark-nc U1 14,16
原理:调用 sch_PrimitiveComponent.setState_NoConnected(true),EasyEDA 显示标准 NC 叉号,DRC 识别为"有意不连接"。禁止用 sch_PrimitiveText.create("NC") 替代。
策略 5: 信号标注规范检查
场景:页面中误用了 NetPort 或文本标注作为信号标签。
操作:
./scripts/draw_cli.py replace-netports
./scripts/draw_cli.py replace-netports --length 80
规则:信号引脚仅用延伸导线(导线网络名 = 信号名),电源/地引脚用延伸导线 + NetFlag。
策略 6: 导线网络名完整性检查
场景:导线创建时未指定网络名,导致电气连接未建立。
检查:
./scripts/draw_cli.py check-wire-nets
修复:对空网络名的导线,删除后重画并指定网络名。
策略 7: 重复标签清理
场景:同一坐标放置了多个标签或 NetFlag。
检查 & 修复:
./scripts/draw_cli.py check-duplicates
./scripts/draw_cli.py check-duplicates --clean
策略 8: DRC 最终检查
场景:所有优化完成后,最终设计规则检查。
操作:
./scripts/draw_cli.py drc
./scripts/draw_cli.py drc --show-ui
DRC 不通过 = 不能投板。
策略执行顺序
策略 1 (同名合并) → 策略 2 (NetFlag 对齐) → 策略 3 (冗余合并) → 策略 4 (NC 标注)
→ 策略 5 (信号规范) → 策略 6 (导线网络名) → 策略 7 (重复标签) → 策略 8 (DRC)
↓ 每个策略后执行 check-overlap
- 策略 1~4 每次执行后:
check-overlap
- 策略 5~8 可合并为一键:
check-all
检查命令速查
./scripts/draw_cli.py check-overlap
./scripts/draw_cli.py replace-netports
./scripts/draw_cli.py check-wire-nets
./scripts/draw_cli.py check-duplicates
./scripts/draw_cli.py drc
./scripts/draw_cli.py check-all
./scripts/draw_cli.py drc --show-ui