ETA
@eta5583
Học viên
179
Đánh giá khóa học
17
Đánh giá khóa học
4.9
안녕하세요. 설계독학의 ETA입니다.
현) Global Top5 Fabless기업에서 HW IP 설계하고 있습니다.
여러분께 3번의 이직의 경험과 노하우를 실전 코딩 문제 강의를 통해 공유하고자 합니다.
설계독학과 함께할 수 있는 링크입니다. 함께 즐공하고 성장해요!
Khóa học
Đánh giá khóa học
didahtltl1604
·
Làm chủ Verilog của 설계독학 Season 2 (Trùm cuối Test Code thực tế: Hoàn thiện tấm vé nhảy việc với các bài toán khó)Làm chủ Verilog của 설계독학 Season 2 (Trùm cuối Test Code thực tế: Hoàn thiện tấm vé nhảy việc với các bài toán khó)jinzhen72284
·
Verilog Master Season 1 của 설계독학 (Tự học thiết kế) (Bước nhảy vọt trong sự nghiệp kỹ sư thiết kế kỹ thuật số hoàn thiện thông qua các bài toán kiểm tra lập trình thực tế)Verilog Master Season 1 của 설계독학 (Tự học thiết kế) (Bước nhảy vọt trong sự nghiệp kỹ sư thiết kế kỹ thuật số hoàn thiện thông qua các bài toán kiểm tra lập trình thực tế)achieve123455556
·
Verilog Master Season 1 của 설계독학 (Tự học thiết kế) (Bước nhảy vọt trong sự nghiệp kỹ sư thiết kế kỹ thuật số hoàn thiện thông qua các bài toán kiểm tra lập trình thực tế)Verilog Master Season 1 của 설계독학 (Tự học thiết kế) (Bước nhảy vọt trong sự nghiệp kỹ sư thiết kế kỹ thuật số hoàn thiện thông qua các bài toán kiểm tra lập trình thực tế)alswnsworkout6072
·
Verilog Master Season 1 của 설계독학 (Tự học thiết kế) (Bước nhảy vọt trong sự nghiệp kỹ sư thiết kế kỹ thuật số hoàn thiện thông qua các bài toán kiểm tra lập trình thực tế)Verilog Master Season 1 của 설계독학 (Tự học thiết kế) (Bước nhảy vọt trong sự nghiệp kỹ sư thiết kế kỹ thuật số hoàn thiện thông qua các bài toán kiểm tra lập trình thực tế)stephanus732880
·
Verilog Master Season 1 của 설계독학 (Tự học thiết kế) (Bước nhảy vọt trong sự nghiệp kỹ sư thiết kế kỹ thuật số hoàn thiện thông qua các bài toán kiểm tra lập trình thực tế)Verilog Master Season 1 của 설계독학 (Tự học thiết kế) (Bước nhảy vọt trong sự nghiệp kỹ sư thiết kế kỹ thuật số hoàn thiện thông qua các bài toán kiểm tra lập trình thực tế)
Bài viết
Hỏi & Đáp
CDC 예제 및 메타스테빌리티 관련 질문 드립니다.
안녕하세요 김상현님!열심히 달리고 계시군요! 질문에 답변 드리겠습니다.아마 src_valid_toggle_r_edge 을 말씀하신거겠죠? 아니시면 말씀부탁드립니다.이 신호는 src_stall 을 만들기도합니다. 즉 이 CDC는 하나의 벨리드 값이 데스티네이션에 안전하게 도착할때까지 다음 입력 src_valid 신호는 stall이 되는거죠. 그래서 src_valid_toggle_r_edge 는 입력 valid가 1인것 뿐만아니라 src_stall이 0이라는 조건도 보고있습니다.저도 학부생 시절에 처음에 잘 이해 되지 않았던 부분입니다. 아래는 AI가 답을 깔끔하게 정리해주어서 전달드립니다.Setup/Hold time을 만족하지 못하면 첫 번째 플립플롭(F/F)의 출력은 0도 아니고 1도 아닌 중간 전압에서 요동치는 불안정한 상태(메타안정성)에 빠지게 됩니다.직렬로 F/F을 연결했을 때 이 문제가 해결되는 이유는 뒷단의 F/F이 이상한 값을 걸러내기 때문이 아니라, 첫 번째 F/F이 제정신을 차릴 '시간'을 벌어주기 때문입니다.가장 흔하게 쓰이는 2단 동기화 회로(2-Stage Synchronizer)를 기준으로 그 원리를 단계별로 설명해 드리겠습니다.1단계: 첫 번째 F/F의 메타안정성 돌입 비동기 신호가 들어와 Setup/Hold time을 어기면 첫 번째 F/F은 메타안정성 상태가 됩니다. 이는 마치 뾰족한 산꼭대기에 공을 올려둔 것과 같습니다.2단계: 해소 시간(Resolution Time) 확보 핵심은 이 불안정한 상태가 영원히 지속되지 않는다는 점입니다. 회로 내부의 미세한 열 노이즈나 피드백 회로로 인해 산꼭대기에 있던 공은 결국 양옆(0 또는 1) 중 한 곳으로 굴러떨어져 안정화됩니다. 두 번째 F/F이 다음 클럭에서 샘플링을 하기 전까지 한 클럭 주기(1 Clock Cycle)라는 여유 대기 시간이 주어집니다.3단계: 두 번째 F/F의 정상 값 샘플링 다음 클럭 에지가 뛸 때쯤이면, 첫 번째 F/F의 출력은 이미 0이나 1로 굳어져 완전히 안정화된 상태입니다. 따라서 두 번째 F/F은 불안정한 값이 아닌, '깨끗하게 정돈된 0 또는 1'을 받아 시스템 내부로 안전하게 전달합니다.정리하자면, 직렬로 연결된 F/F은 이상한 신호가 전파되는 것을 막는 물리적인 벽이 아니라, 불안정한 신호가 스스로 정상적인 값(0 또는 1)으로 돌아올 때까지 기다려주는 '대기실' 역할을 하는 것입니다. 클럭 주파수가 너무 빠르거나 시스템 신뢰성이 극도로 높아야 하는 경우에는 대기 시간을 더 늘리기 위해 F/F을 3개 이상 직렬로 달기도 합니다.(비틀거리며 도는 팽이(불안정한 신호)를 억지로 잡으려 하지 않고, 팽이가 바닥에 완전히 쓰러질 때(0 또는 1)까지 한 박자 기다렸다가 그 결과를 줍는 원리입니다.)혹시 더 궁금한 점 있으시면 언제든지 질문주셔요
- Lượt thích
- 1
- Số bình luận
- 2
- Lượt xem
- 17
Hỏi & Đáp
L2_P12_priority_data_controller 코드 리뷰 부탁드립니다.
안녕하세요 정회운님,여전히 열심히 시군요! 아래 질문에 대한 다볍ㄴ입니다.Q1) 위처럼 FSM 방식으로 작성해도 문제없는지 궁금합니다. -> 펑션에 대해선 문제는 없어보입니다. 다만 Feedthouth(출력이 레지스터 없이 입력과 바로 연결)되는 부분이 보이네요. 이 문제 내에서는 PASS만 된다면 큰 이슈는 아닙니다.Q2) 이건 좀 추상적인 질문인데, 저 같은 경우는 위처럼 간단한 로직이라도 FSM을 사용해 combinational logic/sequential logic/output logic 이 세가지로 분리해서 작성하는게 편한 것 같습니다. 그런데 실무에서 rtl을 보면 모든 ip가 FSM으로만 설계되지는 않는 것 같고, 사용된다하더라도 윗 처럼 FSM logic을 세 부분으로 분리해서 작성하지는 더더욱 않더라구요. 학부 때는 FSM으로 로직을 짜는 것이 많은 장점이 있다고 배운 것 같은데, logic의 복잡도와 무관하게 위와 같은 코딩스타일을 고집하는게 좋지 않은 습관인지 궁금합니다. 또한, logic을 설계함에 있어 FSM을 사용할지 말지에 대한 기준이 궁금합니다.-> 제 개인적인 의견이니 참고만 하시길 바랍니다. "그런데 실무에서 rtl을 보면 모든 ip가 FSM으로만 설계되지는 않는 것 같고" 이 부분은 결국 ip도 이전에 누군가의 엔지니어가 만든 것입니다. 그때 당시의 엔지니어의 디자인 철학이 다를 수 있습니다. 리저빌리티를 위해 FSM을 따로 사용할 것인가? 아니면 최대한 코드 사이즈를 줄일 것인가? 굳이 FSM으로 나누지않아도 flag가 FSM을 대체할 수도있고, ip 이기때문에 여러 로직으로 다 흩어지게 디자인 해도 ip는 모든 동작에 대해서 보장만 해주면 되니 초반엔 FSM 처럼 설계했지만 최적화 과정에서 FSM 형태를 알아볼수 없게 되었을 수도있습니다. 어떤 ip들을 보고 계신지는 모르겠지만 참고로 저는 지금까지 제가 본 디자인들의 대부분은 FSM으로 혹은 그 형태를 가춘 것들이 포함된 로직들 이였습니다. FSM은 디자인을 할때의 기반이 되는 스킬이라고 생각됩니다. 그 이후 단계에서 변형될수는 있지만 FSM을 그대로 사용한다면 나중에 보기는 편하겠지요. 사실 지금 실무에서 디자인을 하는 기회가 많이 없긴하지만 FSM을 사용하는 방법도 해보시고 다른 방법도 해보시고 상황에 따라 더 좋은 방법을 선택하는 것이 맞습니다. 다만 FSM는 항상 고려할 수 있는 방법 중 하나라고 생각 됩니다. 저는 FSM을 왠만하면 무조건 사용한다의 입장이지만 " FSM을 사용할지 말지" 는 경험 하시다 보면 아시게 되지 않을까 싶습니다.혹시 더 상담이 필요하시면 답변 주셔요~
- Lượt thích
- 1
- Số bình luận
- 2
- Lượt xem
- 60
Hỏi & Đáp
메모리 리셋 관련 질문 드립니다.
안녕하세요 열심히 달리는 김상현님!답변드립니다.BRAM은 따로 초기화해주지 않으면 쓰레기 값이 들어있나요? 그래서 따로 RTL에서 초기화 하고 싶은 값으로 초기화를 해줘야하나요?-> 네 초기화 해주지않으면 시뮬레이션 환경에선 Unknown이 들어있고 실제로는 물리적으로 0또는의 랜덤 노이즈(쓰레기)값이 들어있습니다. 초기화에 대해서는 음.. 시뮬레이션 레벨인지, 아니면 특정 valid 한값으로 미리써있어야하는 FPGA 레벨 TEST를 위한 것인지. 실제 ASIC을 고려하시는 건지 어떤 레벨에서 초기화를 말씀하신지는 좀더 이야기를 들어봐야할것같습니다.만약 초기화를 따로 해줘야한다고 하면 보통 RTL 내에서 초기화를 하나요?-> 1번 답변과 같습니다.Zynq와 같은 FPGA에서 PS로 초기화하는 방법을 사용해도 되나요?-> 제가 잘 몰라서 검색해보았는데 PS라는게 Processing System을 말씀하시는건가요? FPGA레벨에서 특정 목적을 위해 .bit 파일 같은걸 로딩해서 하는걸 말씀하시는 거면 사용해도 문제될것은 없습니다.혹시 답변이 부족하시면 언제든지 추가 질문 부탁드립니다!
- Lượt thích
- 1
- Số bình luận
- 2
- Lượt xem
- 56
Hỏi & Đáp
RTL_ROM이 무엇인지 알고 싶습니다.
안녕하세요 김상현님, 열심히 달리고 계시네요! 여러 질문을 한번에 하실 정도로 열정이 대단하십니다.제가 3가지 정도 답변을 해야할것 같아 보이는데 혹시 제가 놓친 부분이 있다면 말씀해주세요.게이트로 합성되는 것보다 RTL_ROM으로 합성되는게 더 유리한건가요?이건 이미 AI가 잘 답변해준것같습니다. 단순 MUX 로직 게이트로 합성하는것보다 RTL ROM으로 합성되는게 면적이나 타이밍 면에서 유리합니다. 실무에서는 실제 공정해서 제공해주는 ROM 형태의 라이브러리를 쓰게될수도있는데 이 경우는 상황에따라 더 유리할수있습니다.김상현님의 schematic이 valid가 RTL_ROM으로만 합성된이유는 if 문을 사용하셨기때문입니다.if의 경우 우선순위가 있어서 데이터가 schematic이 MUX 로직으로 생성되었을꺼고, case를 사용하시면 RTL ROM으로 생성 되실것 같습니다.L1-P13 Parallel processor schematic 이슈지금까지 모든 문제를 schematic으로 보신 수강생분들이 없어서 그런지.. 이제야 발견이 되네요.같은 경로에 schematic.tcl 파일을 아래 처럼 변경해보겠어요? 문제에 따라 테스트밴치는 합성이 불가능하게 되어있는게 많습니다. L1-P13이 그러한 문제들 중 하나인데요.아래와 같이 고쳐서 해보시겠어요? DUT만 스키메틱으로 만들게 tb쪽을 제거하였습니다. # Create project to check schematic create_project project_sgdh_schematic ./project_sgdh_schematic -part xc7z020clg400-1 # Add files read_verilog [ glob ./design/*.v ] #read_verilog [ glob ./testbench/*.v ] #read_verilog -library bftLib [ glob ./include/*.vh ] # RTL Analysis (Schematic) set_property top clock_divider [current_fileset] synth_design -rtl -rtl_skip_mlo -name rtl_1 호옥시 답변이 부족하시다면 말씀 부탁드립니다. 화이팅!
- Lượt thích
- 1
- Số bình luận
- 2
- Lượt xem
- 66
Hỏi & Đáp
인터럽트 컨트롤러 요청 처리와 처리 완료 구문 중 이해가 안되는 내용이 있습니다.
안녕하세요 김상현님,클럭게이팅에서 바로 인터럽트 컨트롤러로 열심히 달려시고 계시는 군요!스스로 질문을 해결하시는 모습에 박수를 쳐드립니다. 후에는 저보다 더 멋진 엔지니어가 될 것 같네요!1번에 대해서도 충분히 코드를 이해하시고 여쭤보신것같습니다.아래가 질문이셨죠?interrupt_pending 답변을 드리자면, 사실 현재 문제의 조건에서는 차이가 없습니다. 다만 모범답안은 입력이 즉 interrupt_requests 가 level로 유지를 안할 수도 있다는 것을 고려해서 넣은 코드라고 생각하시면 될 것 같습니다. 구조에 따라서 인터럽트 리퀘스트가 펄스일수도 있거든요. 그럴 경우는 interrupt_pending | 조건을 추가함으로써 펄스로 오는 인터럽트도 팬딩할수있게 됩니다.혹시 이 부분이 이해가 안되시면 말씀 부탁 드립니다.아주 좋은 질문 이였습니다! 또 질문이 있으시다면 구두로 설명드리고 싶네요! 계속 열심히 달리셔서 좋은 결과를 얻으시길 바랍니다. 끝까지 응원하겠습니다. 화이팅!
- Lượt thích
- 1
- Số bình luận
- 2
- Lượt xem
- 74
Hỏi & Đáp
enable_latch가 F/F이 아니라 래치인 이유가 궁금합니다.
안녕하세요 김상현님,열심히 달리고 계시는군요! 아마 "그래서 여기서 보시는 것처럼 negedge clk 에 enable 를 래치로 채서 & 처리하면 글리치가 생기지않겠죠?"라고 제가 헷갈리게 말씀드린 부분 때문에 다르게 이해하신 것 같습니다.정정 하자면 아래와 같습니다."그래서 여기서 보시는 것처럼 negedge clk 에 enable_latch 로 채서 & 처리하면 글리치가 생기지않겠죠?"즉 선언된 레지스터 이름을 언급드린거며, 래치가 아니라 리셋이없는 플립플롭이맞습니다.따라서 김상현님께서 이해하신게 맞습니다!열심히 달리시다가 또 다른 질문 있으시면 언제든지 말씀 부탁 드립니다!화이팅!
- Lượt thích
- 1
- Số bình luận
- 2
- Lượt xem
- 69
Hỏi & Đáp
output.txt가 이상하게 나옵니다.
안녕하세요 서윤님,열심히 하시는군요! 우선 서윤님께서 주신 코드를 그대로 복사해서 돌려보니 결과를 모범 답안과 동일하게 잘나왔습니다.file = $fopen("answer.txt", "w"); 주신 코드 그대로 output.txt가 아닌 answer.txt 파일을 확인했습니다.answer.txt 파일을 확인해도 잘못되고 있다는 말씀이신가요?그리고 혹시 테스트벤치를 수정하시고, 블럭의 포트 까지 변경하신 의도를 여쭤봐도 될까요?답변 주시면 추가 답변드리겠습니다! 화이팅!
- Lượt thích
- 1
- Số bình luận
- 2
- Lượt xem
- 90
Hỏi & Đáp
L2_P08 SRAM 코드 리뷰 부탁드립니다.
안녕하세요 정회운님,열심히 하시는 모습 너무 좋습니다!코드 리뷰 드립니다.제가 코드만 보고 말씀 드리는 거라 miss가 있을 수 있으니 제 설명이 잘못된 부분이 있다면 답글 부탁 드립니다.1,2 부분에는 따로 커멘트 드릴 것 없이 깔끔합니다.Output part에 대해서 만 몇 가지 의견 드립니다. 우선 메모리 I/F 의 경우 timing 문제에 민감하기때문에 f/f를 사용합니다. 그래서 모범 답안은 f/f를 사용한 것 이고요. 정회운님께서는 메모리 I/F 부분은 블로킹 으로 구현을 하셨네요. 우선 보기에 모든 case에 모든 신호들이 할당되어 보이지 않습니다. 즉 래치가 발생할 수도 있는데요. 그래서 case문 위에 ready, sram,_addr, sram_data_out, sram_ce_n, sram_we_n 의 디폴트 벨류를 적어 주시는 게 좋습니다.IDLE 상태에 data_out, sram_data_out, sram_addr 같은 경우 F/F을 사용하지 않기때문에 입력이 그대로 할당되고 있죠? 현재 모듈이 서브 블럭 이라면 문제가 되지 않습니다. 다만 이 모듈이 메모리 인터페이스 컨트롤 모듈이니 타이밍에 민감한데 feedthrough(input->output without register)에 의해 타이밍이 안 좋게 나올 수 있습니다. 하지만 현재 구현 하신게 동작 상으로는 문제가 되지 않아 보입니다. 앞으로도 화이팅 입니다!
- Lượt thích
- 1
- Số bình luận
- 2
- Lượt xem
- 95
Hỏi & Đáp
season 2 코딩테스트 강의에 대한 문의드립니다.
안녕하세요 venusdj1007님,목적이 FPGA를 이용해서 SPI, GPIO 와 같은 로직에 대한 디자인에 도움을 받고자 한다면 목적과는 안 맞을 수도 있습니다.타켓이 취업,이직 준비 대상자의 코딩면접을 대비한 강의이기 때문에 FPGA를 사용하지않고 vivado tool로 파형을 보는 수준까지 진행을 합니다. FPGA가 메인이라면 "설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)" 강의를 추천드리며, 여유가 되실 경우 언급 주신 SPI 코딩 면접 문제가 포함되어있는 설계독학's Verilog 마스터 Season 2 (실전 코테 끝판왕: 고난도 문제로 완성하는 이직 프리패스) 강의 를 추천 드립니다.감사합니다!
- Lượt thích
- 1
- Số bình luận
- 1
- Lượt xem
- 83
Hỏi & Đáp
4:1먹스 구현방식에 대한 질문입니다.
안녕하세요 mas 님,질문 감사합니다.4to1 mux 에서만 4:1먹스 1개와 2:1먹스 3개로 구현된다는 말씀이실까요?중요한건 모범답안과 스키매틱이 다르게나오더라도 동일한 기능을 한다면 합성 할때 툴에서 최적화를 알아서 잘해주기 때문에 AI 답변처럼 차이는 미미 합니다. 삼항연산자를 이용하나 case를 이용하나 구현의 방법의 차이이지 기능은 동일하니까요. 혹시 추가 질문있으시면 말씀해주셔요.완강까지 화이팅 입니다!
- Lượt thích
- 1
- Số bình luận
- 2
- Lượt xem
- 77




