클록 도메인 경계를 먼저 정의하고 CDC 처리를 명시적으로 설계하는 결
멀티클록 RTL 설계 실습에서 CDC를 고려하지 않고 신호를 직접 연결했다가 시뮬레이션에서는 안 보이는 메타스타빌리티 문제가 생겼습니다. 합성 후 게이트 레벨 시뮬레이션에서야 랜덤 실패가 나타나 원인을 찾는 데 시간이 걸렸습니다. 그 이후로는 설계 초기에 클록 도메인 경계를 다이어그램으로 표시하고 경계를 넘는 신호마다 처리 방법을 명시합니다. 단일 비트는 2-플립플롭 동기화기, 다중 비트는 그레이 코드 또는 FIFO를 씁니다. RTL 주석에 CDC 처리 이유를 남겨두면 리뷰어가 의도를 바로 파악합니다.
CDC 명시 이후 게이트 레벨 시뮬에서 메타스타빌리티 실패가 없었습니다. 지금도 멀티클록 설계는 CDC 다이어그램부터 그립니다.