𝗖𝗗𝗖 𝗠𝗧𝗕𝗙 │ 2-FF를 넣었는데 왜 배치가 중요할까?
Two-flop CDC synchronizer MTBF: publication retry of the reviewed 2026-10-06 draft

CDC 리뷰에서 “2-FF synchronizer가 있으니 됐다”는 말을 듣곤 합니다. 그런데 배치 후 보고서를 보니 똑같은 2-FF 체인 두 개의 MTBF가 크게 다릅니다. RTL은 같은데, 무엇이 달라졌을까요?
첫 번째 FF는 비동기 입력을 샘플링하므로 metastability에 빠질 수 있습니다. 두 번째 FF가 다음 destination clock edge에서 값을 읽기 전까지, 첫 번째 FF의 출력이 안정될 시간이 필요합니다. 이 시간을 늘려야 metastability가 다음 단계로 전파될 가능성이 줄어듭니다.
예를 들어 destination clock이 200 MHz라면 한 주기는 5 ns입니다. 단순화한 예에서 첫 번째 FF의 clock-to-Q, FF 사이 routing, 두 번째 FF의 setup에 1.4 ns가 쓰이면 안정될 여유는 약 3.6 ns입니다. 같은 두 FF라도 이 경로에 3.4 ns가 쓰이면 여유는 약 1.6 ns로 줄어듭니다. 실제 값은 clock skew, uncertainty, PVT 등을 포함한 구현 보고서로 확인해야 합니다.
핵심은 MTBF가 FF 개수만의 함수가 아니라는 점입니다. 일반적인 모델에서 MTBF는 안정될 시간에 대해 지수적으로 좋아지고, destination clock 주파수와 비동기 입력의 전환 빈도가 높아질수록 낮아집니다. 따라서 두 FF를 가까이 배치해 FF1→FF2 경로의 여유를 확보하는 일은 단순한 배선 정리가 아닙니다.
리뷰할 때는 체인이 실제로 synchronizer로 인식됐는지, 두 clock의 constraint가 올바른지, FF1→FF2의 timing slack과 입력 toggle rate가 현실적인지 함께 보세요. 무작정 stage를 늘리면 MTBF에는 도움이 되지만 latency도 늘어납니다.
근거: Intel, Understanding Metastability in FPGAs (MTBF 모델과 settling time)
https://cdrdv2-public.intel.com/650346/wp-01082-quartus-ii-metastability.pdf
Intel, Quartus Prime Pro Edition User Guide: Design Recommendations, §3 (2025-04-14)
https://www.intel.com/programmable/technical-pdfs/683082.pdf
AMD, Vivado UG835 report_synchronizer_mtbf (2026.1)
https://docs.amd.com/r/en-US/ug835-vivado-tcl-commands/report_synchronizer_mtbf