안녕하세요. 설계독학의 맛비입니다.
현) Global Top5 Fabless기업에서 HW IP 설계하고 있습니다.
세상에 없던 그리고 여러분들의 현업 생활에 도움이 되는, "진짜 반도체 설계 실무 강의"를 만들고 있습니다.
설계독학과 함께할 수 있는 링크입니다. 함께 즐공하고 성장해요!
📜신규강의 준비로 인하여 휴무입니다!
🙋♂️소개
안녕하세요. 👋 설계독학 맛비입니다.
저는 현재 Global Top3비메모리 반도체 설계 회사에 재직중인 13년차 엔지니어 입니다.
- 대기업, 중소기업, 스타트업, 외국계 까지 모두 경험해 보았습니다.
- Team lead 경험 및 다수의 엔지니어 분들의 면접 경험도 있습니다.
- 그외 합격했지만 선택하지 않은 대기업들도 다수 있습니다.
- 유튜브의 라이브 방송 및 다수의 커리어 상담이력이 있습니다.
제가 생각하는 멘토링은 단순히 지식을 한방향으로 전달하는 것이 아닙니다. (그것은 강의!!)
제가 가진 경험을 바탕으로 멘토링을 요청하신 분의 고민을 듣고 같이 이야기 하면서 더 나은 방향, 새로운 방법을 제시하면서 소통하는 것, 그것이 멘토링이라 생각합니다.
멘티분들의 원하는 목표를 달성하기 위해서 어떤 부분을 채워야할지, 커리어를 어떻게 관리해야 할지 등등 조언 해드리고자 합니다.
👩🏻💻 비메모리 반도체 회로 설계엔지니어 살아남기
불경기인 요즘 비메모리 반도체 회로 설계 이직/취업 힘듭니다.
해당분야는 수박 겉핥기로 취업하는 쉬운 분야가 아닙니다.
체계적인 커리어 관리가 중요합니다.
이런 고민이 있다면 상담을 진행해보는 건 어떨까요?
- 경력자 혹은 신입 이직 및 취업 상담. (면접 전, 모의면접 진행 가능)
- 학업 및 반도체 설계 커리어 관리 (석사, 박사 진학? 취업?)
- 맛비랑 비메모리 설계엔지니어의 삶에 대해 이야기 해보고 싶다..?
🔎 가능한 멘토링 분야
- 비메모리 반도체 설계 엔지니어로 성장하는 방법
- 비메모리 반도체 설계 엔지니어로 취직하기 / 이직하기
- 비메모리 반도체 설계 분야 학습 방법
- 기타 개발자로서 진로에 대한 고민 모두
🕗일주일에 한번만 진행하는 1:1 상담
토요일 오전 8시에서 9시, 일주일에 딱 한분만 모시고 1시간동안 진행합니다.
한시간 지났다고 해서, 땡치고 bye 하는가? 도 아닙니다.
제 성격상 만족할만한 결론은 꼭 내드립니다.
1:1 로 이야기 해보면서 맞춤 전략을 짜봅시다.
✅ 상담 결과물을 드려요
여러분의 현재 상황을 듣고 실시간으로 내용을 정리합니다.
상담이 끝난 후 정리된 상담 내용은 이메일로 전달드립니다.
🗓진행은 구글 Meet 에서
진행 순서
- (구매자) 결제를 해주세요.
- (판매자) 제가 메일을 보내드립니다. (시간 및 구글 meet 링크 공유)
- (구매자) 메일 확인해주시고, 답장주세요.
- 구글 meet 을 통해 만나서 1:1 상담을 진행합니다.
● 진행방식
- Google meets을 이용한 1:1 화상회의 방식 (카메라 OFF)
- 예약이 되면 기재하신 연락처(e-mail)를 통해 접속주소를 알려드립니다.
- 상호 원활한 대화를 위해 "이어폰과 마이크 혹은 헤드셋" 을 준비해 주세요!
- 마이크가 없을 경우 채팅창으로 대화를 나눠야하는데 시간 Loss가 발생할 수 있습니다.
● 준 비 물
- 질문할 내용 list (사전 공유 필수)
- 마이크+스피커 혹은 헤드셋 (상호 원활한 커뮤니케이션을 위해 필수)
강의
로드맵
전체 1수강평
- 설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)
- 설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
- 설계독학's Verilog 마스터 Season 1 (실전 코딩 테스트 문제로 완성하는 디지털 설계 엔지니어의 커리어 도약)
- 설계독학맛비's 실전 AI HW 설계를 위한 바이블, CNN 연산 완전정복 (Verilog HDL + FPGA 를 이용한 가속기 실습)
- 설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)
게시글
질문&답변
디스코드 멤버쉽 등업 관련 문제
앗 이런!!오늘 저녁에 확인해보겠습니다.쪼금만 기다려주셔요!!
- 1
- 2
- 25
질문&답변
BRAM의 Read / Write를 다 수행했는지 확인할 때 사용되는 num_cnt / i_num_cnt 관련 질문
안녕하세요!!추석연휴라서 답변이 조금 밀렸네요 ㅠ질문 요지는 “왜 i_num_cnt를 바로 쓰지 않고 레지스터 num_cnt에 캡처하느냐”로 이해했습니다. 결론부터 말하면, 비교 기준을 트랜잭션 단위로 고정하고 타이밍을 안정화하려는 의도입니다. 항목별로 답드리겠습니다.맞습니다. num_cnt를 레지스터로 두면 플립플롭 자원이 들고, i_run에 캡처되는 시점만큼 한 사이클의 지연이 생깁니다. 다만 이 비용은 보통 폭만큼의 FF(예: AWIDTH비트)라서 매우 작고, 시스템 타이밍 측면에선 이득이 더 큽니다.장점은 세 가지가 핵심입니다.원자성 보장: i_num_cnt가 트랜잭션 도중 바뀌어도, 캡처된 num_cnt는 끝날 때까지 값이 고정됩니다. done 비교 기준이 흔들리지 않습니다.타이밍/글리치 차단: 상위 로직의 조합 경로가 길거나 글리치가 있어도 FF에서 한번 끊어 주므로 비교 경로가 짧고 깨끗해집니다(타이밍 클로저 유리).리셋·상태 경계 명확화: 코드처럼 o_done에서 0으로 클리어하면 트랜잭션 경계가 분명해집니다. 차기 트랜잭션 시작 전에 기준값이 남아있어 생기는 스파이크를 예방합니다.addr_cnt_read == i_num_cnt-1로 바로 비교해도 합성은 됩니다. 다만 권하지 않습니다. 이유는트랜잭션 중 i_num_cnt가 변하면 완료 펄스가 앞당겨지거나 사라질 수 있습니다.상위에서 오는 조합경로가 길어지면 크리티컬 패스가 그쪽으로 누수됩니다.i_num_cnt==0일 때 i_num_cnt-1은 언더플로로 전비트 1이 되어 오동작 위험이 큽니다(레지스터도 마찬가지라서 보통 i_num_cnt>0 전제·assert나 가드 로직을 둡니다).정리하면, num_cnt를 레지스터로 캡처하는 건 “리소스 소모 대비 안정성/재현성/타이밍 이득”이 확실합니다. 실무에선 입력을 그대로 쓰기보다 트랜잭션 시작에 캡처해서 쓰는 패턴을 기본으로 가져가시면 안전합니다. 필요하면 i_run과 o_done 사이의 경계에서만 업데이트되도록 한 사이클 더 파이프라이닝하는 것도 좋습니다.즐공하세요!
- 1
- 1
- 20
질문&답변
Vitis 코드 작성
안녕하세요 :)Vitis에서 header file은 말씀하신 것처럼 툴이 자동으로 만들어주는데, 그 안에 있는 함수들은 결국 Xilinx에서 제공하는 드라이버 API들이라서, 제가 직접 따로 구현한 건 아닙니다. 제가 한 일은 그 함수들의 역할을 이해하고, 제 main.c 코드 안에서 적절히 불러다 쓰는 것이죠.그럼 그 함수들의 기능은 어디서 배우느냐 하면, 기본적으로는 Xilinx 공식 문서를 참고했습니다. 예를 들어 각 IP별로 xparameters.h, xil_io.h, 그리고 x.h 같은 헤더가 생성되는데, 거기에 대응되는 드라이버 설명이 Vitis Document나 Xilinx Wiki에 잘 정리되어 있습니다. https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841745/Baremetal+Drivers+and+Libraries 처음엔 데이터시트와 드라이버 예제 코드를 그대로 따라 해보고, 함수 이름과 동작을 연결하면서 자연스럽게 익히게 됐습니다.즉, 의 cin, cout을 배우듯이, Xilinx에서 제공하는 예제 코드와 API 문서를 보면서 함수의 역할을 익혔다고 보시면 됩니다. 직접 다 외우기보다는 필요한 기능이 있을 때 예제를 찾아보고, 반복해서 사용하면서 몸에 익히는 식으로 공부했습니다.즐공하세요!
- 1
- 2
- 20
질문&답변
Ubuntu 에서 옆에 라인 수 보는 방법
안녕하세요 🙂vim editor의 라인 넘버는 vim 내부 키워드로 확인할 수 있습니다.vim editor 사용방법은 별도로 책이 나올 정도로 방대하긴 한데요. 저도 자주 쓰는것만 알아요. 하핫 일반적으로 :set number 명령어를 입력하면 왼쪽에 줄 번호가 표시되고, :set nonumber로 다시 끌 수 있습니다. 만약 상대적인 라인 번호가 필요하다면 :set relativenumber를 쓰면 현재 커서를 기준으로 위아래 줄의 상대적 위치가 표시됩니다. 이 두 옵션은 같이 쓸 수도 있어서, 절대 번호와 상대 번호를 동시에 확인하는 것도 가능합니다. 자주 쓰신다면 .vimrc에 set number를 추가해두면 vim을 열 때마다 기본으로 라인 넘버가 켜지게 됩니다. 즐공하세요!
- 1
- 1
- 42
질문&답변
o_done만 reg type으로 선언한 이유
안녕하세요 🙂코딩 스타일의 차이 이고요.여러가지 코딩 스타일을 보여드리려고 했어요. 유사 질문이 있어서 남겨드려요.즐공하세요!(사진)
- 1
- 2
- 37
질문&답변
vivado 및 vitis 리눅스 환경 설치 관련 질문드립니다.
안녕하세요 🙂FPGA 를 리눅스에서 사용하시지 않으실꺼라면, vivado 만 있으셔도 됩니다. 그리고 리눅스 용으로 설치하시면 됩니다. 리눅스 상에서는 Vivado sim 을 위주로 사용해요. 다만 Xilinx 에서 설치 파일을 Vitis 를 super set 으로 제공하고 있어서 vitis 를 설치했습니다. (나중에 확장성이 있을 수 있고요) 리눅스 환경에 적응하시는 것을 적극 추천드릴께요. 추가질문의 답은FPGA 강의를 제작할 당시에 WSL 에서 진행하면 좋았으나, 설치시 드라이버 이슈로 인하여 Windows 를 선택하였습니다. 이런 상황에서 WSL 에서 드라이버 이슈를 해결하고 FPGA 강의를 진행하신 분도 계시는데요. 필요하시면 다음링크 확인해보시면 좋을 것 같아요. https://inf.run/zC27f 즐공하세요 🙂
- 1
- 3
- 82
질문&답변
21강의 DUT 질문 있습니다.
안녕하세요 🙂그림에서 보시면, (사진)캡쳐해주신 코드는 Combinational Logic 파트입니다. (파란색 부분)코드에서 1 cycle 변경 부분은, 다음 그림에서 빨간색 부분이 되겠습니다.빨간색 박스 내의 코드를 보시면, clk edge 에 맞추서, c_state 이것이 1 cycle delay 를 만들어 냅니다.따라서 "S_DONE일 경우 n_state를 S_IDLE 로 바꾸는데요" 이 반영된 내용은 1 cycle 뒤에 c_state 로 반영됩니다. 따라서 질문주신"wave form에서는 바로 바뀌지 않고, 1cycle 정도 후에 바뀌나요?"이것은 코드에서 의도한 동작입니다.즐공하세요 🙂
- 1
- 1
- 32
질문&답변
파일 제거 방법
안녕하세요 🙂AI 가 답변을 잘 달아준 것 같아요. Tool 이 설치되어 있는 폴더를rm -rf 으로 지우시면 되겠습니다.즐공하세요!
- 1
- 2
- 56
질문&답변
[AI HW Lab2] CNN Verilog HDL Practice 1 (Simulation) - 문제설명편 ppt
안녕하세요.강의자료에 있는 주어진 변수값을 먼저 확인해보겠습니다.ACI_BW 는 22 bit 이고, bias 는 8bit 입니다. AB_BW = ACI_BW + bias 입니다. 질문은 왜 AB_BW 가 23 bit 이냐였고, 최대값 만을 놓고 23 bit 이면 충분한지 계산해 보겠습니다. "2 의 23 승" 은 "2의 22승 더하기 2의 8승" 값 보다 큽니다.즉, 22 bit + 8 bit 에서 overflow 를 방지하는 bit width 는 23 bit 이면 충분합니다.따라서 AB_BW 를 23 bit 정하였고, overflow 는 발생하지 않을 것으로 예상됩니다.즐공하세요.
- 1
- 2
- 45
질문&답변
[AI HW Lab1] CNN Core C 코딩 (Golden Model 만들기)
안녕하세요.차근차근 순서대로 살펴보겠습니다.위 그림, 아래 그림, 이렇게 불러보겠습니다.위 그림의 KX, KY 는 kernel 2-D 의 size 이고, 아래 그림의 S 와 R 에 해당됩니다.위 그림의 CI, CO 는 아래그림의 C 와 M 에 맵핑됩니다.위 그림, 아래그림의 차이라고 한다면,위 그림은 순서가, Input feature map * Weight 순이었다면,아래 그림은 순서가, Weight * Input feature map 순 입니다.제가 생각하기로는 위, 아래 그림의 Input feature map 과 Weight 의 곱하기 순서만 바뀌었을 뿐, 두개의 그림은 같은 연산을 설명하는 것으로 이해됩니다.(사진)
- 1
- 2
- 36