회로설계 멘토 삼코치
@samcoach
수강생
4,629
수강평
443
강의 평점
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수강평
- AI 기반 아날로그/디지털 회로설계 자동화 실무 - 현업 LDO/AXI-Lite IP 설계와 검증
- 아날로그 회로설계 실무 : Analog IP 설계와 성능 개선하기
- PCB HW설계 실무 : STM32를 활용한 Mixed-signal 보드 설계 프로젝트
- 제품부터 시작하는 인우의 반도체 CHIP 회로설계 이야기
- AI 기반 아날로그/디지털 회로설계 자동화 실무 - 현업 LDO/AXI-Lite IP 설계와 검증
게시글
질문&답변
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
- 12
질문&답변
디버거를 디버깅하려면
안녕하세요, 답변 남겨드립니다.좋은 질문이네요!말씀하신 “디버거를 디버깅하려면 또 다른 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
- 25
질문&답변
강의 연장
안녕하세요,문의주셔서 감사합니다.해당 강의는 무제한으로 바뀌었고, 공지를 한번 드리긴 했었는데기존 수강생 분들도 물론 무제한으로 바꿔드리고 있습니다!반영해드렸으니 확인해보시고 또 궁금한 점은 편히 문의주세요!
- 0
- 2
- 35
질문&답변
프로그램 종류
안녕하세요, 답변 남겨드립니다.Vivado 사용법을 정확히 알고 계시고, 그 안에서 “합성-구현-타이밍 제약-리포트 해석-시뮬레이션 검증”까지 스스로 할 수 있는 수준이면 강의를 Vivado로 계속 진행해도 문제 없다고 보셔도 됩니다. 다만 강의가 특정 툴의 메뉴를 그대로 따라 하게 구성된 구간은 용어와 화면이 다르니, 목적 기준으로 치환해서 따라가시면 되고, 특히 타이밍 제약(XDC)과 WNS/WHS 해석을 숫자로 습관화하시면 툴 차이로 막힐 일이 거의 없습니다.
- 0
- 1
- 31
질문&답변
자동화 실습 2-2
안녕하세요, 답변 남겨드립니다..LIB 뒤에 경로 설정이 잘못되어있는듯한데, 테스트벤치 스크린샷 찍어서 설정 볼 수 있을까요?
- 0
- 2
- 16
질문&답변
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
- 29
질문&답변
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
- 29
질문&답변
자동화 실습 2-2 자료 문의
안녕하세요, 답변 남겨드립니다.문의 감사합니다. 제가 해당 파일에 대해서 다른 파일을 올려서 몬테카를로 라이브러리가 누락되었네요.발견해서 문의주셔서 감사드리고, 지금 추가해두었습니다.수강생분들께 한번더 공지 메일 드리겠습니다. 또 문의가 있으시다면 편하게 남겨주시기 바랍니다.
- 0
- 2
- 33
질문&답변
페라이트 비드 관련 질문드립니다.
안녕하세요, 답변 남겨드립니다.ADC/DAC 회로에서 아날로그 전원(예: AVDD)과 디지털 전원(예: DVDD 또는 3.3V 디지털 레일) 사이에 페라이트 비드를 넣는 핵심 이유는 “DC는 거의 그대로 공급하되, 고주파(스위칭) 노이즈는 서로 왕래하지 못하게 만들어서” 아날로그 전원 레일을 더 조용하게 만들기 위해서입니다. Mixed-signal 보드에서는 MCU 코어, 클럭, SPI/I2C 토글, Ethernet PHY, 모터 PWM 같은 디지털 블록이 전원에서 짧고 큰 전류 펄스를 계속 만들어내는데, 이 전류 펄스가 보드의 전원 임피던스(전원 플레인/트레이스 인덕턴스, 커패시터 ESR/ESL)를 타고 전압 리플로 바뀌면서 아날로그 레일로 그대로 섞여 들어가기 쉽습니다. 강의 흐름에서도 Mixed-signal 블록에서 Ferrite Bead를 “추가”하는 설계 포인트를 따로 다루는 이유가 바로 이 전원 노이즈 경로를 시스템 레벨에서 끊어주기 위함입니다.페라이트 비드는 주파수에 따라 임피던스가 커지는 부품이라, 아날로그 레일 입장에서는 디지털 쪽에서 넘어오는 고주파 성분에 대해 “직렬 저항처럼” 보이게 만들어 감쇠를 줍니다. 그리고 비드 뒤(아날로그 쪽)에 디커플링 커패시터(보통 0.1uF + 1uF 정도를 병렬로)를 촘촘히 붙이면, 디지털에서 넘어온 고주파 전류가 아날로그 핀까지 들어가서 기준전압/샘플링에 영향을 주기 전에 커패시터로 빠르게 바이패스되면서 로컬에서 소모됩니다. 감으로 설명하면 “비드(직렬) + 커패시터(병렬)”가 전원용 저역통과 필터처럼 동작하는 구조입니다.정량적으로 감을 잡아보면, 12-bit ADC에서 LSB는 LSB = Vref / 2^N 이고 Vref=3.3V, N=12이면 LSB ≈ 3.3/4096 ≈ 0.000805V, 즉 약 0.805mV입니다. 만약 디지털 스위칭 때문에 AVDD에 10mVpp 수준의 리플이 얹히면, 그 자체로 10mV / 0.805mV ≈ 12.4 LSB에 해당하는 오차 성분이 전원에 생긴 셈이라(물론 PSRR, 내부 레퍼런스 구조에 따라 실제 변환 오차로 전부 그대로 나오진 않더라도) 분해능을 상당히 갉아먹을 수 있습니다. 특히 외부 레퍼런스를 쓰거나, DAC 출력이 오디오/정밀 제어처럼 저잡음이 중요한 경우에는 전원 리플이 THD+N, SNR, 오프셋/게인 에러로 체감되게 나타나는 경우가 많습니다.왜 하필 “비드”냐는 질문도 자주 나오는데, 인덕터는 이상적으로는 필터에 좋아 보이지만 실제 보드에서는 커패시터(ESL/ESR)와 공진을 만들어 특정 대역에서 임피던스가 오히려 튀는(anti-resonance) 문제가 생길 수 있습니다. 반면 페라이트 비드는 고주파에서 손실성(저항성) 성분이 커져서 공진을 “댐핑”해 주는 장점이 있어, 전원 필터링에서 안정적으로 쓰기 좋습니다. 예를 들어 흔히 쓰는 “100MHz에서 600ohm” 급 비드를 가정하면, 100MHz에서 비드가 Zbead ≈ 600Ω로 커지는 반면 0.1uF 커패시터의 리액턴스는 Xc = 1/(2pif*C) 이고 f=100MHz, C=0.1uF이면 Xc ≈ 0.159Ω 수준이라, 고주파 전류는 비드를 넘어 아날로그 레일까지 가기보다 로컬 커패시터로 훨씬 쉽게 빠져나가게 됩니다. 실제 감쇠량은 비드의 임피던스 곡선, 커패시터 ESR/ESL, 배치/리턴패스에 크게 좌우되지만, 레이아웃까지 올바르게 잡으면 “아날로그 레일에 보이는 고주파 노이즈”가 체감적으로 줄어드는 케이스가 많습니다.현업에서의 대표적인 적용 예를 하나 들어보면, STM32가 SPI로 외부 ADC를 10MHz~20MHz로 읽고, 동시에 Ethernet PHY가 동작하며, 모터 드라이버가 수 kHz~수십 kHz PWM을 뿌리는 보드에서 디지털 3.3V 레일에 20mV~50mV 수준의 스파이크/링잉이 보이는 경우가 있습니다(오실로스코프 프로빙/그라운드 리드 방식에 따라 수치는 달라질 수 있습니다). 이때 AVDD를 그냥 같은 3.3V에 직결하면 ADC 노이즈 플로어가 올라가서 유효 비트가 0.5~2bit 정도 깎여 보이거나(예: ENOB가 11bit 수준으로 체감), DAC 출력에 “고주파 찌꺼기”가 얹혀 필터 이후에도 바닥잡음이 증가하는 식의 문제가 나옵니다. AVDD 앞단에 비드를 두고, 비드 뒤에 0.1uF를 핀 바로 옆에, 1uF를 그 다음으로 붙이고, 아날로그 리턴 경로(그라운드)도 디지털 리턴과 섞이지 않게 정리하면 이런 문제가 눈에 띄게 완화되는 경우가 많습니다.마지막으로 중요한 포인트는 “비드 하나로 모든 게 해결되지는 않는다”는 점입니다. 비드는 DC에서는 저항이 작아야 하고(DCR이 예를 들어 0.1Ω이면 50mA에서 전압강하는 0.005V로 5mV 수준), 정격 전류에서도 임피던스 특성이 무너지지 않아야 합니다. 또한 스위칭 레귤레이터의 저주파 리플(예: 500kHz~2MHz)은 비드만으로는 충분히 안 잡히는 경우가 많아서, 정말 민감한 ADC/DAC라면 “아날로그 전용 LDO로 한 번 더 깨끗하게 만든 뒤 비드+디커플링으로 마무리” 같은 전원 트리 전략이 더 안정적입니다. 그리고 비드는 반드시 “아날로그 전원 핀에 최대한 가깝게”, 비드 뒤쪽 디커플링은 “핀 바로 옆에”, 리턴패스는 “짧고 넓게”가 성능을 좌우합니다. 회로도에서 비드를 넣는 이유는 전기적으로는 필터지만, 실제 효과는 레이아웃과 함께 완성되는 전원 무결성(PI) 설계라고 보시면 가장 현업적인 관점입니다.
- 0
- 2
- 37
질문&답변
알티움(Altium) 실습 자료 공유 가능 여부 문의드립니다.
안녕하세요, 답변 남겨드립니다.제가 백업해둔 파일을 찾아봤는데 이전 PC에 있어서 찾지를 못했네요ㅠㅠ 다만 현재 KiCad에 있는 설계 데이터를 기반으로 Altium 환경에서 동일한 결과물을 재구성 할 수 있도록 가이드 드리겠습니다.이 경우 가장 현실적인 절차는 ① KiCad 프로젝트를 Altium으로 가져온 뒤 ② Altium 형식 라이브러리를 “다시 생성”하는 방식입니다.1) KiCad 프로젝트를 Import 가능한 상태로 정리먼저 KiCad 프로젝트가 “프로젝트 폴더만 넘기면 재현되는 구조”인지 확인합니다.프로젝트 폴더 안에 아래 파일이 들어있도록 정리회로도: *.kicad_sch(또는 *.sch)PCB: *.kicad_pcb프로젝트: *.kicad_pro(또는 *.pro)심볼 라이브러리: *.kicad_sym(또는 *.lib)풋프린트: *.kicad_mod(보통 *.pretty 폴더 안)커스텀 심볼/풋프린트가 PC의 다른 경로(전역 라이브러리)만 참조 중이면→ 해당 라이브러리 파일을 프로젝트 폴더로 복사해 두는 것이 안전합니다.3D 모델(.step/.wrl)을 썼다면 파일도 함께 폴더에 모아둡니다(경로 깨짐 방지).2) Altium에서 KiCad 프로젝트 가져오기(Import)Altium에서 KiCad Import 기능(확장 기능/임포터)이 활성화되어 있어야 합니다.Altium 실행 → Import Wizard(또는 Import 메뉴)에서 KiCad Design Files 선택KiCad 프로젝트/설계 파일 추가*.kicad_pro / *.pro, *.kicad_sch / *.sch, *.kicad_pcb 등KiCad 라이브러리 파일도 함께 추가심볼: *.kicad_sym 또는 *.lib풋프린트: *.kicad_mod풋프린트가 *.pretty 폴더에 다수로 존재하면, 해당 보드에서 실제 사용된 풋프린트가 빠지지 않도록 최대한 포함되게 추가합니다.PCB가 포함된 경우 레이어 매핑 단계가 나오면 실크/마스크/기계층 등이 의도대로 매핑됐는지 확인완료 후 Altium 프로젝트(*.PrjPcb)로 변환된 결과물을 확인3) (핵심) Altium 라이브러리(.SchLib/.PcbLib) 재생성Import가 끝나면, 현재 프로젝트에 사용된 부품을 기준으로 Altium 라이브러리를 다시 만들 수 있습니다.회로도에서: Design → Make Schematic Library→ 사용된 심볼을 모아 .SchLib 생성PCB에서: Design → Make PCB Library→ 배치된 풋프린트를 모아 .PcbLib 생성이 과정을 거치면, 원래 갖고 있던 Altium 라이브러리가 없어도 KiCad 기반으로 Altium 라이브러리를 복원할 수 있습니다.4) 변환 후 반드시 점검할 항목회로도/PCB 동기화(부품 누락, 넷 누락 여부)ERC/DRC 재실행(규칙은 일부 재설정이 필요할 수 있음)보드 외곽/컷아웃/기계층 객체 정상 이관 여부출력물(Gerber/Drill/BOM/PnP) 재생성 후 KiCad 결과와 비교5) 자주 막히는 원인커스텀 심볼/풋프린트가 프로젝트 폴더 밖에만 있어 Import 후 연결이 끊김.pretty 내 풋프린트가 일부만 포함되어 필요한 풋프린트가 누락레이어 매핑이 어긋나 실크/마스크/기계층이 잘못 들어옴이 방법으로 시도해보시고, 잘 안되는 부분은 또 질문 남겨주시기 바랍니다.
- 0
- 2
- 45






