회로설계 멘토 삼코치
@samcoach
수강생
4,663
수강평
446
강의 평점
5.0
이력 사항
現) 반도체 대기업 (CHIP 회로설계 4년차)
아날로그 IP / 디지털 시나리오 설계
A급 특허 출원
글로벌 외국 기업 엔지니어 기술 대응
前) 스타트업 인큐베이팅 업체 (MCU Firm-ware 설계)
前) 대기업 가전제품 업체 (All-in-one 정수기 생산 기술)
前) 중견기업 의료기기 업체 (CIS, DDI ASIC 설계)
CHIP 설계 취업/이직 충분히 도전할 수 있습니다.
저와 함께 CHIP 설계 취업/이직에 가까워지세요!
"반도체 아날로그/디지털 회로설계를 꿈꾸시나요?
대기업 S전자 현직자의 눈으로 기초부터 도와드립니다!"
반갑습니다! S전자에서 시스템반도체를 설계하고 있는 삼코치 입니다 :)
저는 스타트업에서부터 회로설계 직무에 도전하면서 많은 시행착오를 겪어왔습니다.
PCB 설계, F/W 설계, FPGA 설계, CHIP 설계를 구먹구구 식으로 경험했죠.
그런데 한 가지 아쉬움이 있었습니다.
'왜 회로설계 분야는 체계화된 실습 기회와 취업에 대한 정보가 적을까?'
반도체 공정, 프로그래밍 등의 분야는 콘텐츠가 많았지만, 회로설계는 정보가 적다보니 그저 '숨겨진 세상'이었습니다.
이 글을 읽는 회로설계 취준생분들 또한 저와 같은 답답한 심정을 느껴보셨을 겁니다.
그래서 현직자와 면담도 해보고, 교수님께 물어보고, IDEC 강의를 수강해보기도 하죠.
하지만 알들말듯 여전히 잘 모르는 경우가 대부분 입니다.
그.래.서! 제가 직접 취업까지 연결되는 체계화된 강의를 제작해 버렸습니다!
저는 [아날로그 회로-> 디지털 시스템 -> MCU 펌웨어 -> 드라이버 설계 -> 소프트웨어]를 모두 경험하면서,
'Top-down / Bottom-up'스킬을 통해 제품과 회로를 완벽히 설명해낼 수 있게 되었습니다.
그리고 인프런에서 실무적인 회로를 다루면서 '아날로그/디지털 회로'에 대해 저만의 직관적 해석 방법부터 Trade-off를 따지는 방법까지 모두 풀어드리려 합니다.
저와 함께 기초를 닦고, 실무 역량을 쌓아 자신만의 Chip 설계 Story를 만들어 가봅시다!
강의
클립
전체 3한 권으로 끝내는 SVA(System Verilog Assertion) 실무 핸드북
12개의 챕터 中 1챕터를 무료 공개합니다.→ 1챕터 다운받기(Click!)💻 취업 준비 + 현업에서 필요할 때마다 꺼내 쓰세요.왜 Assertion인가? RTL 검증의 현실반도체 회로설계를 공부하신 분들은 많습니다.SystemVerilog로 테스트벤치 작성, Ran
회로설계 멘토 삼코치
10월 15일

로드맵
전체 1수강평
- 회로설계 입문자를 위한 디지털, 아날로그 설계와 실무 Project
- AI 기반 아날로그/디지털 회로설계 자동화 실무 - 현업 LDO/AXI-Lite IP 설계와 검증
- 아날로그 회로설계 실무 : Analog IP 설계와 성능 개선하기
- PCB HW설계 실무 : STM32를 활용한 Mixed-signal 보드 설계 프로젝트
- 제품부터 시작하는 인우의 반도체 CHIP 회로설계 이야기
게시글
질문&답변
kicad 라이브러리 추가 방법
안녕하세요, 답변 남겨드립니다.KiCad에서 기본 글로벌 라이브러리에 없는 부품을 쓰는 표준적인 방법은 “심볼 라이브러리 테이블(sym-lib-table)”과 “풋프린트 라이브러리 테이블(fp-lib-table)”에 내가 가진 라이브러리를 등록해 두고, 회로도에서는 심볼을, PCB에서는 풋프린트를 각각 선택해서 매칭시키는 방식입니다. 이때 글로벌 테이블에 추가하면 모든 프로젝트에서 공용으로 보이고, 프로젝트 테이블에 추가하면 해당 프로젝트에서만 보이는데, KiCad 공식 문서에서도 이 두 테이블 구조(글로벌/프로젝트)를 전제로 설명하고 있습니다.실무 관점에서는 “프로젝트 재현성” 때문에 프로젝트 전용 라이브러리를 우선 권합니다. 예를 들어 mixed-signal 보드처럼 MCU, ADC/DAC, PHY, 전원IC, 커넥터가 섞이면 부품 수가 80~250개 수준으로 금방 커지고, 팀원/PC/OS가 바뀌는 순간 글로벌 라이브러리 경로가 깨지면 하루가 통째로 날아갈 수 있습니다. 그래서 보통 프로젝트 폴더 아래에 라이브러리 폴더를 같이 넣고, 경로는 ${KIPRJMOD}(현재 프로젝트 디렉터리 변수) 기반으로 잡습니다. KiCad는 이런 “경로 치환 변수(path substitution variables)”로 라이브러리 위치를 유연하게 관리하는 워크플로우를 공식 문서에서 권장합니다.구체적인 추가 절차는 다음 흐름으로 이해하시면 됩니다. 먼저 심볼은 .kicad_sym 파일(또는 심볼 라이브러리 폴더) 형태로 준비하고, 풋프린트는 보통 xxx.pretty 폴더 안에 .kicad_mod들이 들어있는 형태로 준비합니다. 그런 다음 회로도 편집기에서 “설정/Preferences → 심볼 라이브러리 관리(Manage Symbol Libraries…)”로 들어가 프로젝트 탭에 심볼 라이브러리를 추가하고, PCB 편집기에서 “설정/Preferences → 풋프린트 라이브러리 관리(Manage Footprint Libraries…)”로 들어가 프로젝트 탭에 xxx.pretty 폴더를 추가하시면 됩니다. 이 글로벌/프로젝트 테이블 편집 위치 자체는 KiCad 문서에 그대로 정리돼 있습니다. 이후 회로도에서 심볼을 배치한 뒤, 해당 심볼의 속성에서 Footprint 필드에 방금 등록한 풋프린트를 지정하면 매칭이 끝납니다. 실무에서 자주 하는 방식은 “심볼은 제조사/부품군 단위로 묶은 하나의 .kicad_sym 라이브러리”, “풋프린트는 패키지군(LQFP.pretty, QFN.pretty, SOT.pretty 등) 단위 라이브러리”로 관리해서 검색 시간을 줄이는 쪽입니다.부품을 어디서 가져오느냐가 핵심인데, 디지키처럼 유통사에서 바로 KiCad 심볼/풋프린트를 제공하는 경우도 있지만, 그렇지 않은 부품이 훨씬 많습니다. 이때 현업에서 많이 쓰는 경로는 크게 세 갈래입니다. 첫째는 SnapEDA 같은 CAD 라이브러리 검색 서비스를 통해 KiCad용 심볼/풋프린트/3D 모델을 받아오는 방식입니다. SnapEDA는 KiCad 심볼/풋프린트 다운로드를 직접 지원한다고 안내하고 있고, 내려받은 압축파일 구조(.pretty, .kicad_sym 등)를 유지하라는 가이드도 제공합니다. 둘째는 제조사 공식 페이지의 “CAD Models / ECAD” 리소스를 활용하는 방식이고, 셋째는 GitHub에 공개된 검증된 라이브러리(회사/커뮤니티가 관리하는 KiCad 라이브러리 리포지토리)를 서브모듈처럼 붙여 쓰는 방식입니다. 특히 팀 단위로는 라이브러리를 Git으로 버전관리하면서 sym-lib-table/fp-lib-table을 같이 관리하는 패턴이 포럼에서도 자주 언급됩니다.다만 외부에서 받아온 라이브러리는 “그대로 믿고 쓰면 안 되고, 데이터시트로 치수를 역검증”하시는 게 mixed-signal 보드에서는 사실상 필수입니다. 예를 들어 STM32 LQFP-64(0.5 mm pitch) 같은 경우 핀피치가 촘촘해서 패드 폭을 0.30 mm로 잡는지 0.28 mm로 잡는지에 따라 솔더 브리징 리스크가 달라지고, 패드 길이도 리드 토(Toe) 여유를 0.3~0.5 mm 정도 확보하느냐에 따라 리워크 난이도가 달라집니다. 또 QFN(0.4~0.5 mm pitch)은 패드 아래 솔더마스크 정의(NSMD/SMD) 정책에 따라 솔더량이 크게 변해서, 외부 풋프린트가 IPC-7351 nominal을 따르는지, 아니면 특정 제조사 추천랜드패턴인지 확인하셔야 합니다. 실무에서는 “데이터시트의 recommended land pattern”이 있으면 그 치수를 1순위로 두고, 없으면 IPC-7351을 기준으로 하되 제조 공정(예: 4/4 mil 라우팅 한계, 마스크 정밀도, 드릴 공차)에 맞춰 미세 조정합니다. 정량적으로는 풋프린트 검증 체크리스트를 최소한 이런 수준으로 잡으면 사고가 확 줄어듭니다. 패드 간격과 패드 폭은 데이터시트 대비 오차를 ±0.05 mm 이내로 맞추고, 드릴 홀 부품은 finished hole 기준으로 공차를 고려해 0.10~0.20 mm 정도 여유를 두며, 코트야드(courtyard)는 조립 여유를 포함해 바디 외곽에서 0.25 mm 이상 확보하는 식으로 룰을 고정해두는 방식입니다. 이렇게 숫자를 정해두면 부품이 100개가 넘어가도 검증 기준이 흔들리지 않습니다.실제 예시로, 질문 주신 STM32 기반 mixed-signal 보드에서 “기본 글로벌 라이브러리에 없는 부품”은 보통 전원IC(특히 DFN/QFN), 아날로그 프런트엔드(ADC/DAC), 특수 커넥터, 특정 EMI 필터/커먼모드 초크 같은 것들입니다. 예를 들어 어떤 ADC가 WLCSP라면 외부 라이브러리에서 풋프린트를 구하는 것보다, 데이터시트를 보고 KiCad 풋프린트 에디터로 직접 만드는 쪽이 결과적으로 더 빠를 때가 많습니다. WLCSP는 볼 직경과 볼 피치(예: 0.35 mm pitch, ball 0.20 mm)가 제조 난이도를 결정하고, 솔더마스크 정의와 패드 형태가 수율을 좌우하므로 “내 보드 제조사 공정능력(최소 마스크댐, 레이저 비아 가능 여부)”에 맞춰 커스텀하는 게 안전합니다. 반대로 RJ45나 USB-C처럼 표준 커넥터류는 SnapEDA나 제조사 STEP/ECAD를 받아서 3D까지 포함해 쓰는 게 시간을 크게 줄여줍니다.마지막으로 운영 팁을 하나 더 드리면, 프로젝트 라이브러리를 쓰실 때는 프로젝트 폴더 아래를 libs/symbols, libs/footprints, libs/3dmodels처럼 고정해 두고, 심볼/풋프린트 라이브러리 테이블에는 절대경로 대신 ${KIPRJMOD}/libs/... 형태로만 등록하시면 협업성과 재현성이 크게 좋아집니다. 그리고 외부에서 받은 풋프린트는 첫 적용 때 3D 뷰와 실제 부품 도면을 맞대서 “핀1 방향, 바디 외곽, 코트야드, 실크 간섭”까지 확인한 다음, 첫 제작에서는 동일 패키지 1~2개는 리워크가 쉬운 위치로 배치해 두는 식으로 리스크를 줄이시는 게 현업적으로는 훨씬 효율적입니다.
- 0
- 2
- 26
질문&답변
수강기간변경
안녕하세요,문의주셔서 감사합니다.해당 강의는 무제한으로 바뀌었고, 공지를 한번 드리긴 했었는데기존 수강생 분들도 물론 무제한으로 바꿔드리고 있습니다!반영해드렸으니 확인해보시고 또 궁금한 점은 편히 문의주세요!
- 0
- 2
- 30
질문&답변
VIa에 GND 항목이 없습니다.
안녕하세요, 답변 남겨드립니다.지금 화면에서 VIA의 Net 목록에 GND가 안 뜨는 건 “GND를 따로 추가하는 절차를 놓쳤다”기보다는, 보드 안에 “GND라는 이름의 네트가 존재하지 않거나, 존재하더라도 이름이 GND가 아니라 다른 형태로 들어가 있는 상태”일 때 생깁니다. 스크린샷처럼 /ADC Chip/AIN0 같이 계층 경로가 붙은 네트들이 보이는 프로젝트에서는 특히 “그라운드도 계층형 로컬 라벨로 만들어져서 /Ethernet PHY/GND 같은 이름으로 존재”하거나, 반대로 “GNDA/DGND/PGND처럼 분리된 이름만 있고 GND는 애초에 없다”로 귀결되는 경우가 가장 많습니다.가장 빠른 확인은 지금 Net 드롭다운 위에 있는 Filter 칸에 GND를 그대로 타이핑해보시는 것입니다. 이때 /Ethernet PHY/GND, /Motor Driver Schematic/GND처럼 경로가 붙어 있어도 “문자열에 GND가 포함”되면 걸려야 정상입니다. 그런데 Filter에 GND를 넣었는데도 아무것도 안 나오면, 그 순간 거의 확정적으로 “이 PCB 데이터베이스 안에 GND 계열 네트가 아직 생성/전파되지 않았다”거나 “이름이 GND가 아니라 완전히 다른 이름”이라는 뜻입니다.그 다음 단계는 회로도에서 “정말로 GND 네트가 만들어져 있나”를 확인하셔야 합니다. 예를 들어 Ethernet PHY 블록에서 디커플링 캐패시터 하나(예: 0.1uF)의 한쪽 핀이 전원(VDD33 등), 다른 한쪽이 그라운드로 내려가야 하는데, 그 그라운드 쪽이 전원 심볼 GND로 연결돼 있지 않고 단순 와이어만 그려져 있거나, GNDA/DGND로 붙어 있거나, 또는 로컬 라벨로만 되어 있으면 PCB에서 “GND”라는 이름이 안 생길 수 있습니다. Mixed-signal에서 흔히 하는 방식처럼 아날로그 그라운드를 GNDA, 디지털을 DGND로 나눠 쓰셨다면 이건 정상 동작이고, VIA Net 목록에서 GND를 찾으시면 끝까지 안 나옵니다. 이 경우는 PHY 전원 디커플링이 DGND로 들어갔는지, 아날로그 블록의 레퍼런스/ADC 그라운드가 GNDA인지처럼 “의도된 네이밍”을 먼저 정리하시는 게 맞습니다.회로도에서 GND가 맞게 존재한다면, 다음으로는 보드에 넷 정보가 최신으로 반영됐는지 확인하셔야 합니다. 회로도 수정 후에 PCB로 업데이트가 안 된 상태면, PCB는 예전 넷 목록만 가지고 있어서 VIA Net 목록에 GND가 안 보일 수 있습니다. 이때는 회로도에서 PCB로 업데이트를 한 번 돌리신 뒤(풋프린트/넷 연결 반영), PCB에서 다시 VIA 속성 Net 목록을 보시면 GND가 생겨 있는 경우가 많습니다. 실무에서는 PHY 블록처럼 디커플링이 10개, 20개씩 붙는 회로에서 이 동기화가 한 번 빠지면 레이아웃 단계에서 “왜 넷이 없지”로 불필요하게 30분~수 시간씩 날아가는 일이 잦아서, 회로도 수정 직후 보드 업데이트를 습관처럼 하시는 게 효율이 좋습니다.만약 회로도에 GND 심볼도 있고 업데이트도 했는데도 여전히 GND가 안 뜬다면, 그때는 “같은 선에 다른 라벨을 붙여서 네트 이름이 GND가 아닌 다른 이름으로 확정된 상황”을 의심하시면 됩니다. 현업에서 실드 접지, 샤시 접지, 파워 접지를 분리하려고 SHIELD, CHASSIS, PGND 같은 라벨을 GND가 붙은 선에 추가하는데, 이런 경우 사용자는 GND라고 생각하지만 툴에서는 그 라벨 이름이 네트의 대표 이름으로 잡혀서 VIA 목록에서 GND가 사라진 것처럼 보입니다. 이 경우 해결은 단순해서, 해당 선에서 “GND로 유지할 건지, 아니면 SHIELD/CHASSIS/PGND처럼 분리 이름으로 갈 건지”를 결정하고 라벨을 정리하시면 됩니다. Ethernet 쪽에서는 특히 RJ45 실드 접지를 시스템 GND에 직결하지 않고 옵션 소자(예: 0Ω 옵션, RC 옵션)로 튜닝 포인트를 남기는 설계를 많이 하니, 네트 이름도 SHIELD_GND처럼 별도로 두는 게 오히려 더 실무적일 때가 많습니다.그리고 한 가지 더 중요한 포인트는, 스티칭 비아 목적이라면 “VIA를 찍고 Net을 수동으로 GND로 바꿔야만” 하는 건 아닙니다. 보통은 GND 구리존(Zone)을 먼저 깔고 그 존의 네트를 원하는 그라운드(DGND나 GND 등)로 지정한 다음, 스티칭 비아를 그 존 안에 배치해서 자동으로 접속되게 운용합니다. 이 방식은 VIA 속성에서 넷을 일일이 바꾸는 것보다 실수가 훨씬 적고, 특히 PHY 주변처럼 비아를 수십 개 박는 구간에서 작업 시간이 체감으로 2배 이상 단축되는 경우가 많습니다. 예를 들어 0.30mm 드릴, 0.60mm 패드 수준의 스티칭 비아를 2.0~3.0mm 피치로 PHY와 매그네틱 주변에 배치하면 리턴패스가 안정화되는 효과를 자주 보는데, 이때 넷이 확실히 잡혀 있어야 존이 제대로 물리고, 결과적으로 EMC/신호품질 쪽에서도 재작업이 줄어듭니다.위 과정까지 확인해보셨는데, 안보이신다면 한번 더 질문주시기 바랍니다.
- 0
- 2
- 26
질문&답변
디버거를 디버깅하려면
안녕하세요, 답변 남겨드립니다.좋은 질문이네요!말씀하신 “디버거를 디버깅하려면 또 다른 MCU가 필요하고, 그러면 끝없이 재귀로 이어지지 않느냐”는 의문은 아주 자연스럽고, 실제로 실무에서 디버깅 구조를 처음 잡을 때 많은 분들이 한 번은 반드시 걸리는 포인트입니다. 결론부터 정리하면, 재귀가 무한히 이어지지 않는 이유는 하드웨어 세계에는 애초에 “더 아래로 내려가지 않는 바닥층”이 존재하기 때문입니다. 그 바닥층은 대표적으로 MCU 내부의 ROM 부트로더(마스크 ROM)와, Cortex-M 계열에 하드웨어로 박혀 있는 디버그 포트(SWD/JTAG의 Debug Access Port) 같은 것들입니다. 이 부분은 사용자가 펌웨어를 올리기 전에도 이미 칩 안에 존재하고 동작하므로, 디버거용 MCU를 또 디버깅해야만만 출발할 필요가 없습니다.STM32를 PC에서 디버깅할 때 “PC와 타깃 MCU 사이에 또 다른 MCU가 필요하다”라고 이해하신 부분은, 많은 상용 디버그 프로브(ST-LINK, J-Link 등)가 내부적으로 MCU를 써서 USB 프로토콜 처리와 SWD/JTAG 신호 생성(또는 변환)을 하기 때문에 그렇게 보이는 면이 있습니다. 다만 구조적으로 중요한 것은 “디버깅에 꼭 별도 MCU가 필수인가”가 아니라, “PC가 바로 SWD/JTAG 전기 신호를 만들어 내기 어렵기 때문에 중간에 전용 장치(프로브)가 들어간다”는 점입니다. 그 전용 장치는 MCU일 수도 있고 FPGA/CPLD일 수도 있고, 경우에 따라서는 USB-to-JTAG 브리지 전용 칩일 수도 있습니다. 핵심은 프로브가 타깃의 SWDIO/SWCLK(또는 TMS/TCK 등)를 구동해 주면, 타깃 STM32 내부의 디버그 하드웨어가 즉시 반응한다는 것입니다. 즉, 타깃 쪽에는 “디버깅을 위해 추가 펌웨어가 먼저 올라가야 하는 단계”가 없습니다. 그래서 타깃 디버깅 자체는 무한 재귀와 무관하게 성립합니다.그렇다면 “프로브(디버거) 자체의 펌웨어는 최초에 어떻게 올리느냐”가 남는데, 여기서 ROM 부트로더가 바닥층으로 작동합니다. 실무 예시로 ST-LINK가 가장 설명이 쉽습니다. ST-LINK는 내부에 STM32 계열 MCU가 들어 있는 경우가 많고, 그 STM32에는 공장 출하 시점부터 ROM에 부트로더가 들어 있습니다. 이 ROM 부트로더는 사용자가 아무 펌웨어를 올리지 않아도 특정 핀 상태(부트 핀 조합)나 특정 인터페이스(UART/USB DFU 등)를 통해 플래시에 펌웨어를 써 넣을 수 있게 해줍니다. 즉 “디버거 MCU에 펌웨어를 올리기 위해 또 다른 디버거가 필요”한 게 아니라, 처음 한 번은 ROM 부트로더 같은 고정된 경로를 통해 올리거나, 제조 공정에서 전용 프로그래머로 써 넣습니다. 현업 양산 라인에서는 이 초기 프로그래밍을 보통 테스트/프로그래밍 지그에서 처리하고, 수율·속도를 위해 SWD 클럭을 보수적으로 1~4MHz 수준으로 잡아도 수 초 내에 수십~수백 KB 펌웨어를 충분히 씁니다. 이후에는 프로브 펌웨어 업데이트도 “다시 ROM 부트로더 모드로 진입해서” PC에서 업데이트하는 방식이 흔하고, 그래서 재귀 구조로 빠지지 않습니다.“디버거를 디버깅”해야 하는 경우도 실제로 있습니다. 예를 들어 사내에서 커스텀 SWD 프로브를 만들어 USB 통신 스택까지 직접 구현했다면, 그 프로브 MCU 펌웨어에 버그가 생길 수 있습니다. 이때도 무한 재귀로 가지 않고, 보통은 다음 중 하나로 해결합니다. 프로브 MCU가 가진 ROM 부트로더를 이용해 최소 기능(USB enumeration과 로그 출력만 되는) 진단 펌웨어를 먼저 올려서 문제를 좁히거나, 프로브 MCU에 대해서만은 별도의 외부 프로그래머(상용 J-Link나 ST-LINK, 혹은 생산용 SWD 프로그래머)를 연결해서 디버깅합니다. 여기서도 바닥층은 “외부 프로그래머” 또는 “ROM 부트로더”입니다. 그리고 프로브 수준에서는 펌웨어 디버깅보다 전기적 검증이 더 큰 비중을 차지하는 경우가 많아서, USB 프로토콜 애널라이저나 로직애널라이저로 D+ / D- 파형, SWCLK/SWDIO 토글, 리셋 시퀀스 등을 직접 보는 방식으로도 상당 부분 원인 분리가 됩니다. 예를 들어 SWDIO에 10~20ns급 링잉이 심하게 얹히면 10MHz 이상에서 디버그가 간헐적으로 끊길 수 있는데, 이건 “펌웨어 버그”가 아니라 신호 무결성 이슈라서 오실로스코프 한 번으로 바로 방향이 잡히는 편입니다.질문을 과제 맥락(보드 Power Budget)으로도 현실적으로 연결해 보면, 디버깅 구조를 보드에 “내장 ST-LINK”처럼 넣을지, “외부 디버거를 꽂는 커넥터(SWD 헤더)만 둘지”에 따라 전력 예산이 달라집니다. 외부 디버거를 쓰면 보드에서 추가로 먹는 전력은 거의 0에 가깝고(커넥터 풀업/레벨시프터 정도), 내장 디버거를 넣으면 그 디버거 MCU + USB PHY + LED 등이 상시로 수 mA~수십 mA를 소비할 수 있습니다. 보수적으로 잡으면 내장 디버거 블록은 3.3V에서 20mA 정도(= 66mW)만 잡아도 예산에는 충분히 안전측으로 들어가는 편이고, USB 전원으로 구동한다면 5V에서 20mA면 100mW로 환산됩니다. 이런 차이는 Mixed-signal 보드에서 LDO 발열, 아날로그 레일 노이즈 마진과도 연결되므로, 과제에서 전력 트리를 짤 때 “디버깅 인터페이스를 어떤 방식으로 구성했는지”가 실제 숫자로 영향을 줍니다. 강의 커리큘럼에서도 디버깅 인터페이스(JTAG/SWD) 핀 구성 파트를 별도로 다루는 이유가 여기에 있습니다.정리하면, 타깃 STM32 디버깅은 타깃 내부의 하드웨어 디버그 블록이 이미 바닥층이기 때문에 별도 MCU를 “연쇄적으로” 요구하지 않고, 디버거(프로브) 펌웨어도 ROM 부트로더나 생산용 프로그래머라는 바닥층을 통해 최초 주입이 가능해서 재귀가 무한히 이어지지 않습니다. 실무에서는 이 바닥층을 의도적으로 확보하기 위해, 커스텀 보드를 만들 때도 “최소 1개는 반드시 살아있는 프로그래밍 경로(예: SWD 헤더 또는 UART 부트 핀)”를 남겨 두는 것을 거의 표준 규칙처럼 가져갑니다.
- 0
- 2
- 32
질문&답변
강의 연장
안녕하세요,문의주셔서 감사합니다.해당 강의는 무제한으로 바뀌었고, 공지를 한번 드리긴 했었는데기존 수강생 분들도 물론 무제한으로 바꿔드리고 있습니다!반영해드렸으니 확인해보시고 또 궁금한 점은 편히 문의주세요!
- 0
- 2
- 45
질문&답변
프로그램 종류
안녕하세요, 답변 남겨드립니다.Vivado 사용법을 정확히 알고 계시고, 그 안에서 “합성-구현-타이밍 제약-리포트 해석-시뮬레이션 검증”까지 스스로 할 수 있는 수준이면 강의를 Vivado로 계속 진행해도 문제 없다고 보셔도 됩니다. 다만 강의가 특정 툴의 메뉴를 그대로 따라 하게 구성된 구간은 용어와 화면이 다르니, 목적 기준으로 치환해서 따라가시면 되고, 특히 타이밍 제약(XDC)과 WNS/WHS 해석을 숫자로 습관화하시면 툴 차이로 막힐 일이 거의 없습니다.
- 0
- 1
- 37
질문&답변
자동화 실습 2-2
안녕하세요, 답변 남겨드립니다..LIB 뒤에 경로 설정이 잘못되어있는듯한데, 테스트벤치 스크린샷 찍어서 설정 볼 수 있을까요?
- 0
- 2
- 22
질문&답변
32강 ERC에러
안녕하세요, 답변 남겨드립니다.올려주신 화면처럼 “footprint 라이브러리에 없다”는 경고가 여러 개 뜨는 것은 충분히 정상적으로 발생할 수 있는 상황이고, 강의 화면과 다르게 보이는 가장 흔한 이유는 현재 심볼의 Footprint 필드가 KiCad가 인식하는 형식으로 “라이브러리 닉네임:풋프린트이름” 형태로 지정되어 있지 않기 때문입니다. 지금 경고 문구에 라이브러리 이름이 비어 있는 것처럼 보이는 점이 핵심인데, 예를 들어 Footprint가 “CAP_0.1uF-50V-10%-0805”처럼 풋프린트 이름만 단독으로 들어가 있으면 KiCad는 이것을 “(빈 닉네임)의 라이브러리에서 CAP_0.1uF…를 찾으라”고 해석하고, 당연히 빈 닉네임 라이브러리가 설정되어 있지 않으니 “현재 설정에 footprint 라이브러리 ''가 없다”는 경고를 반복해서 냅니다. 반대로 강의에서는 Footprint가 “Capacitor_SMD:C_0805_2012Metric” 같은 형태로 지정되어 있거나, 강의용 커스텀 .pretty 라이브러리가 이미 프로젝트에 등록되어 있어서 같은 경고가 안 뜬 경우가 많습니다.해결은 두 갈래 중 하나로 정리됩니다. 하나는 Footprint 문자열을 KiCad 표준 형식으로 다시 매핑하는 방법이고, 다른 하나는 실제로 커스텀 풋프린트 라이브러리를 프로젝트에 등록해 주는 방법입니다. 실무에서는 전자가 가장 안전하고 재현성이 좋습니다. 예를 들어 0.1 uF 0805 캐패시터라면 전기적 사양(0.1 uF, 50 V, 10%)은 부품 선택과 BOM에서 중요한 것이지, 풋프린트 선택의 기준은 패키지 크기(0805)와 패드 형상입니다. 그래서 Footprint는 “Capacitor_SMD:C_0805_2012Metric”처럼 패키지 중심으로 잡고, 값(Value)이나 별도 필드에 “0.1uF 50V X7R 10%”를 넣는 식이 납땜/조달/검증 관점에서 안정적입니다. 0805는 대략 2.0 mm x 1.25 mm 바디 크기이고, 0603은 대략 1.6 mm x 0.8 mm라서, 풋프린트가 한 단계만 틀려도 패드 길이/간격이 달라져 리플로우에서 브리징이나 텀스톤 확률이 체감상 확 올라갑니다. 이런 종류의 “전기적 표기(50V, 10%)가 풋프린트 이름에 들어가 있는 커스텀 네이밍”은 라이브러리 관리가 잘 되어 있을 때만 장점이 있고, 강의 파일을 다른 PC나 다른 KiCad 설치 환경에서 열면 지금처럼 라이브러리 경고가 대량으로 터지기 쉽습니다.실제로 고치는 절차는 KiCad 기준으로 “도구 메뉴에서 Assign Footprints를 열어서 각 부품에 표준 라이브러리 풋프린트를 다시 지정”하는 방식이 가장 빠릅니다. 캐패시터 0805는 Capacitor_SMD 라이브러리의 C_0805 계열, 저항 0603은 Resistor_SMD의 R_0603 계열로 맞추고, STM32F103C8T6는 패키지가 LQFP-48(피치 0.5 mm, 바디 7 mm x 7 mm)이므로 “Package_QFP:LQFP-48_7x7mm_P0.5mm” 같은 것으로 맞추는 식입니다. 8 MHz 크리스탈도 실제 구매 부품이 3225(3.2 mm x 2.5 mm)인지 5032(5.0 mm x 3.2 mm)인지에 따라 풋프린트가 달라서, 예를 들어 3225 타입이면 “Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm” 계열로 잡아주시는 게 조립 불량을 줄이는 쪽입니다. 이렇게 “라이브러리닉:풋프린트” 형태로 재지정하면 지금의 라이브러리 경고는 대부분 사라집니다.커스텀 라이브러리를 계속 쓰고 싶으시면, 해당 풋프린트(.pretty 폴더)를 “Preferences의 Manage Footprint Libraries”에서 프로젝트 라이브러리로 추가하고, 라이브러리 닉네임을 예를 들어 “SamLib” 같은 것으로 지정한 뒤, Footprint 필드도 “SamLib:CAP_0.1uF-50V-10%-0805”처럼 닉네임이 포함되도록 맞춰주셔야 합니다. 닉네임 등록만 하고 Footprint 문자열에 닉네임이 비어 있으면 지금과 같은 경고가 계속 납니다.추가로 화면에 보이는 두 개의 에러 중 “Input Power pin not driven by any Output Power pins”는 전원 네트가 실제로는 공급되고 있는데 ERC가 “구동하는 Power output 핀”을 못 찾을 때 흔히 뜹니다. 예를 들어 3V3 레일이 레귤레이터 출력인데 그 레귤레이터 심볼의 핀 타입이 Power output이 아니라 Passive로 되어 있거나, USB 5V 같은 외부 인가 전원을 단순 라벨로만 처리하면 발생합니다. 이때는 해당 전원 레일에 PWR_FLAG를 넣어 “이 네트는 구동된다”고 선언하거나, 레귤레이터/커넥터의 출력 핀 타입을 Power output으로 맞추면 깔끔하게 없어집니다. “Unconnected wire endpoint”는 말 그대로 선이 300 mil 정도 떠 있는 스텁이 있어서 나는 경고이니, 의도한 연결이 아니면 그 선을 지우고, 의도한 연결이면 실제 핀이나 라벨까지 붙여서 전기적으로 닫아주시면 됩니다. “Global label not connected anywhere else”는 전역 라벨을 한 군데만 써서 생기는 경고인데, SWDIO/SWCLK 같은 디버그 신호를 나중에 다른 시트로 뺄 예정이어서 임시로 달아둔 경우라면 무시해도 되고, 한 시트 내부에서만 쓸 거면 전역 라벨 대신 로컬 라벨로 바꾸면 경고가 사라집니다.결론적으로, 지금 경고들은 “비정상”이라기보다 “풋프린트 지정 방식과 라이브러리 설정이 강의 환경과 다르다”에서 비롯된 것이고, PCB로 넘어가서 Update PCB from Schematic을 할 때 풋프린트 미지정/미해결이 남아 있으면 부품이 누락되거나 Unknown footprint로 떠서 레이아웃 진행 자체가 꼬일 수 있으니, 배선 전에 Footprint 매핑을 표준 라이브러리 기준으로 한 번 정리해 두시는 것을 권장드립니다.
- 0
- 1
- 31
질문&답변
via 관련 질문드립니다.
안녕하세요, 답변 남겨드립니다.질문에서 보신 “TD_N, RD_N 같은 신호는 via를 추가하지 않았는데도 연결이 된다”는 현상은 대부분 RJ45 커넥터의 핀이 스루홀(Plated Through Hole, PTH)로 되어 있기 때문입니다. 스루홀 패드는 단순히 Top에만 구리 패드가 있는 것이 아니라, 홀 벽면이 도금(플레이팅)되어 Top과 Bottom(그리고 내부층까지) 사이를 전기적으로 관통 연결해주는 구조입니다. 그래서 KiCad 입장에서는 RJ45의 해당 핀 패드 자체가 “이미 하나의 via처럼 동작”합니다. 즉, Top에서 그 핀으로 들어오든 Bottom에서 그 핀으로 들어오든 같은 패드(같은 net)에 붙기만 하면 전기적 연결이 성립하니 별도의 via를 추가할 필요가 없어 보이게 됩니다. 반대로 RJ45가 완전 SMD 타입으로 Top 패드만 존재했다면, Bottom에서 그 신호를 잡으려는 순간에는 층 변경이 필요하므로 via가 반드시 들어가게 됩니다.반면 TVS 다이오드의 GND 쪽은 상황이 다릅니다. TVS를 Bottom에 놓았을 때, 그 GND 패드가 바로 “원하는 기준 GND(예: 섀시 GND 또는 보드 GND 플레인)”로 아주 짧고 넓게, 그리고 낮은 인덕턴스로 떨어져야 성능이 나옵니다. 그런데 GND 플레인이 보통 Inner layer에 있거나(4층/6층에서 흔함), Top에만 섀시 GND를 구성해 두었거나, Bottom에 GND 폴리곤이 없거나(혹은 있어도 섀시 GND/시그널 GND 분리 규칙 때문에 바로 못 물리는 경우)라면, Bottom의 TVS GND 패드에서 그 플레인으로 내려가기 위한 수직 연결이 필요해지고 이때 via를 써야 합니다. 스루홀 패드가 “신호 핀 위치”에 존재한다고 해서 TVS의 GND 패드가 자동으로 플레인에 연결되는 것은 아니고, TVS GND 패드에서 플레인까지의 의도한 전류 경로를 만들어줘야 하니 via가 추가되는 흐름이 자연스럽습니다.여기서 현업 관점으로 더 중요한 포인트는 “CAD에서 연결이 된다/안 된다”보다 “그 연결이 ESD/EMI 관점에서 충분히 낮은 인덕턴스 경로냐”입니다. ESD는 상승시간이 매우 짧아 수백 MHz~수 GHz 성분이 강하게 포함되는데, via 인덕턴스를 보수적으로 1 nH로 잡으면 유도성 리액턴스는 X_L = 2pifL 입니다. f = 1 GHz일 때 X_L = 23.14161e91e-9 = 약 6.28 ohm 수준이어서, GND로 떨어지는 경로에 via 1개만 달랑 두면 TVS가 순간적으로 “생각보다 잘 못 잡는” 상황이 나올 수 있습니다. 그래서 RJ45 근처 TVS의 GND는 보통 via를 2개 이상(현장에서 2~4개를 많이 씁니다) 병렬로 박아 인덕턴스를 낮추고, TVS GND 패드에서 via까지 거리를 1~2 mm 이내로 최대한 붙여서(가능하면 0.5~1 mm 수준으로) 트레이스 길이를 줄이는 식으로 설계합니다. 예를 들어 via 1개 대신 3개를 병렬로 두면 이상적으로는 인덕턴스가 1/3 수준으로 내려가므로(대략), 1 GHz 기준 등가 리액턴스도 6.28 ohm에서 2 ohm대까지 줄어드는 효과를 기대할 수 있습니다(물론 실제는 배치/리턴패스/플레인 구조에 따라 달라집니다).질문 이미지 같은 구조에서 실무적으로 자주 나오는 예시를 하나 들어보면, RJ45 핀(스루홀)에서 TD_P/TD_N 라인이 바로 TVS 라인 패드로 들어가고, TVS의 반대쪽이 GND로 떨어지는 형태일 때 신호 쪽은 “스루홀 패드가 층간 연결을 제공”하니 via가 없어도 라우팅이 완성됩니다. 하지만 TVS의 GND는 “스루홀 패드가 있는 위치”로 돌아가는 것이 아니라 “가장 가까운 섀시 GND 또는 보드 GND 플레인”으로 직하강해야 해서, 그 플레인이 Bottom이 아니면 via를 따로 만들어야 합니다. 또한 이더넷 차동쌍은 100 ohm 차동 임피던스가 목표이고(특히 PHY~Magnetics 구간), 불필요한 via는 임피던스 불연속과 추가 기생 성분을 만들어 아이 다이어그램/리턴로스에 악영향을 줄 수 있어 가능하면 via를 안 쓰는 쪽이 일반적으로 유리합니다. 그래서 “신호는 via를 안 넣는 게 오히려 정석에 가깝고”, “TVS GND는 via를 적극적으로 써서 최대한 낮은 인덕턴스로 떨어뜨리는 게 정석”인 경우가 많습니다.정리하면, TD_N/RD_N 신호가 via 없이도 연결되는 직접적인 이유는 RJ45 핀 패드가 스루홀이라 그 자체가 층간 연결(=via 역할)을 하기 때문이고, TVS의 GND는 목표로 하는 GND 플레인/섀시 GND가 다른 레이어에 있어서 의도한 방전 경로를 만들기 위해 via를 추가한 것으로 이해하시면 됩니다.
- 0
- 1
- 33
질문&답변
자동화 실습 2-2 자료 문의
안녕하세요, 답변 남겨드립니다.문의 감사합니다. 제가 해당 파일에 대해서 다른 파일을 올려서 몬테카를로 라이브러리가 누락되었네요.발견해서 문의주셔서 감사드리고, 지금 추가해두었습니다.수강생분들께 한번더 공지 메일 드리겠습니다. 또 문의가 있으시다면 편하게 남겨주시기 바랍니다.
- 0
- 2
- 41







