[DevTip] Windows용 ngspice에서 xspice 모델 사용하기

요즘들어 따로 리눅스 머신을 운영하기 귀찮아서 거의 모든 작업을 윈도우즈 환경에서 하고 있다.
ngspice도 그 중 하다.
보통 작업하는 방법은 아래와 같다.
  1. ngspice 바이너리 팩을 받아 C:\Software\~~~ 밑에 풀어 설치
  2. 실행파일의 경로(내 경우  C:\Software\ngspice-26_140112\spice\bin)를 환경변수 PATH에 추가하고 환경변수가 적용되도록 재부팅 또는 로그아웃-로그인 다시 수행
  3. 작업위치(디렉토리)에서 명령창 열기
  4. 2에서 연 명령창에서 ngspice.exe 실행
  5. ngspice GUI 창에서 source 등의 명령을 이용해 회로를 읽어와 필요한 작업 수행
근데 회로에 xspice 모델을 사용하려고 하니 자꾸 에러가 난다. 예를 들어, ngspice 메뉴얼 중 op amp 모델링 관련 부분을 참고한 회로를 읽어들이면 아래와 같은 에러/경고 메시지가 나온다. ([설치디렉토리]\examples\xspice\xspice_c3.cir)
Error on line 0 : a.xopamp.a1 %vd el_p el_n xopamp.outint xopamp:limit1
    MIF-ERROR - unable to find definition of model xopamp:limit1
Warning: Model issue on line 0 : .model xopamp:limit1 limit out_lower_limit=-12 out_upper ...
    Unknown model type limit - ignored
단순 Warning으로 치부하고 강제로 진행하면 시뮬레이션이 실행되긴 하지만 잘못된 결과가 출력된다.

문제 해결을 위해 관련된 내용을 검색하면 --enable-xspice 옵션을 추가해 컴파일 하라는 글들만 잔뜩 올라오는데, 이건 윈도우즈 환경에서 모든 환경을 설치해 따라하기에는 너무 번거로워 무시.
그런데, 흥미로운 내용 하나를 발견했는데, 바로 ngspice.exe를 실행시켰을 때 화면의 맨 위에 나오는 다음 문장이다.
Note: can't find init file
원래 ngspice가 실행될 때 초기설정(init) 파일로 spinit 이라는 파일을 참조하는데 이걸 찾지 못한다는 말이다. 리눅스 같은 경우 작업 디렉토리, 또는 사용자 디렉토리 밑에 .spinit 이라고 만들어 두면 자동으로 참조가 되는 시스템인데, 윈도우즈에서는 ngspice.exe를 실행하는 디렉토리에 이 초기설정 파일이 존재해야 한다.
그래서 수정한 작업 방식은 다음과 같다.
  1. ngspice 바이너리 팩을 받아 C:\Software\~~~ 밑에 풀어 설치
  2. 실행파일의 경로(내 경우  C:\Software\ngspice-26_140112\spice\bin)를 환경변수 PATH에 추가하고 환경변수가 적용되도록 재부팅 또는 로그아웃-로그인 다시 수행
  3. [추가] 설치 디렉토리 중 [설치 디렉토리]\share\ngspice\scripts\spinit 파일을 열어 codemodel의 경로를 수정하고, 해당 파일을 작업위치(디렉토리)로 복사
    (예: 원래 codemodel C:/Spice/lib/ngspice/spice2poly.cm 로 된 행을 codemodel C:/Software/ngspice-26_140112/Spice/lib/ngspice/spice2poly.cm 와 같이 수정)
  4. 작업위치(디렉토리)에서 명령창 열기
  5. 2에서 연 명령창에서 ngspice.exe 실행
  6. ngspice GUI 창에서 source 등의 명령을 이용해 회로를 읽어와 필요한 작업 수행
이렇게 하면 ngspice.exe를 실행시켰을 때 init file을 찾을 수 없다는 메시지가 나오지 않는다.

자... 그런데 매번 이 짓을 해야한다고 생각하니 왠지 좀 불편하다.
그래서.. 메뉴얼을 뒤져보면 환경변수로 SPICE_SCRIPTS가 언급된다.
결국 설치 단계에서 환경변수를 하나 더 넣어주는 것으로도 해결된다는 말이고, 확인해 보니 맞다.
결국 최종 작업 방식은 다음과 같은데, 다시 보니 설치 방법을 정리한 꼴이다. 실제로 1번~5번이 설치 작업이니...
  1. ngspice 바이너리 팩을 받아 C:\Software\~~~ 밑에 풀어 설치
  2. [수정] 실행파일의 경로(내 경우  C:\Software\ngspice-26_140112\spice\bin)를 환경변수 PATH에 추가
  3. [추가] 새 환경변수 SPICE_SCRIPT 값으로 스크립트 파일의 경로(내 경우 C:\Software\ngspice-26_140112\spice\share\ngspice\scripts) 할당
  4. [추가] 환경변수가 적용되도록 재부팅 또는 로그아웃-로그인 다시 수행
  5. [수정] 설치 디렉토리 중 [설치 디렉토리]\share\ngspice\scripts\spinit 파일을 열어 codemodel의 경로를 수정
    (예: 원래 codemodel C:/Spice/lib/ngspice/spice2poly.cm 로 된 행을 codemodel C:/Software/ngspice-26_140112/Spice/lib/ngspice/spice2poly.cm 와 같이 수정)
  6. 작업위치(디렉토리)에서 명령창 열기
  7. 2에서 연 명령창에서 ngspice.exe 실행
  8. ngspice GUI 창에서 source 등의 명령을 이용해 회로를 읽어와 필요한 작업 수행
이제 좀 정리가 된 느낌이다.
남은 것은 잘 쓰는 것 뿐~~

댓글

이 블로그의 인기 게시물

환경개선부담금

[DevTip] Windows에서 tail 쓰기...