콘텐츠로 이동

ngspice로 넷리스트 실행하기

  • 라이브러리의 넷리스트를 배치 모드(batch mode)로 실행하고 측정값을 읽습니다.
  • 적분 규칙(integration rule)이 타임 스텝(time step)보다 훨씬 빠른 모드를 어떻게 다루는지, 그리고 사다리꼴 규칙(trapezoidal rule)이 회로에 없는 링잉을 만들 수 있는 이유를 봅니다.
  • 스위칭 파형을 믿을 수 있게 해 주는 옵션을 고릅니다.

저장소의 sim/ngspice/ 폴더에는 컨버터의 각 사례가 ngspice용 넷리스트(netlist)로 들어 있습니다 [ngspice – open source SPICE simulator]. ngspice -b buck-ccm.cir를 실행하면 마지막 주기의 .meas 결과, 곧 스위치 노드의 전압, 인덕터 전류(플라이백에서는 1차 전류), 출력 전압의 평균과 최댓값·최솟값을 출력합니다. ngspice buck-ccm.cir를 실행한 뒤 run을 입력하면 폴더의 README가 제시하는 파형을 그릴 수 있습니다. CI는 모든 넷리스트를 다시 실행해, 각 값이 주기 동안의 최대 크기 대비 1 % 안에서 이상적인 식과 맞고 출력이 정착했는지 확인합니다.

SPICE가 회로를 시뮬레이션하는 방법

섹션 제목: “SPICE가 회로를 시뮬레이션하는 방법”

SPICE는 회로를 일련의 타임 포인트(time point)에서 차례로 계산합니다. 적분 규칙의 추정 오차가 허용오차(tolerance) 안에 들도록 스텝마다 길이를 정하며, 상대 허용오차(relative tolerance)는 넷리스트가 따로 정하지 않으면 0.001입니다 [The ngspice team, Ngspice User's Manual]. 두 타임 포인트 사이에서 모든 커패시터와 인덕터는 .options method가 고르는 규칙을 따릅니다. 따로 지정하지 않으면 사다리꼴 규칙이고, 기어(Gear) 방법을 고를 수도 있습니다. 기어 방법은 후진 차분 공식(backward differentiation formula)을 쓰며, 기본적으로 두 번째 공식까지 씁니다 [The ngspice team, Ngspice User's Manual].

컨버터 회로에는 다이오드가 도통을 멈추는 순간처럼 타임 스텝보다 훨씬 빠른 모드가 있을 수 있습니다. 사다리꼴 규칙이나 후진 오일러(backward Euler) 같은 한 스텝 규칙(one-step rule)은 그런 모드의 편차에 스텝마다 일정한 배율을 곱합니다. 사다리꼴 규칙은 스텝 양 끝의 기울기를 평균합니다.

gTR=1−Δt2τ1+Δt2τg_\mathrm{TR} = \frac{1 - \frac{\Delta t}{2 \tau}}{1 + \frac{\Delta t}{2 \tau}}
gTRg_\mathrm{TR}
사다리꼴 규칙의 스텝당 배율
Δt\Delta t
타임 스텝
τ\tau
시정수(time constant)
감쇠 모드에 대한 사다리꼴 규칙의 스텝당 배율✓ 테스트 8개로 검증됨
가정, 표기 규약, 출처
가정
  • 감쇠 모드 하나만 따로 봄: 변화율이 편차를 tau로 나눈 값의 음수와 같음(시험 방정식)
  • 모든 스텝에서 같은 타임 스텝
비고
이 규칙은 스텝 양 끝의 기울기를 평균합니다. 배율은 스텝 길이와 관계없이 -1과 1 사이에 머물지만(A-안정), 스텝이 τ\tau보다 훨씬 길면 배율이 -1에 가까워집니다. 그러면 모드가 거의 감쇠하지 않고 스텝마다 부호를 바꾸는, 회로에는 없는 링잉이 생깁니다. ngspice는 따로 지정하지 않으면 이 규칙으로 적분합니다
출처
Hairer & Wanner 1996, Sec. IV.3 (Stability Function of Implicit RK-Methods: the trapezoidal rule is A-stable, |R| tends to 1); derived here; The ngspice team, Ngspice User's Manual, .options, transient analysis: METHOD, trapezoidal by default
유도
sympy 단계별 유도
수식 id
num.gain_tr · equations.yaml 항목

이 배율의 크기는 스텝 길이와 관계없이 1을 넘지 않으므로 해가 발산하지는 않습니다. 그러나 스텝이 모드의 시정수(time constant)보다 훨씬 길면 배율이 -1에 가까워져, 모드가 거의 감쇠하지 않고 타임 포인트마다 부호를 바꿉니다. 회로에는 없는 링잉입니다 [Hairer & Wanner 1996]. 기어 방법이 쓰는 후진 차분 공식 가운데 첫 번째는 후진 오일러이며, 스텝 끝의 기울기를 씁니다.

gBE=11+Δtτg_\mathrm{BE} = \frac{1}{1 + \frac{\Delta t}{\tau}}
gBEg_\mathrm{BE}
후진 오일러의 스텝당 배율
Δt\Delta t
타임 스텝
τ\tau
시정수(time constant)
감쇠 모드에 대한 후진 오일러의 스텝당 배율✓ 테스트 8개로 검증됨
가정, 표기 규약, 출처
가정
  • 감쇠 모드 하나만 따로 봄: 변화율이 편차를 tau로 나눈 값의 음수와 같음(시험 방정식)
  • 모든 스텝에서 같은 타임 스텝
비고
이 규칙은 스텝 끝의 기울기를 씁니다. 배율은 스텝 길이와 관계없이 0과 1 사이이고 스텝이 길수록 0에 가까워집니다(L-안정). 스텝보다 훨씬 빠른 모드는 링잉 없이 한 스텝 뒤에 거의 사라집니다. 후진 차분 공식(backward differentiation formula) 가운데 첫 번째이며, .options method=gear로 기어(Gear) 방법을 지정하면 ngspice는 이 공식들을 기본적으로 두 번째까지 씁니다
출처
Hairer & Wanner 1996, Sec. IV.3 (implicit Euler is L-stable) and Ch. V (Multistep Methods for Stiff Problems: backward differentiation formulas, the first of which is implicit Euler); derived here; The ngspice team, Ngspice User's Manual, .options, transient analysis: METHOD=gear, and MAXORD, 2 by default
유도
sympy 단계별 유도
수식 id
num.gain_be · equations.yaml 항목

이 배율은 반대로 0에 가까워지므로, 그런 모드는 한 스텝 뒤에 거의 사라집니다 [Hairer & Wanner 1996]. 두 번째 공식도 몇 스텝 안에 그 모드를 감쇠시킵니다 [Hairer & Wanner 1996, Ch. V].

ngspice의 기본값, 곧 사다리꼴 규칙과 상대 허용오차 0.001에서 라이브러리의 DCM 플라이백은 정확히 이런 모습을 보입니다. 다이오드가 도통을 멈추면 2차 전류가 스텝마다 0을 가로지르며 링잉하고, 드레인 전압은 0보다 약 1킬로볼트 낮게 떨어집니다. 같은 허용오차에서 기어 방법을 쓰면 이 링잉은 사라지지만, 다이오드 전류가 도통이 끝날 때 여전히 0을 지나쳐 드레인이 그 순간 0보다 수십 볼트 낮게 떨어집니다. 라이브러리의 모든 넷리스트와 회로도에 들어 있는 .options method=gear reltol=1e-4 줄을 쓰면 둘 다 사라집니다.

시정수 1나노초인 모드를 20나노초 스텝으로 계산합니다.

강성 모드 예제
기호값구하는 방법
τ\tau 시정수(time constant)1 ns주어진 값
Δt\Delta t 타임 스텝20 ns주어진 값
gTRg_\mathrm{TR} 사다리꼴 규칙의 스텝당 배율−0.818감쇠 모드에 대한 사다리꼴 규칙의 스텝당 배율
gBEg_\mathrm{BE} 후진 오일러의 스텝당 배율0.0476감쇠 모드에 대한 후진 오일러의 스텝당 배율

사다리꼴 규칙이 스텝마다 모드에 곱하는 배율은 −0.818입니다. 열 스텝 뒤에도 약 7분의 1이 남으며, 부호는 타임 포인트마다 바뀝니다. 후진 오일러의 배율은 0.0476이므로, 두 스텝 뒤에는 400분의 1도 남지 않습니다.

▶ 수식 탐색기에서 열기: 감쇠 모드에 대한 사다리꼴 규칙의 스텝당 배율
초기값을 가져온 예제 num-stiff

스텝을 바꿔 봅니다. 배율은 시정수의 두 배에서 0을 지나고, 그보다 긴 스텝에서는 -1에 다가갑니다.

▶ 수식 탐색기에서 열기: 감쇠 모드에 대한 후진 오일러의 스텝당 배율
초기값을 가져온 예제 num-stiff

후진 오일러의 배율은 반대로 0을 향해 줄어듭니다.

DCM 컨버터의 스위치 노드를 벤치에서 다이오드가 도통을 멈추는 순간에 캡처합니다. 이때의 링잉은 실제 링잉입니다. 인덕턴스가 스위치 노드의 커패시턴스와 함께 그 부품들이 정하는 주파수로 진동합니다. 같은 회로를 두 번 시뮬레이션합니다. 한 번은 긴 최대 스텝의 사다리꼴 규칙으로, 한 번은 실제 링잉을 충분히 나타낼 만큼, 곧 링잉 주기의 작은 일부만큼 짧은 최대 스텝의 기어 방법으로 실행합니다. 타임 포인트마다 부호가 바뀌고 최대 스텝을 바꾸면 달라지는 링잉은 수치적인 것입니다. 주파수가 그대로인 링잉은 회로의 것이며, 벤치가 더하는 손실을 빼면 벤치와 맞아야 합니다.

  • 타임 포인트마다 부호가 바뀌는 링잉은 회로가 아니라 적분 규칙이 만든 것입니다(사다리꼴 규칙의 배율).
  • 기어 방법은 스텝이 충분히 나타내지 못하는 실제 링잉도 감쇠시킵니다. 감쇠 없는 진동에 대해 후진 오일러의 배율은 크기가 1보다 작고, 사다리꼴 규칙의 배율은 정확히 1입니다 [Hairer & Wanner 1996]. 그래서 스텝이 진동 주기보다 충분히 짧지 않으면, 감쇠가 작은 L-C 링잉이 기어 시뮬레이션에서 실제 회로보다 빨리 줄어듭니다.
  • 더 엄격한 허용오차에는 대가가 있습니다. 스텝이 짧아지고 실행 시간이 길어집니다. 라이브러리는 DCM 플라이백의 다이오드 턴오프 때문에 이를 골랐고, 모든 사례에 똑같이 적용합니다.
  • 도구 ngspice — the ngspice project · 확인일 2026-09-24
    오픈 소스 SPICE 시뮬레이터. 이 사이트의 시뮬레이터를 CI에서 ngspice와 교차 검증합니다.
  • 도구 Ngspice User's Manual — the ngspice team · 확인일 2026-09-25
    넷리스트의 모든 줄에 대한 참고 문서. .tran과 .meas 문, 그리고 적분법과 허용오차를 정하는 .options.
  1. 넷리스트가 따로 정하지 않으면 ngspice는 어떤 적분 규칙을 씁니까?

    1. 후진 오일러
    2. 사다리꼴 규칙
    3. 전진 오일러
    4. 기어 방법
    정답과 해설

    정답: B 매뉴얼은 .options method의 기본값을 사다리꼴 규칙으로 적고 있습니다. 기어 방법은 따로 지정해야 합니다.

  2. 시정수 1 ns인 모드를 사다리꼴 규칙으로 20 ns 스텝마다 계산합니다. 스텝마다 곱해지는 배율은 얼마입니까?

    1. 약 0.05
    2. 약 1
    3. 약 -19
    4. 약 -0.82
    정답과 해설

    정답: D 스텝의 절반을 시정수로 나누면 10이고, 배율은 (1 - 10)/(1 + 10), 곧 -9/11입니다. 모드는 크기 대부분을 유지한 채 부호를 바꿉니다.

  3. 그 배율은 시뮬레이션 파형에서 어떻게 보입니까?

    1. 타임 포인트마다 부호가 바뀌는 링잉
    2. 느린 지수 감쇠
    3. 한 번의 계단
    4. 보이지 않는다. 모드가 너무 빠르다
    정답과 해설

    정답: A -1에 가까운 배율은 모드를 거의 감쇠시키지 않고 타임 포인트마다 부호를 뒤집습니다. 회로가 아니라 적분 규칙이 만든 링잉입니다.

  4. 같은 모드를 기어 방법이 쓰는 후진 차분 공식의 첫 번째인 후진 오일러로 20 ns 스텝마다 계산하면 어떻게 됩니까?

    1. 타임 포인트마다 링잉한다
    2. 커진다
    3. 한두 스텝 뒤에 거의 사라진다
    4. 감쇠하지 않는다
    정답과 해설

    정답: C 배율은 1/(1 + 20), 약 0.05입니다. 두 스텝 뒤에는 모드의 400분의 1도 남지 않습니다.

  5. 기어 시뮬레이션이 감쇠가 작은 L-C 링잉을 잘못 보여 줄 수 있는 이유는 무엇입니까?

    1. 링잉을 키운다
    2. 링잉 주파수를 두 배로 만든다
    3. 인덕터를 시뮬레이션할 수 없다
    4. 스텝이 충분히 나타내지 못하는 진동을 감쇠시켜, 링잉이 실제 회로보다 빨리 줄어든다
    정답과 해설

    정답: D 감쇠 없는 진동에 대해 후진 오일러의 배율은 크기가 1보다 작고, 사다리꼴 규칙의 배율은 정확히 1입니다. 스텝이 짧으면 그 차이가 작아집니다.

  6. ngspice 기본 설정에서 라이브러리의 DCM 플라이백은 어떤 모습을 보였습니까?

    1. 다이오드가 도통을 멈춘 뒤 2차 전류가 스텝마다 0을 가로지르며 링잉하고, 드레인이 0보다 훨씬 아래로 떨어졌다
    2. 올바른 파형
    3. 예상보다 높은 출력 전압
    4. 아무 결과도 없음
    정답과 해설

    정답: A 다이오드가 꺼질 때 남는 빠른 모드에서 사다리꼴 규칙이 링잉했습니다. 기어 방법과 상대 허용오차 1e-4가 이를 없앴습니다.

이 사이트의 예제, 프리셋, 연습 문제에 나오는 수치는 교육용으로 만든 어림수(합성 값)이며, 실제 설계의 데이터가 아닙니다.