FPGA 설계에서 메타스테이빌리티 줄이기

Jason Howie
|  작성 날짜: 2017/02/21 화요일  |  업데이트 날짜: 2020/11/11 수요일

여기에서는 디지털 회로, 그리고 따라서 FPGA 설계와 관련된 메타안정성 개념을 살펴보고, 그 효과를 완화하는 검증된 설계 원칙을 준수함으로써 그 '출현'을 크게 줄일 수 있는 방법에 대해 알아봅니다.

메타안정성! 이것이 미래의 용기나 힘의 장의 무결성과 관련이 있을 것이라고 생각하는 것은 용서받을 수 있습니다: "캡틴, 워프 드라이브의 플럭스 삼각측량기와 크리오닉 봉투의 메타안정성이 위험 수준에 도달하고 있습니다!"

그러나 매일 디지털 전자제품과 함께 생활하는 여러분에게는, 이 용어는 아마도 경멸과 존경의 혼합된 반응을 받을 것입니다.

여기에서는 디지털 회로와 관련된 메타안정성 개념, 그리고 따라서 FPGA 설계와 관련하여, 그 '출현'을 단순히 검증된 설계 원칙을 준수함으로써 크게 줄일 수 있는 방법에 대해 살펴봅니다.

메타안정성 설명

메타스테이빌리티는 디지털 회로 내의 레지스터(또는 구식으로는 클록 플립플롭)의 출력과 출력 단자가 '메타스테이블 상태'에 들어갈 가능성과 관련이 있습니다. FPGA 장치는 일반적으로 D-타입 플립플롭을 사용합니다. 이러한 상태에 어떻게 들어갈 수 있는지 살펴보기 전에, 레지스터의 작동과 관련된 몇 가지 기본적인 핵심 타이밍 요소를 다시 살펴보는 것이 좋습니다:

‘설정 시간’ - 이는 다음 클록 엣지가 도착하기 전에 레지스터로의 입력이 안정적이어야 하는 최소 시간입니다. 데이터 시트에서는 일반적으로 Tsu로 나타납니다.

쉽고 강력하고 모던한 서비스

세계에서 가장 신뢰할 수 있는 PCB 설계 시스템

‘유지 시간’ - 이는 클록 엣지가 도착한 후 입력이 동일한 안정된 상태로 계속 있어야 하는 최소 시간입니다. 데이터 시트에서는 일반적으로 Th로 나타납니다.

‘클록-출력 지연 시간’ - 이는 클록 엣지가 도착한 후 레지스터의 출력이 변경되는 시점까지의 시간입니다. 이는 레지스터의 '정착 시간' 또는 '전파 지연'으로도 언급됩니다. 예를 들어, 데이터 시트에서는 Tco, 또는 Tphl 및 Tplh로 나타날 수 있습니다.

신호가 두 비동기 클록 도메인 사이를 이동할 때마다 - 전체 설계 내에서 서로 다른 클록이나 관련 없는 클록으로 작동하는 디지털 부회로 - 메타안정성을 만날 가능성이 있습니다. 이는 클록되지 않은 설계 영역에서 동기 시스템으로 데이터 전송 시에도 마찬가지입니다 - 예를 들어 외부(외부의) 신호가 FPGA로 입력될 때입니다.

다음 이미지는 비동기 신호가 동기 시스템에 들어가는 두 가지 예를 보여줍니다. 상단 예에서 신호는 다른 클록 도메인 사이를 이동합니다. 하단 예에서는 클록되지 않은 시스템의 신호가 클록된(동기) 시스템으로 입력됩니다.

Asynchronous System and Synchronous System Graphic

Easy, Powerful, Modern

The world’s most trusted PCB design system.

문제는 한 클록 도메인의 데이터 신호가 다른 클록 도메인의 레지스터 논리에 도착할 때 발생합니다. 소스 도메인에서 오는 데이터 신호는 대상 도메인의 클록에 비해 언제든지 전환될 수 있습니다 - 두 도메인 사이에는 동기성이 없으며, 두 논리 부회로에서의 전환 속도에 대한 지식이 없습니다. 데이터 신호가 목적지 레지스터에 필요한 설정(Setup) 또는 유지(Hold) 시간을 위반하는 지점에서 전환되면, 해당 레지스터의 출력이 '메타안정 상태'에 들어갈 수 있습니다 - 출력 신호가 논리적 Low도 아니고 논리적 High도 아닌, 두 상태 사이의 불안정한 영역에 있는 상태입니다.

출력이 메타스테이블 상태로 남아 있는 시간이 레지스터의 지정된 ‘클록-출력 지연 시간’(정착 시간)을 초과할 수 있습니다. 대부분의 경우, 레지스터는 이 출력 불안정성을 빠르게 해결하고 두 개의 정의된 (그리고 안정된) 상태 중 하나로 돌아갑니다. 그러나 설계에 있어 문제는 소수의 경우, 안정된 상태로 정착하는 시간이 충분히 빠르지 않거나 출력 신호가 잘못된 논리 레벨로 해결될 때입니다.

다음 이미지는 입력 데이터 신호의 전환에 따른 레지스터의 출력을 보여줍니다.

Output of a register

세 가지 입력을 고려하면:

Easy, Powerful, Modern

The world’s most trusted PCB design system.

입력 A: 입력이 레지스터의 설정 및 유지 시간을 준수하며, 출력은 장치의 클록-출력 지연 시간 후에 사용 가능합니다.

입력 B: 입력이 레지스터의 설정 시간 동안 전환되며, 출력은 클록-출력 지연 시간을 넘어 올바른 안정된 레벨로 정착할 때까지 메타스테이블 상태가 됩니다.

입력 C: 입력이 레지스터의 유지 시간 동안 전환되며, 출력이 메타스테이블 상태가 됩니다. 출력이 클록-출력 지연 시간을 넘어 안정된 상태로 정착할 뿐만 아니라 잘못된 논리 레벨로도 정착합니다!

레지스터의 출력이 회로 내에서 이후의 레지스터 여러 개로 병렬로 연결되는 경우, 목적지 레지스터가 데이터를 다른 논리 레벨에서 캡처할 가능성이 있습니다. 이는 소스 레지스터에서 나온 메타스테이블 출력이 각 목적지 레지스터가 다음 데이터를 캡처하기 위해 클록되기 전에 안정된 상태로 정착했는지 여부에 따라 달라집니다. 소스와 목적지 레지스터 사이의 경로 지연과 메타스테이블 출력이 안정되기까지의 시간이 추가되면 문제는 더욱 복잡해집니다.

요약하자면, 메타스테이빌리티는 설계자에게 통계적 또는 확률적 적입니다. 사용된 장치와 설계에서의 회로 배치에 따라 메타스테이블 출력 상태가 발생할 수도 있고, 발생하지 않을 수도 있습니다. 만약 발생한다면, 설계 실패로 이어질 수 있어 해로울 수 있지만 – 운이 좋다면 장치의 정착 시간, 클록 속도 및 라우팅된 경로가 그 출현을 무해하게 만들 수도 있습니다. 하지만 설계자로서의 문제는 정말로 그 '기회'를 감수할 수 있는지입니다. 설계하는 제품이 의료 기반 설치나 상업용 제트기의 일부라면 – 설계의 실패는 치명적일 수 있습니다.

비록 메타스테이빌리티를 완전히 제거할 수는 없다 – 세상의 어떤 장치도 잠재적인 메타스테이빌리티 효과로부터 완전히 자유롭다고 주장할 수 없다 – 그것은 거의 '레이더 상의 작은 점'이 되도록 줄일 수 있다.

디자인의 신뢰성 측정으로서, 메타스테이빌리티 유발 실패와 관련하여, 우리는 평균 고장 간격 – 또는 MTBF라고 불리는 것에 대해 이야기한다. 메타스테이빌리티를 방치한 채 – 즉, 그 영향을 완화하기 위한 조치가 디자인에 포함되지 않은 경우 – MTBF는 몇 초에 불과할 수 있다. 메타스테이빌리티를 대항하기 위해 시험되고 검증된 디지털 디자인 방법론을 적용하고, 디자인에 사용되는 디지털 장치의 신중한 선택을 함으로써, MTBF는 상당히 증가할 수 있다. 고장 간격이 천 년. 백만 년. 수학적으로 계산하고 외삽하면 심지어 십억 년도 가능하다. 이러한 MTBF 값에서, 해당 디자인은 '매우 신뢰할 수 있는' 또는 사실상 '실패 안전'('실패 없음'이라고 해야 할까)으로 인증될 수 있다 – 하지만 그림을 보면 알 수 있다.

다음 섹션에서는 디자이너로서 어떻게 MTBF를 연장할 수 있는지, 그리고 장치 기술이 어떤 역할을 하는지 살펴본다.

비동기 신호 동기화

가장 널리 받아들여지고 있는 메타안정성 문제에 대한 해결책 중 하나는, 들어오는 비동기 신호를 대상 동기 회로의 클록과 동기화하기 위해 전면 회로를 추가하는 것입니다. 가장 간단한 형태에서, 이 회로는 하나 이상의 D-타입 플립플롭으로 구성되며, 대상 시스템 클록을 사용하여 클로킹됩니다. 이를 '동기화 레지스터 체인' 또는 단순히 '동기화기'라고 합니다.

각 레지스터에 의해 부과되는 추가 지연은 들어오는 신호가 메타안정 상태에서 회복할 수 있는 시간을 제공합니다. 체인에 있는 레지스터가 더 많을수록 더 많은 지연이 발생하고 따라서 메타안정 출력이 해결될 수 있는 시간이 더 많아집니다. 전체 지연은 종종 '메타안정성 정착 시간'으로 알려져 있습니다. 일반적으로 동기화 회로는 두 개의 레지스터로 구성되지만, 의료 및 군사와 같은 중요한 응용 프로그램의 경우 세 개가 드물지 않습니다.

다음 이미지는 동기 시스템의 전면에 2단계 동기화기를 추가하여 들어오는 비동기 신호를 동기화하는 예를 보여줍니다.

adding a 2-stage synchronizer to the front-end of a synchronous system

서로 다른 클록 도메인 간 또는 FIFO 로직 간의 핸드셰이킹 로직은 올바른 데이터 값을 수신하기 위해 – 전면 동기화 외에도 – 사용됩니다. 이는 여러 비동기 신호의 버스 그룹을 다룰 때 특히 중요한데, 각 신호는 언제든지 독립적으로 전환될 수 있기 때문입니다.

가장 약한 고리...

디지털 설계에서는 여러 다른 클록 도메인이 있을 수 있으며, 이들 사이에는 수많은 신호가 전달될 수 있습니다. 또한, 외부에서 오는 다양한 비동기 신호(특히 FPGA에서 구현된 설계에서 외부 주변 구성 요소 및 통신 인터페이스를 활용하는 경우)가 있을 수 있습니다. 이러한 경우, 전체 시스템 내에서 다양한 비동기 신호 전송을 처리하는 많은 동기화 레지스터 체인을 찾는 것이 드문 일이 아닙니다.

MTBF 측면에서 각 동기화 체인은 자체 '값'을 가집니다. 디자인의 전체 실패율은 내부의 동기화 체인 각각의 개별 실패율의 합이며, 실패율은 1/MTBF이므로, 다른 체인에 비해 MTBF가 감소한 동기화 체인은 디자인의 전체 MTBF에 전반적으로 해로운 영향을 미칠 것임을 쉽게 알 수 있습니다. 실제로, 디자인의 MTBF는 가장 나쁜 동기화 체인의 MTBF를 기본적으로 따르게 되며, 만약 다섯 체인이 MTBF가 백만 년이고 여섯 번째 체인이 MTBF가 50년이라면 이는 재앙이 될 수 있습니다!!

이를 처리하기 위한 해결책은 디자인에서 가장 성능이 낮은 동기화 체인에 또 다른 레지스터 단계를 추가하여 메타안정성 정착 시간을 늘리고 그 체인의 MTBF를 - 그리고 따라서 전체 디자인의 MTBF를 - 상당히 (아니면 기하급수적으로!) 향상시키는 것입니다.

장치 기술 - 빠른 것 대 소형화

요약하자면, 메타안정성(이 상태에 안정적인 것은 전혀 없지만!)은 들어오는 비동기 신호가 레지스터의 설정 시간(Set-Up) 및/또는 유지 시간(Hold Time)을 위반하여 전환될 때 발생합니다. 설정 시간 + 유지 시간의 전체 길이는 본질적으로 메타안정성이 발생할 '창'을 정의합니다 - 메타안정성 창이라고 할 수 있습니다.

이치에 따르면, 레지스터의 설정(Setup) 및 유지(Hold) 시간이 빠를수록 메타안정성 창이 작아집니다. 실제로, 더 빠른 로직 패밀리는 이러한 빠른 시간을 보여주며, 따라서 메타안정 이벤트의 확률을 감소시킵니다. 메타안정 이벤트가 발생하더라도(메타안정성을 완전히 제거할 수는 없음을 기억하세요) 레지스터는 충분히 빨리 회복할 수 있습니다. 예를 들어, 74F 패밀리의 레지스터는 74LS 패밀리에서 사용된 장치보다 더 나은 MTBF(평균고장간격)을 이끌어낼 것입니다 - 장치 속도 스펙트럼의 두 끝을 나타냅니다.

FPGA에서는 공정 기하학의 감소(180nm에서 시작하여 90nm를 거쳐 65nm, 40nm 이상으로)가 더 빠른 트랜지스터 스위칭 속도로 이어집니다 - 일반적으로 메타안정성으로 인한 MTBF를 향상시킵니다. 그러나 크기가 줄어드는 것은 잠재적인 패널티 없이는 아닙니다. 기하학적 축소는 자연스럽게 공급 전압의 감소를 가져옵니다. 메타안정 상태에서, 레지스터의 출력은 일반적으로 공급 전압의 절반입니다. 공급 전압이 점점 작아짐에 따라, 전체와 절반 사이의 전압 차이가 좁아지면서, 회로의 이득이 감소하고 레지스터가 메타안정 상태에서 회복하는 데 더 긴 시간이 걸립니다.

FPGA 공급업체는 일반적으로 이러한 지속적으로 감소하는 공정 기하학을 사용하는 물리적 장치에서 메타안정성에 대한 강건함을 보장하기 위해 엄격한 메타안정성 분석을 수행합니다.

유용한 링크

다음 링크를 사용하여 디지털 전자 설계에서 본질적으로 무시할 수 있는 현상인 메타스테이빌리티 현상을 더 자세히, 더 깊이 살펴보는 외부 문서에 접근하십시오. 이러한 문서 중 많은 것들이 플립플롭의 MTBF를 계산하는 데 사용되는 방정식을 살펴보고, 전체 설계의 후속 MTBF를 살펴보며, 주제에 대한 추가 정보를 참조합니다.

디지털 로직 메타스테이빌리티 (www.interfacebus.com)

FPGA-FAQ 0017: 메타스테이빌리티에 대해 알려주세요 (Philip Freidin)

전자기기에서의 메타스테이빌리티 (Wikipedia)

메타스테이빌리티란 무엇인가? (www.asic-world.com)

설계에서의 메타스테이빌리티 (The VLSI Homepage)

백서: FPGA에서 메타스테이빌리티 이해하기 (Altera)

응용 노트: Virtex-II Pro FPGA에서의 메타스테이블 회복 (Peter Alfke, Xilinx)

응용 노트: 메타스테이빌리티와 ECLinPS 패밀리 (응용 엔지니어링, ON Semiconductor)

5-V 로직 회로에서의 메타스테이블 반응 (Texas Instruments)

작성자 정보

작성자 정보

Jason Howie is the Head of Technical Writing at Altium. He brings a wealth of technical writing experience and can often be heard rattling the keyboard into the early hours. Prior to joining Altium in May 2000, Jason spent just over 4 years at the Joint European Torus in Oxfordshire, UK, as part of the Machine Instrumentation & Protection Systems.

관련 자료

관련 기술 문서

홈으로 돌아가기
Thank you, you are now subscribed to updates.
Altium Need Help?