Inflearn brand logo image

인프런 커뮤니티 질문&답변

유승재님의 프로필 이미지
유승재

작성한 질문수

설계독학맛비's 실전 Verilog HDL Season 2 (AMBA AXI4 완전정복)

[HDL 38장-2부] Mem copy IP. DMA RDMA 설계 - 실습편 - 코드리뷰

[HDL 38장: RDMA 코드 실습편] MOR fifo에서 "ARLEN_r" 존재의 이유가 궁금합니다

작성

·

61

·

수정됨

1

안녕하세요 맛비님, 항상 좋은 강의 감사드립니다.

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. 질문 내용] :

  1. 혹시 ARLEN_r 가 따로 코드 내에서 사용되지 않는 이유가 있나요?

  2. 만약 여러 불필요한 기능을 지우기다 보니, ARLEN_r가 redundant하게 남아있게 된 것이라면 혹시 원래는 ARLEN_r가 어떤 기능을 위해 존재했던 것인지 궁금합니다.

 아무래도 강의의 내용이 회차를 거듭할 수록 어려워지다보니, 이러한 점에 대해서도 궁금증이 생기는 것 같습니다.

다시 한번 좋은 강의에 감사드리며, 감사의 마음으로 질문 올립니다.

 

고맙습니다.

답변 2

0

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

안녕하세요 🙂

예제코드 작성시 "일반화 룰" 을 적용해서 하다보니 남아있는 코드로 생각이 들고요.

사용하지 않은 상태에서 동작을 잘 하고 있으니 (즉, 불필요하니) 삭제하셔도 무방해 보입니다.

즐공하세요!

0

안녕하세요, 인프런 AI 인턴입니다. 유승재님.

코드 관련한 질문 주셨는데요, RDMA와 관련된 FIFO에서 ARLEN_r라는 변수가 어떻게 사용되고 있으며, 왜 코드에서 사용되지 않는지가 궁금하시군요. 말씀하신 것처럼, ARLEN_r가 코드 내부에서 사용되지 않는 것은 불필요한 로직이 코드에 남아 있거나 설계를 단순화하는 과정에서 생긴 것일 수 있습니다.

  1. ARLEN_r의 사용되지 않는 이유: 코드에서 ARLEN_r는 FIFO에 저장된 데이터를 pop하는 데 사용되지만, 실제로 다른 코드 부분에서 참조되지 않을 수 있습니다. 이는 설계를 정리하거나 단순화하는 과정에서 다루지 않은 내역일 가능성이 큽니다.

  2. ARLEN_r의 원래 존재 이유: ARLEN_r는 통상적으로 ARLEN 정보를 관리하여 AXI 트랜잭션 동안 Burst의 길이 및 완료 시점을 제어하는 데 사용됩니다. 그러나, 지금 코드에서는 ARLEN_r 변수가 참조되지 않으므로, 이전 설계에서는 이 변수로 특정 로직이나 제어 흐름을 처리하려 했을 수 있습니다.

더 자세한 설명과 문제 해결을 위해, ARLEN_r처럼 사용되지 않는 변수가 왜 남아 있는지 살펴보는 것 또한 설계자로서는 중요한 부분이 될 것입니다. 코드를 수정하거나 최적화하는 과정에서 이러한 잔여 변수를 제거하는 것도 코드 유지보수의 일환입니다.

ARLEN_r와 비슷한 맥락과 관련된 질문을 참고하시면 도움이 될 것입니다:

유사한 질문들을 통해 FIFO 및 RDMA 설계 시 고려해야 할 요소들을 이해하시기 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

유승재님의 프로필 이미지
유승재

작성한 질문수

질문하기