𝗦𝗧𝗔 │ WNS가 +0.30 ns인데, timing signoff를 끝내도 될까?
Positive WNS does not certify unconstrained paths: missing AUX_CLK timing clock

FPGA 타이밍 요약에 WNS +0.30 ns가 보입니다. 빨간 경로가 없으니 끝난 것 같죠. 그런데 보드에서는 특정 동작만 간헐적으로 실패합니다. 이럴 때는 가장 느린 경로를 다시 보기 전에, 아예 분석 대상에서 빠진 경로가 없는지 확인해야 합니다.
두 개의 독립적인 외부 clock을 쓰는 예를 들어 보겠습니다. MAIN_CLK는 100 MHz(주기 10 ns), AUX_CLK는 200 MHz(주기 5 ns)입니다. XDC에는 MAIN_CLK의 create_clock만 있고 AUX_CLK 제약은 빠졌습니다. 이 경우 MAIN_CLK 경로에서 계산된 WNS가 양수여도 AUX_CLK 쪽 FF 경로가 5 ns 요구를 만족하는지는 그 숫자로 알 수 없습니다. +0.30 ns는 분석된 경로의 결과이지, 설계 전체에 대한 보증이 아닙니다.
Vivado UG906의 Check Timing에서 no_clock는 정의된 timing clock이 닿지 않은 clock pin을, unconstrained_internal_endpoints는 timing requirement가 없는 내부 endpoint를 찾습니다. Timing Summary의 Unconstrained Paths 섹션은 제약 누락으로 분석되지 않은 경로를 모아 보여 줍니다. clock이 없는 쪽은 clock 이름이 비어 있거나 NONE으로 표시될 수 있습니다.
실무에서는 합성 또는 구현 결과를 연 뒤 check_timing으로 누락 항목을 확인하고, report_timing_summary -report_unconstrained로 제외된 경로를 보세요. 이 옵션을 주지 않은 기본 Timing Summary에는 unconstrained path의 상세 보고가 포함되지 않습니다. AUX_CLK가 실제 외부 primary clock이라면 포트에 주기 5 ns의 create_clock을 정의하고 다시 분석합니다. 내부 생성 clock이라면 회로의 clock 구조와 Vivado의 자동 생성 여부를 먼저 확인한 뒤 그에 맞게 제약해야 합니다.
리뷰의 종료 조건은 ‘WNS ≥ 0’ 한 줄이 아닙니다. 의도적으로 제외한 경로를 제외하고, 필요한 clock과 endpoint가 모두 분석 대상에 들어왔는지 확인하세요. 그 다음에야 routed design의 setup·hold와 exception을 보고 signoff를 판단할 수 있습니다. 위 +0.30 ns는 원리를 설명하는 예시 값입니다.
근거: AMD Vivado UG906 (2026.1), Check Timing Section / Unconstrained Paths Section / Report Timing Summary; AMD UG835 (2026.1), check_timing / report_timing_summary
https://docs.amd.com/r/en-US/ug906-vivado-design-analysis/Check-Timing-Section
https://docs.amd.com/r/en-US/ug906-vivado-design-analysis/Unconstrained-Paths-Section
https://docs.amd.com/r/en-US/ug835-vivado-tcl-commands/report_timing_summary
https://docs.amd.com/r/en-US/ug835-vivado-tcl-commands/check_timing