묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
[과제7] AXI 통신 프로토콜 설계하기 문의드립니다
안녕하세요 과제7의 AXI 프로토콜 강의 자료에서 .sv 파일을 다운 받았는데 이미 모든 코드가 작성되어 있습니다...제가 실습해 볼 수 있는 자료는 어디 있을까요? 감사합니다
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
Design Valid I/F
HDL 22장 8분 쯤에Design Valid I/F를 Season1에서 했다고 했는데어디서 했을까요?
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
SRAM 강의 TB 작성 후 waveform 확인시에 dout이 모두 don't care 처리 관련 질문드립니다.
SRAM 기본 모델링 코드 작성후, RTL view통해서 확인시에 dout 값이 모두 xxxxxx로 처리가 되는데, TB 작성에도 문제가 없어보여 고쳐야할 부분이 있는지 문의드립니다.
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
vivado와 quartus 프로그램의 systhesis 결과 차이에 대해 궁금한 점 있습니다
quartus를 쓰면 gate level로 합성되게 되는 반면에, vivado를 쓰면 주로 LUT형태로 합성이 되는데 왜 그런지 궁금합니다! 그리고 vivado에서 power, timing 분석하려고 하는데, power는 잘 뜨는데, 각 port마다의 timing이 아무것도 안나옵니다. vivado에서는 어떻게 설정해야하는지 궁금합니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
valid/ready 스트림 구조 관련 질문이 있습니다!
안녕하세요 맛비님! 개인 실습 중 질문이 있어 질문드리게 된점 양해부탁드립니다. 먼저 현재 실습 중인 내용 말씀드리겠습니다. axi4-lite 를 통해서 텍스트에 입력되어 있는 input data를 인풋bram 에 입력시킵니다.그 후, 개인적으로 만든 연산코어를 통해 연산하고 나서 연산결과를 연산코어 내의 레지스터에 저장합니다.레지스터에 저장된 값을 output bram 에 입력합니다.연산코어가 여러개여서 1-3 과정을 반복했습니다. 정리하면, input txt -> data_mover_bram -> bram0 -> 연산core -> data_mover_bram -> bram1 -> 연산core -> data_mover_bram -> bram2 ...-> 연산 core -> 매 clk 마다 연산결과 출력과 같은 구조를 만들었습니다.testbench simulation 상에서는 원하는 결과를 얻었습니다. 하지만, fpga 에 올리기 위해 generate bitstream 과정을 진행하다가 아래 사진과 같이자원을 고려하지 않고 구현했음을 깨달았습니다. (보드는 zybo z7 10 입니다) 제 추측으로는 연산결과를 각 연산core 에서 레지스터에 저장했다가 bram 에 입력했던 점이 문제라고 생각됩니다. 연산결과가 32bit 가 쌓일 때마다 결과 bram 으로 입력하는 방안을 고민 중인데 그러려면 각 연산 코어에서 bram 에 입력할때 AXI4 stream 을 사용해야 하는게 맞는지, valid/ ready 스트림 구조만 사용하는지 좋을지 알려주시면 감사하겠습니다.강의 외 내용이 많아서 죄송합니다 ㅜㅜ (답변 거부하셔도 괜찮습니다.)
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
tool 질문
현재 pc에 vivado가 깔려 있는 상태인데, vivado로 진행하여도 해당 수업 참여하는데 지장없을까요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
IDLE state의 시점관련
안녕하세요 🙂 안녕하세요, 맛비님 ! 강의 항상 잘 듣고 있습니다!HDL 34장 강의를 들으며 궁금증이 생겨서 질문드립니다. HDL 34장 22분30초 쯤에 read task를 통해 IDLE의 상태를 확인하는 부분입니다.read task를 통해 VIP master에서 ADDR_AP_CTRL, 즉 설정한 pattern generator의 주소의 값을 읽어오고, 이를 lite_rdata로 저장한 후, 이를 CTRL_IDLE_MASK parameter를 통해 IDLE state인지 확인하는 방법을 통해 IDLE 상태를 확인하고 작업을 실행하는 것으로 알고 있습니다.여기서 궁금한 부분이 IDLE 상태, 초기값을 설정하는 부분이 어디에 표시가 되어있는지, 만약 start_vip();를 통한 instantiation에서 초기값이 0x100으로 정해지는 것인지. 혹은 다른 방법을 통해 초기값을 0x100으로 지정할 수 있는지가 궁금합니다.제가 맛비님 강의를 수강하며 SystemVerilog를 함께 배우고 있는 과정이라 코드를 따라가는 부분에서 어려움을 겪어 이렇게 질문 드립니다.==================
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
skid buffer의 handshake 방향이 반대로 되어 있는 이유
안녕하세요 🙂[1. 질문 챕터] : eg) 몇 장, 몇 분 몇 초 쯤. or 수강생 분들이 봤을 때 어디구나?! 할 수 있게 표기 부탁 드려요.[2. 질문 내용] : eg) 질문 내용을 자유롭게 작성해주시면 되겠습니다 🙂[3. 시도했던 내용, 그렇게 생각하는 이유] : eg) 설치영상은 이렇게 시도했는데 안되더라 or 본인의 생각을 적어주세요. (실습 내용 중에 이해가 안되거나 잘못된 내용이 있는데, 이러 이러한 근거로 나는 이렇게 생각합니다.) handshake는 Master가 VALID신호를 보내고SLAVE가 READY신호를 보내면 MASTER가 DATA를 SLAVE에게 보내는 것으로 이해하였습니다. HDL 24장 1분 다이어그램 보면 제가 생각한대로 되어 있는데근데 HDL 24장 1분 24초로 넘어가면 skid buffer 다이어그램이 제가 설명한 것의 정반대로 되어 있습니다.저는 skid buffer를 각 Master와 Slave를 연결 해주는 통로로 생각했었는데skid buffer 자체가 오른쪽 절반은 Master역할을 하고 왼쪽 절반은 Slave역할을 한다고 봐야하나요? 어떻게 이해해야할지 모르겠습니다
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
CDC 메타스태빌리티 질문
26강 4:30에서 Ds가 0 또는 1로 간다고 하셨는데, 메타스태빌리티에서 캡처했기 때문에 값의 상태를 보장할 수 없다로 이해했습니다.클럭 도메인을 건널 때마다 동기화기를 써서 안정 상태로 보낼 수는 있겠지만, 그 값이 어떻게 변할지 알 수 없다면 어떻게 제어를 할 수 있는지 이해가 잘 안갑니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
[wdma] AWLEN_w의 값이 1일 경우 r_burst_cnt_w와 AWLEN_w의 async 인한 bready 발행X 이슈?
안녕하세요 맛비님🙂정말 하나부터 열까지 많이 배우고 있습니다 !맛비님께서 공사가 다망하시고 강의 방향성과 좀 다른 것 같아 답변을 바란다기보단 bug의심 report라고 봐주시면 감사하겠습니다.늘 많이 배우고 있습니다 *^^*[1. 질문 챕터] : HDL 39장(WMDA)[2. 질문 내용] : 맛비님 코드를 이용하며 이것 저것 바꿔보고 실험도 해보고 있는데요. 실험 중 write_timeout error가 report 되었습니다. 해당 Test case를 dump해보니 다음과 같은 issue가 있었는데요. (아래 그림 참고 부탁 드립니다.) 문제 상황: r_burst_len_aw가 1인 경우 아직 fifo를 거치지 않아 AWLEN_w의 값이 업데이트 되지 않았는데 그 기간 동안 w_hs가 발생하여 is_burst_done_w가 1'b1로 toggle되지 않고 이에 last b chanel transaction이 일어나지 않음.
-
해결됨설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
system verilog 사용이유.
안녕하세요! 해당 모듈에 대한 테스트벤치 코드를 system verilog 코드로 구현하셨는데 특별히 이유가 있는지 여쭤보고 싶습니다! .v 로 테스트벤치 만들고 싶은데, 다른 수업때처럼 tb_모듈명.v 만들어서 vivado 시뮬레이션 돌려도 무관한지 궁금합니다. 제가 오랜만에 해당 부분(axi4 stream)을 다시 듣는 중입니다. 혹시 이전 수업들에서 설명하셨던 내용이라면 죄송합니다..
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
AXI_VIP 사용 시 glitch 발생
안녕하세요 🙂안녕하세요, 맛비님 강의 잘 듣고 AXI 프로토콜 실습 중인 대학원생입니다.현재 Xilinx AXI VIP를 사용해 DUT(Master)를 검증하고 있는데, WREADY 신호가 시스템 클록(ap_clk)과 맞지 않게 토글되는 현상을 관찰했습니다.현상 요약: AXI VIP 환경에서 슬레이브 측 WREADY 신호 생성을 RANDOM 모드를 사용하고 있습니다." rgen.set_ready_policy(XIL_AXI_READY_GEN_RANDOM);"이 설정을 사용하자, VIP가 생성하는 m00_axi_wready 신호가 저희 DUT의 시스템 클럭(ap_clk)과 동기화되지 않은 상태로 토글되는 것을 확인했습니다. 즉, WREADY가 클럭 엣지에 맞지 않게 변경되면서, 의도치 않은 시점에 WVALID && WREADY 조건이 만족되어 w_hs (write handshake)가 발생하게 됩니다.결과적으로 클록 엣지 기준으로는 WREADY = 0이어야 하는데, δ‑사이클(글리치) 동안 1로 인식되는 문제가 생깁니다.질문: 위와 같은 상황에서 2가지 질문이 있는데요,1. PS(혹은 PL)의 DRAM 데이터를 AXI를 통해 PL영역(제가 설계한 DMA)으로 전송할 때, 위와 같은 WREADY 글리치가 FPGA 상 혹은 실제 ASIC 칩을 찍는다고 했을 때 실제로 발생하는 현상인가요?2. 현업에서는 이러한 경우가 발생한 경우에 어떻게 해결하는지 궁금합니다. (AXI4 protocol 사용 혹은 일반적인 signal)(추가로 좀 찾아보니 synchronizer를 사용해 latch한다고 하는데 AXI4 protocol에는 적합하지 않다고 판단됩니다.)
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
왜 배속이 안되요?
막아 놓으신건가요?*인프런 운영에도 질문 넣었습니다.
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
SRAM module RTL viewer 이상
rtl viewer를 열면 mux모양 로직 (dout ~0 부터 dout ~ 31이라고 쓰여있음) 이게 책처럼 겹쳐야 하는데 죄다 병렬 회로로 늘어져서 엄청 공간 차지를 많이 합니다. 코드 문제는 아닌 것 같은데 어떻게 해야하나요? rtl viewer에서 netlist navigator 수정이 안되나요? netlist navigator를 보면 always0과 dout~0부터 dout~31까지가 동시에 logic이라는 폴더에 들어 있습니다. 그래서 벡터를 책처럼 못 묶는 것 같습니다.
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
다이어그램 이해
안녕하세요 🙂[1. 질문 챕터] : 4강 1:47분쯤[2. 질문 내용] : 다이어그램이 잘 이해가 되지 않습니다. 좌측이 master가 되는거고 우측이 slave가 되는건가요? 근데 왜 s_valid는 좌측에서 나오고 m_valid는 우측으로 들어가는건가요?[3. 시도했던 내용, 그렇게 생각하는 이유] : eg) 설치영상은 이렇게 시도했는데 안되더라 or 본인의 생각을 적어주세요. (실습 내용 중에 이해가 안되거나 잘못된 내용이 있는데, 이러 이러한 근거로 나는 이렇게 생각합니다.) ================ 다음 내용은 읽어보시고 지우시면 됩니다.=================질문 내용을 작성해주실 때, 위의 3단계로 제가 이해할 수 있게 작성해주시면 정확한 답변을 드릴 수 있을 것 같아요!!현업자인지라 업무때문에 답변이 늦을 수 있습니다. (길어도 만 3일 안에는 꼭 답변드리려고 노력중입니다 ㅠㅠ)강의에서 다룬 내용들의 질문들을 부탁드립니다!! (설치과정, 강의내용을 듣고 이해가 안되었던 부분들, 강의의 오류 등등)이런 질문은 부담스러워요.. (답변거부해도 양해 부탁드려요)개인 과제, 강의에서 다루지 않은 내용들의 궁금증 해소, 영상과 다른 접근방법 후 디버깅 요청, 고민 상담 등..글쓰기 에티튜드를 지켜주세요 (저 포함, 다른 수강생 분들이 함께보는 공간입니다.)서로 예의를 지키며 존중하는 문화를 만들어가요.질문글을 보고 내용을 이해할 수 있도록 남겨주시면 답변에 큰 도움이 될 것 같아요. (상세히 작성하면 더 좋아요! )먼저 유사한 질문이 있었는지 검색해보세요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.==================
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
slave와 master 시뮬레이션
안녕하십니까 삼코치님 AXI프로토콜을 시뮬레이션 하는 과정에서 시뮬레이션할 때 마스터,마스터_tb,슬레이브,슬레이브_tb를 모두 결합시켜셔 시뮬레이션해야하는 건가요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
27.[프로젝트-1] Mem copy IP를 FPGA에 올려보기
안녕하세요 🙂[1. 질문 챕터] : 29:00[2. 질문 내용] : idle 조건이 충족하지 않아서 무한 루프에서 break 되지 않고 있습니다.OS Name : Ubuntu 22.04.2 LTSXilinx version : 2024.02[3. 시도했던 내용, 그렇게 생각하는 이유] : #define XPAR_MATBI_DMA_IP_TOP_0_BASEADDR 0x40000000#define XPAR_MATBI_DMA_IP_TOP_0_HIGHADDR 0x40000fff#define ADDR_AP_CTRL 0x00#define CTRL_DONE_MASK 0x00000002#define CTRL_IDLE_MASK 0x00000004void matbi_hw_memcpy(void* dest, const void* source, size_t num){ while(1) {read_data = Xil_In32((XPAR_MATBI_DMA_IP_TOP_0_BASEADDR) + ADDR_AP_CTRL); if( (read_data & CTRL_IDLE_MASK) == CTRL_IDLE_MASK ) // IDLE break; }}
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
27.[프로젝트-1] Mem copy IP를 FPGA에 올려보기
[1. 질문 챕터] :29:00 [2. 질문 내용] :질문 : BASE_ADDR의 Addr read exception.OS Name : Ubuntu 22.04.2 LTSXilinx version : 2024.02 [3. 시도했던 내용, 그렇게 생각하는 이유] :전체 코드 :#define AXI_DATA_BYTE 8 // 64 / 8#define BASE_ADDR 0x10000000int main(){init_platform();Xil_DCacheEnable();Xil_ICacheEnable();u32 transfer_cnt;u32 add_val;while (1){printf("======= Verilog Season2 matbi_mem_copy_test ======\n");do{printf("plz input transfer_cnt\n");scanf("%u",&transfer_cnt);}while( !( (0 < transfer_cnt) && (transfer_cnt%AXI_DATA_BYTE == 0) && (transfer_cnt <= 67108864) ) ); // 64 *(2^20) = 64 MBytes // max count 32-6 = 26. 2^26 = 64MBytesdo{printf("plz input add_val (0~255)\n");scanf("%u",&add_val);}while( !( (0 <= add_val) && (add_val<256) ) );u8* rdma_baseaddr = (u8*)BASE_ADDR;volatile u8 data = Xil_In8(rdma_baseaddr); }cleanup_platform();return 0;}오류 발생 :xil_io.h 파일static INLINE u8 Xil_In8(UINTPTR Addr){return (volatile u8 ) Addr;}xil_exception.c 파일static void Xil_DataAbortHandler(void *CallBackRef){xdbg_printf(XDBG_DEBUG_GENERAL, "Address of Instruction causing Data abort %lx\n",DataAbortAddr); // 0x00100588while(1){}} 원인 ? : 여기서 무엇을 진행해야 할까요?
-
미해결설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)
[HDL 38장: RDMA 코드 실습편] MOR fifo에서 "ARLEN_r" 존재의 이유가 궁금합니다
안녕하세요 맛비님, 항상 좋은 강의 감사드립니다.AXI를 혼자 공부하기 정말 어려웠는데, 강의가 많은 도움이 되고 있어 앞으로도 더 advance 강의가 기다려지네요! [1. 질문 챕터] : HDL 38장-2부 에서 다루는 "matbi_rdma.v" (Line: 417~435)에서도 특히 다음 fifo에 관해서 질문이 있습니다.matbi_sync_fifo # ( .FIFO_IN_REG (0), .FIFO_OUT_REG (0), .FIFO_CMD_LENGTH(NUM_ARLEN_BIT), .FIFO_DEPTH (NUM_AXI_AR_MOR_REQ), .FIFO_LOG2_DEPTH(LOG_NUM_AXI_AR_MOR_REQ) ) u_matbi_sync_fifo ( .clk (ap_clk), .reset (ap_rst), .s_valid (ar_hs), .s_ready (ar_fifo_full_n), .s_data (r_burst_len_ar), .m_valid (ar_fifo_empty_n), .m_ready (fifo_read_r), .m_data (ARLEN_r) );[2. 배경 설명] : 위 fifo는 MOR을 위해 AR channel과 R channel 사이에 둔 sync_fifo로써 transaction된 AR payload마다 fifo에 burst_len을 적어두고, 그 내용을 R 채널에서 RLAST마다 읽어가는 것으로 이해하였습니다.그런데 코드를 자세히 보다 보니 fifo에서 pop해 가는 데이터인 "ARLEN_r" 가 코드 어디에서도 사용되지 않는 것을 확인하였습니다. 따라서 현재 코드 상으로는, ARLEN_r 라는 값이 유의미에게 사용되기 보다는, fifo에 적힌 데이터를 단순히 여러번 읽어서, fifo_empty이 되어 R 채널에게 더이상 issue된 transaction이 없다고 알려주는 꼴인거 같습니다. 또한, 이전 비슷한 질문에 대한 답변을 찾아보니 코드 상 불필요한 로직이 남아있어서 그런거 같다라고 답변해주셨습니다. [3. 질문 내용] :혹시 ARLEN_r 가 따로 코드 내에서 사용되지 않는 이유가 있나요?만약 여러 불필요한 기능을 지우기다 보니, ARLEN_r가 redundant하게 남아있게 된 것이라면 혹시 원래는 ARLEN_r가 어떤 기능을 위해 존재했던 것인지 궁금합니다. 아무래도 강의의 내용이 회차를 거듭할 수록 어려워지다보니, 이러한 점에 대해서도 궁금증이 생기는 것 같습니다.다시 한번 좋은 강의에 감사드리며, 감사의 마음으로 질문 올립니다. 고맙습니다.
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
9강 timing anaylzer 부분에 질문 있습니다.
안녕하세요 삼코치님 9강 timing 분석과 data-path Delay확인하기 강의에서 강의 화면처럼 slack과 delay정보가 나오지 않습니다 사전적으로 강의 그대로 full adder 코드와 simulation 코드 sdc파일을 만들었으며(강의 자료의 코드를 다운로드하였습니다) start버튼도 눌렀습니다. 무엇을 놓쳤는지 잘 모르겠습니다