본문 바로가기
IT_Study/ASIC_Study

[CDC] 01. Metastability란 무엇인가?

by 두번째얼룩 2022. 2. 21.

 이전 글에서는 서로 다른 두 Clock을 사용하는 Register들을 연결하는 경로가 존재할 때 Register 간의 타이밍을 잡을 수 없다는 것을 알아보았다. 그렇다면 Timing violation이 발생하면 어떤 문제가 생기는지 알아보자.

 Timing violation이 발생하는 상황, 예를 들어 destination register의 setup/hold timing을 맞추지 못한 경우 destination register의 출력은 metastable 상태로 전환될 수 있다. 이러한 metastable 상태에서의 Register 출력은 정상 전환 시점 이후에도 High state(1'b1)와 Low state(1'b0) 사이의 값에 머무른다. 이런 상황을 Metastability라고 이야기한다.

아래 그림은 해당 상태를 잘 보여주는 그림이다.

*[1] Old value/New value 둘 다 될 수 있는 Metability 상태

 타이밍 다이어그램으로 그리면 아래와 같다. 아래 동그라미로 표시된 부분처럼 0/1로 수렴하지 않는 상태를 의미한다. 

*[2] Metastability, Timing diagram

그러면 이 Register의 출력을 입력으로 하는 다른 Register는 어떤 동작을 할 것인가? 이 Metastable 상태가 전이될 수 있고, 1/0 중 하나의 값으로 수렴할 수 도 있다. Metastable 상태가 전이가 될 확률이 존재하여, 일정 조건에서는 이 전이 확률을 극도로 낮출 수 있다. 

 Metastable 상태로 빠질 수 있는 확률을 MTBF(Mean Time Between Failures) 관점에서 아래와 같이 계산할 수 있다. 분모가 감소하면 MTBF은 증가하므로 Frequency가 낮을수록 MTBF는 증가하며, 이를 다시 말하면 Metastable 상태로 빠질 확률이 낮아짐을 의미한다. 

*[2] MTBF 계산식

그런데 이 MTBF을 증가시키는 방법이 있다. 바로 Register를 아래와 같이 Chain으로 연결하는 방법이다. 

*[1] 2-stage synchornizer

Chain으로 연결하면 아래와 그래프와 같이 MTBF는 증가하게 된다. 각 Tech별로 값은 다를 수 있으니, 경향성만 살펴 보면 된다. 이때, 가로축 T는 Clock period 이므로 Freq. 에 반비례한다. 따라서 T가 크다는 말은, Freq가 작다는 말과 같으므로 위의 식과도 일맥상통함을 알 수 있다. 

*[3]: Stage synchonizer 개수별 MTBF

정리해보면, Metastability라는 것은 1 혹은 0으로 결정되지 않은 상태를 의미한다. 이 Metastable 상태는 다른 Register로 전이될 수 있으며, 전이되는 단계에 따라 Metastable 상태가 없어질 수 도 있다. 이러한 상황을 피하기 위해서 synchronizer chain을 구성하여 최종 Register의 출력이 Metastable 상태가 되는 확률을 낮춘다. 

 

그런데 Synchronizer를 통해서 metastable 상태에서 벗어났더라도 그 값은 0 혹은 1으로 시점에 따라 변화될 것이다. 그러므로 의도한 신호 값이 출력되지 않았을 경우도 발생한다. 이러한 점을 해결하기 위하여 다양한 방법들이 존재하였다. 다음 글에서는 이런 방법들에 대해서 알아보도록 하겠다.  

 

Reference

*[1]: Understanding Metastability in FPGAs, Altera Corporation

*[2]: Cummings, Clifford E. "Clock domain crossing (CDC) design & verification techniques using SystemVerilog." SNUG-2008, Boston (2008).

*[3]: S. Beer, J. Cox, T. Chaney and D. M. Zar, "MTBF Bounds for Multistage Synchronizers", 2013 IEEE 19th International Symposium on Asynchronous Circuits and Systems, 2013, pp. 158-165, doi: 10.1109/ASYNC.2013.18.

댓글