Kicad는 오픈소스 EDA프로그램입니다. 제가 Eagle을 사용해본적은 없지만 최근에 Kicad에서도 대놓고 Eagle과 비교하는 하는 모습이 보입니다. 이러한 점을 미뤄볼때에 취미나 이미 여러 EDA를 알고있으며 파이선 스크립트/ 소프트웨어 개발에 가까운 분들에게는 충분히 좋은 소프트웨어인 것 같습니다. 그리고 제가 가장 좋아하는 점은 윈도/맥/리눅스 다된다는 점 ㅎㅎ...
PCB개발이란 참 재밌습니다.
PCB는 단순히 아두이노나 모듈을 연결하는 형태에서 더욱 많은 형태로 형상시킬수 있는 좋은 것이며.
사실 아두이노/모듈과 같은 개발 형태의 이전부터 존재하던 STUFF, 것입니다.
저도 사실 하드웨어에 관심만 많았지만 중학교때 UMPC를 접하고 나서
"야 공군은 PMP가 되는데, 공군가서도 노트북을 쓸려면 PMP하우징에 UMPC를 심어서 가면 되잖아!
이거이거 하드웨어를 공부해야겠군"
이라는 생각으로 처음에는 MCU를 공부하다가 대학교에 컴공으로 들어가고 나서 하라는 공부는 안하고
회로를 공부했습니다. 그런데 아직까지도 재밌네요. 여러분들한테도 추천드립니다. (??)
중학교때는 공군가서 UMPC써야지 했지만.
현실은 육군으로? 그리고 UMPC고민같은거 없이 아이맥도 ,,, 인두기,,, 디버거를 제공하는 부대/보직으로 갔습니다.
사람일은 어떻게 될지 모르는겁니다.
PCB는 대개 3가지+이외 여러가지 결과물 로서 나눠서 개발된다고 설명할 수 있습니다.
* Library [Scheamtic Library(회로도상의 심볼), Footprint Library(PCB상에서의 캐드 심볼)
* Schematic (회로도/Diagram)
* PCB (Footprint가 실제로 올라가는 캐드데이터)
+
그리고 추가적인 것들은 (추가적으로 말하지만 나중에 가면 필수가 되는 놈들)
이외 Design Rule을 위한 데이터
PCB 계층을 위한 데이터
BOM/Pick And Place 및 거버 데이터 출력을 위한 설정 혹은 Script
개발자가 어느정도 자동화를 하기위한 Script
Kicad에서는 이 작업을 위해서 약 4개의 프로그램으로 나뉩니다.
Symbol Editor
Footprint Editor
Eschema : 회로도 작성
PCBnew : 캐드 작성(라우팅)
Altium같은 경우 Library쪽 관리/배포 추가시스템을 제외하고는 모드 Altium에 통합했으며
한국 표준!인 Orcad는 Kicad처럼 따로 부르고있습니다.
자 이제 본론입니다.
Kicad는 다른 소프트웨어랑 비교해서 어떨까.
땡, 아쉽게도 일단 단점 위주로 쓰겠습니다.
Eschema : 회로도 작성
1. Route된 선들이 알아서 잘 늘려지거나 뭔가 유도리가 없다.
2. 너무 GRID에 의존한다.
3. footprint선택할때 footprint를 키워드로 검색은 안된다.
4. Smart Paste기능이 필요함.
footprint는 매우 많습니다. 예... Symbol에 관해서 Footprint First Priority에 대한 Filtering 룰을 설정할 수 있으나.
적용이 안될때도 있더군요. 또한 Kicad는 저항 하나하나 모델명에 따라 분리해서 라이브러리를 지정하기 보다는 대략적으로 큰 심볼을 지정하고 그걸 나중에 footprint를 지정하는 형태로 많이 작업됩니다. 물론 이건 선택이나 제가 사용할때는 그렇게 되는 것 같습니다. Altium의 경우 Altium Vault시스템을 이용해서 결국에는 따로따로 관리되나 Kicad는 아닙니다. 가장 큰 예시로는 인덕터입니다. 인덕터는 저항과 다르게 매우 많은 종류의 footprint를 가지고 있기 때문입니다.
그런데 불구하고 진짜 단순히 검색이 안된다는것은 매우 불친절 한게 아닐까 라는 생각을 갖고있습니다.
Smart Paste란 노트패드에다가 csv나 단순히 한줄띄는 식으로
"PIO1 /n PIO2 /n PIO3 ... PIO31" 이런식으로 적혀있으면 이걸
Net Label 혹은 Net Label + Wire, Net Label + Wire + Port 등등으로 알아서 붙이거나 이를 선택하도록 사용자에게 편의성을 제공하는겁니다. 파이선 스크립트로 충분히 가능하니. 이에 대해서는 조금 부족하다는 생각이 들었습니다.
PCBNew : 캐드 작성
1. shortcut제공을 100퍼 안함. pcbnew에서 component들을 Align시키는 단축키를 엄청많이 쓰는데 없어서힘듬
2. 각 레이어에 대한 Component, Polygon, Region, Track, Via, Text에 대한 Object필터링 선택 및 snap여부 에 대한 필터 완전 미제공, Show되는 것에대해서 레이어단위로만 제공하고 이마저도 미숙함.
따로 스크립팅되면 이에 관해서만 플러그인화 해도 진짜 향상될듯.
2.5 Show하는 것과 Select하는 것에 대한 필터링이 너무 빈약 또한 Opacity를 줄수가없음
3. 부드러운 zoom안됨.
zoom은 생각보다 화가 나지만. 뭐.... 일단 무시하고 중요한
2, 2.5에 대해 설명하겠습니다.
[귀찮아서 Fingerprint 에디터 이미지를 첨부]
우측에 보듯이 Fingerprint와 PCB는 여러가지 레이어로 나뉩니다.
여기서 가려진 오브젝트도 있지만 여러가지 레이어가 있다는데에 문제가 생깁니다.
원하는대로 선택하거나 보는것이 안되는겁니다.
사실 레이어 단위로 보면 보는걸 제한할 수 있는데. 문제는 object가 Line, Text, Component, Pad, Polygon, Region, 3D Component(Kicad구조상 3D Component는 완전 분리되어있음), 등등으로 나뉩니다.
저는 텍스트를 선택하기를 원치 않은데 이게 선택이 될수도있고 파워전원부 그라운드 코퍼만 수정하길 원하는데 안될 때도 있습니다. 되긴하지만 선택이 불편.
심볼/풋프린트 라이브러리 에디터
1. Auto Generation이 외부 플러그인에 의존해야함.
2. Density High,Middle,Low에 대한 Auto generation불가능
3. Footprint Wizard에서 Pad, Paste, Mask에 대한 커스텀이 안됨, 풋프린트 에디어테서 수정하는 것보다 그냥 vscode로 수정하는게 더 빠름. 이게 Kicad고질적인 Selection이 너무 불편하다는 문제랑 겹쳐져서 매우 힘듬
4. Footprint Wizard에서 3d모델링은 자동형성해주지 않음.
5. 심볼만들때에 엑셀이나 csv에서 바로 땡겨오고싶은데 되지않음. 플러그인이 존재하나 이정도는 그냥 자동 제공 해주는게 어떨까 싶음
6. 심볼 내 핀의 텍스트 속성 커스텀이 안됨.
7. 3D 모델링을 삽입할때에 Environment Variables 로 넣어야하는데. 문제는 프로젝트나 각각의 개별 풋프린트에서 어떻게 이를 처리해야할지 난감해짐.
8. Alias된 파츠에 대해서 수정가능한 파라미터가 제한됨.
너무 불만을 제가 많이 적었는데 설계상으로 가장 큰문제가 있다는 부분은 7,8이라고 생각합니다.
7번은 궁극적으로 Vault서버 처럼 라이브러리를 프로젝트나 전역으로 종속시키지않고
git submodule처럼 외부 레포지터리에서 import해서 사용할때 매우 불편합니다.
(현재 https://github.com/pmnxis/Lambda_KICAD5_LIB 이와같이 진행을 시도해보고 있습니다.)
왜 이렇게 해야하는가...라 말하면. 프로젝트 관리/생성/배포/협업 할때에 라이브러리때문에 에러문을 보면서 많이 느끼실겁니다.
이러한 시도에 있어서 Schlib, footprint lib은 문제가 안되나 3d component를 해당 라이브러리가 있는 곳에서 경로 참조해서 써야하는데 그게 안되서 git submodule처럼 사용시에 로드를 못하는 문제점이 있습니다.
임시 해결방법으로는 환경변수를 키캐드에서 추가로 설정하는 방법이 있으나 경로가 Fixed되버리는 문제점이 있습니다.
8번은 전자부품은 어쩌다보니 비슷한게 많습니다. Value(저항값, 모델명)만 다르다든지 제조사만 다르다든지... Revision만 다르다든지..
좌측에 있는 부품들이 다 alias입니다. 다 비슷합니다. (Gate Protection 심볼이 추가되거나.. 그런여부까지 같냐? 라고 하면 모르겟습니다.)
그런데 문제는 사용자마다 Manufactor이라는 추가적인 파라미터속성을 주길 원할수도있고,
진짜 트랜지스터의 전압이나 허용전류(1-3 , 2-3, 2-1 간 허용되는 전압차 등등) 이외에도 여러 파라미터가 매우많습니다.
이러한 파라미터를 따로 alias가 독립적으로 같길 원해도 이에대한게 되지않습니다.
기본 파라미터만 적용이됩니다.
결국에는 이를 적용하기위해서는 alias가 아닌 그냥 심볼을 복제(Duplicate)해서 따로 만듭니다.
그런데 단점만 있을까?
https://gitlab.com/kicad/code/kicad/-/wikis/KiCad-6.0-Roadmap
아닙니다.. 언젠가 새로 나올 버젼에서는 많이 개선될 예정입니다.
해당 링크를 레퍼런스해서 말하자면 제가 집중적으로 조명을 비췄던 부분에 대해서 어느정도 개선이 있을 예정이며
특히 라우팅은
Slection Filtering 및 Visible Upgrade가 예정되어있습니다.
이는 제가 불만했던 선택과 보기에 대한 필터링에 대한 개선에 해당됩니다.
그리고 대부분의 문제점들은 Scripting을 통해서 해결할 수 있습니다.
https://github.com/pointhi/kicad-footprint-generator
footprint를 제너레이트 해주는 파이선 스크립트 입니다.
일반적인 부품은 별 상관없으나. 현재 사용 시도중인데 가장 기대되는것은 커넥터 쪽입니다.
최근에 만든 Push-In 터미널 커넥터 라이브러리 입니다만 저는 이걸 2핀부터 8핀모델까지 손으로 하나하나 만들었습니다. 이외에도 커넥터 5종류를 2핀부터 15핀까지 만들어야하는데.. 이거 손으로 하면 좀 짜증납니다.
그런데 스크립트 기능이 여기서 발휘합니다.
그냥 스크립트로 자동화하면 되거든요.
여기서 알티엄이랑 살짝 비교해보겠습니다. 알티엄도 스크립트를 지원합니다. 알티엄이 C#이나 다른 언어도 지원하는걸로 아나 우선 메인은 Pascal Script인것으로 알고있습니다.
현재는 어떤지 모르겠으나 우선 altium의 Pascal Script는 알티엄 내장의 Pascal Script을 위한 엔진?모듈?이 사용자의 스크립트와 본프로그램이 통신을 하면서 사용합니다.
여기서 어떠한 구조로 문제가 발생하는지는 잘모르겠으나 명령이 애매하게 좀 되는 경우 매우 느립니다.
그런데 Kicad는 Kicad본 프로그램과 스크립트가 따로 도는 것을 허용하기에 library만들때 빠른 실행이 가능합니다.
물론 바로 못보는 문제가 발생할 수 있으나 본프로그램과 소통하며 같이 돌아가는 형태에서도 충분히 빠르게 돌아갑니다.
KiCAD 6을 기대하면서 그리고 ...
Kicad v6는 분명히 많이 개선 될것입니다.
그리고 처음에 하드웨어개발을 추천을 처음에 소프트웨어쪽 혹은 매니아분들에게 추천하는 형태로 했으나.
좀더 궁극적으로 마지막에 말하고싶은건 하드웨어 개발자분들도 Script를 잘이용해서 할수있는걸 늘려가자 입니다.
알티엄은 워낙 잘되어있어서 스크립트..를 안써도 되지만 당장에 Kicad는 script만 잘쓰고 앞으로 더욱더 개선될 버젼을 응용한다면 앞으로 있을 상용 프로그램들을 곧 따라잡지 않을까 기대하는중입니다. 물론 그때가 되어도 결국 script에 의존할것이다 라는 것은 부정하지 못할 것같습니다만....
어쩌다보니 좀 두서없이 길어졌습니다. 읽어주셔서 감사합니다.
글이 많이 지루하니 저희 회사 사장님의 자태를 첨부합니다.
사실 이 지루한 글은 저희 회사 사장님의 자태를 보기전 제공하는 지루한 약관입니다.
털 모양이 인상적이네요