Time Borrowing은 클럭 주기의 일부를 현재 클럭 주기에서 다음 클럭 주기로 "빌려서" 사용하며 주로 레벨 기반 래치(Latch)에서 발생하며, 래치의 클럭 엣지가 아닌 활성화 기간(Transparent Window) 동안 데이터가 통과할 수 있기 때문
- Path to L2/D
Latch가 open된 이후에 데이터가 도착.
즉, 데이터가 현재 클럭 주기 내에 도착하지 못했으며, Latch가 open 상태에서 데이터가 전달.
-> 데이터를 늦게 전송하는 대신 다음 클럭 주기 일부를 "빌려" 사용하는 상황.
데이터 전송이 늦어지는 만큼 다음 클럭 주기에서 데이터 전송 시간이 줄어드는 단점이 있음.- Path from L2/G
L2/D와 L2/G 경로가 타이밍적으로 독립적이지 않음.
Latch가 open 상태에서 데이터를 허용하므로, L2/G 신호가 L2/D 경로 데이터의 안정성 및 타이밍에 영향을 줄 수 있음.
-> Latch의 open 상태는 동일 클럭 주기 내에서 두 경로가 타이밍적으로 연관될 수 있도록 함.
따라서 타이밍 분석 시 두 경로를 독립적으로 처리 X
Zero Time Borrow는 Time Borrowing이 발생하지 않는 상태를 의미합니다.
즉, 데이터 전송이 단일 클럭 주기 내에서 완료되며, 클럭 주기 간 타이밍 마진이 필요 X
- Path to L2/D
Latch가 open 상태가 되기 전에 데이터가 도착해야 함.
즉, 데이터가 현재 클럭 주기 내에서 처리되고 Time Borrowing이 발생 X
-> 데이터 전달이 단일 클럭 주기 내에서 완료되므로 Latch의 Transparent Window(open 상태) 동안 데이터를 전송하지 않음.
Time Borrowing 없음 → 타이밍 분석이 단순화되고 다음 데이터 전송에는 영향을 미치지 않음.- Path from L2/G
L2/D와 L2/G 경로는 서로 독립
즉, L2/G 경로의 신호가 L2/D 경로의 데이터 타이밍에 영향을 미치지 않음.
-> Zero Time Borrow에서는 Latch의 open 상태가 고려되지 않으므로 두 경로가 타이밍적으로 분리
- Zero Time Borrow
데이터 전달: 단일 클럭 주기 내에서 완료.
Latch Open Window: 데이터가 Latch가 open되기 전에 도착.
경로 독립성: L2/D와 L2/G 경로는 타이밍적으로 분리.- Time Borrow
데이터 전달: 다음 클럭 주기의 일부를 사용해 전달.
Latch Open Window: 데이터가 Latch가 open된 이후에도 전달 가능.
경로 독립성: L2/D와 L2/G 경로가 타이밍적으로 연관될 수 있음.
set_multicycle_path -setup 6 -to [get_pins "*reg[*]/D"]
set_multicycle_path -hold 5 -to [get_pins "*reg[*]/D"]
일때,
- Multicycle Path의 동작
Setup 경로 : 데이터가 캡처될 때까지 6개의 클럭 주기이며, STA 도구는 6번째 클럭 엣지를 기준으로 타이밍을 분석.
Hold 경로 : 데이터가 캡처된 후, 5번째 클럭 주기까지 데이터가 안정적으로 유지되고, STA 도구는 이전 클럭 주기와 현재 클럭 주기 사이의 타이밍을 분석.- 왜 한 주기 빠르게 설정하는가?
- 데이터 충돌 방지
- 도구의 타이밍 계산 원칙
- 멀티사이클 타이밍 조건 보장
GBA는 타이밍 그래프 전체를 기반으로 타이밍 분석을 수행하며, 모든 경로에서 최악의 지연 경로를 찾는 데 초점을 맞춤.각 노드와 엣지를 단순화하여 최악의 경우를 가정한 분석.
- 분석 속도가 빠르고, 초기 설계 단계에서 유용.
대규모 설계에서 모든 경로를 빠르게 검토 가능.
PBA는 타이밍 경로 하나하나를 기반으로 실제 타이밍 위반 여부를 분석하며, 경로 간의 타이밍 의존성을 상세히 검토하여 정확성을 높임.
- 타이밍 분석 결과가 정확하며, 실제로 문제가 있는 경로를 식별.
최적화 및 검증 단계에서 유용.
GBA에서 violation(타이밍 위반)이 발생하면 PBA를 통해 타이밍을 재검토하고 정확한 타이밍 경로를 분석하여 위반 여부를 확인하거나 해결하는데 이 과정에서 GBA와 PBA의 priority(우선순위)가 다르게 나타남.
시작점(Start Point)과 끝점(End Point)으로만 동작하는 Latch.
경로 상에서 데이터를 출발시키거나 캡처하는 역할을 함.
Through Point(중간 경로)로 동작하지 않음.
-> 데이터가 Latch를 통해 전달되지만, 다음 타이밍 경로로 데이터를 "통과"시키는 중간 지점으로 사용되지 않음.
보통 Flip-Flop처럼 동작하며, 단순한 타이밍 분석 (ex. 단순한 Latch-to-Latch 경로)에 적합.
Through Point(중간 경로)와 끝점(End Point)으로 동작하는 Latch.
Latch가 중간 지점에서 데이터를 버퍼링하고, 다음 타이밍 경로로 데이터를 전달하는 역할을 함.
시작점(Start Point)으로는 동작하지 않음.
-> 데이터 흐름에서 Transparent Window를 활용하여 데이터 지연(Time Borrowing)을 허용.
복잡한 타이밍 분석 및 멀티사이클 경로에서 주로 사용.
- Old Latch
- Setup Time: 데이터는 다음 Latch(End Point)가 닫히기 전에 도착해야 함.
단일 클럭 주기 내에서 타이밍 분석이 수행됨.- Hold Time: 데이터는 Latch가 닫힌 후 일정 시간 동안 안정적으로 유지되어야 함.
- 경로 : Start Point → End Point로, 중간에 Latch를 Through Point로 사용하지 않음.
- New Latch
- Setup Time : 데이터는 다음 Latch(End Point)가 닫히기 전뿐만 아니라, Through Point의 Transparent Window 동안에도 도착 가능.
Time Borrowing이 가능하므로 Setup Time 분석이 복잡해짐.- Hold Time : Through Point에서 데이터가 안정적으로 유지되어야 하며, End Point까지의 타이밍이 영향을 받음.
- 경로 : Through Point → End Point로, 중간 경로에서 데이터 흐름을 버퍼링함.