클록 도메인 교차 (Clock Domain Crossing)
쉽게 풀면
하나의 칩 안에도 서로 다른 주파수로 도는 시계가 여러 개 들어 있는 경우가 많습니다. 한 시계로 만든 신호를 다른 시계로 받는 순간에는 두 시계의 가장자리가 언제 겹칠지 알 수 없어서, 받는 쪽 플립플롭이 불안정한 상태에 빠질 수 있습니다. 이 경계를 안전하게 건너가도록 동기화 회로나 전용 버퍼를 넣어 설계하는 일을 클록 도메인 교차 처리라고 합니다.
왜 중요한가
현대 칩은 프로세서, 메모리 인터페이스, 통신 블록이 각각 다른 주파수로 동작하므로 이런 경계가 수십에서 수백 곳에 이릅니다. 여기서 생기는 오류는 시뮬레이션에서 잘 재현되지 않고 어쩌다 한 번씩만 나타나 디버깅이 극히 어렵기 때문에, 전용 검증 도구로 설계 단계에서 걸러내는 것이 표준 절차가 되었습니다. 시스템온칩 설계 방법론 논문에서 빠지지 않는 주제입니다.
논문에서는 이렇게 쓰입니다
단일 비트와 다중 비트 신호에 서로 다른 교차 기법을 적용한 설계를 설명한 문장입니다.
조금 더 깊게 보면
단일 비트 제어 신호는 두 개 이상의 플립플롭을 직렬로 둔 동기화기로 처리하지만, 원래 신호의 펄스가 받는 쪽 클록 주기보다 짧으면 놓칠 수 있어 펄스 확장이나 토글 방식을 함께 씁니다. 다중 비트 신호는 비트마다 도착 시점이 달라져 중간에 존재하지 않는 값이 잠깐 나타날 수 있으므로, 인접 값이 한 비트만 다른 그레이 부호를 쓰거나 요청·응답 핸드셰이크로 전체가 안정된 뒤에만 읽게 하거나, 양쪽 클록으로 각각 읽고 쓰는 비동기 선입선출 버퍼를 사용합니다. 검증에는 구조를 정적으로 점검하는 전용 도구와 임의 지연을 주입한 시뮬레이션을 병행합니다.
주의할 점
동기화기를 넣었다고 해서 다중 비트 신호가 안전해지는 것은 아닙니다. 각 비트가 독립적으로 동기화되면 서로 다른 주기에 도착해 엉뚱한 조합이 만들어질 수 있습니다. 디지털 회로 준안정성이 한 플립플롭에서 일어나는 현상이라면, 이 항목은 그 현상을 시스템 수준에서 다루는 설계 절차입니다.