인프런 커뮤니티 질문&답변

tjrrjs88님의 프로필 이미지
tjrrjs88

작성한 질문수

설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)

[HDL 4장] 저장을 위한 기본 로직! D FilpFlop 을 이해하기 (Latch 를 만들면 안돼요! Flip Flop 을 만드셔야 합니다.)

HDL 4장 질문

작성

·

146

1

안녕하세요 🙂

강의영상을 보고 latch를 쓰지않는 이유를 알고 싶어 latch와 glitch에 대해 찾아보았지만 원하는 만큼의 내용을 찾지 못하여 글을 쓰게 되었습니다.

=>clock gating시 조합회로, Flip-Flop을 사용하면 glitch nosie가 발생할수 있어 latch를 사용하여 Clock을 만들지만 일반적으로 latch를 사용할 경우 edge 상태가 아닌 level상태에서 데이터가 전달되어 많은 시간이 소요되고 glitch 발생시 timing이 어긋나기 때문에 사용하지 않으며 입력, 출력 등에 대해 기술하지 않는 조건이 있을 경우 이전 값을 유지하기 위해 latch가 만들어지므로 이점도 유의 하여야한다.

위 내용이 검색하여 알게 된 내용입니다. 그 외에도 디지털 회로 설계시 latch를 쓰지않는 이유가 있을까요?

답변 2

1

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

안녕하세요 🙂

다음 글을 참고해주세요. 디지털 회로설계에서 RTL 의 의미를 생각해보면 될 것 같아요.

Clock edge 에 동기화 해서 data 가 저장된다. 가 핵심 입니다.

 

1. 글리치(Glitch)와 타이밍 문제

  • Latchlevel-sensitive한 장치로, 클록 신호의 특정 레벨(높거나 낮음)에 따라 동작합니다. 이 때문에 클록 신호가 안정적이지 않을 때(예: 클록의 변화 구간에서) 데이터가 의도치 않게 변할 수 있으며, 이는 글리치(glitch)를 유발할 수 있습니다. 이러한 글리치가 발생하면 데이터의 안정성에 영향을 미치며, 타이밍에 민감한 회로에서는 큰 문제가 될 수 있습니다.

2. 타이밍 클로저(Timing Closure) 문제

  • Latch는 클록의 엣지(edge)가 아닌 레벨(level)에서 동작하기 때문에, 데이터가 클록의 레벨이 유지되는 동안 언제든지 전달될 수 있습니다. 이는 클록이 높은 상태 또는 낮은 상태에서 얼마나 오랜 시간을 머무르는지에 따라 데이터 전달 타이밍이 달라질 수 있다는 것을 의미합니다. 이로 인해 타이밍 분석이 매우 복잡해지고, 원하는 타이밍 요구 사항을 만족시키기 어려울 수 있습니다. 반면, 플립플롭(Flip-Flop)은 클록의 엣지에서 동작하여 타이밍 예측이 훨씬 간단합니다.

3. 설계의 복잡성 증가

  • Latch를 사용하는 회로는 타이밍 분석이 복잡할 뿐만 아니라, 메타스테이블리티(metastability) 문제에 더 취약합니다. 이 문제는 데이터가 불확실한 상태에 머무르는 것을 의미하며, 회로의 불안정성을 야기할 수 있습니다. 설계 과정에서 이러한 문제를 해결하기 위해 더 많은 검증 작업이 필요하고, 이는 설계 복잡성을 증가시킵니다.

4. 글리치 노이즈

  • 질문에서 언급하신 것처럼 클록 게이팅(clock gating)과 같은 기술에서 조합 논리 회로와 플립플롭을 사용할 때 글리치 노이즈가 발생할 수 있습니다. 이를 피하기 위해 latch를 사용하는 경우도 있지만, latch 자체가 글리치에 취약하기 때문에 특별한 설계 기법이 요구됩니다. 이 역시 설계 복잡성을 높이는 원인이 됩니다.

5. 제어 신호의 복잡성

  • Latch는 level-sensitive 특성으로 인해 제어 신호가 복잡해질 수 있습니다. 클록 신호 외에도 데이터 전송을 제어하는 추가 신호가 필요할 수 있으며, 이러한 신호가 제대로 설계되지 않으면 데이터 안정성이 보장되지 않을 수 있습니다.

6. 전력 소모

  • Latch는 데이터가 바뀔 때마다 클록 신호의 변화에 민감하게 반응할 수 있기 때문에 불필요한 전력 소모가 발생할 수 있습니다. 특히 저전력 설계가 중요한 경우에는 이러한 전력 소모가 문제가 될 수 있습니다.

결론

Latch를 사용하지 않는 이유는 주로 타이밍 클로저 문제, 글리치 및 메타스테이블리티에 대한 취약성, 설계의 복잡성 증가, 전력 소모 등이 있습니다. 이러한 이유로 현대의 디지털 회로 설계에서는 플립플롭(Flip-Flop)이 더 선호되며, 타이밍 제어가 필요할 때는 일반적으로 플립플롭을 사용하여 안정적인 클록 엣지 기반의 설계를 채택하는 경우가 많습니다.

tjrrjs88님의 프로필 이미지
tjrrjs88
질문자

답변 감사합니다~~

0

안녕하세요, 인프런 AI 인턴입니다.

tjrrjs88님께서는 HDL 강의를 듣다가 latch 사용을 피해야 하는 구체적인 이유와 더불어 디지털 회로 설계 시 latch 사용과 관련된 문제점에 대해 자세히 알고 싶어 하시는 것 같습니다.

Latch는 실제로 디지털 회로 설계에서 사용을 피해야 할 부품 중 하나입니다. 주요 이유 중 하나는 다음과 같습니다:

  • Timing Control의 어려움: Latch는 level-sensitive device로, 입력 신호가 특정 레벨에 있을 때 데이터를 전달할 수 있습니다. 이 때문에 edge-triggered flip-flops보다 timing control이 어려우며, 시스템 전체의 timing 분석 및 최적화를 복잡하게 만듭니다.
  • Unintended Latch 생성: Verilog HDL 같은 하드웨어 기술 언어에서는 의도치 않게 latch가 생성될 수 있습니다. 예를 들어, 모든 입력 조건을 충족하지 않은 채로 certain output에 값을 할당하지 않으면, synthesizer는 이전 값을 저장하기 위해 unintended latch를 생성할 수 있습니다.
  • Power Consumption 증가: Latch는 clock gating 기법을 사용할 때 유용할 수 있으나, 전반적으로 power consumption을 증가시킬 수 있고, 이는 특히 배터리를 사용하는 임베디드 시스템에서 큰 단점이 될 수 있습니다.

관련된 자세한 설명을 원하신다면, 아래의 링크에서 질문자님과 비슷한 문제를 가진 다른 학습자의 질문에 대한 설계독학맛비님의 답변을 찾아보시는 것을 추천드립니다.

이러한 답변들은 latch 생성을 방지하는 방법과, Verilog HDL에서의 의도치 않은 latch 생성 사례를 다루고 있으므로, 질문하신 내용과 관련된 좋은 정보를 제공할 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

tjrrjs88님의 프로필 이미지
tjrrjs88

작성한 질문수

질문하기