inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)

[HDL 13장] HW 가속기의 비밀인 Pipeline 을 이해해보자 (이론편)

13장 파이프라인 질문 드립니다.

41

KWONDO

작성한 질문수 1

1

안녕하세요 🙂

[1. 질문 챕터] : 13장 3:40~

[2. 질문 내용] : timing violation이 발생하는 case에 대해서 어떤 이유에서 violation이 발생하는지 잘 모르겠습니다.

[3. 시도했던 내용, 그렇게 생각하는 이유] : 그림에서처럼 각 딜레이 이후, 레지스터를 달아주게 되면 t_CLK 보다 딜레이 값이 모두 작거나 같기 때문에 violation이 발생하지 않는다는 내용은 이해가 됩니다. 그런데 그 전에 설명하신 worst path의 시간이 45이기 때문에 25에 해당하는 clock speed를 감당할 수 없다는 게, 어떤 설명인지 이해가 안 되어 질문 드렸습니다. (4분 30초 부근)

 

verilog-hdl fpga 임베디드

답변 2

0

설계독학맛비

안녕하세요, 반갑습니다.

image.png


질문해주신 내용을 보니 파이프라인을 적용하기 전과 후의 개념에서 "왜 이전 상태에서는 Clock Speed(주기)가 25일 때 감당이 안 되는가?"에 대해 헷갈리시는 것 같네요. 차분하게 핵심만 짚어서 설명해 드릴게요.

결론부터 말씀드리면, 데이터가 가야 하는 길(Path)의 실제 물리적인 시간과 우리가 강제로 인가하는 클럭의 주기(Clock Period)를 비교해 보시면 바로 이해가 가실 겁니다.

1. 파이프라인 적용 전 (왼쪽 그림)

  • 실제 데이터가 통과해야 하는 시간 (Worst Path):

    입력 $X$에서 출력 $P(X)$까지 가려면 가장 긴 경로를 거쳐야 합니다. 위쪽 길은 $15 + 25 = 40$이고, 아래쪽 길은 $20 + 25 = 45$이죠. 즉, 물리적으로 아무리 빨라도 데이터가 끝까지 도달하는 데 최소 45라는 시간이 필요합니다.

  • 인가하고자 하는 클럭 주기 ($t_{CLK}$):

    우리가 시스템에 25라는 주기를 가진 클럭을 주었다고 가정해 봅시다.

여기서 모순이 발생합니다.

클럭 주기가 25라는 것은, 매 25마다 새로운 데이터를 받아들이고 처리해서 내보내겠다는 뜻입니다. 하지만 실제 회로(Combinational Logic)는 결과를 내는 데 45가 걸립니다.

25라는 시간이 흘렀을 때, 데이터는 아직 목적지에 도달하지 못하고 길 중간(대략 25 위치)에 머물러 있겠죠? 이 상태에서 다음 클럭 엣지가 쳐버리면 제대로 된 데이터를 캡처하지 못하므로 Timing Violation이 발생하는 것입니다.

즉, 파이프라인 레지스터가 없는 상태에서는 반드시 가장 느린 경로인 45보다 클럭 주기가 길어야만($t_{CLK} \ge 45$) 정상 동작합니다.

2. 파이프라인 적용 후 (오른쪽 그림)

  • 경로의 분할:

    중간에 레지스터를 콕 집어넣어 주면서, 이제 데이터가 한 번에 가야 하는 길이 두 단계로 쪼개졌습니다.

    • Stage 1: 입력에서 중간 레지스터까지 (최대 20)

    • Stage 2: 중간 레지스터에서 출력 레지스터까지 (최대 25)

  • 클럭 주기 ($t_{CLK} = 25$):

    이제 각 Stage에서 가장 긴 시간은 25입니다. 클럭 주기를 25로 주더라도, Stage 1(20 소요)과 Stage 2(25 소요) 모두 클럭 주기인 25 이내에 데이터 도달을 완료할 수 있습니다.

    따라서 이때는 Violation 없이 정상적으로 동작하게 되는 것이죠. (전체 처리 시간인 Latency는 50으로 늘어나지만, 더 빠른 클럭을 쓸 수 있게 됩니다.)

요약하자면, 레지스터가 없을 때는 처음부터 끝까지 한 번에 가야 해서 45가 필요한데, 클럭 주기를 25로 줘버리니 시간이 부족해서 터지는(Violation) 상황이라고 이해하시면 됩니다.

즐공하세요!!

0

KWONDO

아니면 왼쪽 그림처럼 레지스터가 없을 때, 1 사이클 안에 출력이 결정되어야 하는데 worst time이 45이므로 원하는 출력이 나오지 않아 timing violation이 발생한다라고 이해하면 될까요?

Ubuntu 20.04.5 설치관련 문의드립니다

1

76

2

git hub 404 error 도움 부탁드립니다.

1

53

2

latency 개념 구현

1

136

3

비바도 all os버전

1

104

2

초기화를 reset_n 이 '1'일 때가 아닌 '0' 일 때 실행시키는 이유 질문

1

118

2

다운로드용량

1

98

2

비바도리눅스설치

1

108

2

전체path복사넣기

1

81

2

Vivado 2025.2 리눅스 설치 후 실행 에러와 솔루션 (libxv_commontasks.so)

1

215

2

explorer.exe오류

1

136

3

mobaxterm설치오류

1

119

2

./build시, waveform 'divide color' 사용

1

76

2

Latch와 관련하여 (Time borrowing, Latch-based design)

1

180

2

clean 명령어가 안되는데, 따로 저장해줘야 하는지 궁금합니다.

0

82

1

안녕하세요 설치 관련 질문 드립니다.

1

84

3

16장 mealy 설계.

1

97

2

14장 Cycle 관련, Testbench 코드.

1

96

2

21강(16장) 초기값 설정이 적용되는 시점 질문

1

78

1

20강(15장) - 밀리 머신 관련하여 질문 드립니다.

1

87

2

build에러 질문

0

78

2

1장 ./build에서 에러가 나요

1

97

2

FPGA 강의 보드 문의 드립니다.

1

130

2

5장 DFF특성에 대한 질문

1

103

3

vivado linux 사용 이유.

1

181

2