Inflearn brand logo image

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

박준기님의 프로필 이미지
박준기

작성한 질문수

디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기

(TOOL 시연 영상) 간단한 Adder 설계를 위한 Project 생성부터 Verilog coding, 합성, Test-bench 작성, 시뮬레이션, Timing Analysis + Power Analysis까지!

sdc파일 확인을 위한 timing delay코딩 과정에 관해 질문 드립니다.

해결된 질문

작성

·

150

0

create_clock -name root_clk -period 20 [get_ports {clk}]

derive_pll_clocks

derive_clock_uncertainty

 

챕터3의 마지막 tool시연 영상에서 해당 부분을 입력하고 run synthesis하는 과정에서 막혔습니다.

저는 이미 비바도가 설치되어 있기에 해당 프로그램을 바탕으로 실습 진행중이었습니다.

다만 비바도의 경우 xdc파일 형태로 런이 진행되고,

derive_pll_clocks

derive_clock_uncertainty

위의 두 문장은 적용되지 않는 다는 것을 알게 되었습니다.

이럴 경우 어떤 코드를 작성해야 해당 기능을 대체할 수 있을 까요?

양질의 강의 감사 드립니다.

답변 3

0

네 안녕하세요, 답변 남겨드립니다.

PLL은 레퍼런스 클럭이 있을 때, 이 주파수를 feedback하여 내가 원하는 주기로 변형을 줄 수 있는 아날로그 회로입니다. FPGA 내부에 clock generator가 다양한 주기를 만들어낼 수 있는게 이 PLL덕분이고, 이를 셋팅하는 기능이라고 보시면 되겠습니다.

https://www.youtube.com/watch?v=0JgHjhXLhjk

https://www.youtube.com/watch?v=HiTIX3echiw

또한 VIVADO에서 타이밍 분석은 위 영상을 참고해보시거나,
VIVADO timing analysis로 검색해보시면 가이드를 찾아보실 수 있을겁니다!

0

박준기님의 프로필 이미지
박준기
질문자

AI답변을 보고 추가로 궁금한 것이, PLL을 설정한다는 것이 정확히 무슨 도움을 주는건지 헷갈립니다.

타이밍 딜레이의 분석을 도와주는 것으로 보이는데, 임의적으로 딜레이를 추가할 수 있다는 것은 알았습니다.

다만 derive pll clock을 할 경우엔 어떤 부가 기능이 발생하는건지 궁금합니다

 

0

안녕하세요, 인프런 AI 인턴입니다. 박준기님.

Vivado에서 SDC(Static Timing Constraints)를 대체하는 방법에 대해 질문을 주셨군요. SDC 파일은 타이밍 제약을 명세하는 데 사용하는 표준 형식입니다. 하지만, Vivado에서는 XDC(Xilinx Design Constraints) 파일을 사용하여 타이밍 제약을 설정하므로, Vivado에 맞는 방식으로 코딩해야 합니다.

SDC에서 사용하신 derive_pll_clocksderive_clock_uncertainty와 같은 명령은 XDC에서 직접적으로 일치하는 명령은 없지만, 해당 기능을 대체할 수 있는 몇 가지 방법을 소개드리겠습니다:

  1. Clock Constraint in XDC:
    XDC 파일에서 시계 신호를 정의하는 방법은 create_clock 명령을 사용하는 것입니다. 이는 이미 잘 사용하신 것처럼 보입니다.

    create_clock -name root_clk -period 20 [get_ports {clk}]
    
  2. PLL 및 Uncertaincy 설정:

    • PLL 설정: PLL을 Vivado에서 설정하기 위해서는 IP 인스턴스를 통해 GUI 환경에서 맞춤 설정을 하거나, 직접 코드로 제약을 추가할 수 있습니다. 그러나 derive_pll_clocks와 같은 자동 명령은 XDC에는 없습니다.

    • Clock Uncertainty: XDC에서 타이밍 분석의 불확실성을 추가하기 위해 set_clock_uncertainty 명령을 사용할 수 있습니다. 다음과 같이 타이밍 마진을 설계하여 추가할 수 있습니다.

      set_clock_uncertainty 0.5 [get_clocks root_clk]
      
  3. 추가 타이밍 설정:
    Vivado Timing Constraints Wizard를 통해 타이밍 분석과 설정을 시각적으로 조정할 수 있도록 지원합니다. 비바도 IP 설정 및 타이밍 분석 문서를 참고하시기 바랍니다.

이와 관련하여 도움을 줄 수 있는 관련 게시글들은 다음과 같습니다:

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

박준기님의 프로필 이미지
박준기

작성한 질문수

질문하기