전자공학 소프트웨어 마지막 수정: 2026-07-03 22:41:19

SPICE
Simulation Program with Integrated Circuit Emphasis
최초 개발UC 버클리, 1973
핵심 알고리즘수정 노드 해석 (MNA)
비선형 해법뉴턴-랩슨법
대표 파생LTspice, ngspice, HSPICE, PSpice
분야전자공학 × 수치해석

1. 개요[편집]

회로가 이상한가? 일단 .tran 돌려보고 생각하자.

SPICE(Simulation Program with Integrated Circuit Emphasis)는 전자 회로의 동작을 수치적으로 시뮬레이션하는 회로 시뮬레이터로, 1973년 UC 버클리에서 로렌스 네이글(Laurence Nagel)과 도널드 페더슨(Donald Pederson)이 개발했다1. 저항·커패시터·트랜지스터를 연결한 네트리스트(netlist)를 입력하면, 각 노드의 전압과 각 소자의 전류를 계산해준다. 반세기가 지난 지금도 전 세계 아날로그·전력·집적회로 설계자가 매일 두드리는 도구이며, 사실상 “회로 시뮬레이션”의 대명사가 되었다.

SPICE의 위대함은 무료 배포에 있었다. 버클리가 소스 코드를 공개한 덕에 수많은 상용·오픈소스 파생이 쏟아졌고, 오늘날 반도체 산업 전체가 이 한 프로그램의 후손 위에서 돌아간다고 해도 과언이 아니다.

2. 회로를 행렬로 — 수정 노드 해석(MNA)[편집]

SPICE가 회로를 푸는 방식의 핵심은 수정 노드 해석(Modified Nodal Analysis, MNA)이다. 회로의 각 노드에 키르히호프 전류 법칙(KCL)을 적용하면, 노드 전압을 미지수로 하는 연립방정식이 세워진다. 이를 행렬 형태로 쓰면 다음과 같다.

Gv=i\mathbf{G} \mathbf{v} = \mathbf{i}

여기서 G\mathbf{G}는 소자의 컨덕턴스로 채워진 어드미턴스 행렬, v\mathbf{v}는 노드 전압 벡터, i\mathbf{i}는 전류원 벡터다. 순수한 노드 해석만으로는 전압원이나 인덕터처럼 전류를 미지수로 다뤄야 하는 소자를 담기 곤란한데, MNA는 이런 소자의 전류를 미지수에 추가로 끼워 넣어(modified) 문제를 확장한다. 그래서 이름이 “수정” 노드 해석이다. 결국 회로 시뮬레이션은 매 시점 이 행렬방정식을 푸는 일로 환원된다.

3. 소자 모델[편집]

SPICE가 진짜 밥값을 하는 부분은 비선형 소자 모델이다. 저항은 옴의 법칙으로 끝나지만, 반도체 소자는 지수함수적으로 비선형이다. 다이오드의 전류-전압 관계가 대표적이다.

ID=IS(eVD/(nVT)1)I_D = I_S \left( e^{\,V_D / (n V_T)} - 1 \right)

트랜지스터는 여기서 한참 더 복잡해진다. BJT의 거머-푼(Gummel-Poon) 모델, MOSFET의 BSIM 모델 계열은 수십에서 수백 개의 파라미터로 소자의 물리적 거동을 묘사한다2. 반도체 파운드리가 공정별로 제공하는 이 모델 파라미터의 정확도가 곧 시뮬레이션 신뢰도를 좌우한다.

4. 해석의 종류[편집]

SPICE는 무엇을 알고 싶은지에 따라 여러 해석 모드를 제공한다.

명령이름목적
.op / .dcDC 해석정적 동작점, DC 스윕
.acAC 해석주파수 응답 (소신호 선형화)
.tran과도(transient) 해석시간에 따른 파형

DC 해석은 시간 미분을 0으로 두고 동작점(operating point)을 찾고, AC 해석은 그 동작점 주위에서 회로를 선형화해 주파수 응답(보드 선도)을 뽑는다. 그리고 회로쟁이들이 가장 사랑하는 .tran, 즉 과도 해석은 시간을 잘게 쪼개 파형이 실제로 어떻게 흔들리는지를 계산한다.

5. 비선형과 시간, 두 개의 반복[편집]

SPICE 내부에서는 사실 두 겹의 수치 반복이 돌아간다.

첫째, 비선형 처리다. 다이오드·트랜지스터가 낀 회로는 위의 행렬방정식 Gv=i\mathbf{G}\mathbf{v} = \mathbf{i}가 선형이 아니게 된다. SPICE는 이를 뉴턴-랩슨법으로 푼다. 각 반복마다 소자를 동작점 주위에서 선형화(자코비안 계산)하고, 선형 방정식을 풀어 해를 갱신하기를 수렴할 때까지 반복한다. 수렴이 안 되면 그 악명 높은 Timestep too small / No convergence 에러가 뜬다.

둘째, 시간 적분이다. 과도 해석에서 커패시터·인덕터의 미분항을 다루려면 수치 적분법이 필요하다. SPICE는 주로 **후진 오일러(Backward Euler)**나 사다리꼴(Trapezoidal) 공식을 쓴다. 후진 오일러는 안정적이지만 오차가 크고, 사다리꼴은 더 정확하지만 특정 회로에서 수치 진동(ringing)을 일으킬 수 있다. 두 방식 모두 암시적(implicit) 기법이라 각 시간 스텝마다 위의 뉴턴-랩슨 반복을 다시 돌려야 한다. 즉 시간 스텝 하나마다 뉴턴 반복 여러 번이 중첩되는 구조다.

6. 파생과 현실[편집]

버클리 SPICE의 후예는 셀 수 없이 많다.

  • LTspice — 아날로그 디바이스(구 리니어 테크놀로지)가 무료로 뿌리는 버전. 빠르고 강력해서 취미공학과 실무 양쪽에서 국민 시뮬레이터로 통한다.
  • ngspice — 오픈소스 진영의 대표 주자. KiCad 같은 EDA 툴에 내장되어 돌아간다.
  • HSPICE — 시놉시스의 상용 골드 스탠더드. 파운드리 사인오프(signoff)에서 기준으로 통하는 정확도를 자랑한다.
  • PSpice — 케이던스 계열로, 교육용으로도 오래 쓰였다.

현업의 진실은 이렇다. 회로가 왜 이러는지 모르겠으면, 일단 .tran 한 번 돌려보고 파형을 째려보는 것이 반쯤은 국룰이다.3 물론 수렴이 안 되면 파형 대신 빨간 에러 로그를 째려보게 되지만.

7. 관련 문서[편집]

8. Footnotes[편집]

  1. 그 조상은 1970년의 CANCER(Computer Analysis of Nonlinear Circuits, Excluding Radiation)라는 프로그램이다. 이름이 하필 “암”이라 이미지가 좋지 않았고, 결국 SPICE로 갈아탄 뒤 대박이 났다. 프로그램도 작명이 중요하다는 교훈.

  2. BSIM(Berkeley Short-channel IGFET Model)은 버전이 올라갈수록 파라미터가 늘어나 BSIM4에서는 수백 개에 달한다. 이 파라미터 시트를 처음 열어본 신입 설계자의 표정은 대체로 비슷하다.

  3. 물론 아무 회로에나 무작정 .tran을 갈기면 초기 조건·수렴 문제로 시뮬레이터가 짜증을 낸다. 그래서 노련한 설계자는 .op로 동작점부터 확인하고, 초기값(.ic)과 옵션(RELTOL, GMIN)을 만져가며 달랜다. “일단 돌려”는 밈이고, 실제로는 달래기의 예술이다.