안녕하세요. 설계독학의 맛비입니다.
현) Global Top5 Fabless기업에서 HW IP 설계하고 있습니다.
세상에 없던 그리고 여러분들의 현업 생활에 도움이 되는, "진짜 반도체 설계 실무 강의"를 만들고 있습니다.
설계독학과 함께할 수 있는 링크입니다. 함께 즐공하고 성장해요!
Courses
Reviews
202111282280
·
Self-Study Design's Verilog Master Season 1 (Career Leap for Digital Design Engineers Completed Through Practical Coding Test Problems)Self-Study Design's Verilog Master Season 1 (Career Leap for Digital Design Engineers Completed Through Practical Coding Test Problems)onsaemiro1
·
Design Self-study Taste's Bible for Practical AI HW Design, Complete Conquest of CNN Operations (Accelerator Practice Using Verilog HDL + FPGA)Design Self-study Taste's Bible for Practical AI HW Design, Complete Conquest of CNN Operations (Accelerator Practice Using Verilog HDL + FPGA)onsaemiro1
·
Design Self-Study Tastebi's Practical FPGA-Based HW Accelerator Design (From LED Control to Fully Connected Layer Accelerator Design)Design Self-Study Tastebi's Practical FPGA-Based HW Accelerator Design (From LED Control to Fully Connected Layer Accelerator Design)thsalswo8792272
·
Self-Study Design's Verilog Master Season 1 (Career Leap for Digital Design Engineers Completed Through Practical Coding Test Problems)Self-Study Design's Verilog Master Season 1 (Career Leap for Digital Design Engineers Completed Through Practical Coding Test Problems)sdfkk3
·
Design Self-study Taste's Bible for Practical AI HW Design, Complete Conquest of CNN Operations (Accelerator Practice Using Verilog HDL + FPGA)Design Self-study Taste's Bible for Practical AI HW Design, Complete Conquest of CNN Operations (Accelerator Practice Using Verilog HDL + FPGA)
Posts
Q&A
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
- 15
Q&A
Ubuntu 에서 옆에 라인 수 보는 방법
안녕하세요 🙂vim editor의 라인 넘버는 vim 내부 키워드로 확인할 수 있습니다.vim editor 사용방법은 별도로 책이 나올 정도로 방대하긴 한데요. 저도 자주 쓰는것만 알아요. 하핫 일반적으로 :set number 명령어를 입력하면 왼쪽에 줄 번호가 표시되고, :set nonumber로 다시 끌 수 있습니다. 만약 상대적인 라인 번호가 필요하다면 :set relativenumber를 쓰면 현재 커서를 기준으로 위아래 줄의 상대적 위치가 표시됩니다. 이 두 옵션은 같이 쓸 수도 있어서, 절대 번호와 상대 번호를 동시에 확인하는 것도 가능합니다. 자주 쓰신다면 .vimrc에 set number를 추가해두면 vim을 열 때마다 기본으로 라인 넘버가 켜지게 됩니다. 즐공하세요!
- 1
- 1
- 36
Q&A
o_done만 reg type으로 선언한 이유
안녕하세요 🙂코딩 스타일의 차이 이고요.여러가지 코딩 스타일을 보여드리려고 했어요. 유사 질문이 있어서 남겨드려요.즐공하세요!(사진)
- 1
- 2
- 31
Q&A
vivado 및 vitis 리눅스 환경 설치 관련 질문드립니다.
안녕하세요 🙂FPGA 를 리눅스에서 사용하시지 않으실꺼라면, vivado 만 있으셔도 됩니다. 그리고 리눅스 용으로 설치하시면 됩니다. 리눅스 상에서는 Vivado sim 을 위주로 사용해요. 다만 Xilinx 에서 설치 파일을 Vitis 를 super set 으로 제공하고 있어서 vitis 를 설치했습니다. (나중에 확장성이 있을 수 있고요) 리눅스 환경에 적응하시는 것을 적극 추천드릴께요. 추가질문의 답은FPGA 강의를 제작할 당시에 WSL 에서 진행하면 좋았으나, 설치시 드라이버 이슈로 인하여 Windows 를 선택하였습니다. 이런 상황에서 WSL 에서 드라이버 이슈를 해결하고 FPGA 강의를 진행하신 분도 계시는데요. 필요하시면 다음링크 확인해보시면 좋을 것 같아요. https://inf.run/zC27f 즐공하세요 🙂
- 1
- 3
- 72
Q&A
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
- 28
Q&A
파일 제거 방법
안녕하세요 🙂AI 가 답변을 잘 달아준 것 같아요. Tool 이 설치되어 있는 폴더를rm -rf 으로 지우시면 되겠습니다.즐공하세요!
- 1
- 2
- 49
Q&A
[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
- 36
Q&A
[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
- 31
Q&A
14장 실습코드에서 valid 신호에 대해
안녕하세요 🙂의외로, AI 가 답변을 제대로 적어준 것 같은데요.휴먼의 입장에서 적어보겠습니다. 해당 코드는 1bit 의 F/F 3 개가 cascade 로 연결되어 있는 구조로 회로가 완성이 되는 코드입니다. 즉 3 bit shift register 로 합성이 됩니다.그림으로 그려보면 이런 느낌? (사진) (사진) Verilog 문법을 알고계시다면 이 말이 어떤 뜻인줄 아실 것 같으신데요.reg [2:0] r_valid;r_valid r_valid [2:0] 이것은 input i_valid 를 매 사이클 마다 1 bit 씩 shift 하는 내용을 기술한 것입니다.즐공하세요!
- 1
- 2
- 32
Q&A
spartan7 fgga484보드
안녕하세요.Spartan-7 보드는 Zynq처럼 PS(Processing System)이 내장된 구조가 아니기 때문에, IP Integrator에서 Zynq PS 블록을 추가해서 사용하는 방식은 불가능합니다. 대신에 전체를 PL 영역만으로 설계해야 하고, 필요하다면 MicroBlaze 같은 소프트 프로세서를 추가해 활용할 수 있습니다. 따라서 CNN 구현도 순수 RTL 기반 또는 MicroBlaze + PL 구조로 접근하셔야 합니다.결론적으로, Zynq PS 대신 뭔가를 대체하는 개념은 없고, Spartan-7은 순수 FPGA 보드이기 때문에 직접 하드웨어 설계와 필요시 MicroBlaze를 통한 소프트 프로세서 구성을 고려하시면 됩니다.즐공하세요.
- 1
- 1
- 34