기생 성분을 SPICE에 넣기

한 줄 요약 — 기생을 넣지 않은 시뮬레이션은 거짓말입니다. 무엇을 어떻게 넣을지 정리합니다.


왜 필요한가

이상적 모델로 시뮬레이션하면:

결과실제
무한 대역폭(bandwidth)기생 용량(parasitic capacitance)기생 용량 parasitic capacitance부품·배선·케이블이 원치 않게 갖는 커패시턴스로, 고임피던스 신호원에서 대역폭을 가장 먼저 잡아먹습니다.자세히 보기 →으로 제한
완벽한 세틀링지연
발진 없음실물에서 발진
리플(ripple)리플 ripple직류가 되다 만 나머지 교류분으로, 평활 커패시터가 얼마나 큰지로 정해집니다.Vr=If CV_r = \frac{I}{f\,C}자세히 보기 → 0ESL로 스파이크(spike)
크로스토크(crosstalk)크로스토크 crosstalk옆 배선의 신호가 용량이나 자기장을 타고 내 신호에 섞여 들어오는 것입니다.자세히 보기 → 없음결합 존재

“시뮬레이션에서는 잘 됐는데” 는 대부분 기생을 빼먹었기 때문입니다.


무엇을 넣을 것인가 — 우선순위

순위기생언제 필수
1고임피던스 노드의 대지 용량항상 (MΩ 이상이면)
2케이블/배선(trace) 용량신호가 보드를 나갈 때
3커패시터(capacitor) ESR/ESL전원·디커플링·필터
4소스 임피던스(impedance)임피던스 impedance교류에서의 저항으로, 크기뿐 아니라 전압과 전류의 시간 차이(위상)까지 담은 복소수입니다.ZC=1jωC,ZL=jωLZ_C = \frac{1}{j\omega C},\quad Z_L = j\omega L자세히 보기 →신호원 모델링
5배선 인덕턴스(inductance)고속 스위칭
6소자 입력 용량광대역
7결합(coupling) 용량크로스토크 분석

모델링 방법

1. 부품 파라미터로 (간편)

components:
  - {ref: C1, type: c, value: 100n, params: {esr: 0.02, esl: 0.5n}}
  - {ref: R1, type: r, value: 1MEG, params: {cp: 0.2p}}
  - {ref: L1, type: l, value: 10u,  params: {dcr: 0.15, cp: 5p}}

도구가 자동으로 등가 회로로 전개합니다.

2. 명시적 등가 회로 (확실)

이름 없는 회로 회로도RC120mΩESRLC1500pHESLC1100nFRAILN1N2GND
이름 없는 회로
# 100nF 커패시터의 실제 모델
components:
  - {ref: C1,  type: c, value: 100n}
  - {ref: RC1, type: r, value: 0.02, label: ESR}
  - {ref: LC1, type: l, value: 0.5n, label: ESL}
nets:
  RAIL: [LC1.1]
  N1:   [LC1.2, RC1.1]
  N2:   [RC1.2, C1.1]
  GND:  [C1.2]

어떤 시뮬레이터에서도 동작하고, 무엇을 모델링했는지 명확합니다.

3. 기생 노드 추가

배선 용량은 해당 노드에 커패시터를 하나 추가하면 됩니다.

이름 없는 회로 회로도CPAR6pF배선 기생 용량 30mmSIGNALGND
이름 없는 회로
components:
  - {ref: CPAR, type: c, value: 6p, label: 배선 기생 용량 30mm}
nets:
  SIGNAL: [RE.2, U1.'in+', CPAR.1]
  GND:    [CPAR.2]

★ 이 저장소의 규칙: ideal / real 쌍

11~13장과 16장의 예제는 두 버전으로 제공됩니다.

examples/11-parasitics/electrode-buffer-ideal.yaml   # 기생 없음
examples/11-parasitics/electrode-buffer-real.yaml    # 기생 포함

두 시뮬레이션 결과를 비교하면 기생의 영향을 파형으로 볼 수 있습니다.

circuit sim examples/11-parasitics/electrode-buffer-ideal.yaml --plot ideal.png
circuit sim examples/11-parasitics/electrode-buffer-real.yaml  --plot real.png

기생 값을 어디서 얻나

기생출처
커패시터 ESR/ESL제조사 S파라미터/임피던스 곡선 (Murata SimSurfing, TDK)
인덕터(inductor) DCR/SRF데이터시트
소자 입력 용량데이터시트
PCB 배선필드 솔버 또는 경험값 (1 nH/mm, 1~3 pF/cm)
케이블데이터시트 (pF/m)
커넥터데이터시트 또는 1~5 pF 가정
실측임피던스 애널라이저, TDR ← 가장 확실

💡 모르면 보수적으로 잡으세요. 기생을 과대평가하면 설계가 보수적이 될 뿐이지만, 과소평가하면 실물이 동작하지 않습니다.


계산 예제 — 기생을 넣기 전후

회로: 전극(1 MΩ) → 소스 팔로워(source follower)소스 팔로워 source follower전압 이득이 1인데도 쓰는 이유는 높은 임피던스를 낮은 임피던스로 바꿔 주기 때문입니다.자세히 보기 → → 20 pF 배선 → 증폭기

이상 모델 (기생 없음):

components:
  - {ref: VE, type: vac, value: 50u}
  - {ref: RE, type: r, value: 1MEG}
  # 소스 팔로워를 이상적 버퍼로
  - {ref: E1, type: vcvs, params: {gain: 1}}

→ 대역폭 무한, 신호 50 µV 그대로

실제 모델:

components:
  - {ref: VE,  type: vac, value: 50u}
  - {ref: RE,  type: r, value: 1MEG,  label: 전극}
  - {ref: CG,  type: c, value: 3p,    label: 게이트 용량}
  - {ref: M1,  type: m_nmos, model: NMOS_PIXEL}
  - {ref: IB,  type: idc, value: 100u, label: 바이어스 전류원}
  - {ref: CL,  type: c, value: 20p,   label: 열 배선 용량}

→ 대역폭 유한, 이득 0.9, 세틀링 시간 존재

차이를 파형으로 확인하는 것이 이 장의 목적입니다.


⚖️ 트레이드오프 — 모델을 얼마나 정밀하게?

수준✅⚠️
이상 모델만빠름, 개념 확인실물과 다름
주요 기생만 (대지 용량, ESR/ESL)실용적 정확도, 여전히 빠름일부 현상 놓침
상세 모델 (S파라미터, 필드 솔버)정확느림, 수렴 문제, 데이터 확보 어려움
실측 기반가장 정확시제품 필요

💡 실무 권장: “주요 기생만” 수준. 고임피던스 노드의 용량, 커패시터 ESR/ESL, 케이블 용량 — 이 셋만 넣어도 대부분의 문제를 예측할 수 있습니다.


🔌 실제 쓰임새 — 체크리스트

시뮬레이션 전에 확인하세요:

  • 모든 고임피던스 노드(>100 kΩ)에 대지 용량을 넣었는가?
  • 신호가 보드를 나가는 곳에 케이블 용량을 넣었는가?
  • 디커플링·필터 커패시터에 ESR/ESL을 넣었는가?
  • 신호원의 실제 출력 임피던스를 반영했는가?
  • OP앰프 모델이 실제 소자 것인가? (이상적 VCVS가 아니라)
  • 온도·부품 오차를 고려했는가? (몬테카를로/코너 해석)
  • 측정 프로브(probe)의 로딩도 볼 것인가?

⚠️ 이상과 실제의 차이 — 시뮬레이션 자체의 한계

시뮬레이션이 못 하는 것대응
레이아웃 의존 기생필드 솔버 또는 경험값 + 여유
방사·유도 결합3D 전자기 해석 또는 실측
부품 개체 편차몬테카를로 해석
온도 분포열 해석
모델 자체의 부정확실측 검증
접촉 불량, 조립 오차—

⚠️ SPICE의 OP앰프 모델은 출력 임피던스와 고주파 특성이 부정확한 경우가 많습니다. 발진 여부를 시뮬레이션만으로 판단하지 마세요. 실물 측정이 최종 판단 기준입니다.


연습문제

문제 1. 100 nF 커패시터(ESR 20 mΩ, ESL 0.5 nH)의 SPICE 등가 회로를 쓰세요.

연습 11-07-1 — 기생 성분을 적는 두 가지 방법은 같은 것이다 회로도LB500pHESLRB20mΩESRIA1ACA100nFparams 로 적은 것IB1ACB100nF알맹이ZAZBN1N2GND
연습 11-07-1 — 기생 성분을 적는 두 가지 방법은 같은 것이다워크벤치에서 열기 →
풀이
* 100nF with parasitics
L_esl  n1 n2  0.5n
R_esr  n2 n3  0.02
C_main n3 n4  100n

또는 이 저장소 포맷으로:

이름 없는 회로 회로도LC1500pHRC120mΩC1100nFAN1N2B
이름 없는 회로
components:
  - {ref: LC1, type: l, value: 0.5n}
  - {ref: RC1, type: r, value: 0.02}
  - {ref: C1,  type: c, value: 100n}
nets:
  A:   [LC1.1]
  N1:  [LC1.2, RC1.1]
  N2:  [RC1.2, C1.1]
  B:   [C1.2]

문제 2. 시뮬레이션에서는 안정한 버퍼가 실물에서 발진합니다. 무엇을 모델에 추가해야 합니까?

exercises/11-07-sim-stable-real-oscillates.yaml
풀이

추가할 것:

  1. 출력 부하 용량 — 케이블, 다음 단 입력, PCB 배선 (10~200 pF)
  2. OP앰프의 실제 모델 — 이상적 VCVS가 아니라 제조사 제공 SPICE 모델. 출력 임피던스와 위상(phase) 특성이 포함되어야 함
  3. 전원 임피던스 — 디커플링이 불충분하면 전원을 통한 피드백이 발진을 만듦
  4. 입력 배선 인덕턴스 — 특히 소스 팔로워에서
  5. 피드백 경로의 기생 용량 — 반전(inverting) 입력 노드

시뮬레이션 방법:

  • AC 해석으로 루프 이득과 위상 여유(phase margin)위상 여유 phase margin루프 이득이 1이 되는 주파수에서 발진까지 얼마나 남았는지를 각도로 나타낸 값입니다.PM=180∘+∠T(f0dB)\mathrm{PM} = 180^\circ + \angle T(f_{0\mathrm{dB}})자세히 보기 →를 직접 봅니다 (피드백 루프를 끊고 주입하는 방법)
  • 과도 해석에서 스텝 응답의 오버슈트(overshoot)오버슈트 overshoot계단 입력에 응답이 목표값을 넘어 솟는 정도로, 감쇠비 하나로 정해집니다.Mp=e−πζ/1−ζ2M_p = e^{-\pi\zeta/\sqrt{1-\zeta^2}}자세히 보기 →/링잉 확인

⚠️ 그래도 시뮬레이션이 실물을 완전히 예측하지는 못합니다. 특히 레이아웃 기생과 OP앰프 모델의 부정확성 때문입니다. 실물 검증이 필수입니다.

문제 3. 다채널 어레이의 세틀링을 시뮬레이션하려 합니다. 어떤 기생을 넣어야 의미 있는 결과가 나옵니까?

exercises/11-07-array-settling-parasitics.yaml
풀이

필수 요소:

  1. 열 배선 기생 용량 — 가장 중요. 배선 길이 × 단위 용량, 또는 모든 픽셀의 OFF 상태 용량 합

    Ccol=Ctrace+Npixels×Coff,pixelC_{col} = C_{trace} + N_{pixels}\times C_{off,pixel}
    기호
    C_col열 배선 기생 용량column line capacitanceF
    C_off,pixel정전용량 (off, 픽셀)capacitance (off, pixel)F
    C_trace배선 정전용량trace capacitanceF
    N_pixels개수 (pixels)count (pixels)
  2. 픽셀 소스 팔로워의 출력 임피던스 — 1/gm1/g_m, 바이어스 전류에 의존

  3. 선택 스위치의 RONR_{ON} — 세틀링 시정수에 직접 더해짐

  4. OFF 픽셀의 누설 전류(leakage current) — 열 배선에 오차 전류 주입

    Verror=N×Ileak×RloadV_{error} = N\times I_{leak}\times R_{load}
    기호
    I_leak누설 전류leakage currentA
    N개수count
    R_load부하 저항load resistanceΩ
    V_error전압 (error)voltage (error)V
  5. charge injection — 스위칭 시 주입 전하 (9-06)

  6. 열 배선의 저항 — 긴 배선이면 무시 못 함

  7. 인접 열 간 결합 용량 — 크로스토크

모델 구조: 한 열에 픽셀 N 개가 모두 매달립니다.

항목모델에 넣어야 할 것
켜진 픽셀 1개소스 팔로워 출력 임피던스 1/gm1/g_m
꺼진 픽셀 N−1 개각각의 OFF 상태 용량 CoffC_{off} ← 빠뜨리기 쉬움
열 배선배선 자체의 용량 CtraceC_{trace}
합계Ccol=Ctrace+(N−1) CoffC_{col} = C_{trace} + (N-1)\,C_{off}

꺼진 스위치도 용량으로는 연결되어 있습니다. 2500 픽셀 어레이에서 이 항을 빼면 세틀링 계산이 몇 배 낙관적으로 나옵니다.

핵심 통찰: OFF 상태 픽셀들의 용량이 합쳐져 CcolC_{col}을 크게 만듭니다. 픽셀이 많을수록 세틀링이 느려집니다 — 이것이 어레이 크기의 근본적 한계입니다.

예: 50개 픽셀 × 0.05 pF = 2.5 pF + 배선 2 pF = 4.5 pF

이 계산이 16-01의 핵심입니다.


이전 ← 06 케이블과 프로브 로딩 | 다음 → 08 전송선