본문 바로가기
# Semiconductor/- Tech Note

[ASIC] Metastability

by Graffitio 2024. 12. 13.
[ASIC] Metastability
728x90

[Metastability]


Metastability는 디지털 시스템에서 비동기 신호 또는 클럭 도메인 간 신호가 전송될 때,
FlipFlop의 출력이 불안정하거나 예측 불가능한 상태에 빠지는 현상을 의미함.

  1. Reason
    • 플립플롭의 setup timehold time 조건이 충족되지 않을 때 발생.
    • 클럭 도메인 간 데이터 전송에서 비동기 신호로 인해 타이밍 불확실성이 생김.
  2. Result
    • 플립플롭 출력이 안정된 논리 상태(0 또는 1)로 수렴하지 못하고
      중간 전압 상태를 유지하거나, 불확실한 시간 동안 흔들림.
    • 신호가 다음 단계의 논리 회로에 전파되면 오동작 가능.
  3.  Resolution Time
    • 메타스테이블 상태에서 안정된 상태로 전환되기까지 필요한 시간.
    • 설계 상에서는 이를 최소화하도록 **MTBF (Mean Time Between Failures)**를
      계산하여 신뢰성 평가
[Trouble]

 

  • 데이터 손상: 불안정한 값이 다음 회로로 전달되면서 잘못된 연산이 발생.
  • 신뢰성 저하: 예측 불가능한 동작으로 인해 전체 시스템의 성능에 영향을 미침.
  • 하드웨어 오동작: 특정 조건에서 치명적인 오류 발생 가능.

[Solution]

 

  1. 동기화 회로 설계
    • 2단 또는 3단 플립플롭 체인
      : 데이터를 안정화시키기 위해 여러 단계로 CDC 처리.
  2. FIFO (First In First Out) 메모리 사용
    • 클럭 도메인 간 데이터 버퍼링 및 동기화를 보장.
  3. Gray Code 사용
    • 데이터 전송 시 비트 변화를 최소화하여 메타스테이블리티 위험 감소.
  4. 타이밍 여유 제공
    • 클럭 주파수와 신호 타이밍을 조정하여 setup/hold time 조건을 만족.
  5. MTBF 계산 및 검증
    • 시스템의 신뢰성을 수치화하여 메타스테이블리티로 인한 오류를 평가.


[Example]


1. DFF x2

module synchronizer (
    input async_signal     ,   // 비동기 입력
    input clk              ,   // 클럭 신호
    output reg sync_signal     // 동기화된 출력
);
    reg stage1;
    always @(posedge clk)
    begin
        stage1 <= async_signal; // 1단계
        sync_signal <= stage1 ; // 2단계
    end
endmodule


2. FIFO를 활용한 CDC

module fifo_sync(
    input wire [7:0] data_in,   // 입력 데이터
    input wire wr_clk,          // 쓰기 클럭
    input wire rd_clk,          // 읽기 클럭
    output wire [7:0] data_out  // 출력 데이터
);
    // FIFO 메모리 및 동기화 로직 구현
endmodule

 

728x90

'# Semiconductor > - Tech Note' 카테고리의 다른 글

[ASIC] False path vs Async path  (0) 2024.12.13