강의

멘토링

로드맵

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

강현수님의 프로필 이미지
강현수

작성한 질문수

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

[HDL 34장] AXI4-Stream I/F - 실습편 1 (AXI4-Stream I/F 를 검증하기 위한 검증환경 소개)

IDLE state의 시점관련

작성

·

33

1

안녕하세요 🙂

 안녕하세요, 맛비님 ! 강의 항상 잘 듣고 있습니다!

HDL 34장 강의를 들으며 궁금증이 생겨서 질문드립니다.

 

  1. HDL 34장 22분30초 쯤에 read task를 통해 IDLE의 상태를 확인하는 부분입니다.

  2. read task를 통해 VIP master에서 ADDR_AP_CTRL, 즉 설정한 pattern generator의 주소의 값을 읽어오고, 이를 lite_rdata로 저장한 후, 이를 CTRL_IDLE_MASK parameter를 통해 IDLE state인지 확인하는 방법을 통해 IDLE 상태를 확인하고 작업을 실행하는 것으로 알고 있습니다.

    여기서 궁금한 부분이 IDLE 상태, 초기값을 설정하는 부분이 어디에 표시가 되어있는지, 만약 start_vip();를 통한 instantiation에서 초기값이 0x100으로 정해지는 것인지. 혹은 다른 방법을 통해 초기값을 0x100으로 지정할 수 있는지가 궁금합니다.

  3. 제가 맛비님 강의를 수강하며 SystemVerilog를 함께 배우고 있는 과정이라 코드를 따라가는 부분에서 어려움을 겪어 이렇게 질문 드립니다.

==================

답변 2

0

안녕하세요, 인프런 AI 인턴입니다. 강현수님.

질문해주신 부분에 대해 간단히 설명드리겠습니다. HDL 코드를 작성할 때, IDLE 상태를 설정하거나 확인하는 부분은 주로 FSM(Finite State Machine)에서 이루어집니다.

  1. IDLE 상태 설정: 보통 IDLE 상태는 FSM의 초기 상태로 설정됩니다. 이 초기 상태는 보통 reset이 수행되는 시점에서 설정되며, SystemVerilog에서는 초기화를 위해 initial 블록을 사용하거나, 특별한 경우에는 reset 신호를 처리하는 always_ff 블록 내에서 설정합니다.

  2. 초기값 설정: 말씀하신 대로, 특정 레지스터나 신호의 초기값이 필요하다면, 초기화 과정에서 이를 설정할 수 있습니다. 일반적인 방법으로는 레지스터에 대한 초기값을 reset 신호가 들어올 때 설정하거나, initial 블록을 사용하여 하드코딩하는 방법이 있습니다.

  3. CTRL_IDLE_MASK 사용: 코드를 분석할 때, CTRL_IDLE_MASK와 같은 매크로나 상수는 시스템 전반에서 사용되는 공통된 값을 의미하며, IDLE 상태 확인 등에 활용됩니다. 이는 신호나 레지스터의 특정 비트가 세팅되어 있는지를 확인하는 데 사용됩니다.

하기와 같은 유사 질문들을 참고하시면 도움이 될 것입니다:

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

-1

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

안녕하세요 🙂

제가 이해한 바로는 start_vips 는 vip 를 사용하기 위한 init 과정으로 이해했습니다.

즉 AXI4 lite 의 master 역할을 하기 위한 vip 이지, 모듈 내의 초기값을 설정하는 부분과는 관련이 없다고 생각됩니다.

 

궁금해 해시는 ADDR_AP_CTRL 의 read 초기 값은 다음 코드에 정의되어 있습니다.

강제로 0x100 을 read 할 수 있도록 다음 부분 관련 코드를 수정하시면 되겠습니다.

image.png

즐공하세요 🙂

 

강현수님의 프로필 이미지
강현수

작성한 질문수

질문하기