본문으로 건너뛰기Skip to content 1:1 문의 — [email protected]로 이메일 작성 Contact us — email [email protected]

Hold Timing Fix 심층 가이드: detour·crosstalk·clock ECO와 setup의 대가

셀·핀 교체부터 route detour, layer·via, crosstalk, shielding, clock ECO와 scan lockup까지. Hold 개선이 setup과 이웃 경로에 미치는 영향을 식·도해·가상 계산으로 분석한다.

Original conceptual diagram of a direct minimum-delay path and a longer route between launch and capture registers.
A conceptual launch-to-capture path highlights minimum delay and the competing setup budget. Original illustration by VLSI Korea; not a silicon photograph.

Hold를 고치는 일은 가장 빠른 데이터가 너무 일찍 도착하지 않도록 만드는 것이다. 어려운 부분은 그 변경이 가장 느린 데이터, 다른 fanout, 옆 배선, 다음 register의 타이밍까지 바꾼다는 데 있다.

VLSI Korea view: 좋은 hold ECO는 delay를 많이 넣는 수정이 아니다. 필요한 min delay를 가장 작은 max-delay 비용과 가장 좁은 영향 범위로 확보하는 수정이다.

size_cell과 insert_buffer는 시작점이다. 실제 closure에서는 delay cell의 위치, gate input의 timing arc, fanout 분리, metal layer와 via, route detour, clock leaf의 도착 시각, scan 연결까지 선택지가 이어진다. 반대로 명목상 느려 보이는 수정이 추출 후에는 빨라질 수도 있다.

이 글은 동기식 ASIC의 register-to-register 경로를 중심으로 한다. Hold repair가 setup slack을 깎는 것과 capture cell 자체의 setup-time requirement를 키우는 것은 다른 현상이며, 아래에서는 둘을 분리한다. Library의 setup·hold constraint가 음수일 수도 있으므로, 도식의 양수 보호 구간을 모든 FF의 고정 특성으로 읽지 않는다. FPGA 문서는 detour가 실제 구현 도구에서 쓰인다는 교차 근거로만 사용하고, FPGA의 수치나 배선 명령을 ASIC 규칙으로 옮기지 않는다.

The hold and setup timing windows
Figure 1. Same-edge hold and next-edge setup constrain opposite ends of the data-arrival interval. Conceptual diagram by VLSI Korea; not a measured waveform.

먼저 부호를 고정해야 clock을 반대로 고치지 않는다

Launch register의 clock insertion delay를 L, capture register의 것을 C라 하자. 같은 주파수의 rising-edge FF 사이에서 같은 edge로 hold를 검사하고 다음 edge로 setup을 검사하는 단순 모델은 다음과 같다. Early와 late는 각각 해당 검사에서 적용한 clock 도착 조건이다.

Hold slack = L_early + t_cq,min + d_min − C_late − t_hold − U_hold + P_hold

Setup slack = T + C_early − L_late − t_cq,max − d_max − t_setup − U_setup + P_setup

여기서 d는 조합 셀과 net의 지연, t_cq는 launch FF의 clock-to-Q, T는 주기다. U는 해당 검사에 적용한 uncertainty이고 P는 허용된 common-clock pessimism correction이다. 이미 보정된 clock delay를 사용한 보고서에는 P를 다시 더하지 않는다. Derate와 SI가 적용된 수치를 사용해야 하며, 서로 다른 report의 항을 임의로 섞으면 안 된다. AMD의 slack 정의는 capture-minus-launch skew가 setup에는 더해지고 hold에서는 빠지는 관계를 보여준다.

Clock과 cell constraint가 그대로라면 데이터 지연 증가는 hold를 개선하고 setup을 악화시킨다. 그러나 hold corner에서 늘어난 지연과 setup corner에서 늘어난 지연은 같지 않다. Fast-corner에서 30 ps를 벌었다고 slow-corner에서도 30 ps만 쓴다고 계산할 수 없다.

Capture clock을 앞당기거나 launch clock을 늦추면 이 경로의 hold에는 유리하고 setup에는 불리하다. 둘을 같은 만큼 움직이면 이 단순 모델의 skew는 변하지 않는다. 실제로는 slew, OCV, 공통 clock 구간과 SI까지 달라질 수 있어 nominal latency만 같다고 효과가 상쇄되는 것도 아니다.

같은 edge hold 식에는 T가 없다. 그래서 주파수만 낮추는 방법은 보통 이 hold 위반을 해결하지 못한다. Generated clock, 반대 edge, latch, I/O, multicycle 관계에서는 실제 launch/capture edge를 다시 풀어야 한다. 기본 개념은 기존 setup·hold 해설을 함께 보면 된다.

물리 수정을 하기 전에, 정말 고쳐야 할 경로인지 확인한다

보고서 한 줄의 음수부터 없애려 하면 잘못된 clock 관계를 수천 개의 buffer로 덮을 수 있다. 먼저 mode, startpoint·endpoint, rise/fall, clock source·generated relationship, latency·propagation, uncertainty, min/max I/O delay, exception, library/RC corner를 함께 확인한다.

특히 multicycle setup만 지정하고 hold edge를 의도대로 정의하지 않은 경우, 존재하지 않는 기능 경로를 활성화한 case analysis, clock mux의 잘못된 관계, test mode의 누락이 큰 hold 요구량으로 나타날 수 있다. AMD UG906은 잘못된 multicycle와 과도한 clock skew가 hold detour를 늘려 setup까지 손상시킬 수 있음을 설명한다. 해당 문서의 FPGA 임계값을 ASIC에 적용해서는 안 된다.

CPPR/CRPR와 승인된 path-based analysis로 불가능한 pessimism이 제거되는지도 확인한다. 이것은 실제 실리콘에 delay를 만드는 repair가 아니라 분석 모델을 바로잡는 일이다. Clock-network pessimism 연구에서 다루듯 보정 가능한 공통 구간은 경로마다 다르다. PBA가 모든 위반을 없애거나 모든 경우 더 유리한 숫자를 보장하지는 않는다.

False path를 새로 걸거나 uncertainty를 줄여 통과시키는 것은 기능·방법론 근거가 있을 때만 정당하다. Asynchronous CDC를 delay ECO로 동기화할 수도 없다. CDC, recovery/removal, clock-gating check와 minimum pulse width는 일반 data hold와 별도 문제다.

Buffer를 넣기보다 먼저, 어느 branch를 늦출지 고른다

한 driver가 빠른 endpoint B와 setup-critical endpoint C를 함께 구동한다고 하자. 분기 앞 공통 trunk에 delay cell을 넣으면 두 경로가 모두 새 stage를 지난다. B의 hold를 고치는 비용을 C의 setup이 치를 수 있는 구조이며, 실제 순증 지연은 부하 변화까지 재계산해야 한다.

분기 뒤 B 쪽에만 넣으면 직접적인 영향은 좁아진다. 하지만 완전히 격리되는 것은 아니다. 새 buffer 입력 capacitance와 배선이 공통 driver가 보는 부하를 바꾸기 때문에 C의 arrival도 다시 계산해야 한다. “Capture pin에 가깝게 넣으면 다른 path는 안전하다”는 말은 근사이지 보증이 아니다.

Shared-trunk and branch-local hold ECO
Figure 2. A branch-local ECO limits direct delay insertion, but its input load can still change the shared driver. Original schematic by VLSI Korea.

여러 hold endpoint가 같은 branch를 공유하고 그 branch의 모든 max path에 여유가 있다면, 분기 앞 하나의 delay stage가 개별 buffer 여러 개보다 나을 수 있다. 반대로 한 endpoint로 reconverge하는 여러 launch path 가운데 하나라도 setup이 빡빡하면, endpoint 직전 삽입도 안전하지 않다. Fanout 쪽과 fanin 쪽의 경로 집합을 모두 봐야 한다.

Buffer를 추가한 뒤의 순증 지연은 buffer 자체의 library delay와 같지 않다. 기존 driver가 큰 wire/load에서 분리되면 빨라지고, 새 buffer가 뒤쪽을 더 강하게 구동해 downstream net delay도 줄일 수 있다. 긴 RC net에 repeater를 넣는 이유가 바로 이것이다. Hold용으로 추가한 buffer가 예상보다 적게 늦추거나 오히려 전체 경로를 빠르게 만들 수 있으므로, 삽입 전후의 cell·net·slew를 분해해 비교해야 한다.

OpenROAD resizer 문서도 long-wire RC 감소를 위한 buffering과 hold repair를 구분한다. Hold repair는 propagated clock이 있는 post-CTS 상황에서 setup과 함께 판단하도록 설명한다. 자동 ECO 역시 “셀 delay를 더했으니 성공”이라는 산술로 동작해서는 안 된다.

셀을 바꾸는 방법도 여러 종류다

Dedicated delay cell은 일반 buffer보다 먼저 검토할 후보가 될 수 있다. 내부 stage와 device 구조로 지연을 확보하도록 만들어진 셀이다. 공개 SKY130 delay-buffer 문서에는 내부 gate length를 지정한 다단 delay cell이 실제로 존재한다. 그렇다고 어떤 공정에서나 delay cell이 최적이라는 뜻은 아니다. 사용 가능한 footprint, min/max arc, rise/fall, output slew, variation model과 배치 여유가 선택을 결정한다.

Drive-strength downsize는 출력 저항을 높여 지연을 늘리는 전형적인 방법이다. 다만 입력 capacitance가 줄면 앞단이 빨라지고, 출력 slew가 느려지면 뒷단 지연과 endpoint constraint가 바뀐다. 목적 cell의 delay만 늘었는지, 전체 min path가 실제로 늘었는지를 따로 봐야 한다. 기존 over-buffered 경로에서 buffer를 제거하거나 약한 stage로 바꾸는 선택도 같은 원리로 평가한다.

Downsizing changes upstream and downstream timing
Figure 3. Lower input capacitance can accelerate the upstream stage, while weaker drive changes local delay and downstream slew. Recompute the complete path; its net delay change has no assumed sign. Original conceptual diagram by VLSI Korea.

Vt swap 또는 library가 허용하는 longer-channel variant는 같은 논리 기능을 유지하며 delay/leakage 특성을 바꾸는 방법이다. 보통 더 느린 후보를 찾지만, 이름에 HVT가 붙었다는 이유만으로 모든 corner·slew·load의 지연 증가를 가정하지 않는다. Footprint, rail, implant/well, legal placement, dont-use와 signoff library 지원을 모두 만족해야 한다.

Inverter pair나 기능을 보존하는 logic decomposition으로 stage를 늘릴 수도 있다. 그러나 짝수 번 반전했다고 timing까지 동등해지는 것은 아니다. Rise/fall 경로, glitch propagation, pulse filtering, reconvergent path, reset·test 기능이 달라질 수 있다. Synthesis가 다시 접어 버릴 구조라면 물리 ECO에 남지 않을 수도 있다. Metal-only 단계에서 이미 배치된 spare/ECO cell을 활용하는 방법도 있으나, 사용 가능한 mask와 전원·연결·검증 조건을 만족하는 자산이어야 한다. LEC와 전기·타이밍 검증이 함께 필요하다.

Equivalent input pin swap은 더 미세한 선택지다. 같은 Boolean 기능을 유지하는 입력끼리도 pin capacitance와 내부 timing arc는 다를 수 있다. 빠른 입력을 더 느린 arc로 옮기면 min delay를 늘릴 가능성이 있다. 하지만 다른 입력은 반대 영향을 받고, routing과 when 조건, unateness, rise/fall을 다시 확인해야 한다. Mux의 data와 select처럼 논리적으로 다른 핀을 교환하는 방법은 아니다. ISPD의 local-transformation 연구는 pin swapping·sizing·buffering을 서로 상호작용하는 최적화로 다룬다. 이를 hold 방향으로 쓰는 판단은 해당 library와 경로를 확인한 뒤 내려야 한다.

마지막으로 launch/capture FF 자체의 교체가 있다. Launch의 t_cq,min을 늘리는 FF, capture의 hold requirement가 작은 FF를 고를 수 있지만, 더 큰 t_cq,max나 t_setup, clock pin capacitance, scan/reset 차이가 따라올 수 있다. Setup·hold·clock-to-Q가 서로 완전히 독립된 상수가 아니라는 점은 PieceTimer 연구도 다룬다. 실제 선택은 승인된 characterization model을 따라야 한다.

Route detour: 길게 돌리는 것이 왜 먹히고, 어디서 실패하나

Net을 일부러 우회시키면 wire의 R과 ground/coupling C가 달라진다. 셀을 넣을 자리가 부족하거나 metal-only ECO가 필요한 단계에서는 매력적인 선택지다. 실제로 공개된 routing 특허는 routing blockage로 우회를 유도하고 secondary violation을 재검사하는 절차를 설명한다. Intel의 physical-synthesis 자료에도 FPGA hold repair의 수단으로 detoured routing이 명시되어 있다.

직관을 위해 균일한 RC wire와 lumped receiver를 가정하면 Elmore first moment는 대략 τ ≈ R_driver(C_wire + C_load) + R_wire(C_wire/2 + C_load)다. 같은 단면에서 R_wire와 C_wire가 길이에 비례하므로 wire 자체 항에는 길이의 제곱 성분이 생긴다. 이것은 topology를 이해하는 근사이며 signoff의 50% crossing delay를 정확하게 예측하는 식이 아니다. Coupling, 분기, waveform, via와 buffer를 포함한 실제 net은 다시 추출해야 한다.

Detour changes resistance, capacitance and neighbors
Figure 4. Detour changes wire resistance, ground capacitance, coupling and via topology together. Original schematic; no process geometry is implied.

중요한 것은 추가 길이보다 추가 길이가 놓인 위치다. Driver 근처의 series resistance는 그 뒤에 달린 capacitance의 영향을 받는다. Far-end branch의 우회와 공통 trunk의 우회는 영향을 주는 sink 집합과 RC weight가 다르다. 같은 길이를 늘려도 delay 증가가 같지 않다.

Meander를 좁게 접으면 인접한 다른 net뿐 아니라 같은 net의 서로 떨어진 구간 사이 capacitance도 문제가 된다. 동일한 논리 net이라고 모든 지점의 순간 전압이 항상 같지는 않는다. 긴 distributed RC에서 이 self-coupling을 무조건 ground C나 0으로 치환하면 설명이 틀린다. 추출기와 delay engine이 지원하는 topology 그대로 평가해야 한다.

Route guide·waypoint·국소 blockage·ECO reroute가 이 목적에 쓰일 수 있지만, 방법과 보존 옵션은 도구와 버전에 따라 다르다. 경로만 그려 놓고 종료하면 후속 router가 다시 줄이거나 DRC repair가 topology를 바꿀 수 있다. 추출한 route가 최종 전달 DB에도 남아 있는지 확인해야 한다.

Detour가 실패하는 전형적인 이유는 setup corner의 증가량이 너무 크거나, slew가 무너져 receiver delay까지 커지거나, congestion 때문에 주변 critical net이 우회하거나, SI speedup이 기대한 min-delay 증가를 상쇄하는 경우다. Cell-free가 cost-free를 뜻하지 않는다.

Layer·width·via·부하를 만지는 더 미세한 RC ECO

낮은 metal layer, 좁은 wire, via가 많은 경로가 느릴 것이라는 직관은 후보를 찾는 데는 유용하다. 그러나 “하위 layer면 hold 개선”, “wire를 넓히면 setup 개선”처럼 단정할 수는 없다. Layer별 sheet resistance, 두께, 주변 dielectric, spacing, ground/coupling capacitance와 실제 transition이 함께 결정한다.

Layer reassignment와 width 조정은 R과 C를 동시에 바꾼다. 넓은 wire는 R을 낮추면서 C를 늘릴 수 있고, spacing을 늘리면 coupling이 줄지만 더 긴 route가 필요할 수 있다. 상위 layer로 이동하면서 via stack이 추가되면 기대한 net gain도 달라진다. SKY130의 공개 extraction 규칙은 저항·capacitance가 서로 다른 구조별 모델임을 보여준다. 그 값이나 허용 구조를 다른 node에 이식해서는 안 된다.

Via 선택과 합법적인 metal extension도 가능한 knob다. 공개 특허 US20200401668A1은 metal extension과 alternate via를 이용한 timing 수정을 설명하며, 주변 critical net의 coupling 변화와 DRC 재검사를 포함한다. 이것은 기술적 선택지의 공개 사례이지, 임의의 via를 제거하거나 저항을 키워도 된다는 허가가 아니다. Redundant-via·EM·reliability 규칙을 timing 때문에 희생하면 안 된다.

Load를 의도적으로 늘리는 방식은 driver의 지연을 키우지만 가장 쉽게 부작용이 번지는 방법 중 하나다. 승인된 load/delay 구조를 사용할 수 있는 경우에만 검토한다. 무의미한 dangling gate나 무단 capacitor를 붙이면 최적화로 삭제되거나 extraction·LVS·전력 문제가 생길 수 있다. 공통 driver의 모든 sink와 전이율, 동적 전력까지 바뀐다.

Cell relocation, branch 분리, driver cloning은 부하와 topology 자체를 바꾸는 선택지다. Setup-critical branch를 빠르게 유지하고 hold branch만 별도 구동하는 구조가 가능해진다. 그러나 clone이 앞단 fanout을 늘리고, register clone이면 clock·reset·scan 부담도 추가한다. 공간을 확보하지 못한 clone은 legalization 이동으로 더 큰 timing 손상을 낼 수 있다.

Crosstalk는 detour에 붙는 부수 효과가 아니라 delay의 일부다

옆 배선의 전압 변화가 coupling capacitor를 통해 victim의 전류와 waveform을 바꾼다. 전환이 적절히 겹치는 대표적인 경우, aggressor가 같은 방향으로 움직이면 victim이 빨라질 수 있고 반대 방향이면 느려질 수 있다. 전자는 min-delay/hold, 후자는 max-delay/setup의 위험으로 연결된다. ICCAD의 switching-window 연구는 방향뿐 아니라 두 net이 실제로 전환할 수 있는 시간 구간을 함께 분석해야 한다고 설명한다.

Crosstalk can speed up or slow down a transition
Figure 5. Qualitative aligned-transition examples. The sign and magnitude of SI delay depend on timing alignment, coupling and waveform shape; curves are not simulation results.

단순 capacitive 직관에서는 coupling 전류를 i_c = C_c × d(V_victim − V_aggressor)/dt로 볼 수 있다. 똑같이 움직이는 두 waveform은 차동 전압 변화가 작고, 반대로 움직이면 커진다. 하지만 이것을 “same direction은 항상 0C, opposite은 항상 2C”라는 signoff 계산식으로 쓰면 안 된다. Driver strength, 서로 다른 slew와 amplitude, 분포 RC, 여러 aggressor의 정렬 조건이 빠져 있기 때문이다.

Detour가 aggressor 옆에서 평행하게 달리는 구간을 늘리면 nominal RC delay를 벌면서도 SI 민감도를 키울 수 있다. 그 net의 도착 시각이 변해 기존 aggressor와의 overlap이 줄거나 새로운 aggressor window에 들어갈 수도 있다. 그래서 SI-aware delay와 switching window는 한 번 고정해 놓고 독립적으로 계산하기 어렵다.

“Hold는 빠른 path니까 crosstalk는 느리게만 만들 것이다”는 틀린 판단이다. Data path의 speedup은 hold를 악화시킬 수 있다. Clock path의 SI라면 launch clock이 빨라지거나 capture clock이 늦어지는 변화도 hold에 불리하다. Setup에는 반대 조합이 문제가 된다. Data와 clock의 최악 조건을 각 signoff 방법론 안에서 분석해야 한다.

Stable victim에 생기는 noise glitch와 switching victim의 delta delay도 구분한다. Glitch가 receiver에서 논리 오류를 낼 가능성은 pulse amplitude·width·receiver 특성의 문제이며, setup/hold slack이 양수라는 사실만으로 noise 검증을 대체할 수 없다.

Shielding과 spacing은 왜 hold를 좋아지게도, 나빠지게도 하나

Spacing을 키워 coupling을 줄이면 aggressor 의존성을 줄일 수 있다. Shield는 neighbor coupling을 줄이는 대신 shield와의 capacitance, routing 자원과 연결 조건을 새로 만든다. On-chip crosstalk 연구는 shielding과 인코딩의 지연·면적 trade-off를 다룬다. 특정 bus 모델의 개선율을 일반 ASIC net의 보장값으로 쓰지는 않는다.

Hold 문제의 원인이 same-direction speedup이라면 그 coupling을 줄여 min delay를 회복할 가능성이 있다. 반대로 줄어든 총 부하가 net을 더 빠르게 만들면 hold는 악화될 수 있다. Opposite-direction slowdown을 줄였다는 max-delay 결과만 보고 min-delay 결과까지 좋아졌다고 결론 내릴 수도 없다.

실무의 SI repair 후보는 spacing·shielding·layer 변경·평행 구간 축소·reroute·victim buffering·aggressor의 합법적 slew/drive 조정이다. 어느 후보든 victim 하나만 분석하지 않는다. Victim이 다른 net의 aggressor이기도 하고, aggressor를 약하게 만들면 그 net 자체의 setup이 깨질 수 있다. 기능 근거 없이 aggressor를 false path로 지우는 것은 SI repair가 아니다.

Clock ECO는 한 경로를 고치면서 이웃 경로의 문제를 옮긴다

과도한 clock skew가 문제이거나 여러 endpoint를 함께 고쳐야 한다면 clock leaf의 도착 시각도 후보가 된다. Capture를 앞당기거나 launch를 늦추면 해당 hold에 도움이 된다. Synopsys의 ISPD CTS 발표는 이 방향과 variation 아래에서 skew를 제어해야 하는 위험을 함께 설명한다.

다만 다른 항이 고정된 같은 경로에서 capture를 δ만큼 앞당기면 hold는 δ 좋아지고 setup은 δ 나빠진다. Clock skew만 바꾸는 방법도 이미 소진된 같은 경로의 setup budget을 공짜로 되찾지 못한다. 데이터 ECO와 corner 민감도·영향 범위가 달라 더 좋은 후보가 될 수 있을 뿐, 모든 경로의 예산 제약은 남는다.

Clock leaf의 buffer size·stage·route를 바꾸거나, 과도한 insertion delay를 만든 branch를 재구성하거나, clock topology를 더 균형 있게 만드는 선택지가 있다. 다만 clock cell·NDR·slew·duty-cycle·pulse-width·gating·OCV 규칙을 따라야 한다. 일반 data buffer를 clock tree에 임의로 넣는 처방이 아니다.

Advancing the middle register moves timing budget
Figure 6. Advancing B's clock helps A→B hold and B→C setup, but hurts A→B setup and B→C hold in the simplified same-clock model. Original analysis by VLSI Korea.

A→B→C에서 B의 clock을 앞당기면 A→B에서는 capture가 빨라져 hold가 개선되고 setup이 나빠진다. B→C에서는 launch가 빨라져 setup이 개선되고 hold가 나빠진다. Clock branch를 공유하는 다른 FF까지 움직이면 이 변화가 수십·수백 개의 경로에 퍼진다.

Clock ECO를 검토할 때 필요한 것은 “이 endpoint의 hold margin” 하나가 아니라, 변경 leaf의 모든 incoming/outgoing setup·hold 경로와 공유 clock 구간이다. Nominal skew 개선이 corner별 skew 개선과 같지 않고, 공통 clock 구간이 바뀌면 CPPR 항도 바뀔 수 있다. CTS와 skew의 기초 위에 이 이웃 관계를 올려서 봐야 한다.

Scan hold에는 다른 해법이 있다

Functional data path와 scan-shift path를 한 가지 처방으로 묶으면 낭비가 커진다. Scan에서는 짧은 Q→SI 연결과 서로 다른 clock branch의 skew가 핵심일 수 있다. Scan ordering·clock-domain grouping을 검토하고, 실제 shift waveform에 맞는 lockup latch/element를 사용하는 것은 DFT 구조 차원의 해결책이다.

Conceptual scan lockup timing
Figure 7. A scan lockup element can hold data across a vulnerable receiving edge. Exact polarity, transparency interval and edge relationship must follow the DFT clocking architecture.

예를 들어 positive-edge scan FF 뒤에 launch scan clock으로 구동하는 low-level-transparent latch를 두면, latch는 그 rising edge에서 닫혀 새 Q 데이터가 즉시 다음 FF로 넘어가는 것을 막고, 이후 low phase에서 전달할 수 있다. 실제 보호 구간은 clock skew·duty cycle·latch timing에 달려 있다. 어떤 domain 사이든 latch 하나가 자동으로 안전한 것은 아니다.

Scan reorder는 물리 거리를 줄이는 데 흔히 쓰이며 OpenROAD DFT 문서에도 placement 기반 reorder가 설명된다. 그러나 더 짧은 배선은 hold를 나쁘게 만들 수도 있다. Hold를 위해 순서를 바꿀 때는 shift min/max, domain/edge 순서, lockup, scan-chain definition과 ATPG 일관성을 함께 확인한다. Scan 주파수를 낮추는 것만으로 같은-edge hold를 없앨 수는 없다.

Functional latch 추가, opposite-edge FF 전환, retiming, pipeline 추가는 더 큰 구조 변경이다. Latency·cycle semantics·reset·CDC·DFT가 변할 수 있어 late-stage combinational ECO와 동급으로 취급하지 않는다. 특히 pipeline을 하나 더 넣으면 새로운 짧은 hold path가 생길 수 있다.

“Hold +45 ps”가 setup −90 ps일 수 있다

다음은 방법을 설명하기 위한 가상 ECO 비교다. 특정 공정·셀·라우터를 측정한 결과가 아니다. 시작 상태는 hold slack −32 ps, setup slack +70 ps이고 clock·constraint와 다른 영향은 고정했다고 가정한다.

Candidate A가 hold view의 min data delay를 45 ps, setup view의 max data delay를 55 ps 늘리면 결과는 hold +13 ps, setup +15 ps다. Candidate B가 min을 똑같이 45 ps 늘려도 max를 90 ps 늘리면 hold +13 ps, setup −20 ps가 된다. A를 delay cell, B를 detour로 이름 붙여도 어느 방법이 항상 우월하다는 결론은 나오지 않는다. 실제 library와 RC 결과가 바뀌면 순위도 바뀐다.

Illustrative ECO comparison across min and max views
Figure 8. Illustrative values only: equal min-delay benefit can consume different max-delay budgets. These are arithmetic examples, not measured cell or route results.

ECO knob x ≥ 0에 대해 hold 개선을 a_k·x, setup 손실을 b_j·x로 근사하고 a_k와 b_j가 양수라고 가정하자. 필요한 hold deficit와 target margin이 요구하는 x의 하한은 setup budget에서 reserve를 뺀 여유가 허용하는 x의 상한 이하여야 한다. 경계가 같아도 수학적으로는 가능하지만, 실제 legal cell·route의 이산적인 선택지와 전기 제한까지 만족하는 해가 있어야 한다. 민감도가 0이거나 음수인 경우에는 이 하한·상한 계산 대신 해당 view의 slack 부등식을 직접 평가한다. 공통으로 허용되는 구간이 없으면 buffer 개수만 늘려서는 해가 없다.

A feasible ECO must satisfy all timing views
Figure 9. A repair is feasible only when every required hold constraint and every protected setup constraint can be met together. Linear sensitivity is a local approximation.

실제 ECO의 a와 b는 상수가 아니다. Cell swap, slew 변화, path 재선정, SI window와 topology 변화에서 불연속적으로 바뀔 수 있다. 이 근사는 후보를 거르는 사고 도구이며 STA를 대신하지 않는다. 해가 없으면 branch 분리, 더 나은 library 후보, setup 측의 별도 최적화, clock topology 또는 구조를 함께 바꿔야 한다.

Setup을 hurt하는 원인을 빠짐없이 찾는 분해법

“모든 요인”을 tool option 목록으로 외우기보다 setup 식의 어디가 바뀌었는지 나누면 놓칠 가능성이 작다. 직접적인 data-path 비용, cell constraint 변화, clock budget 변화, 물리적 파급과 분석 조건 변화가 서로 겹칠 수 있다.

ΔSetup slack = ΔT + ΔC_early − ΔL_late − Δt_cq,max − Δd_max − Δt_setup − ΔU_setup + ΔP_setup

각 Δ는 비교 가능한 before/after report의 부호 있는 변화다. 새 worst path만 비교하지 말고 같은 경로와 같은 view의 항을 먼저 분해하면 setup 손실이 어디서 왔는지 추적할 수 있다.

Change class How setup can lose margin What to compare
Data stages Added delay, slower arc, logic depth Cell and net delay by rise/fall
Driver/load Larger load, weaker drive, worse slew Upstream delay and all fanouts
Receiver constraint Different setup arc or clock/data slew t_setup and related pin conditions
Launch register Larger late clock-to-Q t_cq,max and output load
Route RC Detour, via stack, layer/width change Extracted R, ground C, coupling C
Signal integrity Data slowdown or adverse clock shift SI delta and feasible aggressors
Clock topology Later launch or earlier capture Full clock paths, CPPR and skew
Placement Legalization moves and lost whitespace Changed neighboring paths
Congestion Displaced routes, longer access, DRC repair Routed topology and overflow
Power integrity Added switching/leakage and voltage drop Approved voltage-aware timing
Variation Different depth/distance/sigma treatment AOCV/POCV model and corner delta
Manufacturing context Fill, extraction or allowed via changes Final-fill parasitics and reliability
Modes and edges Scan, DVFS, generated/half-cycle clocks Mode-specific edge relationships
Constraints/model Corrected uncertainty, exceptions or libraries Before/after analysis provenance

Table 1. Setup-risk taxonomy for hold ECO review. Original synthesis by VLSI Korea; direction and magnitude require the actual design context.

첫 번째 원인은 직접적인 max-delay 증가지만, 두 번째 원인은 slew다. Driver가 느려지면 receiver 입력 waveform이 바뀌고, receiver의 propagation delay와 endpoint setup constraint가 함께 달라질 수 있다. 두 항을 하나의 “net delay 증가”로 뭉개면 다음 수정 방향을 놓친다. Setup constraint는 cell·data slew·clock slew·transition에 따라 달라지며 언제나 한 방향으로 변한다고 가정하지 않는다. Antenna repair diode의 추가 capacitance나 FF 교체 뒤 clock-pin 부하도 빠뜨리기 쉬운 예다.

세 번째는 공유 자원이다. Hold buffer를 넣기 위해 주변 cell을 밀어내면 원래 수정하지 않은 setup path의 wire가 길어진다. 추가 capacitance와 switching activity는 전력을 바꾸고, 충분히 큰 국소 전류 변화는 IR drop과 timing에 영향을 줄 수 있다. 이것은 모든 buffer 하나가 측정 가능한 IR 실패를 만든다는 뜻이 아니다. Cadence의 timing·power-integrity 연계 설명처럼 실제 전압 조건을 반영한 검증이 필요한 이유다.

네 번째는 variation과 signoff context다. Stage 수와 거리의 변화는 AOCV 적용에 영향을 줄 수 있으며, 통계 모델을 사용하는 flow에서는 nominal뿐 아니라 sigma와 correlation도 봐야 한다. Synopsys의 AOCV 설명은 logic depth에 따른 path/cell margin을 설명한다. 추가 buffer가 variation을 “평균화해 반드시 좋아진다”는 보편 법칙은 없다.

Hold는 무조건 FF·low-temperature, setup은 무조건 SS·high-temperature라는 단순화도 피한다. Temperature inversion 연구가 보여주는 온도 민감도의 반전, RC corner, DVFS와 level-shifter/isolation 동작, clock/data의 서로 다른 민감도 때문에 실제 worst view가 달라진다. 최종 metal fill과 signoff extraction, 승인된 aging/voltage 조건도 설계 방법론에 포함되어 있다면 빠뜨리지 않는다.

마지막으로 ECO 뒤 setup WNS가 악화되었다고 항상 “같은 path가 그만큼 느려졌다”고 말할 수 없다. Worst path 자체가 바뀌었을 수 있다. 동일 path의 before/after와 전체 WNS·TNS·violating endpoint 수를 둘 다 비교해야 원인을 찾을 수 있다.

한 번의 ECO를 어디까지 검증해야 끝났다고 할 수 있나

수정 전에는 문제 endpoint 하나만 저장하지 않는다. Launch/capture clock을 포함한 min/max report, rise/fall, library/RC corner, SI on/off 진단 결과, parasitic·constraint·netlist 버전을 함께 남긴다. SI-off 결과는 원인 분리용이며 signoff의 대체물이 아니다.

수정 후에는 합법적인 placement와 routing을 완료하고 최신 parasitic을 추출한다. Min-delay 이득이 사라지지 않았는지, max-delay 손실이 예산 안인지, 바뀐 driver·fanout·fanin·이웃 aggressor와 clock branch까지 영향 범위를 넓혀 확인한다.

MCMM verification coverage
Figure 10. ECO closure is a coverage problem across functional/test modes, voltage/PVT, RC, transition and SI views. Example checklist, not a prescribed process corner set.

그다음 전체 승인 MCMM에서 setup·hold를 재실행하고 max transition·capacitance·fanout, noise, clock pulse width와 gating, 필요 시 recovery/removal을 확인한다. Logic/netlist 변경은 equivalence, scan 변경은 chain/DFT 검증, physical 변경은 DRC·LVS·antenna·EM 등 해당 signoff 항목으로 닫는다. 하나의 clean STA report를 전체 signoff 완료라고 부르지 않는다.

명령은 이 검증 흐름에 종속된다. size_cell, insert_buffer 같은 명령의 허용 객체·옵션·ECO 반영 방식은 제품과 버전마다 확인해야 한다. 공개 OpenROAD의 repair_timing -hold도 실제 library, clock, parasitic과 setup 보호 조건을 준비한 다음 사용하는 것이지, 상용 도구에 그대로 붙이는 만능 script가 아니다.

VLSI Korea view: 고급 hold fix의 핵심은 특이한 트릭이 아니라 영향 범위를 제어하는 능력이다. 셀에서 wire로, wire에서 clock으로 손을 옮길수록 같이 검증해야 할 경로도 넓어진다.

실제 선택 순서는 이렇게 잡는다

Match intervention scope to the cause
Figure 11. Analysis, physical and architectural interventions change different assumptions and require different verification. Original schematic by VLSI Korea.

먼저 잘못된 constraint·clock 관계·분석 mismatch를 제거한다. 그다음 hold deficit가 국소적인지, 큰 skew가 여러 endpoint를 동시에 괴롭히는지 구분한다. 후자라면 수많은 data buffer보다 clock architecture 검토가 먼저일 수 있다.

국소 위반에는 branch를 한정한 delay-cell·sizing·Vt·pin-arc 후보를 비교한다. 자리나 mask 제약이 크면 route detour·layer·via·metal-extension 후보를 검토하되, 실제 RC/SI와 주변 setup까지 포함한 결과로 선택한다. Setup과 hold가 같은 좁은 구간에서 충돌하면 fanout 분리·clone·clock ECO·setup 측 별도 최적화를 함께 고려한다.

Scan은 scan의 clocking과 lockup 구조로, functional architecture 문제는 latency와 검증 계약을 포함한 구조 변경으로 다룬다. 모든 후보의 판단 기준은 같다. 가장 빠른 경로를 충분히 늦췄는가, 가장 느린 경로와 이웃 경로는 여전히 안전한가, 그리고 그 결과가 최종 MCMM·SI·physical signoff에서도 남아 있는가.

Sources and scope

자료 확인일: 2026-09-17. 이 글의 ps 비교는 명시된 가상 계산이며 특정 PDK·library·고객 설계의 측정 결과가 아니다. 도표는 공개 원리에서 새로 작성한 VLSI Korea schematic이다. 실제 설계 command와 예외·margin의 변경은 해당 제품 버전, 공개 문서와 승인된 signoff 방법론을 따라야 한다.

본문의 직접 링크 외에 RC 모델의 기초는 David Harris의 공개 CMOS 강의, scan lockup의 공개 구조 사례는 Hierarchical scan architecture 특허에서 확인할 수 있다. 특허는 선택지가 제안된 근거이며 양산 성능이나 보편적인 공정 규칙을 입증하지 않는다. 본문은 AI 보조 조사·작성과 별도 기술 검수를 거쳤으며 검토 범위를 벗어난 사내 PDK·고객 정보를 사용하지 않았다.

댓글

VLSI KOREA BRIEFING

반도체를 읽는 안목, 메일함으로.

엔지니어의 시각과 산업의 흐름을 함께. 무료로 구독하세요.

이미 구독 중인가요? 로그인