𝗜/𝗢 𝗧𝗜𝗠𝗜𝗡𝗚 │ input delay 4 ns 하나로 setup과 hold를 다 맡겨도 될까?
`set_input_delay` single-value min/max modeling can overstate external-input hold margin

외부 칩에서 들어오는 DIN의 setup 리포트가 정상입니다. XDC에는 set_input_delay -clock sysClk 4 [get_ports DIN] 한 줄이 있습니다. 그런데 보드와 외부 칩의 최소 지연을 확인하니, 데이터는 clock edge 이후 빠르면 1 ns에도 FPGA 입력 핀에 도착합니다. 이 제약으로 hold까지 제대로 확인하고 있을까요?
set_input_delay는 FPGA 밖에서 데이터가 입력 핀까지 오는 시간을 기준 clock에 맞춰 모델링합니다. -max는 가장 늦은 도착을 setup 분석에, -min은 가장 이른 도착을 hold 분석에 사용합니다. Vivado에서는 두 옵션을 모두 생략하면 적은 값 하나가 min과 max에 똑같이 적용됩니다.
숫자로 보겠습니다. clock period는 10 ns, 외부 DIN 도착은 가장 빠를 때 1 ns, 가장 늦을 때 4 ns입니다. 입력 핀에서 capture FF까지 내부 경로는 min 0.5 ns / max 5 ns, FF의 hold는 0.4 ns, setup은 0.5 ns라고 하겠습니다. 같은 상승 에지의 system-synchronous 예시이며, 설명을 위해 clock skew와 uncertainty는 제외합니다.
setup은 다음 capture edge를 봅니다. 실제 최대 경로 기준 slack은 10 − (4 + 5) − 0.5 = +0.5 ns입니다. 입력 지연을 4 ns 하나로 적어도 이 setup 숫자는 맞습니다.
hold는 현재 capture edge 직후를 봅니다. 올바른 최소 경로 slack은 (1 + 0.5) − 0.4 = +1.1 ns입니다. 하지만 단일 지연값 4 ns를 min에도 적용하면 (4 + 0.5) − 0.4 = +4.1 ns로 보입니다. 데이터가 실제보다 3 ns 늦게 온다고 가정해 hold 여유를 부풀린 것입니다.
이 인터페이스라면 제약을 다음처럼 나눠야 합니다.
create_clock -name sysClk -period 10 [get_ports CLK0]
set_input_delay -clock sysClk -max 4 [get_ports DIN]
set_input_delay -clock sysClk -min 1 [get_ports DIN]
실무에서는 1 ns와 4 ns를 임의로 고르지 않습니다. 외부 소자의 Tco(min/max), data trace, 양쪽 clock trace의 빠른/느린 조합으로 입력 핀 기준 값을 계산합니다. 외부 clock latency를 별도로 모델링했다면 중복 계상도 피해야 합니다. 마지막으로 min/max timing report에서 기준 clock edge와 입력 핀 도착 시각을 직접 확인하세요. 값이 모두 양수일 필요는 없습니다. 데이터가 기준 clock보다 먼저 입력 핀에 도착하면 input delay는 음수일 수 있습니다.
근거: AMD Vivado UG903, Input Delay / Min and Max Input Delay Command Options / Use of set_input_delay Command Options (2026.1)
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/Input-Delay
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/Min-and-Max-Input-Delay-Command-Options
https://docs.amd.com/r/en-US/ug903-vivado-using-constraints/Use-of-set_input_delay-Command-Options
AMD UG949, Defining Input Delays (2026.1)
https://docs.amd.com/r/en-US/ug949-vivado-design-methodology/Defining-Input-Delays