조합 논리의 정적 해저드와 동적 해저드
불균등한 경로 지연이 정적, 동적, 기능 해저드를 만드는 방식, 합의항으로 2단 정적 해저드를 제거하는 방법, 물리 구현을 검증하는 방법을 알아봅니다.
요약: 정적 해저드는 입력 전환 중에 일정하게 유지되어야 하는 출력에서 발생할 수 있는 펄스이고, 동적 해저드는 한 번만 전환되어야 할 출력이 여러 번 전환되는 현상입니다. 한 번에 하나의 입력만 바뀐다고 가정하는 2단 SOP 네트워크에서는 인접한 모든 1-셀 쌍을 공통 함의항으로 덮어야 합니다. 추가한 합의항은 불 함수는 유지하면서 위험한 인계 구간을 막습니다. 이 증명은 다중 입력 변화, 다단 매핑, 비동기 피드백, 또는 합성이 중복 논리를 제거하는 경우까지 자동으로 포괄하지 않습니다.
진리표는 안정된 입력/출력 값만 지정합니다. 신호가 서로 다른 지연을 가진 게이트를 통과하는 동안에 무엇이 일어나는지는 지정하지 않습니다. 따라서 같은 불 함수를 구현한 두 회로는 모든 안정 행에서 일치하면서도 입력이 바뀐 뒤 몇 나노초 동안은 다르게 동작할 수 있습니다.
이런 과도 현상이 비동기 제어, 클록 또는 리셋 입력, 외부 핀, 레벨 감응 상태 소자, 샘플링 에지에 도달하면 중요해집니다.
해저드, 글리치, 레이스
둘 이상의 관련 신호 경로가 시간상 경쟁하면 레이스가 존재합니다. 해저드는 허용된 경로 지연 순서 중 일부에서 원치 않는 출력 전환을 만들 수 있는 회로 구조와 전환을 말합니다. 글리치는 실제 타이밍 조건 하나에서 관찰되는 펄스입니다.
이 구분은 유용합니다.
- 0 지연 시뮬레이션은 해저드를 숨길 수 있습니다.
- 어떤 지연 집합에서는 해저드가 있어도 펄스가 보이지 않을 수 있습니다.
- 공정, 전압, 온도, 배치, 배선은 어느 경로가 먼저 도착하는지를 바꿀 수 있습니다.
- “글리치를 보지 못했다”는 말은 해저드가 없다는 증명이 아닙니다.
정적 해저드
출력이 1로 유지되어야 하지만 잠시 0으로 떨어질 수 있으면 정적-1 해저드가 가능합니다. 이는 보통 2단 곱의 합(SOP) 네트워크에서 분석합니다.
정적-0 해저드는 그 쌍대입니다. 출력이 0으로 유지되어야 하지만 잠시 1로 올라갈 수 있습니다. 이는 보통 2단 합의 곱(POS) 네트워크에서 분석합니다.
교과서의 K-map 절차는 다음을 가정합니다.
- 네트워크가 명시된 2단 형태로 구현됩니다.
- 한 번에 하나의 입력 변수만 바뀝니다.
- 게이트와 인터커넥트는 임의의 양의 지연을 가질 수 있습니다.
- 안정된 입력값은 의도한 불 함수를 만족합니다.
이 가정이 달라지면 증명도 달라져야 합니다.
정적-1 예제
다음을 생각해 봅시다.
일 때, 안정된 출력은 의 어느 값에서도 1입니다.
- 에서는 항 가 OR 출력을 높게 유지합니다.
- 에서는 항 가 출력을 높게 유지합니다.
가 1에서 0으로 전환되는 동안, 직접 경로가 를 비활성화한 뒤에야 인버터 경로가 를 활성화할 수 있습니다.
| 구간 | 경로 | 경로 | |||
|---|---|---|---|---|---|
| 전환 전 안정 상태 | 1 | 0 | 1 | 0 | 1 |
| 가능한 인계 공백 | 0 | 0 | 0 | 0 | 0 |
| 전환 후 안정 상태 | 0 | 1 | 0 | 1 | 1 |
가운데 행은 또 다른 진리표 입력이 아닙니다. 구현 내부에서 도착 시간이 달라지는 상황을 나타냅니다.
카르노 맵에서 이음새 찾기
변수 , , 의 경우는 다음과 같습니다.
BC
00 01 11 10
+----+----+----+----+
A=0 | 0 | 1 | 1 | 0 |
+----+----+----+----+
A=1 | 0 | 0 | 1 | 1 |
+----+----+----+----+
원래 SOP는 다음을 사용합니다.
- : 인 윗행 셀을 위한 항
- : 인 아랫행 셀을 위한 항
A=0, B=1, C=1 셀과 A=1, B=1, C=1 셀은 A만 다르므로 인접합니다. 하지만 선택한 어떤 함의항도 두 셀을 모두 덮지 않습니다. A가 바뀔 때 출력의 책임은 한 곱항에서 다른 곱항으로 넘어가야 합니다. 이 덮이지 않은 인접성이 정적-1 이음새입니다.
합의항 추가하기
와 의 합의항은 입니다.
합의 정리는 다음과 같습니다.
따라서 추가한 항은 어떤 안정된 진리표 결과도 바꾸지 않습니다. 그러나 인 해저드 전환 동안에는 가 1로 유지되어 OR 출력을 높게 붙잡습니다.
카르노 맵에서 는 두 인접 셀을 세로로 잇는 그룹입니다. 일반적인 2단 SOP 절차는 다음과 같습니다.
- 인접한 1-셀 사이에서 허용되는 모든 단일 변수 전환을 식별합니다.
- 구현한 덮개에 각 쌍을 가로지르는 함의항이 있는지 확인합니다.
- 덮이지 않은 쌍마다 적절한 합의항/덮개 항을 추가합니다.
- 합성과 물리 구현이 의도한 구조를 보존하는지 확인합니다.
쌍대 절차는 POS 구현에서 인접한 0-셀을 덮어 정적-0 해저드를 막습니다.
최소 논리와 해저드 없는 논리는 서로 다른 목표를 최적화합니다
최소 SOP는 가 부울 대수적으로 중복되므로 항 수가 더 적습니다. 해저드 없는 SOP는 물리적 중복을 의도적으로 유지합니다.
여기에는 구현 문제가 생깁니다. 논리 합성기는 보통 불 함수를 바꾸지 않는 항을 제거해도 됩니다. 또한 식을 다단 네트워크로 인수분해하거나 내부 동작이 다른 LUT와 셀에 매핑할 수 있습니다.
해저드 없음이 요구 사항이라면 다음을 수행하십시오.
- 주석이 아니라 구현 제약으로 표현합니다.
- 공급업체가 문서화한 보존 또는 해저드 없는 방법론을 사용합니다.
- 합성된 넷리스트를 검사합니다.
- 매핑된 설계에서 타이밍을 고려해 검증합니다.
- 대상 흐름이 지원한다면 최종 배선 구현을 검증합니다.
RTL 식만으로는 물리적 합의 경로가 최적화를 거쳐 남는다고 보장할 수 없습니다.
동적 해저드
동적 해저드는 올바른 출력이 한 번 바뀌어야 하는데, 안정되기 전에 구현이 여러 번 바뀔 수 있는 현상입니다. 예를 들면 0 → 1 → 0 → 1입니다.
동적 해저드는 여러 지연이 상호작용해야 하며, 다단 재수렴 논리와 관련됩니다. 단일 입력 변화 모델에서 관련 정적 해저드가 없다고 증명된 2단 네트워크는 추론하기 쉽지만, 인수분해하거나 기술 매핑한 구현은 더 이상 그 구조가 아닐 수 있습니다.
임의의 동적 해저드에 통하는 보편적인 “항 하나 추가” 해결책은 없습니다. 실무적 대응에는 다음이 포함됩니다.
- 해저드 없는 증명이 가능한 형태로 재설계하거나 다시 합성합니다.
- 민감한 소비자에 도달하기 전에 결과를 레지스터에 저장합니다.
- 비동기 동작을 위해 설계한 핸드셰이크나 상태 기계 방식을 사용합니다.
- 대상별 글리치 없는 멀티플렉서/클록 제어 셀을 적용합니다.
- 구현된 지연 동작을 검증합니다.
경로를 “균형화”하려고 임의의 지연 버퍼를 더하는 것은, 설계 방법론이 제한된 지연에 명시적으로 의존하고 이를 제약하지 않는 한 공정, 전압, 온도, 배선 전반에서 취약합니다.
다중 입력 변화와 기능 해저드
카르노 맵의 인접성은 변수 하나의 변화를 나타냅니다. 두 독립 입력이 비슷한 시점에 변할 수 있다면, 회로는 여러 중간 안정 조합 중 하나를 거칠 수 있습니다. 단일 입력 정적 해저드가 없는 네트워크도 기능 해저드를 만들 수 있습니다.
예를 들어 00에서 11로의 전환은 물리적으로 01 또는 10을 경유할 수 있습니다. 불 함수가 그 중간 행에서 다르면, 함수를 바꾸지 않고 중복 게이트 하나로 두 경로를 모두 동등하게 만들 수는 없습니다.
시스템 수준의 선택지는 다음과 같습니다.
- 한 번에 하나의 입력만 바꾸는 프로토콜을 강제합니다.
- 적절한 경우 한 번에 한 비트만 전환되도록 전이를 인코딩합니다.
- 관련 제어 신호를 동기화하고 레지스터에 저장합니다.
- 요청/승인 핸드셰이크를 사용합니다.
- 유효 신호 이후에만 일관된 데이터 묶음을 캡처합니다.
- 동시 입력 변화를 조합적으로 해석하지 않도록 인터페이스를 재설계합니다.
그레이 코드는 특정 인접 상태 문제에 도움이 되지만, 임의의 버스를 위한 일반 해법은 아닙니다.
동기 논리가 글리치를 가두는 경우
조합 결과가 플립플롭 D 입력만 구동하고, 샘플링 에지 전까지 셋업 마진을 두고 네트워크가 안정되며 홀드 시간 동안 안정적으로 유지된다면, 내부 글리치가 아키텍처 상태가 되지 않을 수 있습니다.
이 말에는 한계가 있습니다.
- 글리치도 동적 전력을 소비합니다.
- 서로 다른 타이밍을 가진 다른 경로로 전파될 수 있습니다.
- 비동기 리셋, 세트, 클록, 인에이블, 핸드셰이크에서는 위험합니다.
- 타이밍 마진이 줄면 캡처될 수 있습니다.
- 핀 또는 칩 선택 신호에서 외부로 보일 수 있습니다.
일반 조합 네트워크를 통과시키는 방식으로 클록을 만들지 마십시오. 집적 클록 게이팅 셀, FPGA 클록 제어 리소스, 또는 인에이블 기반 동기 설계를 사용하십시오.
비동기 해저드와 본질적 해저드
비동기 순차 회로는 전역 샘플링 에지 없이 전이가 상태에 영향을 주도록 의도적으로 허용합니다. 이 회로에는 지연 가정, 상태 인코딩, 핸드셰이크, 해저드 없는 조건을 명시한 설계 방법론이 필요합니다.
본질적 해저드는 입력 변화가 필요한 모든 지점에 도달하기 전에 내부 상태가 진행할 수 있도록, 입력이 비동기 피드백 구현을 통해 불균등하게 전파되는 것과 관련됩니다. 이는 단순히 조합 정적 글리치의 다른 이름이 아니며, 합의항이 일반적으로 제거하지도 못합니다.
본질적 해저드 처리는 비동기 기계의 명세와 구현에 속합니다. 흔히 피드백 지연 가정이나 다른 회로 구조를 수반합니다. 동기 논리로 바꾸는 것은 하나의 선택지일 뿐, 모든 해저드가 사라진다는 증명은 아닙니다.
올바른 모델로 시뮬레이션하기
0 지연 디지털 시뮬레이터는 보통 모든 종속 노드를 같은 시뮬레이션 순간에 바꾸므로 펄스가 보이지 않을 수 있습니다. 해저드를 연구하려면 모델에 불균등한 전파 지연을 포함해야 합니다.
- 를 구성합니다.
- 을 유지합니다.
- 직접 A 경로와 반전 A 경로 사이에 문서화된 지연 차이를 지정하거나 도입합니다.
- A만 토글합니다.
- 모델링한 지연보다 작은 시간 분해능으로 F를 검사합니다.
- 를 추가하고 반복합니다.
시뮬레이터의 버퍼 컴포넌트에 논리 지연이 0이면 버퍼를 연쇄해도 아무것도 증명하지 못합니다. 지연 인지 기능, 게이트 수준 타이밍 시뮬레이션, 또는 물리 측정을 사용하십시오.
한 지연 할당에서 펄스가 없었다는 사실은 그 실행에 대한 증거일 뿐, 허용되는 모든 지연에 대한 증명은 아닙니다.
검증 체크리스트
- 어떤 입력이 함께 변하도록 허용됩니까?
- 출력은 일정하게 유지되어야 합니까, 아니면 한 번 전환되어야 합니까?
- 구현된 네트워크는 2단, 인수분해, LUT/셀 매핑 중 어느 것입니까?
- 관련된 모든 인접 K-map 쌍이 덮개 항을 공유합니까?
- 합성이 중복성을 제거하거나 인수분해할 수 있습니까?
- 출력은 레지스터 D 입력만 구동합니까, 아니면 민감한 제어를 구동합니까?
- 매핑과 배선 후 최소 및 최대 지연을 확인했습니까?
- 비동기 피드백과 본질적 해저드를 공인된 방법론으로 처리했습니까?
다음 단계
클록 스큐 가이드는 불균등한 클록 도착이 셋업 및 홀드 마진을 어떻게 바꾸는지 설명합니다. 카르노 맵의 돈트 케어 조건은 지정되지 않은 입력 조합이 최소화에 언제 도움이 되는지 설명합니다. 단, 해저드 분석에 돈트 케어를 사용하기 전에 시스템 계약으로 정당화되어야 합니다.



