인프런 커뮤니티 질문&답변
BGR 과제 관련 BJT model 질문 드립니다.
작성
·
26
0

안녕하세요 삼코치님. BGR 설계 따라해보기 10강 34:24에 나오는 .op 에서, 아래와 같은 오류가 발생합니다.
질문1) .op test 문제
모델이 문제인가 싶어서, .model NPN NPN (Is = ... ) 이부분을 텍스트로 바꾸고(파란색) .op 시뮬레이션을 돌려보니 되긴 하는데, 강의에서는 VREF가 1.2 V가 나온다고 되어 있으나, 제가 하면 1.47095 V로 나옵니다.
혹시 몰라 다른 질문을 찾아보니, .model NPN 이런건 반드시 참조? 를 걸어놓고 시뮬을 해야 한다는 답변을 봤는데, 왜 저는 참조를 시켜놓으면 에러 코드가 나오고, 참조를 안시켜놓으면 다른 결과가 나오는 지 궁금합니다.
질문 2) M9, M10 의 body가 왜 VSS에 연결되어있지 않고 Source단에 연결되어있는지 궁금합니다.
에러 코드
LTspice 26.0.1 for Windows
Circuit: C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net
Start Time: Wed Mar 11 19:21:52 2026
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(5): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q11 VDD_TEST VDD_TEST VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(7): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q12<7> N013 N013 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(8): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q12<6> N013 N013 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(9): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q12<5> N013 N013 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(10): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q12<4> N013 N013 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(11): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q12<3> N013 N013 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(12): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q12<2> N013 N013 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(13): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q12<1> N013 N013 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(14): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q12<0> N013 N013 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(23): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q14<7> N009 N009 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(24): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q14<6> N009 N009 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(25): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q14<5> N009 N009 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(26): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q14<4> N009 N009 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(27): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q14<3> N009 N009 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(28): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q14<2> N009 N009 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(29): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q14<1> N009 N009 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(30): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q14<0> N009 N009 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(31): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q13 N005 N005 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(34): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q15 N010 N010 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(40): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q1<7> N011 N011 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(41): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q1<6> N011 N011 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(42): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q1<5> N011 N011 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(43): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q1<4> N011 N011 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(44): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q1<3> N011 N011 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(45): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q1<2> N011 N011 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(46): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q1<1> N011 N011 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(47): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q1<0> N011 N011 VSS 0 NPN
^^^
C:\Users\User\Documents\LTspice\4-1\TEST_BGR.net(48): This model has multiple definitions. (Note: If you wish to allow this, add ".OPTIONS ALLOW_AMBIGUOUS_MODELS" to your netlist.)
Q2 N007 N007 VSS 0 NPN
^^^
답변 2
0
안녕하세요, 답변 남겨드립니다.
우선 LTspice가 업데이트되면서 버전차이에 의한 문제도 있어서 아래와 같이 가이드 드리니 확인 부탁드립니다.
지금 증상은 LTspice에서 “참조를 했느냐 안 했느냐”의 문제가 아니라, 같은 이름의 BJT 모델을 두 군데 이상에서 보고 있어서 생기는 전형적인 model collision입니다. 로그에 나온 “This model has multiple definitions”가 핵심이고, 회로 안의 Q 소자들이 전부 model name으로 NPN을 쓰고 있는데 netlist 안에 NPN이라는 이름이 둘 이상 존재한다는 뜻입니다. 보통은 사용자가 붙여 넣은 .model NPN NPN(...) 한 번, .include tsmc018.lib 안의 정의 한 번, 또는 LTspice 기본 generic NPN과 이름이 겹칠 때 이런 일이 납니다.
LTspice에서 BJT “참조”는 별도의 체크 동작이 있는 것이 아니라, Q 심볼의 Value에 적힌 모델명과 .model 또는 .include/.lib로 불러온 모델명이 정확히 일치하면 연결되는 구조입니다. 그래서 지금은 NPN, PNP처럼 너무 일반적인 이름을 쓰는 것이 문제의 출발점입니다. 실무에서는 이런 경우 거의 무조건 이름을 바꿉니다. 예를 들어 .model BGR_NPN NPN(...), .model BGR_PNP PNP(...)처럼 고유 이름으로 바꾸고, 회로 안의 Q13, Q14, Q15 같은 BJT들의 Value도 전부 BGR_NPN으로 통일하면 충돌이 사라집니다. .OPTIONS ALLOW_AMBIGUOUS_MODELS는 에러를 잠깐 덮는 용도로는 쓸 수 있어도, 실제 설계 검증에서는 거의 권하지 않습니다. include 순서나 LTspice 버전이 바뀌면 다른 모델이 잡혀 결과가 달라질 수 있어서 재현성이 무너집니다. Bias 회로는 이런 애매한 상태가 가장 위험합니다. 한 번은 1.2 V가 나오고 다른 PC에서는 1.47 V가 나오는 식으로 바로 문제가 드러납니다.
왜 모델 쪽을 건드리면 1.47095 V가 나오고, 강의에서는 1.2 V 근처가 나와야 하느냐는 식으로 보면 훨씬 이해가 쉽습니다. 이 구조는 본질적으로 I_PTAT = ΔVBE / R4, VREF ≈ VBE + (R5 / R4) * ΔVBE 형태입니다. 화면 값 기준으로 R4 = 20k, R5 = 267010이고 BJT 면적비가 8:1이라면 실온 300 K에서 ΔVBE ≈ Vt * ln(8) ≈ 25.85mV * 2.079 ≈ 53.8mV 정도입니다. 그러면 PTAT 항은 (267010 / 20000) * 53.8mV ≈ 0.718V가 됩니다. 따라서 VREF가 1.47095 V라면 실제 BJT의 VBE는 1.47095 - 0.718 ≈ 0.753V라는 뜻인데, 이 값은 강의에 나온 커스텀 BJT 카드보다는 LTspice generic NPN에 가까운 숫자입니다. 반대로 강의처럼 1.22 V 안팎이 나오려면 같은 전류에서 VBE가 0.50~0.53 V 정도여야 하고, 질문에 올리신 .model NPN NPN (Is=6.734f ...) 같은 카드라면 몇 uA 수준에서 그 정도 VBE가 충분히 나올 수 있습니다. 즉 지금 1.47 V가 나온다는 사실 자체가 “회로 토폴로지가 틀렸다”기보다 “의도한 BJT 모델이 안 물리고 generic NPN 쪽으로 돌아갔다”는 쪽에 훨씬 가깝습니다.
실무에서는 이런 상황에서 먼저 netlist를 열어 .model NPN이 몇 번 나오는지 직접 찾습니다. 그리고 각 Q 소자의 Value가 정확히 무엇인지 확인합니다. tsmc018.lib가 MOS만 담고 있고 BJT는 안 담고 있을 수도 있고, 반대로 BJT까지 같이 담고 있을 수도 있습니다. 또 파일 구조가 .lib tt, .lib ff 같은 section형태라면 .include보다 .lib 파일명 섹션명으로 불러야 맞는 경우도 있습니다. 다만 지금 로그의 본질은 corner 호출 방식보다도 모델명 중복입니다. 우선순위는 라이브러리 형식보다 이름 충돌 제거입니다.
한 가지 더 보셔야 하는 부분은, BGR은 생각보다 BJT 모델 민감도가 큽니다. 특히 DC 동작점에서는 Is와 ideality factor 쪽이 VBE를 크게 움직입니다. VBE가 200 mV만 바뀌어도 VREF는 거의 그만큼 이동합니다. 반면 저항 비율 오차 1%는 여기서는 대략 0.718V * 1% = 7.2mV 정도 영향입니다. 그래서 지금처럼 1.47 V와 1.2 V가 갈리는 것은 저항 숫자 오차나 수치해석 오차로 설명할 수 있는 범위가 아니고, 거의 확실하게 모델 선택 문제로 보시면 됩니다.
M9, M10의 body를 왜 VSS가 아니라 source에 붙였는지도 같은 맥락에서 이해하시면 됩니다. 이 두 NMOS의 source가 VSS에 딱 붙어 있는 구조가 아니라, BJT 위쪽 노드 때문에 보통 0.5~0.8 V 정도 떠 있게 됩니다. 이 상태에서 bulk를 VSS에 고정하면 VSB가 생기고, body effect 때문에 문턱전압이 올라갑니다. 식으로 쓰면 Vth = Vth0 + gamma * (sqrt(2*phiF + VSB) - sqrt(2*phiF))입니다. 예를 들어 gamma = 0.5 V^0.5, 2*phiF = 0.7V, VSB = 0.7V라고 두면 ΔVth가 대략 0.17 V 정도 올라갑니다. Bias 회로에서 NMOS overdrive가 0.15~0.20 V 수준이면, 문턱이 0.17 V 올라가는 것은 작은 보정이 아니라 동작점 자체를 바꿔버리는 수준입니다. Id가 대략 (VGS - Vth)^2에 비례하므로 current mirror 오차가 30%를 넘는 경우도 실제로 자주 나옵니다. 그래서 교육용 회로나 손계산 중심의 해석에서는 M9, M10의 body를 source에 묶어서 body effect를 없애고, bias loop를 단순하고 예측 가능하게 보이도록 그리는 경우가 많습니다.
다만 여기서 현업에서 더 중요하게 보는 포인트가 있습니다. LTspice에서 body를 source에 묶었다고 해서, 실제 CMOS 공정에서도 그 연결이 항상 가능한 것은 아닙니다. 일반적인 p-substrate 공정에서는 NMOS bulk가 공통 substrate라서 사실상 VSS에 고정됩니다. 개별 NMOS bulk를 source에 묶으려면 triple-well이나 deep N-well 같은 격리 옵션이 있어야 합니다. Analog IP에서는 이런 옵션이 있는 공정도 많지만, 없는 공정도 적지 않습니다. 그래서 회로도에서 body-source short를 보고 “이렇게 하면 더 좋아진다”로 끝내면 안 되고, 실제 PDK에서 그 device가 분리 bulk를 허용하는지부터 확인해야 합니다. 허용하지 않는다면 bulk를 VSS에 둔 상태로 다시 W/L, bias current, resistor ratio, 최소 VDD, startup margin을 재조정해야 합니다. 교육용 회로가 시뮬레이션에서는 잘 맞는데 실제 레이아웃 이후 성능이 꺾이는 대표적인 이유가 이런 bulk 가정 차이입니다.
지금 회로를 가장 안전하게 정리하는 방법은, MOS용 라이브러리는 그대로 두되 BJT 모델명만 고유하게 바꾸는 것입니다. 예를 들어 .model BGR_NPN NPN(...), .model BGR_PNP PNP(...)로 정의하고, 회로 안의 모든 NPN/PNP Value도 그 이름으로 바꾸면 됩니다. 그리고 netlist에서 같은 이름의 .model이 한 번만 살아 있는지 확인하시면 됩니다. 그렇게 맞춘 다음 .op를 다시 보면, R4 양단 전압이 약 53~55 mV, R4 전류가 약 2.7 uA, R5 전압강하가 약 0.72 V, Q15의 VBE가 약 0.50~0.53 V 쪽으로 나오는지부터 보시면 됩니다. 이 네 숫자만 맞아도 강의 의도대로 모델이 제대로 들어갔는지 거의 바로 판별됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. 도파민중독자님께서 질문하신 BGR 설계 과제와 관련된 질문에 대해 도움을 드리고자 합니다.
질문 1) .op 테스트 문제
BGR 회로의 VREF와 관련된 모델 참조 설정을 다루고 계신 것 같습니다. LTspice에서 모델이 제대로 참조되지 않거나 중복으로 정의된 경우, 오류 메시지가 발생할 수 있습니다.
“This model has multiple definitions” 오류: 이 메시지는 특정 모델 이름이 중복으로 정의되었을 때 나타납니다.
.OPTIONS ALLOW_AMBIGUOUS_MODELS를 netlist에 추가하는 것은 일시적인 해법이라 권장되지 않습니다. 가능한 해결책은:- 모델 파일이 여러 번 불러와질 때 경로를 정확히 설정하고, 중복 참조를 피할 수 있도록 확인합니다.
- 특정 모델의 정의를 한 번만 포함시키도록 스크립트나 설정을 조정하세요.
- 모델 파일이 여러 번 불러와질 때 경로를 정확히 설정하고, 중복 참조를 피할 수 있도록 확인합니다.
VREF의 값이 다른 문제:
- 모델 파일이나 환경 설정이 본 수업에서의 설정과 일치하지 않을 수 있습니다. 확인사항은 모델의 IS, BF 등 중요한 파라미터가 강의에서 사용한 값과 일치하는지 입니다.
- 또한, 시뮬레이션이 정상적으로 되는지 확인하고, 각 컴포넌트 값들이 정확한지 검증하세요.
- 모델 파일이나 환경 설정이 본 수업에서의 설정과 일치하지 않을 수 있습니다. 확인사항은 모델의 IS, BF 등 중요한 파라미터가 강의에서 사용한 값과 일치하는지 입니다.
질문 2) M9, M10의 Body 연결 이유
- 일반적으로 MOSFET의 바디는 회로 성능에 큰 영향을 미치며,
Body Effect를 줄이기 위해 소스에 연결하는 경우가 많습니다. 바디와 소스가 동일 전위에 있을 때, 바디 효과로 인해 threshold voltage가 변하지 않는 장점이 있습니다. 이에 따라 회로의 특성이 보다 안정적으로 유지됩니다. VSS에 직접 연결하지 않는 이유는 제조 공정이나 특정 회로 조건에서 소스와 바디의 전압을 같게하여 바디 효과를 최소화하기 위함일 수 있습니다.
다음은 유사한 질문과 해결 방법에 관한 링크입니다:
- LTspice 시뮬레이션에서 발생할 수 있는 여러 문제와 해결 방법들
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





