⏰ Setup Time과 Hold Time: 디지털 회로 동작의 기본 원리
디지털 회로에서 Flip-Flop은 클럭 신호에 맞춰 데이터를 저장하는 중요한 역할을 합니다. 이때 Flip-Flop이 안정적으로 데이터를 캡처하기 위해서는 입력 데이터가 특정 시간 동안 유지되어야 하는데, 이 시간을 각각 Setup Time과 Hold Time이라고 합니다.
- Setup Time (셋업 시간): 클럭 신호의 활성화 엣지 이전에 입력 데이터가 안정적으로 유지되어야 하는 최소 시간입니다. 마치 사진을 찍기 전에 카메라를 안정시키는 시간과 비슷하다고 생각하시면 됩니다.
- Hold Time (홀드 시간): 클럭 신호의 활성화 엣지 이후에 입력 데이터가 안정적으로 유지되어야 하는 최소 시간입니다. 사진을 찍고 나서 카메라가 흔들리지 않도록 잠시 유지하는 시간과 비슷합니다.
🛠️ Setup Time Violation, 어떻게 해결해야 할까요?
Setup Time Violation이 발생하면 회로가 정해진 클럭 주파수에서 제대로 작동하지 않을 수 있습니다. 해결 방법들을 알아봅시다.
- 주파수 낮추기: 가장 간단하지만 성능 저하를 유발하는 방법입니다. 클럭 주파수를 낮추면 데이터가 안정화될 시간이 늘어나 Setup Time Violation을 해결할 수 있지만, 회로의 동작 속도 자체가 느려지므로 최후의 수단으로 고려됩니다. IP 라이센싱 시 RTL 수정이 불가능할 때 주로 사용됩니다.
- Flip-Flop 추가 (Pipeline/Register Slice): 문제가 되는 경로에 Flip-Flop을 추가하여 조합 논리 회로의 깊이를 줄이는 방법입니다. Critical Path (가장 긴 지연 경로) 상의 Flip-Flop 사이에 있는 조합 논리 회로를 분할하여 중간에 Flip-Flop을 삽입하면 각 단계의 지연 시간을 줄일 수 있습니다. 이를 현업에서는 파이프라인 또는 레지스터 슬라이스를 추가한다고 표현합니다. 다만, 단순히 추가하면 회로 동작이 달라질 수 있으므로, 해당 Flip-Flop의 출력에 의존하는 다른 Flip-Flop에도 동일하게 Flip-Flop을 추가해야 합니다.
✨ Hold Time Violation, 어떻게 해결해야 할까요?
Hold Time Violation은 데이터가 너무 빨리 도착하여 Hold Time 동안 안정적으로 유지되지 못할 때 발생합니다.
- Buffer 또는 조합 논리 추가: Flip-Flop 사이의 경로에 Buffer를 추가하거나 간단한 조합 논리 회로를 삽입하여 데이터 경로의 지연 시간을 늘려줍니다.
Hold Time Violation은 Setup Time Violation보다 더 심각한 문제를 야기할 수 있습니다. Setup Time Violation은 최악의 경우 클럭 주파수를 낮춰 동작시킬 수 있지만, Hold Time Violation은 그렇게 할 수 없는 경우가 많습니다. 다행히 Hold Time Violation은 STA 분석 후 해당 경로에 Buffer를 삽입하는 방식으로 비교적 쉽게 해결할 수 있어 RTL 설계 단계에서는 크게 고려 대상은 아닌 것 같습니다.
🧐 STA (Static Timing Analysis)란 무엇일까요?⚙️ Setup Violation 심층 분석 및 해결
- Data Path 최적화: 데이터가 Flip-Flop 입력까지 최대한 빠르게 도달하도록 조합 논리 회로를 최적화합니다.
- Transition Time 감소: 신호의 상승/하강 시간 (Transition Time)을 줄여 셀 지연을 감소시킵니다.
- Cell 특성 변경: 셀의 Vth (Threshold Voltage)나 Drive Strength를 조절하여 셀 지연 시간을 줄입니다.
- 배선 간격 및 Metal Layer 조정: 미세 공정에서는 Crosstalk으로 인해 셀 지연이 크게 증가할 수 있으므로, 배선 간격을 넓히거나 상위 Metal Layer를 사용하여 Setup Time Violation을 완화합니다.
🔩 Hold Violation 심층 분석 및 해결
- Data Path 지연 증가: 데이터가 Hold Time 동안 유지되도록 Buffer를 삽입하여 데이터 경로의 지연 시간을 늘립니다.
- Buffer 삽입 전략: Endpoint (Flip-Flop 입력) 기준으로 Buffer를 삽입하면 너무 많은 Buffer가 사용되어 물리적인 문제가 발생할 수 있습니다. 따라서 Delay Cell을 적절히 혼합하여 삽입하거나, 여러 경로에서 공통으로 사용되는 데이터 경로에 Buffer를 삽입하는 등의 전략을 사용합니다.
- RTL 설계 단계에서는 이상적인 환경을 가정하고 회로를 설계하지만, 실제 칩 동작 시에는 Noise, 온도 변화 등 다양한 요소들이 영향을 미칩니다. STA는 이러한 요소들을 고려하여 회로 내의 모든 경로에 대해 타이밍 제약 조건을 만족하는지 검증하는 과정입니다. 시뮬레이션 없이 정적으로 타이밍을 분석하며, 주로 PrimeTime과 같은 툴을 사용합니다.
-> delay cell을 적절하게 섞어서 insert하거나 common이 되는 data path에 buffer를 insert한다.
Slack의 개념
그림 3에 보인바와 같이 setup time interval의 가장빠른 경계(시간상 한계점)부터 데이터가
실제 도착한 시간사이의 절대시간간격을 Slack이라고 부릅니다.

그림 3. Slack을 표시한 타이밍도
📉 Slack의 개념: 타이밍 마진 이해하기
Slack은 그림 3과 같이 Setup Time 간격의 가장 빠른 경계부터 데이터가 실제로 도착한 시간 사이의 절대 시간 간격을 의미합니다.
Slack 값이 음수(Negative Value)이면 Setup Timing Violation이 발생했음을 나타냅니다. 즉, 데이터가 Setup Time 요구 조건보다 늦게 도착했다는 의미입니다.
- 💡 ASIC Front-End 핵심 질문 & 답변
- Setup time, Hold time이 뭔가요? 클럭 엣지를 기준으로, 셋업은 엣지 이전에, 홀드는 엣지 이후에 데이터 값의 최소 유지 시간입니다. Violation이 일어나지 않기 위한 조건입니다.
- Setup time violation과 hold time violation 중에 뭐가 더 나쁜가요? Hold time violation입니다. Setup time violation은 클럭 주기 조절로 해결될 수 있지만, Hold time violation은 데이터 경로와 직접 관련되어 더 심각한 문제입니다.
- Setup time Violation과 Hold time Violation을 어떻게 피할 수 있나요?
- Setup time Violation: Tc2q (Clock-to-Q delay), Tcomb (Combinational logic delay)를 줄이고, 클럭 주기를 늘리면 됩니다. (클럭 주기 증가는 성능 저하를 야기하므로, 클럭 스큐를 조절하거나 회로를 최적화하는 방법을 우선적으로 고려합니다.)
- Hold time Violation: Tc2q, Tcomb를 늘리면 됩니다. (주로 Buffer 추가를 통해 해결합니다.)
- Slack이 뭔가요? DRT (Data Required Time)와 DAT (Data Arrival Time)의 차이입니다. Setup time Slack은 DRT - DAT이고, Hold time Slack은 DAT - DRT입니다. Slack 값이 음수이면 Violation이 발생한 것입니다.
- DRT = Capture edge - Launch edge - Setup time
- DAT = 로직들의 딜레이 합
- 어떻게 Negative Slack을 개선하나요? Flip-Flop(파이프라인)을 중간에 삽입하여 DAT를 줄이거나, 회로의 딜레이 최적화를 통해 개선할 수 있습니다.
- Critical path가 뭔가요? Input에서 Output까지의 최대 지연 경로입니다.
- Critical path의 delay는 어떻게 계산하나요? 게이트 딜레이의 합 + 네트 딜레이의 합 (네트 딜레이를 직접 볼 수 없다면, 팬아웃 등을 참고합니다.)
- 클럭의 최소 주기는 어떻게 구하나요? 주파수는 어떻게 구하나요?
- 최소 클럭 주기 (Tclk) ≥ Tc2q + Tcomb + Tsetup + Tskew
- 주파수 (frequency) = 1 / Tclk
- 회로 설계자가 회로의 속도를 빠르게 하는 방법은 무엇인가요? 최대 가능한 주파수를 사용하고, Critical Path의 지연 시간을 줄입니다. (예: 로직 복제 및 분할을 통해 특정 경로의 로직 단계를 줄이는 방법 등)
- STA가 뭔가요? 시뮬레이션 없이 회로가 Constraint에 대한 타이밍 Violation이 발생할 수 있는 모든 경로에 대해 정상 작동 여부를 판단하는 방법입니다. 기능 검증은 하지 않습니다.
'VERILOG' 카테고리의 다른 글
Smart ZYNQ보드 PS 측의 EMIO 확장 이더넷(ethernet) 네트워크 포트 기능 구현 (0) | 2024.05.14 |
---|---|
Serial통신, Uart, RS232, RS422, RS485, I2C, SPI, TCP, UDP 통신 방식에 대한 정리 (0) | 2024.04.15 |
Rotary Encoder(RSI 503) 및 MAX33076E(수신기) VERILOG 동작 (0) | 2024.04.05 |
DMA(Direct Memory Access) Loop test (3) | 2024.03.06 |
Hook script file 에러 시 해결 방법 (0) | 2024.02.27 |