해결된 질문
작성
·
67
·
수정됨
1
안녕하세요 🙂
[1. 질문 챕터] : eg) 몇 장, 몇 분 몇 초 쯤. or 수강생 분들이 봤을 때 어디구나?! 할 수 있게 표기 부탁 드려요.
[2. 질문 내용] : eg) 질문 내용을 자유롭게 작성해주시면 되겠습니다 🙂
[3. 시도했던 내용, 그렇게 생각하는 이유] : eg) 설치영상은 이렇게 시도했는데 안되더라 or 본인의 생각을 적어주세요. (실습 내용 중에 이해가 안되거나 잘못된 내용이 있는데, 이러 이러한 근거로 나는 이렇게 생각합니다.)
================
안녕하세요 디지탈 회로설계 관심많은 학부생인데 우연히 강의를 접하게 되어 정말 많은 도움 받고 있습니다.
현재 해당 강의는 실습까지 완료하였는데 실습 중 궁금한 점이 몇가지 생겨 문의드립니다.
ASIC 설계를 진행할 때, RTL 시뮬레이션은 주로 Cadence사의 Xcelium 시뮬레이터를 사용하고 있으며, 이 툴은 SystemVerilog의 다차원 배열을 지원하는 것으로 알고 있습니다. 실제로 저도 CNN core를 구현하면서 Xcelium을 통해 다차원 배열을 사용하여 RTL 시뮬레이션까지는 성공적으로 수행했습니다.
하지만 FPGA 타겟 합성을 위해 Vivado를 사용하려 하니, Vivado는 SystemVerilog의 다차원 배열을 지원하지 않아 합성이 불가능하다는 점에 부딪혔습니다.
궁금한 점은 다음과 같습니다:
ASIC을 타겟으로 하는 칩 개발에서도 FPGA 기반의 프로토타이핑이나 검증 단계를 거치는 것으로 알고 있습니다. 그런데 이 경우, 다차원 배열을 사용한 RTL 코드를 Vivado에서 합성하려면 어떻게 처리하나요?
xcelium을 사용하더라도 다차원 배열은 모두 일차원 벡터로 평탄화(flatten)해서 작성해야 하는 건가요?
혹은 FPGA용 합성을 위해 별도로 변환된 RTL을 따로 관리하는지, 일반적인 업계의 방법이 궁금합니다.
2.현재 시즌 2부터 수강할지, 시즌 1부터 수강할지 고민하고 있습니다.
저는 학부 수업에서 vivado 및 Verilog를 사용하여 16bit 기반의 non-pipelined CPU를 직접 설계하고, RTL 시뮬레이션까지 수행한 경험이 있습니다. 카운터, FSM 등 기본적인 디지털 회로 모듈을 RTL로 구현할 수 있는 수준의 기본 지식도 있습니다.
다만 FPGA 실습에 필요한 배경 지식(BRAM, Vivado를 이용한 시뮬레이션 이후 합성 및 구현 흐름 등)은 거의 없는 상태입니다.
관련해서는 alinx 사의 fpga인 ax7035b 모델에 카운터 정도 구현해서 올려봤습니다.
이런 경우, 시즌 1부터 수강하는 것이 좋을까요?
아니면 어느정도 RTL 설계 경험이 있으니 시즌 2부터 들어도 괜찮을까요?
답변 2
0
안녕하세요. 설계독학 강의를 수강해 주셔서 진심으로 감사합니다!!
올려주신 질문은 ASIC 기반 개발 환경과 FPGA 기반 실습 환경 간의 괴리를 아주 잘 짚어주신 내용이라, 다른 수강생 분들께도 좋은 참고가 될 것 같아서 상세히 적어봤어요.
말씀 주신 것처럼 Xcelium과 같은 시뮬레이터는 SystemVerilog의 다차원 배열을 지원하기 때문에, ASIC 개발 초기 단계에서는 다차원 배열을 활용한 설계가 흔히 사용됩니다. 하지만 Vivado는 SystemVerilog에 대한 지원이 제한적이며, 특히 합성 대상에서는 다차원 배열을 직접 지원하지 않기 때문에 문제가 발생합니다.
일반적으로 FPGA 기반 검증 환경에서는 다음과 같은 방식으로 처리합니다:
Flat 구조로 전개 (flatten)
다차원 배열을 일차원 벡터로 전개한 후, 인덱싱 계산을 통해 접근하는 방식입니다. 합성 가능성을 확보하면서 기능적 동작은 동일하게 유지할 수 있어 가장 보편적인 방식입니다.
합성 전용 버전 관리
ASIC용 RTL과 FPGA용 RTL을 별도로 유지하기도 합니다. 이 경우, RTL 상위 계층은 공통으로 두고, 하위 모듈이나 메모리 인터페이스 쪽만 FPGA용으로 변환하여 사용합니다. 즉, simulation-friendly 버전과 synthesis-friendly 버전이 공존하는 구조입니다.
HLS 또는 Custom Script 기반 변환
일부 기업에서는 이를 자동화하기 위한 변환 스크립트 또는 HLS 도구를 통해 모델링 → 변환 → 합성 과정을 통합 관리하기도 합니다.
결국 핵심은 ASIC용 설계의 구조적 이점을 유지하면서, FPGA 환경에 맞춰 일정 부분 구조를 재작성하거나 flatten하는 방향으로 가는 것이 일반적입니다.
AI HW 를 먼저 수강하셨는데, 순서상 Verilog Season1 을 먼저 알고있다고 가정해서 만든 강의이기 때문에, 실습을 충분히 따라오셨다면 Verilog Season2 를 들으실 수 있을 것 같아요.
설명해주신 경험을 보면, 이미 Verilog로 간단한 CPU와 FSM, 카운터 등을 구현하고 RTL 시뮬레이션까지 수행하신 것으로 보아 디지털 설계의 기초는 충분히 갖추고 계신 상태로 판단됩니다.
다만 다음과 같은 점에서 FPGA 도 관심이 있으시마녀 FPGA 시즌 1부터 수강하시는 것을 추천드립니다:
시즌 1에서는 Vivado를 이용한 IP 설계, Block Design, BRAM 활용, Simulation → Synthesis → Implementation에 이르는 FPGA Flow의 실전적 흐름을 체계적으로 다룹니다.
학부 수업에서 경험하신 RTL 설계는 주로 behavioral coding이나 simulation에 초점이 맞춰져 있을 수 있으나, 시즌 1에서는 실제 FPGA 구현 관점에서 "설계가 어떻게 자리 잡아야 하는지"를 다룹니다.
말씀해주신 alinx 보드로의 업로드 경험이 있으시더라도, Vivado 기반 실무 플로우는 상당히 디테일한 실습이므로 전체 흐름을 한 번 정리하고 가시는 것이 Season 2 에서의 이해도를 높이는 데 더 도움이 될 것으로 생각됩니다.
즐공하세요!
0
안녕하세요, 인프런 AI 인턴입니다. 김현수님께서 FPGA 및 ASIC 설계에 관련하여 여러 가지 질문을 주셨네요. 아래에서 질문들에 대해 자세한 답변을 드리겠습니다.
FPGA를 위한 Vivado 합성 도구는 SystemVerilog의 다차원 배열을 직접 지원하지 않기 때문에, 다차원 배열을 일차원 배열로 변환하여 사용하는 것이 일반적입니다. ASIC 설계 시에도 FPGA에서 검증을 진행하기 위해 위와 같은 방법을 활용하는 경우가 많습니다.
ASIC 설계 프로젝트 내에서는, 코드 기반이 고정되어 있어야 유지보수가 쉽기 때문에, 다차원 배열을 사용하면서도 FPGA 호환이 가능한 구조로 코딩하는 것이 장기적으로 유리합니다.
기본적인 Verilog 및 RTL 설계 경험이 있으시다면, 특히 16bit CPU 설계 경험까지 있다면 Season 2부터 시작하는 것도 가능합니다. 시즌 1은 Verilog HDL의 기초 개념과 기초 구현 방법들을 강조하고 있는데, 이미 이러한 내용을 익히셨다면 직접 필요하고 궁금한 부분인 FPGA 실습 등의 Season 2 주제를 바로 학습하는 것도 좋은 방법입니다.
마지막으로, FPGA에서의 예제와 문제 해결과 관련된 유사한 질문에 대한 링크를 제공해 드립니다. 아래 링크에서 FPGA와 RTL 설계 관련 심화적인 논의를 참조해 보세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
답변 감사합니다!
시즌1부터 수강 해야겠네요!