시뮬레이션을 위한 구성 요소와 검증
회로 시뮬레이터는 도면을 보지 않는다. 도면에서 뽑아낸 넷리스트(netlist) 문자열을 읽는다. 그러므로 심볼(symbol)이 시뮬레이션을 위해 갖춰야 하는 것은 “넷리스트 한 줄을 만들어 낼 수 있는 정보” 다.
1. 넷리스트 한 줄에 필요한 것
섹션 제목: “1. 넷리스트 한 줄에 필요한 것”시뮬레이터가 소자 하나를 이해하려면 다음이 필요하다.
R1 N001 N002 10kX1 N003 N004 N005 OPA333│ └─────┬─────┘ └── 모델 이름│ └── 노드 — 순서가 의미를 갖는다└── 소자 종류를 나타내는 첫 글자| 필요한 것 | 심볼의 어디에서 오는가 |
|---|---|
| 소자 종류 | 소자 종류 접두사 속성 |
| 참조 지정자(reference designator) | Reference |
| 노드 목록 | 핀에 연결된 넷 — 순서가 심볼이 정한 순서다 |
| 값 또는 모델 이름 | Value 또는 모델 속성 |
| 파라미터 | 사용자 특성 |
1.1 소자 종류 접두사
섹션 제목: “1.1 소자 종류 접두사”넷리스트의 첫 글자가 소자의 종류를 정한다. 이것이 틀리면 시뮬레이터는 다른 소자로 해석한다.
| 접두사 | 소자 |
|---|---|
R · C · L | 저항 · 커패시터 · 인덕터 |
V · I | 전압원 · 전류원 |
D | 다이오드 |
Q · M · J | 바이폴러 · MOS · JFET |
X | 부속 회로(subcircuit) 호출 |
연산증폭기·레귤레이터·로직 IC 처럼 내부가 회로로 기술된 부품은 거의 전부 X 다. 제조사가 배포
하는 모델이 부속 회로 형태이기 때문이다. 트랜지스터도 모델이 부속 회로로 제공되면 Q 가 아니라
X 를 쓴다 — 접두사는 부품의 종류가 아니라 모델의 형태를 따른다.
1.2 값의 표기
섹션 제목: “1.2 값의 표기”값은 문자열 그대로 넷리스트로 나간다. 그러므로 시뮬레이터가 읽는 표기여야 한다.
- 공학 접두어를 쓴다 —
10k·4u7·1meg M과meg를 구분한다. 대부분의 SPICE 계열에서M은 밀리(10⁻³)이고 메가는meg다.1M저항은 1 밀리옴으로 해석된다- 단위 기호를 붙이지 않는다 —
10kΩ이 아니라10k - 허용오차·정격은 별도 속성으로 둔다. 값 문자열에 섞으면 넷리스트가 깨진다
2. 노드 순서 — 가장 흔한 오류
섹션 제목: “2. 노드 순서 — 가장 흔한 오류”부속 회로 모델은 노드를 순서로 받는다.
.SUBCKT OPA333 IN+ IN- V+ V- OUT이 모델을 호출할 때 넷은 정확히 이 순서로 나열되어야 한다. 그런데 심볼의 핀 번호는 패키지의 물리적 핀 번호다. 두 순서는 일치하지 않는 것이 정상이다.
| 순서의 근거 | |
|---|---|
| 심볼 핀 번호 | 패키지 — 데이터시트의 물리적 배치 |
| 모델 노드 순서 | 모델 작성자 — .SUBCKT 줄에 적힌 차례 |
예를 들어 SOT-23-5 연산증폭기는 물리적으로 1=OUT, 2=V−, 3=IN+, 4=IN−, 5=V+ 인데, 모델은 IN+, IN−, V+, V−, OUT 순서를 요구한다. 핀 번호를 그대로 노드로 넘기면 전원과 입력이 뒤바뀐다.
그래서 심볼은 핀 번호 → 노드 순서 대응표를 가져야 한다.
3. 모델 연결 방식
섹션 제목: “3. 모델 연결 방식”| 방식 | 내용 | 쓰는 곳 |
|---|---|---|
| 내장 소자 | 시뮬레이터가 아는 소자. 값만 있으면 된다 | 저항·커패시터·인덕터 |
.MODEL 참조 | 소자 종류는 내장이고 파라미터만 외부에서 온다 | 다이오드·트랜지스터 |
.SUBCKT 호출 | 내부가 회로로 기술된다 | IC 전반 |
부속 회로를 쓰는 심볼이 갖춰야 하는 것은 넷이다.
- 모델 파일의 위치 — 절대 경로를 박지 않는다. 라이브러리와 함께 옮겨 다녀야 한다
- 부속 회로 이름 — 파일 안의
.SUBCKT이름과 정확히 같아야 한다 - 노드 대응 — §2
- 파라미터 — 모델이 인자를 받으면 그 값
4. 시뮬레이션이 요구하는 회로 조건
섹션 제목: “4. 시뮬레이션이 요구하는 회로 조건”심볼 자체는 옳아도 다음이 없으면 시뮬레이션이 서지 않는다. 심볼 라이브러리를 만들 때 함께 고려해야 하는 항목이다.
| 조건 | 내용 |
|---|---|
| 접지 기준 | 모든 노드는 접지(0)에 직류 경로로 이어져야 한다. 떠 있는 노드는 해가 없다 |
| 전원 노드 | 실제 모델은 전원 핀을 갖는다. 회로도(schematic)에서 전원을 실제로 연결해야 한다 |
| 초기 조건 | 되먹임 회로는 동작점(operating point)을 못 찾는 경우가 있다. 초기값을 줄 수 있어야 한다 |
| 이상적 소자 회피 | 이상 전압원끼리 병렬로 두면 해가 없다 |
전원 핀을 숨긴 심볼이 여기서 문제가 된다. 회로도에서 편하려고 전원 핀을 감춰 두면, 시뮬레이션 넷리스트에서 그 노드가 어디에도 이어지지 않는다. 시뮬레이션을 쓸 라이브러리라면 전원 핀을 보이게 두거나 전원 전용 게이트로 분리하는 편이 안전하다.
5. 검증
섹션 제목: “5. 검증”5.1 심볼 단계에서 기계가 잡을 수 있는 것
섹션 제목: “5.1 심볼 단계에서 기계가 잡을 수 있는 것”| # | 검사 | 판정 |
|---|---|---|
| 1 | 소자 종류 접두사가 있는가 | 없으면 넷리스트를 만들 수 없다 |
| 2 | 모델 참조가 비어 있지 않은가 | X 인데 부속 회로 이름이 없다면 오류 |
| 3 | 모델 파일에서 그 이름이 실제로 찾아지는가 | 파일을 파싱해 .SUBCKT 이름과 대조 |
| 4 | 노드 개수가 모델의 노드 개수와 같은가 | 개수는 기계로 셀 수 있다 |
| 5 | 대응표에 빠지거나 중복된 항목이 없는가 | 핀 하나가 두 노드에 가면 안 된다 |
| 6 | 값 문자열이 시뮬레이터 표기인가 | 10kΩ · 1M 같은 것을 걸러낸다 |
4번까지가 자동으로 갈 수 있는 한계다. 개수가 맞고 이름이 맞아도 순서는 기계가 알 수 없다.
5.2 사람이 대조해야 하는 것
섹션 제목: “5.2 사람이 대조해야 하는 것”노드 순서는 다음 절차로 확인한다.
- 모델 파일의
.SUBCKT줄을 연다 - 심볼의 노드 대응표를 나란히 배치한다
- 왼쪽에서 오른쪽으로 한 항목씩 짚어 가며 대조한다
- 데이터시트의 핀 배치와 심볼의 핀 번호를 함께 확인한다
건너뛰지 않고 한 항목씩 짚는 것이 요령이다. 한꺼번에 대조하면 전원 두 개(V+ · V−)가 뒤바뀐 것을
놓친다.
5.3 회로로 확인하는 방법
섹션 제목: “5.3 회로로 확인하는 방법”대조만으로 확신이 서지 않으면 알려진 답이 있는 회로로 검증한다.
| 부품 | 시험 회로 | 기대 결과 |
|---|---|---|
| 연산증폭기 | 이득 1 버퍼 | 출력이 입력을 따라간다 |
| 연산증폭기 | 반전 증폭, 저항비 10 | 출력이 −10배 |
| 레귤레이터 | 입력 12 V · 부하 저항 | 출력이 규격 전압 |
| 로직 게이트 | 입력 조합 전수 | 진리표와 일치 |
| 다이오드 | 직류 스윕 | 순방향 전압이 데이터시트 범위 |
결과가 명백히 틀리면 노드 순서를 의심한다. 전원과 입력이 바뀌면 출력이 전원 레일에 붙고, 입력 두 개가 바뀌면 되먹임이 양이 되어 발산한다. 증상이 원인을 가리킨다.
이 시험 회로들은 한 번 만들어 라이브러리와 함께 보관한다. 부품을 추가할 때마다 같은 회로에 끼워 돌려 보면 검증이 절차가 된다.
6. 확정 전 점검 항목
섹션 제목: “6. 확정 전 점검 항목”| 축 | 확인 |
|---|---|
| 종류 | 소자 종류 접두사가 모델 형태와 맞는가 — 부속 회로면 X 인가 |
| 모델 | 부속 회로 이름이 모델 파일 안에서 찾아지는가 |
| 모델 | 모델 경로가 상대 경로인가 — 다른 사람이 열어도 찾아지는가 |
| 노드 | 노드 개수가 .SUBCKT 과 같은가 |
| 노드 | 노드 순서를 한 항목씩 대조했는가 |
| 값 | 단위 기호가 붙어 있지 않은가 · M 과 meg 를 혼동하지 않았는가 |
| 전원 | 전원 핀이 넷리스트에 실제로 나가는가 |
| 확인 | 알려진 답이 있는 회로로 한 번 돌려 보았는가 |