ngspice

요샌 열심히 무료 소프트웨어들을 탐구 중이다. 그러다보니 실제로 하는 일은 별로 없고 시간만 날리고 있다.

이번엔 무료 툴인 ngspice를 보고 있다. pspice 같은 경우엔 예전에 학생들이 많이 사용했다. 회로 실습용으로 윈도우즈에서 돌아가는 spice였으니 그렇다. 좀 복잡한 회로를 다루는 이들은 유료 소프트웨어를 사용했던 것 같고 pspice도 학생용 버전을 사용해서 node 수에 제한이 있었지만 그 제한을 넘어서는 수준의 회로를 시뮬레이션 하는 일은 좀처럼 없으니 별 문제 없었다고 봐야 할 것 같다.

여기서 Spice가 뭐하는 것인지 모르는 분이 계실 것이므로, 또는 이름은 알아도 구체적으로 뭐하는 것인지 애매한 분들이 계실 것이므로 잠시 언급하는 것이 좋을 것 같다.

Spice는 쉽게 말해서 회로를 분석해주는 툴이다. 회로를 직접 만들지 않아도 회로도를 입력하면 (우리는 이것을 netlist라고 한다. 회로가 하나의 망(net)이므로 net이 어떻게 구성되어있는지를 알리는 list에 각각의 부품이 어떻게 연결되어있는지 알려주는 것이다) 회로가 어떻게 돌게 될지 미리 알 수 있는 것이다.

흔히 하는 분석이 DC analysis (steady state analysis)라고 해서 회로의 정적인 상태, 즉, 전원을 연결해 놓았다고 치면 회로의 각 지점 (node라고 함)에 전압이 어떻게 나타나는지 또 각 branch (node와 node간 연결된 전선 혹은 부품 등등)에 전류가 얼마나 흐르는지 분석하는 것이다. 특별히 DC라고 지칭하는 것은 일종의 정지된 상태, AC 전압이 나타나는 경우 처럼 정지되어있는 경우가 아니라도 아주 긴 구간 동안의 평균 값을 구해내기 때문이다.

AC적인 성질을 분석하는 것은 transient state analysis라든가 spectral analysis (time response를 스펙트럼 애널라이저처럼 FFT해서 보는 것임) 하는 방법도 있고 다양하다. 전자를 쉽게 TRAN이라고 쓰기도 하고 후자의 경우는 frequency에 따라서 응답을 다양하게 본다는 의미에서 sweep이란 말을 쓰기도 하고 실험하려는 또 관찰하려는 값에 대해서 분석 방법은 다 다르다. 공부해야 할 것 혹은 알아두어야 할 것의 의미가 아니라 회로를 만들어서 찍어보면 될 문제를 회로 만들기도 귀찮고 계측기를 구입할 여건도 마땅치 않고 하다보니 컴퓨터로 대신 해보는자는 것이다.

세상에 공짜라는 것이 없으므로, 계측기를 사지 않아도 되고 회로를 만들어봐야 되는 수고와 비용을 들이지 않는 대신 이 시뮬레이터를 사용하는 방법을 익혀야 한다. 시행착오를 거쳐가며 스스로의 실험 방법도 체득해야 되고 말이지. 이를테면 전원을 넣자마자 회로가 어떻게 될까 궁금하면 transient analysis를 해보는 것이고, 주파수 응답이 어떻게 나올까 궁금하면 AC sweep을 하는 것이고, 과전압이 들어오면 어찌되나 DC sweep도 해보고 등등등 할 수 있는 실험은 많다. 회로를 태워버릴 일도 없고 고압을 다루다가 실수로 감전될 일도 없다.

본론으로 돌아가서 pspice는 OrCAD에 추가되어 orcad schematic (orcad capture)에 붙여서 일종의 통합환경으로 돌게 되어있었는데, 이게 그래도 매우 쓸만했다. 그런데 사실 이분야 소프트웨어가 돈이 되질 않는 것인지 아니면 쓰는 사람이 없어진 것인지 예전같은 느낌은 전혀 들지 않는다.

그래도 취미로 캐드작업이나 스스로 회로를 설계해서 프로젝트를 하는 사람들의 결과물을 보면 eagle이나 KiCAD에 많이 의존하고 있는 것으로 보인다. 그도 그럴 것이 3D rendering 실물을 보면 대충 와닿는다고나 할까.

어쨌든 KiCad에 잘 어울리는 spice로 ngspice를 선택한 것은 pspice는 상용이고 platform dependent하게 돌고 있기 때문이다. 사실 요새는 OS와 상관없이 일을 하고 한 사람이 여러 OS에서 일을 하는 것이 일반적인 상황이 되었으니 그러하다. 실제로 하나의 OS에 갇혀 살다가 여러 가지 OS를 쓰게 되면 비록 컴퓨터에서 하는 일이지만 뭔가 자유로움을 만끽할 때가 있다. 또 한 가지 OS밖에 쓸 줄 몰라서 일하는 환경이 바뀌면 패닉에 빠지는 경우도 피해나갈 수 있다.

ngspice는 간단하다. sourceforge로부터 binary를 다운 받거나 source를 받아서 build하면 된다. MacOS에서 사용하는 경우에 pkg를 받아와서 설치하게 되는데, 설치 위치나 설치되는 파일이 source를 가져다 build하는 것과 다르고 여러 가지로 사용하기 불편해서 결국 local build했다. 역시나 MacOS에서는 거의 모든 제반 툴체인이 구비되어있기 때문에 전혀 어렵지 않게 할 수 있다.

KiCad와 ngspice를 연결하는 방법은 아래를 참조하자.

http://mithatkonar.com/wiki/doku.php/kicad/kicad_spice_quick_guide

여기에 ngspice의 simulation 결과를 그래프로 확인하기 위한 별도의 GUI를 설치할 수 있다.