본문 바로가기

"Clock clock1 is missing an asynchronous definition" 오류는 clock1과 다른 클럭 도메인 간에 비동기(asynchronous) 관계가 명확히 정의되지 않아서 발생하는 문제입니다. 클럭 도메인 간의 비동기 관계는 각 클럭이 독립적으로 동작함을 의미하며, GCA(Galaxy Clock Analyzer)와 같은 툴에서는 이러한 비동기 관계를 명확히 정의해야 신호 전달에서 메타스태빌리티 및 신호 무결성을 유지할 수 있습니다.

원인

  • clock1과 다른 클럭이 비동기적으로 동작하지만, 비동기 관계가 정의되지 않아 툴에서 경고를 발생시키는 경우입니다.
  • 클럭 정의 또는 경로 설정에서 비동기 크로싱이 명시되지 않았기 때문에 클럭 도메인 간의 신호 전달이 불안정하다고 판단될 수 있습니다.

해결 방법

  1. 비동기 경로 설정:
    • clock1과 비동기 관계에 있는 클럭 간에 비동기 경로를 명시적으로 정의합니다.
    • 예를 들어, Synopsys GCA나 타이밍 분석 툴에서 set_clock_groups 명령어를 사용하여 -asynchronous 옵션을 설정하면 비동기 관계를 정의할 수 있습니다.
    • 예시:
      set_clock_groups -asynchronous -group {clock1} -group {clock2}
  2. 비동기 Synchronizer 사용:
    • 클럭 도메인 크로싱을 위해 Synchronizer 또는 async FIFO를 삽입하여 비동기 클럭 도메인 간 신호가 안전하게 전달되도록 합니다.
    • Synchronizer 회로를 삽입하면 메타스태빌리티를 방지하고 비동기 신호가 올바르게 처리됩니다.
  3. 타이밍 예외 설정:
    • 타이밍 예외를 통해 clock1과 다른 클럭 간 경로를 False Path로 설정할 수도 있습니다. 이는 비동기 관계를 명시하여 툴에서 해당 경로를 분석하지 않도록 합니다.
    • 예시:
      set_false_path -from [get_clocks clock1] -to [get_clocks clock2]

비동기 관계를 명확히 정의하는 것은 클럭 도메인 간 신호 전달에서 중요한 요소이므로, 이러한 설정을 통해 경고를 해결하고 안전한 클럭 도메인 설계를 확보할 수 있습니다.

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.