콘텐츠로 이동

시뮬레이션을 위한 구성 요소와 검증

회로 시뮬레이터는 도면을 보지 않는다. 도면에서 뽑아낸 넷리스트(netlist) 문자열을 읽는다. 그러므로 심볼(symbol)이 시뮬레이션을 위해 갖춰야 하는 것은 “넷리스트 한 줄을 만들어 낼 수 있는 정보” 다.

시뮬레이터가 소자 하나를 이해하려면 다음이 필요하다.

R1 N001 N002 10k
X1 N003 N004 N005 OPA333
│ └─────┬─────┘ └── 모델 이름
│ └── 노드 — 순서가 의미를 갖는다
└── 소자 종류를 나타내는 첫 글자
필요한 것심볼의 어디에서 오는가
소자 종류소자 종류 접두사 속성
참조 지정자(reference designator)Reference
노드 목록핀에 연결된 넷 — 순서가 심볼이 정한 순서다
값 또는 모델 이름Value 또는 모델 속성
파라미터사용자 특성

넷리스트의 첫 글자가 소자의 종류를 정한다. 이것이 틀리면 시뮬레이터는 다른 소자로 해석한다.

접두사소자
R · C · L저항 · 커패시터 · 인덕터
V · I전압원 · 전류원
D다이오드
Q · M · J바이폴러 · MOS · JFET
X부속 회로(subcircuit) 호출

연산증폭기·레귤레이터·로직 IC 처럼 내부가 회로로 기술된 부품은 거의 전부 X 다. 제조사가 배포 하는 모델이 부속 회로 형태이기 때문이다. 트랜지스터도 모델이 부속 회로로 제공되면 Q 가 아니라 X 를 쓴다 — 접두사는 부품의 종류가 아니라 모델의 형태를 따른다.

값은 문자열 그대로 넷리스트로 나간다. 그러므로 시뮬레이터가 읽는 표기여야 한다.

  • 공학 접두어를 쓴다 — 10k · 4u7 · 1meg
  • Mmeg 를 구분한다. 대부분의 SPICE 계열에서 M 은 밀리(10⁻³)이고 메가는 meg 다. 1M 저항은 1 밀리옴으로 해석된다
  • 단위 기호를 붙이지 않는다 — 10kΩ 이 아니라 10k
  • 허용오차·정격은 별도 속성으로 둔다. 값 문자열에 섞으면 넷리스트가 깨진다

심볼의 핀 번호와 부속 회로 모델의 노드 순서는 서로 다르며 대응표가 필요하다

부속 회로 모델은 노드를 순서로 받는다.

.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 순서를 요구한다. 핀 번호를 그대로 노드로 넘기면 전원과 입력이 뒤바뀐다.

그래서 심볼은 핀 번호 → 노드 순서 대응표를 가져야 한다.

방식내용쓰는 곳
내장 소자시뮬레이터가 아는 소자. 값만 있으면 된다저항·커패시터·인덕터
.MODEL 참조소자 종류는 내장이고 파라미터만 외부에서 온다다이오드·트랜지스터
.SUBCKT 호출내부가 회로로 기술된다IC 전반

부속 회로를 쓰는 심볼이 갖춰야 하는 것은 넷이다.

  1. 모델 파일의 위치 — 절대 경로를 박지 않는다. 라이브러리와 함께 옮겨 다녀야 한다
  2. 부속 회로 이름 — 파일 안의 .SUBCKT 이름과 정확히 같아야 한다
  3. 노드 대응 — §2
  4. 파라미터 — 모델이 인자를 받으면 그 값

4. 시뮬레이션이 요구하는 회로 조건

섹션 제목: “4. 시뮬레이션이 요구하는 회로 조건”

심볼 자체는 옳아도 다음이 없으면 시뮬레이션이 서지 않는다. 심볼 라이브러리를 만들 때 함께 고려해야 하는 항목이다.

조건내용
접지 기준모든 노드는 접지(0)에 직류 경로로 이어져야 한다. 떠 있는 노드는 해가 없다
전원 노드실제 모델은 전원 핀을 갖는다. 회로도(schematic)에서 전원을 실제로 연결해야 한다
초기 조건되먹임 회로는 동작점(operating point)을 못 찾는 경우가 있다. 초기값을 줄 수 있어야 한다
이상적 소자 회피이상 전압원끼리 병렬로 두면 해가 없다

전원 핀을 숨긴 심볼이 여기서 문제가 된다. 회로도에서 편하려고 전원 핀을 감춰 두면, 시뮬레이션 넷리스트에서 그 노드가 어디에도 이어지지 않는다. 시뮬레이션을 쓸 라이브러리라면 전원 핀을 보이게 두거나 전원 전용 게이트로 분리하는 편이 안전하다.

시뮬레이션 심볼의 검증 — 기계가 잡는 것과 사람이 대조하는 것

5.1 심볼 단계에서 기계가 잡을 수 있는 것

섹션 제목: “5.1 심볼 단계에서 기계가 잡을 수 있는 것”
#검사판정
1소자 종류 접두사가 있는가없으면 넷리스트를 만들 수 없다
2모델 참조가 비어 있지 않은가X 인데 부속 회로 이름이 없다면 오류
3모델 파일에서 그 이름이 실제로 찾아지는가파일을 파싱해 .SUBCKT 이름과 대조
4노드 개수가 모델의 노드 개수와 같은가개수는 기계로 셀 수 있다
5대응표에 빠지거나 중복된 항목이 없는가핀 하나가 두 노드에 가면 안 된다
6값 문자열이 시뮬레이터 표기인가10kΩ · 1M 같은 것을 걸러낸다

4번까지가 자동으로 갈 수 있는 한계다. 개수가 맞고 이름이 맞아도 순서는 기계가 알 수 없다.

노드 순서는 다음 절차로 확인한다.

  1. 모델 파일의 .SUBCKT 줄을 연다
  2. 심볼의 노드 대응표를 나란히 배치한다
  3. 왼쪽에서 오른쪽으로 한 항목씩 짚어 가며 대조한다
  4. 데이터시트의 핀 배치와 심볼의 핀 번호를 함께 확인한다

건너뛰지 않고 한 항목씩 짚는 것이 요령이다. 한꺼번에 대조하면 전원 두 개(V+ · V−)가 뒤바뀐 것을 놓친다.

대조만으로 확신이 서지 않으면 알려진 답이 있는 회로로 검증한다.

부품시험 회로기대 결과
연산증폭기이득 1 버퍼출력이 입력을 따라간다
연산증폭기반전 증폭, 저항비 10출력이 −10배
레귤레이터입력 12 V · 부하 저항출력이 규격 전압
로직 게이트입력 조합 전수진리표와 일치
다이오드직류 스윕순방향 전압이 데이터시트 범위

결과가 명백히 틀리면 노드 순서를 의심한다. 전원과 입력이 바뀌면 출력이 전원 레일에 붙고, 입력 두 개가 바뀌면 되먹임이 양이 되어 발산한다. 증상이 원인을 가리킨다.

이 시험 회로들은 한 번 만들어 라이브러리와 함께 보관한다. 부품을 추가할 때마다 같은 회로에 끼워 돌려 보면 검증이 절차가 된다.

확인
종류소자 종류 접두사가 모델 형태와 맞는가 — 부속 회로면 X 인가
모델부속 회로 이름이 모델 파일 안에서 찾아지는가
모델모델 경로가 상대 경로인가 — 다른 사람이 열어도 찾아지는가
노드노드 개수가 .SUBCKT 과 같은가
노드노드 순서를 한 항목씩 대조했는가
단위 기호가 붙어 있지 않은가 · Mmeg 를 혼동하지 않았는가
전원전원 핀이 넷리스트에 실제로 나가는가
확인알려진 답이 있는 회로로 한 번 돌려 보았는가