오늘은 맑음

Timing analysis (2): RTL level에서 slack을 줄이는 방법 본문

Digital logic

Timing analysis (2): RTL level에서 slack을 줄이는 방법

자전거 타는 구구 2023. 8. 2. 00:26
반응형

 과거에 STA(Static Timing Analysis) 수업을 들으며 정리했던 글이 있는데, 추가로 설명을 달고자 작성해봅니다.
Timing analysis (tistory.com)

 

Timing analysis

어떠한 로직을 설계한 후 타이밍을 분석 negative slack이 발생하여 타이밍에서 문제가 되는 경우 이를 해결하는 방법 일반적으로 setup time안에 데이터가 들어오지 않거나 hold time동안 데이터를 유지

wh00300.tistory.com

 STA의 결과로 나온 negative slack으로 인해 longest path로 리포트된 경로를 RTL level에서 해결하는 방법입니다.
 현재 아는 내용에서 설명해보겠습니다. 혹시 틀린 부분이나 보완사항이 있다면 댓글 부탁드립니다.
 앞으로 더 배우는 내용이 있다면 보완하겠습니다.
 
타이밍 이슈는 이전 F/F에서 출력된 데이터가 다음 F/F'에 도착할 때 set up/hold time을 만족하지 못해 발생합니다.
그림 1과 같이 사이에 combination logic이 있는 경우 combination delay가 더해져 slack이 발생할 확률이 증가합니다.

그림 1. Design system

위와 같은 상황에서 slack이 발생했을 때 RTL level에서 해결할 수 있는 방법을 알아보겠습니다.
 

1. Pipeline

위에서 발생한 Combination logic 사이에 F/F를 추가해 pipeline으로 만드는 방법입니다.

그림 2. pipeline

 위와 같이 기존의 longest path였던 F/F와 F/F' 사이에 F/F''를 두어 COMB를 COMB와 COMB'로 분리했습니다.
이렇게 바꾸게 되면 각 F/F사이가 짧아져 slack을 줄일 수 있습니다.
 

2. F/F 사이에 있는 Combination logic의 위치를 수정

그림 3. Design system2

 그림 3에서 F/F은 A 모듈의 출력 포트이고 F/F'는 B의 입력 포트입니다.
 위와 같은 상황에서 사이에 있는 combination logic에 의해 slack이 발생했을 때 해결할 수 있는 방법은 comb logic의 위치를 변경하는 방법이 있습니다.
 F/F의 출력 데이터가 Comb logic을 통해 바로 F/F'로 입력되는 경우라면 Comb logic을 A 모듈 안에서, 즉 F/F 앞에 위치시켜 combination delay를 줄일 수 있습니다.
 

 3. High Fan out 모듈에서 slack이 발생하는 경우

그림 4. high fan out module

 그림 4와 같이 high fan out module 모듈의 경우에는 물리적인 output port의 크기에 의해 전체적인 모듈의 크기가 커집니다. 전체 모듈의 크기가 커지게 되면 PnR(Place and Route) 단계에 영향을 끼칩니다. 큰 모듈로 인해 PnR 과정에서 배치가 좋지 않게 되면 output 에서 출력되는 path에서 slack이 발생할 수 있습니다.
 이러한 경우 RTL level에서 할 수 있는 방법은 fan out을 줄이는 방법입니다.
아래 그림 5와 같이 high fan out module이였던 A를 각자 독립적인 형태의 A', A'', A'''로 동작을 나누게 되면 각자 모듈의 fan out은 줄어들어 PnR에서 더욱 유리하게 작업을 할 수 있어  slack을 줄일 수 있습니다.

그림 5. A를 나눠 모듈의 fan out을 줄인 모습

 이렇게 RTL level에서 slack이 발생한 path에서 slack을 줄이는 방법에 대해 알아봤습니다.
 저도 직접 배우거나 주로 사용하는 방법 위주로 적어놨습니다. 
 이 후 더 알게 되는 내용이 있다면 추가/수정하도록 하겠습니다.

반응형

'Digital logic' 카테고리의 다른 글

CDC handshake waveform 예제  (0) 2023.08.09
Digital logic에서 assert와 deassert란?  (0) 2023.08.07
CDC: Multi-bit Synchronizer  (4) 2023.06.17
Verilog HDL random, random 신호 생성하기  (2) 2022.04.03
CMOS 동작 원리와 장/단점  (0) 2022.01.09
Comments