13장 파이프라인 질문 드립니다.
41
작성한 질문수 1
안녕하세요 🙂
[1. 질문 챕터] : 13장 3:40~
[2. 질문 내용] : timing violation이 발생하는 case에 대해서 어떤 이유에서 violation이 발생하는지 잘 모르겠습니다.
[3. 시도했던 내용, 그렇게 생각하는 이유] : 그림에서처럼 각 딜레이 이후, 레지스터를 달아주게 되면 t_CLK 보다 딜레이 값이 모두 작거나 같기 때문에 violation이 발생하지 않는다는 내용은 이해가 됩니다. 그런데 그 전에 설명하신 worst path의 시간이 45이기 때문에 25에 해당하는 clock speed를 감당할 수 없다는 게, 어떤 설명인지 이해가 안 되어 질문 드렸습니다. (4분 30초 부근)
답변 2
0
안녕하세요, 반갑습니다.

질문해주신 내용을 보니 파이프라인을 적용하기 전과 후의 개념에서 "왜 이전 상태에서는 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
아니면 왼쪽 그림처럼 레지스터가 없을 때, 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





