(아직 실행되지 않았습니다. 우측 탭의 Run 버튼을 눌러주세요.)
.tran 1u 3m
.tran을 추가한 뒤 ▶ Run .tran을 눌러주세요..dc를 추가한 뒤 ▶ Run .dc를 눌러주세요..ac를 추가한 뒤 ▶ Run .ac를 눌러주세요..noise를 추가한 뒤 ▶ Run .noise를 눌러주세요.SPICE 기본 소자(V/I/R/L/C/M)와 시뮬레이션 종류(.dc / .tran / .ac / .noise) 사용법을 익히는 5가지 회로. 클릭하면 editor에 로드됩니다.
학생이 자유롭게 SPICE netlist를 작성·시뮬레이션하는 실습 도구입니다. 시뮬레이션은 브라우저 안의 ngspice WASM으로 실행되며 서버로 전송되지 않습니다.
/model.lib에 로드되므로 .lib "/model.lib" MOS로 참조..tran, .dc, .ac, .noise. 한 netlist에 여러 개 작성 가능.각 Run 버튼은 ngspice를 별도 세션으로 호출합니다:
.tran/.dc/.ac/.noise는 일시 제거.control...endc 블록도 일시 제거 (자동 wrapper로 대체)/<analysis>.txt에 dump예시 — Tran 탭의 Run 버튼 동작:
* (.dc / .ac / .noise / .control 제거) .tran <학생이 쓴 시간 파라미터> .control run wrdata /tran.txt all quit .endc .end
ngspice의 stdout/stderr 전체가 좌측 하단 📜 ngspice 로그 패널에 표시됩니다. 디버깅 시 참고.
단축키는 editor 안/밖 어디서나 작동합니다. 다른 입력란에 포커스가 있을 때는 비활성화.
헤더의 📖 갤러리 버튼에서 5가지 SPICE 튜토리얼을 로드할 수 있습니다. 기본 소자 (V/I/R/L/C/M)와 시뮬레이션 종류 (.dc / .tran / .ac / .noise) 사용법을 다룹니다.
.dc sweep은 1차 sweep만 차트 표시.R<name> n+ n- <value> ; 저항 (예: R1 in out 1k) C<name> n+ n- <value> [IC=<v0>] ; 커패시터 (예: C1 out 0 100n) L<name> n+ n- <value> [IC=<i0>] ; 인덕터 D<name> n+ n- <model> ; 다이오드 Q<name> nC nB nE [nS] <model> ; BJT M<name> nD nG nS nB <model> W=<w> L=<l> ; MOSFET (예: M1 d g 0 0 nmos4 W=20u L=1u)
V<name> n+ n- <DC> [AC <mag> [phase]] [stim] ; 전압원
I<name> n+ n- <DC> [AC <mag>] [stim] ; 전류원
E<name> n+ n- nc+ nc- <gain> ; VCVS (선형; POLY는 미지원)
B<name> n+ n- V=<expr> ; behavioral — 수식/비선형
; 예: B1 vcm 0 V = V(in1)+V(in2)/2
V1 in 0 DC 0 AC 1 ; AC / Noise 분석용 V1 in 0 PULSE(V1 V2 TD TR TF PW PER) ; 펄스 V1 in 0 SIN(VO VA FREQ TD THETA) ; 정현파 V1 in 0 EXP(V1 V2 TD1 TAU1 TD2 TAU2) ; 지수 응답 V1 in 0 PWL(t1 v1 t2 v2 ...) ; piecewise linear
T = 1e12 G = 1e9 Meg = 1e6 K = 1e3 M = 1e-3 U = 1e-6 N = 1e-9 P = 1e-12 F = 1e-15
M은 milli, mega는 Meg. 즉 1Meg=1,000,000Ω 이지만 1M=0.001Ω..lib "/model.lib" MOS ; 본 페이지에선 ETRI PDK가 /model.lib로 자동 마운트
; MOS / DIODE / BJT / RES / CAP 섹션 선택 가능
.include "/model.lib" ; 라이브러리가 아닌 일반 include
.dc <src> <start> <stop> <step> [<src2> <s2> <e2> <st2>]
예: .dc VGS 0 3 0.005
.dc VDS 0 5 0.05 VGS 0.5 1.5 0.25 ; nested (외부만 차트)
.tran <tstep> <tstop> [<tstart> [<tmax>]] [UIC]
예: .tran 1u 3m
.tran 10u 5m 1m ; 1ms 이후만 출력
UIC ; 초기조건(IC=) 사용, .op 건너뜀
.ac <dec|oct|lin> <Npoints> <fstart> <fstop>
예: .ac dec 20 1 1Meg ; decade당 20점, 1Hz~1MHz
.ac lin 100 50 60 ; 50~60Hz, 100점
.op로 동작점을 푼 뒤 small-signal linearization 한 결과를 표시합니다.
.noise V(<output>[,<ref>]) <input_src> <dec|oct|lin> <N> <fstart> <fstop> 예: .noise V(out) Vin DEC 20 1 100Meg
input_src에 AC 1이 있어야 합니다. .noise는 내부적으로 AC를 사용합니다.출력: inoise_spectrum (입력 referred), onoise_spectrum (출력) 두 신호.
.noise 입력 소스에 AC 1 추가. 예: Vin in 0 DC 1.0 AC 1.lib "/model.lib" MOS가 M 소자보다 위 줄에 있어야 함.1M을 썼는지 확인. mega는 1Meg..end 누락 — ngspice가 입력 끝을 인식 못해 동작점만 풀고 분석 건너뜀.AC 1이 없으면 회로가 small-signal로 들뜨지 않음.*로 시작 또는 $·; 뒤.ngspice WASM은 XSPICE 기반 POLY를 지원하지 않습니다. 차동 입력 등은 B source로:
* 차동 증폭기 입력 (vcm + vid/2, vcm − vid/2) Bip ip 0 V = V(vcm) + 0.5*V(vid) Bin in 0 V = V(vcm) - 0.5*V(vid)
🧪 SPICE 실습 페이지 — © 2026 세종대학교 HICS Lab.
MIT License 로 공개. 저작권 표시만 유지하면 사용·수정·재배포 자유.
GitHub: github.com/hics-lab/icdesign
본 페이지 코드는 교육용으로 자유롭게 활용 가능합니다. PDK 모델은 모아팹/ETRI의 배포 정책을 따릅니다.