EasyEDA로 내보내기

한 줄 요약 — circuit.yaml에서 EasyEDA Standard가 읽을 수 있는 .json 을 생성합니다. 열자마자 Ctrl+R로 시뮬레이션까지 됩니다.


사용법

circuit export my.yaml --format easyeda -o my.json

EasyEDA에서 열기:

  1. easyeda.com/editor 접속
  2. File → Open → EasyEDA…
  3. 생성된 .json 선택

💡 EasyEDA Pro에서도 임포트 가능합니다. Pro의 “EasyEDA(Standard) 가져오기”로 같은 파일을 읽습니다.


왜 EasyEDA Standard JSON인가

이유설명
포맷이 공개됨공식 문서
Std에서 바로 열림File → Open → EasyEDA
Pro에서도 임포트하나로 양쪽 대응
시뮬레이션 엔진이 ngspice로컬 검증값과 일치
시뮬 설정을 파일에 포함열자마자 Ctrl+R

생성되는 파일 구조

EasyEDA Standard 스키매틱은 JSON이고, 도형을 틸드(~)로 구분된 문자열로 표현합니다.

{
  "head":   "1~1.11.3~~TRAN`1u`1m`0`{AC`dec``0`0`{DC`0``0`0`{TF```",
  "canvas": "CA~1200~1200~#FFFFFF~yes~#CCCCCC~10~1200~1200~line~10~pixel~5",
  "shape":  [ "LIB~...", "W~...", "N~...", "F~..." ],
  "BBox":   {"x":170,"y":100,"width":200,"height":130},
  "colors": {}
}
접두어의미
LIB부품 (심볼 + 핀)
W와이어
N넷라벨
F넷플래그 (GND, VCC, 전압 프로브)
J정션
P핀 (LIB 안에)

★ 넷라벨 방식 — 왜 이렇게 하는가

부품을 격자에 배치하고, 각 핀에서 짧은 와이어를 뽑아 넷라벨을 붙입니다.

부품 심볼(예: R1)의 양쪽 핀에서 짧은 와이어를 하나씩만 뽑고, 그 끝에 넷라벨(VIN, OUT)을 붙입니다. 부품끼리 직접 잇는 긴 와이어는 아예 그리지 않습니다.

그리는 것안 그리는 것
부품 심볼 (격자 위 고정 좌표)부품과 부품을 잇는 배선
핀에서 나오는 짧은 와이어 1개배선이 갈라지는 정션(J~)
와이어 끝의 넷라벨배선 교차·우회 경로

같은 이름의 넷라벨끼리는 EasyEDA가 알아서 같은 노드로 취급하므로, 전선을 안 그려도 연결이 성립합니다.

✅ 장점⚠️ 단점
자동 배선기 없이 연결이 100% 정확회로도가 예쁘지 않음
정션(J~)이 원리적으로 불필요신호 흐름이 눈에 덜 보임
3점 접합이 없어 연결 버그 없음
구현이 단순하고 검증 가능

자동 배선기의 버그로 연결이 틀리는 것보다, 못생기지만 정확한 것이 낫습니다.

실제 배선(직교 라우팅)은 이후 단계에서 단순한 회로에만 적용할 예정입니다.


★ 전압 프로브 자동 부착

expect에 나오는 노드마다 EasyEDA의 전압 프로브를 자동으로 붙입니다.

expect:
  - {measure: v, node: OUT, value: 1.667, tol: 1%}

→ OUT 노드에 F~part_netLabel_volProbe 부착

결과: EasyEDA에서 파일을 열고 Ctrl+R만 누르면, 우리가 검증한 그 노드가 이미 프로브되어 있습니다.


시뮬 설정 포함

analyses를 head 문자열에 심습니다.

analyses:
  - {type: tran, tstep: 1u, tstop: 5m}

→ head에 TRAN\1u`5m`0“ 포함

EasyEDA에서 Simulate 대화상자를 열면 값이 이미 채워져 있습니다.


지원 심볼

1단계2단계
저항, 커패시터, 전해 커패시터, 인덕터BJT (NPN/PNP)
다이오드, LED, 제너MOSFET (N/P)
전압원 (DC/AC/SIN/PULSE)OP앰프
전류원스위치
GND, VCC 플래그커넥터·헤더
전압 프로브

★ 검증 방법

1. 기하 자기검사 (자동)

EasyEDA 없이도 파일의 정합성을 확인합니다.

  • 최상위 키가 정확히 {head, canvas, shape, BBox, colors}
  • 모든 gge id가 유일
  • 모든 핀 dot이 10 그리드 위
  • 모든 와이어 끝점이 핀/넷라벨/플래그 dot과 정확히 일치
  • 모든 핀 dot이 정확히 하나의 와이어 끝점과 일치
  • BBox가 모든 좌표를 포함
  • 도형 문자열의 필드 개수가 타입별 기대값과 일치

2. 왕복 테스트 (자동)

circuit.yamlEasyEDA JSON파싱넷리스트(netlist)원본과 비교

넷리스트 해시가 같으면 연결이 보존된 것입니다.

3. 수동 확인 (1회, 절차 문서화)

#할 일통과 기준
1circuit export examples/01-dc-basics/loaded-divider.yaml -o out.json파일 생성
2EasyEDA Std → File → Open → EasyEDA… → out.json열림
3심볼 확인저항·전원이 정상 모양
4넷라벨 확인핀에 붙어 있음 (떨어져 있으면 미연결)
5Design → Check Netlist미연결 경고 0
6Ctrl+R (Simulate)결과가 circuit sim과 일치 ★
7EasyEDA Pro에서 임포트열리는지 확인

💡 6번이 핵심입니다. EasyEDA도 ngspice를 쓰므로 값이 일치해야 정상입니다. 다르면 넷리스트 변환이나 심볼 매핑에 문제가 있는 것입니다.


⚠️ 알려진 위험

위험설명대응
시뮬 심볼 이름EasyEDA Std 시뮬레이터는 특정 spiceSymbolName만 인식. 임의 값을 쓰면 파일은 열려도 Ctrl+R 실패R/C/L/V/I부터 실측으로 확인해 표로 고정
head의 AC/DC 필드문서화가 부실EasyEDA UI에서 설정 후 저장한 파일과 diff
심볼 기하BJT·MOSFET·opamp는 핀이 3~5개라 손으로 그려야 함circuit preview SVG로 검증
값 표시와 속성 불일치Value(Ω) 속성과 표시 텍스트가 다르면 시뮬이 화면과 다른 값을 씀한 소스에서 둘 다 채움

⚠️ 시뮬 심볼 이름 문제로 막히면, “EasyEDA는 그리기용, 시뮬은 로컬 ngspice”로 목표를 분리합니다. 그래도 요구사항의 절반(파일 생성)은 달성됩니다.


SVG 미리보기

circuit preview my.yaml -o my.svg

같은 심볼 정의를 써서 SVG를 그립니다. 미리보기가 이상하면 EasyEDA 출력도 이상하다는 뜻이므로, 심볼 디버깅이 훨씬 빨라집니다.


⚖️ 트레이드오프

선택✅⚠️
넷라벨 방식연결 100% 정확, 구현 단순못생김
자동 배선보기 좋음복잡, 버그 위험
EasyEDA Std JSON공개 포맷, Std+Pro 대응Pro 전용 기능 사용 불가
KiCad 넷리스트오픈소스 생태계EasyEDA에서 추가 변환 필요
프로브 자동 부착즉시 시뮬 가능노드가 많으면 복잡

🔌 전체 흐름

circuit.yamlcircuit check구조 검증circuit sim / test측정값 검증 (ngspice)circuit exportEasyEDA JSON 생성EasyEDA에서 열기Check Netlist연결 확인Ctrl+R시뮬레이션 — 같은 ngspice값 비교circuit sim 과 일치하는가? ★PCB 레이아웃 → 발주

“측정이 잘 되는지”가 두 지점에서 확인됩니다:

  1. 로컬 circuit test (자동, CI)
  2. EasyEDA Ctrl+R (수동, 최종 확인)

연습문제

문제 1. 생성한 JSON이 EasyEDA에서 열리는데 부품이 안 보입니다. 무엇을 확인합니까?

exercises/17-04-export-sample.yaml
풀이

BBox를 확인하세요.

BBox가 모든 도형을 감싸지 않으면, 파일은 열리지만 뷰가 빈 곳을 비춥니다.

"BBox": {"x":170, "y":100, "width":200, "height":130}

확인:

  1. 모든 도형의 좌표 범위를 계산
  2. BBox가 그 범위를 포함하는가
  3. 여유를 두었는가 (심볼 텍스트 포함)

그 외 확인:

  • canvas의 뷰박스 크기
  • 도형 좌표가 캔버스 범위 안인가
  • EasyEDA에서 “Fit to screen”(Ctrl+Shift+F) 시도

문제 2. 파일은 열리는데 Ctrl+R(시뮬레이션)이 실패합니다. 원인은?

exercises/17-04-value-notation.yaml
풀이

spiceSymbolName 속성이 EasyEDA 시뮬레이터가 인식하는 값이 아닐 가능성이 큽니다.

EasyEDA Std의 시뮬레이터는 특정 시뮬레이션 라이브러리 심볼만 인식합니다:

  • 저항 → Resistor
  • 커패시터(capacitor) → Capacitor
  • 정현파 전압원 → VSIN
  • 등

확인 방법:

  1. EasyEDA에서 직접 부품을 배치하고 저장
  2. 그 파일의 LIB~ 문자열에서 spiceSymbolName 값 확인
  3. 우리 생성기의 값과 비교

그 외 확인:

  • spicePre 속성 (R, C, L, V, I)
  • 값 속성(Value(Ω))과 표시 텍스트가 일치하는가
  • 접지(GND)접지 ground회로의 모든 전압을 재는 기준점으로, 여기가 흔들리면 모든 측정이 같이 흔들립니다.자세히 보기 → 플래그가 있는가 — 없으면 시뮬 불가
  • 시뮬 설정(head의 TRAN/AC/DC)이 올바른가

막히면 “EasyEDA는 회로도 작성·PCB용, 시뮬은 로컬 ngspice”로 분리해도 됩니다. 두 도구가 같은 엔진을 쓰므로 값은 어차피 같습니다.


이전 ← 03 시뮬레이션으로 측정 확인 | 다음 → 05 채팅으로 회로 만들기