KR20160049465A - 클록 신호의 레이턴시를 조정하기 위한 방법, 장치, 및 프로그램 - Google Patents

클록 신호의 레이턴시를 조정하기 위한 방법, 장치, 및 프로그램 Download PDF

Info

Publication number
KR20160049465A
KR20160049465A KR1020150143590A KR20150143590A KR20160049465A KR 20160049465 A KR20160049465 A KR 20160049465A KR 1020150143590 A KR1020150143590 A KR 1020150143590A KR 20150143590 A KR20150143590 A KR 20150143590A KR 20160049465 A KR20160049465 A KR 20160049465A
Authority
KR
South Korea
Prior art keywords
clock
slack
circuit model
push
adjusting
Prior art date
Application number
KR1020150143590A
Other languages
English (en)
Other versions
KR102413712B1 (ko
Inventor
아샨 에이치. 초두리
브라이언 밀러
존 엠. 페도르
마이클 피. 루이스
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20160049465A publication Critical patent/KR20160049465A/ko
Application granted granted Critical
Publication of KR102413712B1 publication Critical patent/KR102413712B1/ko

Links

Images

Classifications

    • G06F17/5045
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K5/00Manipulating of pulses not covered by one of the other main groups of this subclass
    • H03K5/01Shaping pulses
    • H03K5/04Shaping pulses by increasing duration; by decreasing duration
    • H03K5/05Shaping pulses by increasing duration; by decreasing duration by the use of clock signals or other time reference signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • G06F17/5059

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Nonlinear Science (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

본 발명은 클록 스큐들을 조정하는 방법을 제공한다. 본 발명의 방법은 클록 메시에 의해 각각의 로직 회로의 종점으로 각각의 클록 신호를 입력함으로써 제어되는 로직 회로들을 포함하는 회로 모델을 수신하는 단계, 각각의 종점의 클록 스큐 스케쥴의 조정을 위한 후보들인 하나 이상의 종점들을 결정하고 음의 선행 슬랙 및 음의 후행 슬랙 각각과 관련되는 종점들 각각의 클록 스큐 스케쥴을 조정함으로써 증분의 레이턴시 조정을 회로 모델로 제공하는 단계, 증분의 레이턴시 조정을 회로 모델로 제공하는 단계를 여러 차례 반복하는 단계, 및 회로 모델에 대한 타이밍 검사를 수행하는 단계를 포함한다. 본 발명에 따라 전기 회로의 클록 스큐가 스케쥴링되는 경우, 전기 회로의 설계 목표가 만족될 수 있다.

Description

클록 신호의 레이턴시를 조정하기 위한 방법, 장치, 및 프로그램 {METHOD, DEVICE, AND PROGRAM FOR ADJUSTING LATENCY OF CLOCK SIGNAL}
본 발명은 전기 회로들의 설계에 관한 것으로, 좀 더 구체적으로는 클록 네트워크(Clock Network)의 타이밍(Timing)에 관한 것이다.
컴퓨터 시스템들과 같은 대부분의 디지털 회로 시스템들의 동작은 회로의 장치들의 시퀀스(Sequence) 및 페이싱(Pacing)에 영향을 주는 "클록"으로 알려진 주기적인 신호에 의해 동기화된다. 클록은 하나의 소스(Source)로부터 회로의 모든 메모리 요소들(레지스터(Register), 래치(Latch), 플립플롭(Flip-flop) 등으로도 불림)로 분배된다. 에지 트리거 방식의 플립플롭(Edge-triggered Flip-flop)을 이용하는 회로에서, 클록 에지 또는 틱(Tick)이 플립플롭에 도달한 경우, 플립플롭은 플립플롭 입력을 플립플롭 출력으로 전송하고, 이 새로운 출력 값들은 조합 로직(Combinational Logic)을 통해 흘러서 다음 클록 틱을 위해 다음 플립플롭의 입력으로 제공된다.
이상적인 경우, 전체 회로의 동작이 정확하게 예측될 수 있도록, 각 메모리 요소로의 입력은 그것의 최종 값에 도달하여 다음 클록 틱을 위해 시간 내에 계산된다. 시스템이 일반적으로 동작할 수 있는 최대 속도 또는 클록 주파수는 물리적인 구성 요소들, 온도, 및 경로의 차이로 인해 회로의 여러 요소 사이에서 발생하는 변화를 처리한다.
회로 설계에서, 클록 스큐(Clock Skew; 때때로 타이밍 스큐로 불림)는 동기 회로들에서 발생하는 현상으로서, 클록 회로로부터 보내진 클록 신호가 서로 다른 시각에 서로 다른 구성 요소들로 도달하는 현상이다. 이 현상은 배선으로 연결되는 길이의 차이, 온도 변화, 중간 장치들에서의 변화, 용량성 커플링(Capacitive Coupling), 물질의 결함, 클록을 이용하는 장치들의 클록 입력단들의 입력 커패시턴스의 차이, 무작위로 시스템 전체에 영향을 주는 변화, 클록 지터(Clock Jitter) 등과 같은 다양한 요인들에 의해 발생할 수 있다. 회로의 클록 속도가 증가함에 따라 타이밍은 더 중요해지고, 회로가 적절하게 기능하려면 각종 변화가 줄어들어야 한다.
일반적으로, 유용한 스큐에는 두 가지 유형이 있다. 양의(Positive) 스큐는 수신 측 플립플롭이 송신 측 플립플롭보다 클록 틱을 늦게 수신할 경우에 발생한다(푸시(Push)). 반대로, 음의(Negative) 스큐는 수신 측 레지스터가 송신 측 레지스터보다 클록 틱을 일찍 받을 경우에 발생한다(풀(Pull)). 0의 클록 스큐는 송신 측 및 수신 측 레지스터들에서 클록 틱이 실질적으로 동시에 도착함을 의미한다.
본 발명은 전기 회로를 설계하기 위해 클록 신호의 레이턴시를 조정함으로써 클록 스큐를 스케쥴링하기 위한 스킴(Scheme)을 제공할 수 있다.
본 발명의 일 실시 예에 따라 클록 스큐들을 조정하는 방법은, 각각의 로직 회로의 종점으로 각각의 클록 신호를 입력함으로써 로직 회로들 각각을 제어하는 클록 메시에 의해 제어되는 로직 회로들을 포함하는 회로 모델을 수신하는 단계; 각각의 종점의 클록 스큐 스케쥴의 조정을 위한 후보들인 하나 이상의 종점들을 결정하고, 음의 선행 슬랙과 관련되는 종점들 각각을 위하여 각각의 종점의 클록 스큐 스케쥴을 양자화된 양만큼 최대 푸시 문턱값까지 조정하고, 음의 후행 슬랙과 관련되는 종점들 각각을 위하여 각각의 종점의 클록 스큐 스케쥴을 양자화된 양만큼 최대 풀 문턱값까지 조정함으로써, 증분의 레이턴시 조정을 회로 모델로 제공하는 단계; 증분의 레이턴시 조정을 회로 모델로 제공하는 단계를 여러 차례 반복하는 단계; 및 동적 타이밍 검사 및 정적 타이밍 분석 중 적어도 하나를 통해 회로 모델에 대한 타이밍 검사를 수행하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에서, 증분의 레이턴시 조정을 회로 모델로 제공하는 단계는: 음의 선행 슬랙과 관련되는 종점들을 조정하는 과정 및 음의 후행 슬랙과 관련되는 종점들을 조정하는 과정을 별개의 단계들에서 수행함으로써, 하나 이상의 종점들 사이에서 푸시/풀 조정의 클록 레이턴시의 충돌들을 피하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에서, 각각의 종점의 클록 스큐 스케쥴을 조정하는 과정은: 동적 타이밍 검사 및 정적 타이밍 분석 중 적어도 하나를 수행하지 않고, 각각의 종점의 클록 스큐 스케쥴을 조정한 후 각각의 종점에 관한 새로운 슬랙을 임시로 추정하는 단계를 포함할 수 있다. 나아가, 증분의 레이턴시 조정을 회로 모델로 제공하는 단계는: 임시로 추정된 새로운 슬랙에 기초하여 조정을 위한 후보들인 종점들을 결정하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에서, 음의 선행 슬랙과 관련되는 종점들 각각의 클록 스큐 스케쥴을 조정하는 과정에서, 각각의 종점을 위하여 클록 스큐 스케쥴이 조정된 후 별개의 타이밍 갱신이 수행되지 않을 수 있다. 나아가, 증분의 레이턴시 조정을 회로 모델로 제공하는 단계는: 음의 선행 슬랙과 관련되는 종점들 각각의 클록 스큐 스케쥴을 조정한 후 음의 후행 슬랙과 관련되는 종점들 각각의 클록 스큐 스케쥴을 조정하기 전에 회로 모델에서 각각의 종점을 위한 슬랙을 재검사하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에서, 음의 후행 슬랙과 관련되는 종점들 각각을 위하여 각각의 종점의 클록 스큐 스케쥴을 양자화된 양만큼 조정하는 과정은: 선행 슬랙 및 후행 슬랙이 모두 음의 슬랙인 경우 양자화 스텝 크기 내에서 선행 슬랙 및 후행 슬랙을 동등하게 만들기 위해 클록 스큐 스케쥴을 조정하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에서, 증분의 레이턴시 조정을 회로 모델로 제공하는 단계를 여러 차례 반복하는 단계는: 복수의 파이프라인 단계들을 위해 클록 슬랙의 여러 단계의 사전 예측 스케쥴링을 수행하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에서, 클록 스큐 스케쥴이 조정되는 양자화된 양은 스큐 버퍼 회로와 관련되는 지연이고, 최대 풀 문턱값은 최대 푸시 문턱값보다 작을 수 있다.
본 발명의 일 실시 예에서, 증분의 레이턴시 조정을 회로 모델로 제공하는 단계를 여러 차례 반복하는 단계는: 회로 모델을 타이밍 수렴의 방향으로 재구성하기 위해 물리적인 합성 최적화와 함께 클록 스큐 스케쥴을 최적화하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에서, 각각의 종점의 클록 스큐 스케쥴의 조정을 위한 후보들인 하나 이상의 종점들을 결정하는 과정은: 하나 이상의 종점들을 풀 후보 및 푸시 후보를 포함하는 적어도 두 개의 카테고리들로 분류하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에서, 증분의 레이턴시 조정을 회로 모델로 제공하는 단계는: 슬랙 문턱값 대 스큐 값, 최대 풀 문턱값, 및 최대 푸시 문턱값의 선택을 통해 최악의 음의 슬랙 및 총 음의 슬랙 사이의 선호도를 선택하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에서, 클록 스큐 스케쥴을 조정하는 과정은 전력 복구 방식(Power Recovery Manner)으로 클록 스큐 스케쥴을 조정하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에서, 셋업 감소(Setup Reduction)를 위해 클록 스큐 스케쥴을 조정하는 과정은 홀드-어웨어 방식(Hold-aware Manner)으로 클록 스큐 스케쥴을 조정하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에서, 클록 스큐 스케쥴을 조정하는 과정은 홀드 감소(Hold Reduction)를 위해 클록 스큐 스케쥴을 조정하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에서, 클록 스케쥴을 조정하는 과정은 셋업-어웨어 방식(Setup-aware Manner)으로 홀드 감소를 위한 스케쥴링을 수행하는 단계를 포함할 수 있다.
본 발명의 다른 실시 예에 따른 장치는, 복수의 로직 회로로 클록 신호를 제공하도록 구성되는 클록 메시의 모델, 및 복수의 로직 회로의 하나 이상의 종점들에 클록 신호를 적용함으로써 각각이 제어되는 복수의 로직 회로의 모델을 포함하는 디지털 회로 모델을 저장하도록 구성되는 디지털 회로 수신기; 풀 후보 또는 푸시 후보인 하나 이상의 종점들을 식별하도록 구성되는 조정 후보 식별기; 풀 후보인 각각의 종점으로 제공되는 클록 신호의 클록 레이턴시를 제 1 양자화된 양만큼 줄이도록 구성되는 클록 풀 스케쥴러; 클록 풀 스케쥴러가 디지털 회로 모델을 처리한 후 디지털 회로의 타이밍 모델을 갱신하도록 구성되는 타이밍 모델 생성기; 및 푸시 후보인 각각의 종점으로 제공되는 클록 신호의 클록 레이턴시를 제 2 양자화된 양만큼 증가시키도록 구성되는 클록 푸시 스케쥴러를 포함할 수 있다. 디지털 회로 모델의 클록 타이밍은 조정 후보 식별기, 클록 풀 스케쥴러, 타이밍 모델 생성기, 및 클록 푸시 스케쥴러를 여러 차례 통하여 증가하도록 조정될 수 있다.
본 발명의 다른 실시 예에서, 풀 후보들을 조정하는 것과 푸시 후보들을 조정하는 것을 별개의 단계들에서 수행함으로써, 하나 이상의 종점들 사이에서 클록 레이턴시의 충돌들이 방지될 수 있다.
본 발명의 다른 실시 예에서, 선행 슬랙 및 후행 슬랙이 모두 음의 슬랙인 경우, 클록 푸시 스케쥴러는 선행 슬랙 및 후행 슬랙을 동등하게 만들기 위해 클록 신호의 클록 레이턴시를 조정하도록 구성될 수 있다.
본 발명의 다른 실시 예에서, 디지털 회로의 복수의 파이프라인 단계들을 위해, 슬랙의 여러 단계의 사전 예측 스케쥴링이 수행될 수 있다.
본 발명의 다른 실시 예에서, 클록 풀 스케쥴러는 디지털 회로 모델의 풀 후보인 종점의 클록 레이턴시를 줄이도록 구성될 수 있고, 클록 푸시 스케쥴러는 디지털 회로 모델의 푸시 후보인 종점의 클록 레이턴시를 증가시키도록 구성될 수 있다.
본 발명의 다른 실시 예에서, 클록 풀 스케쥴러는 제 1 풋 프린트를 갖는 느린 셀을 제 1 풋 프린트를 갖는 빠른 셀로 교체하도록 구성될 수 있고, 클록 푸시 스케쥴러는 제 1 풋 프린트를 갖는 빠른 셀을 제 1 풋 프린트를 갖는 느린 셀로 교체하도록 구성될 수 있다.
본 발명의 다른 실시 예에서, 디지털 회로 모델은 물리적인 레이아웃 정보를 포함하고, 클록 풀 스케쥴러 및 클록 푸시 스케쥴러는 디지털 회로 모델의 물리적인 레이아웃 정보가 무효로 되지 않도록 클록 레이턴시를 조정하도록 구성될 수 있다.
본 발명의 다른 실시 예에서, 조정 후보 식별기는 선행 슬랙 또는 후행 슬랙을 갖는 종점들을 식별하되, 선행 슬랙 또는 후행 슬랙이 슬랙 문턱값 대 스큐 값을 초과하는 경우에만 선행 슬랙 또는 후행 슬랙을 갖는 종점들을 식별하도록 구성될 수 있다.
본 발명의 또 다른 실시 예에 따라 디지털 회로의 클록 스큐 스케쥴들을 조정하기 위한 프로그램은, 기록 매체에 저장되어, 각각의 로직 회로의 종점으로 각각의 클록 신호를 입력함으로써 로직 회로들 각각을 제어하는 클록 메시에 의해 제어되는 로직 회로들을 포함하는 회로 모델을 수신하는 단계; 및 최소 슬랙 문턱값보다 큰 절대 슬랙의 양과 관련되는 하나 이상의 종점들을 결정하고, 음의 선행 슬랙과 관련되는 각각의 종점을 위하여 각각의 종점의 클록 스큐 스케쥴을 양자화된 양만큼 최대 푸시 문턱값까지 조정하고, 음의 후행 슬랙과 관련되는 각각의 종점을 위하여 각각의 종점의 클록 스큐 스케쥴을 양자화된 양만큼 최대 풀 문턱값까지 조정함으로써, 증분의 타이밍 갱신을 회로 모델로 제공하는 단계를 포함하는 처리를 컴퓨팅 장치에서 실행하도록 구성될 수 있다.
본 발명의 또 다른 실시 예에 따른 프로그램의 처리에서, 각각의 종점을 위하여 클록 스큐 스케쥴이 조정된 후 별개의 타이밍 갱신이 수행되지 않을 수 있다.
본 발명의 실시 예에 따라 전기 회로의 클록 스큐가 스케쥴링되는 경우, 전기 회로의 설계 목표(예컨대, 클록 주파수에서의 동작 가능성)가 만족될 수 있다. 몇몇 실시 예에 따르면, 성능과 전력 소모 사이의 트레이드 오프(Trade-off)를 고려하여 전기 회로가 설계될 수 있다.
도 1은 본 발명의 실시 예에 따른 시스템을 보여주는 개념도이다.
도 2는 본 발명의 실시 예에 따른 시스템을 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 방법을 설명하는 흐름도이다.
도 4는 본 발명의 실시 예에 따라 형성된 장치들을 포함하는 정보 처리 시스템을 보여주는 블록도이다.
전술한 특성 및 이하 상세한 설명은 모두 본 발명의 설명 및 이해를 돕기 위한 예시적인 사항이다. 즉, 본 발명은 이와 같은 실시 예에 한정되지 않고 다른 형태로 구체화될 수 있다. 다음 실시 형태들은 단지 본 발명을 완전히 개시하기 위한 예시이며, 본 발명이 속하는 기술 분야의 통상의 기술자들에게 본 발명을 전달하기 위한 설명이다. 따라서, 본 발명의 구성 요소들을 구현하기 위한 방법이 여럿 있는 경우에는, 이들 방법 중 특정한 것 또는 이와 동일성 있는 것 가운데 어떠한 것으로든 본 발명의 구현이 가능함을 분명히 할 필요가 있다.
본 명세서에서 어떤 구성이 특정 요소들을 포함한다는 언급이 있는 경우, 또는 어떤 과정이 특정 단계들을 포함한다는 언급이 있는 경우는, 그 외 다른 요소 또는 다른 단계들이 더 포함될 수 있음을 의미한다. 즉, 본 명세서에서 사용되는 용어들은 특정 실시 형태를 설명하기 위한 것일 뿐이고, 본 발명의 개념을 한정하기 위한 것이 아니다. 나아가, 발명의 이해를 돕기 위해 설명한 예시들은 그것의 상보적인 실시 예도 포함한다.
본 명세서에서 사용되는 용어들은 본 발명이 속하는 기술 분야의 통상의 기술자들이 일반적으로 이해하는 의미를 갖는다. 보편적으로 사용되는 용어들은 본 명세서의 맥락에 따라 일관적인 의미로 해석되어야 한다. 또한, 본 명세서에서 사용되는 용어들은, 그 의미가 명확히 정의된 경우가 아니라면, 지나치게 이상적이거나 형식적인 의미로 해석되지 않아야 한다. 이하 첨부된 도면을 통하여 본 발명의 실시 예가 설명된다.
도 1은 본 발명의 실시 예에 따른 시스템을 보여주는 개념도이다. 도 1은 유용한 스큐(Skew)가 제공되기 전의 타이밍 위반(Timing Violation)의 상태("제 1 상태"로 표시), 및 그것을 개선한 상태("제 2 상태"로 표시)를 단순화시킨 예시들을 보여준다. 클록 스큐의 개선은 본 발명의 실시 예를 통해 달성될 수 있다.
일 실시 예에서, 시스템(100)은 세 개의 플립플롭(Flip-flop)들(102, 104, 106; 또는, 좀 더 일반적으로 "종점(End-point)"들)을 포함할 수 있다. 또한, 시스템(100)은 네 개의 조합 로직(Combinatorial Logic)들(112, 114, 116, 118)을 포함할 수 있다. 몇몇 실시 예에서, 조합 로직들(112, 114, 116, 118)은 여러 전기 회로(예컨대, NAND 게이트들, NOR 게이트들, 커패시터(Capacitor)들, 저항들 등)를 포함할 수 있다. 조합 로직으로의 입력이 처리되어 조합 로직으로부터의 출력이 발생하는 데에는 특정 시간이 소요될 수 있다.
위에서 설명된 것과 같이, 이러한 처리 시간이 클록 신호(CS)의 주기보다 짧은 경우, 회로가 "양의 슬랙(Positive Slack)"을 갖고 있다고 표현한다. 반대로, 처리 시간이 클록 신호(CS)의 주기보다 긴 경우, 회로가 "음의 슬랙(Negative Slack)"을 갖고 있다고 표현하는데, 더 중요한 점은 출력들과 관련되는 플립플롭이 출력 신호들을 저장해야 할 때 출력들이 준비되지 않을 것이라는 점이다. 이 점은, 몇몇 실시 예에서, 클록 주기를 증가시키거나 클록 주파수를 감소시킴으로써 개선될 수 있다.
설명될 예시에서, 클록 신호(CS)는 714ps(pico-second)의 주기 또는 약 1.4GHz(giga-hertz)의 주파수를 갖는 것으로 가정한다. 예로서, 조합 로직(112)은 처리를 수행하는 데에 814ps를 필요로 할 수 있다. 따라서, 조합 로직(112)이 논리적으로 플립플롭(102)보다 선행하기 때문에, 플립플롭(102)은 -100ps(=714ps-814ps)의 선행 슬랙(Front Slack)을 가질 수 있다. 클록 신호(CS)는 조합 로직(112)의 출력들이 준비되거나 완전히 계산되는 것보다 100ps 전에 플립플롭(102)에 도달할 수 있다.
예로서, 조합 로직(114)은 처리를 수행하는 데에 414ps를 필요로 할 수 있다. 따라서, 조합 로직(114)이 논리적으로 플립플롭(102)보다 후행하기 때문에, 플립플롭(102)은 +300ps(=714ps-414ps)의 후행 슬랙(Back Slack)을 가질 수 있다. 이는 현재 입력들이 방출되고 300ps 뒤에 플립플롭(102)이 입력 신호들을 방출할 수 있고 조합 로직(114)이 출력 값들을 완전히 계산하는 데에 여전히 충분한 시간이 있음을 의미한다. 플립플롭(104)은 +300ps(=714ps-414ps)의 선행 슬랙을 가질 수 있다.
여기서 설명되는 예시들은 이해를 돕기 위한 것이고 본 발명을 한정하기 위한 것은 아니다. 예로서, 위 예시들은 이해를 돕기 위해 단순화된 것으로서, 클록 지터(Clock Jitter), 셋업 시간(Setup Time) 등과 같은 요인들은 고려되지 않았다.
예로서, 조합 로직(116)은 처리를 수행하는 데에 764ps를 필요로 할 수 있다. 따라서, 플립플롭(104)은 -50ps(=714ps-764ps)의 후행 슬랙을 가질 수 있고, 플립플롭(106)은 -50ps(=714ps-764ps)의 선행 슬랙을 가질 수 있다. 예로서, 조합 로직(118)은 처리를 수행하는 데에 714ps를 필요로 할 수 있다. 따라서, 플립플롭(106)은 0ps(=714ps-714ps)의 후행 슬랙을 가질 수 있다. 이는 단지 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
도 1의 실시 예에서, 클록 네트워크(Clock Network) 또는 클록 메시(Clock Mesh)는 클록 신호(CS) 및 여러 버퍼 또는 드라이버(132, 134, 136)를 포함할 수 있다. 설명될 예시에서, 버퍼들(132, 134, 136) 각각이 클록 신호(CS)를 50ps 만큼 지연시키는 것으로 가정한다. 이는 단지 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
위에서 설명된 것과 같이, 제 1 상태에서, 시스템(100)은 음의 선행 슬랙을 갖는 것으로 간주되는 두 개의 플립플롭들(102, 106)을 포함할 수 있다. 이 두 개의 플립플롭들(102, 106)에 선행하는 조합 로직들(112, 116)의 문제는 시스템(100)을 1.4GHz로 동작시킨다는 설계 목표를 만족시키지 못한다는 데에 있는데, 이는 가장 느린 조합 로직(112)을 이용하여 완전한 처리를 수행하기 위해서는 714ps의 원하는 클록 주기 대신 814ps의 클록 주기가 필요하기 때문이다.
도 1의 제 2 상태는 본 발명의 실시 예에 따라 클록 네트워크를 변경한 또는 조정한 후의 시스템(100)을 보여준다. 일 실시 예에서, 플립플롭들(102, 104, 106) 각각에 영향을 주는 클록 레이턴시(Clock Latency)를 증가시키거나(푸시(Push)) 감소시키기 위해(풀(Pull)), 버퍼가 클록 네트워크에 추가되거나 클록 네트워크로부터 제거될 수 있다. 클록 레이턴시의 조정은, 결과적으로, 모든 조합 로직들(112, 114, 116, 118)이 정확한 714ps의 처리 시간에 따라 관리되지는 않음을 의미한다. 대신, 어떤 조합 로직은 더 긴 처리 시간(예컨대, 814ps 등)을 이용하거나 더 짧은 처리 시간(예컨대, 414ps 등)을 이용할 수 있다. 다른 도면을 참조하여, 클록 레이턴시를 조정하기 위해 채용된 본 발명의 실시 예에 따른 기법이 더 설명될 것이다. 도 1에서는 개념만이 설명될 것이다.
예로서, 플립플롭(102)으로 제공되는 클록 신호(CS)는 두 개의 버퍼들(142, 152)을 추가함으로써 100ps 만큼 지연될 수 있다. 이는 조합 로직(112)에 관한 처리 시간의 종료를 100ps 만큼 늦출(푸시) 수 있고, 처리의 완료를 위해 814ps를 완전히 제공할 수 있다. 이로써, 플립플롭(102)은 0ps의 선행 슬랙을 가질 수 있다.
그러나, 플립플롭(102)으로 제공되는 클록 신호(CS)를 100ps 만큼 지연시키는 것은 독립적으로 수행되지는 않는다. 이는 다음 파이프라인 단계(Pipeline Stage) 또는 조합 로직(114)의 시작 역시 100ps 만큼 늦출 수 있다. 다행히도, 조합 로직(114)은 처리를 완료하는 데에 414ps만을 필요로 하기 때문에 지연은 문제되지 않는다. 버퍼들(142, 152)의 추가는 플립플롭(104)에 +200ps의 선행 슬랙을 부여할 수 있다.
그런데, 도 1에서, 조합 로직(112)이 유일하게 문제되는 부분이 아닐 수 있다. 조합 로직(116) 역시 714ps의 원하는 클록 주기를 초과하는 764ps의 처리 시간을 가질 수 있다. 몇몇 실시 예에서, 조합 로직(116)에 관한 부담을 줄이기 위해, 플립플롭(104)에 관하여 이용 가능한 초과 슬랙을 활용하는 것이 바람직할 수 있다.
이 실시 예에서, 플립플롭(104)에 관한 클록 레이턴시가 감소(풀)할 수 있다. 일 실시 예에서, 버퍼(134)가 클록 네트워크로부터 제거될 수 있다. 이에 따라, 조합 로직(116)에 의해 연산을 수행할 수 있는 시간의 양이 50ps 만큼 증가하여, 총 시간이 764ps로 될 수 있다. 이 실시 예에서, 플립플롭(104)은 +150ps의 선행 슬랙을 가질 수 있고, 0ps의 후행 슬랙을 가질 수 있다. 유사하게, 플립플롭(106)의 클록 레이턴시는 증가하거나 감소하지 않을 수 있고, 플립플롭(106)은 0ps의 선행 슬랙 및 0ps의 후행 슬랙을 가질 수 있다.
만일, 다른 실시 예에서, 조합 로직(118)이 714ps보다 짧은 처리 시간(예컨대, 614ps)을 가졌다면, 조합 로직(116)을 수용하기 위해 플립플롭(106)의 클록 레이턴시가 증가(푸시)할 수 있다. 이 실시 예에서, 플립플롭(104)에 관한 클록 레이턴시는 감소(풀)하지 않을 수 있다. 이는 단지 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
도 1에서, 클록 신호(CS) 및 버퍼들(132, 134, 136, 142, 152)은 클록 메시 네트워크의 일부분일 수 있다. 일반적으로, 클록 메시 네트워크는 메시와 플립플롭들(또는, 종점들) 사이의 매우 얕은 로직 깊이(Depth)에 의해 특징지어진다. 단지 하나의 버퍼(예컨대, 버퍼(132) 등) 또는 클록 게이트가 전기적인 싱크(Sink) 또는 종점을 직접 구동한다. 이는 클록 루트(Clock Root)로부터의 유기 나무 구조(Organic Tree Structure)에 의해 특징지어지고 설계상의 싱크들 각각으로 뻗어나가는 좀 더 종래의 클록 트리(Clock Tree)와 비교된다. 클록 트리 스킴(Scheme)은 버퍼 및 클록 게이팅 레벨들에 대해 상대적으로 깊은 깊이를 갖는다. 클록 메시 네트워크에서 종점과 클록 신호(CS)의 근원 사이에서 버퍼들의 개수의 깊이가 부족한 경우, 클록 스큐를 관리하기 위한 기회, 특히 클록 레이턴시를 감소(풀)시키기 위한 기회가 줄어든다.
예로서, 버퍼들(132, 134, 136, 142, 152) 각각은 클록 신호(CS)를 50ps 만큼 지연시킬 수 있다. 몇몇 실시 예는 클록 스큐를 늦추거나(푸시) 당기기 위해(풀) 양자화된(Quantized) 양들을 이용하여 동작하도록 구성될 수 있다. 이러한 실시 예에서, 클록 레이턴시를 특정한 원하는 값(예컨대, 800ps)으로 조정하는 것은 불가능할 수 있고, 양자화된 양(예컨대, 814ps, 764ps 등)에 의해 지시되는 정도에 따라 원하는 값에 가까운 값으로 조정할 수 있다. 실시 예에 따라, 양자화의 수준은 변경될 수 있다(예컨대, 40ps, 100ps, 15ps 등). 이들은 단지 이해를 돕기 위한 예시들일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
도 2는 본 발명의 실시 예에 따른 시스템을 보여주는 블록도이다. 시스템(200)에 있어서, 집적 회로를 설계하는 과정 동안, 디지털 회로 모델(202)이 생성될 수 있다. 일련의 클록 레이턴시 스케쥴(Clock Latency Schedule; 208)을 결정하는 것이 바람직할 수 있다. 시스템(200)의 구성 요소들은, 뒤에서 설명될 것과 같이, 디지털 회로 모델(202)의 일련의 클록 레이턴시 스케쥴(208)을 결정하기 위해 채용될 수 있다.
일 실시 예에서, 시스템(200)은 물리적인 회로의 결합을 수행하기 전 또는 디지털 회로 모델(202)을 엄격한 타이밍 검사 기법으로 관리하기 전에 디지털 회로 모델(202)의 일련의 클록 레이턴시 스케쥴(208)을 결정하기 위해 채용될 수 있다. 다른 실시 예에서, 시스템(200)은 설계 과정의 후반부(예컨대, 마지막 타이밍만큼 늦은 후반부)에 디지털 회로 모델(202)의 클록 스큐를 조정하기 위해 채용될 수 있다. 몇몇 실시 예에서, 설계 과정의 후반부에 시스템(200)을 통해 디지털 회로 모델(202)을 실행함으로써, 가장 크리티컬한 경로를 고치기 위해 가장 정확한 타이밍을 이용할 수 있다는 이점이 얻어질 수 있다. 이는 단지 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
일 실시 예에서, 시스템(200)은 디지털 회로 모델(202)을 제공받을 수 있다. 몇몇 실시 예에서, 디지털 회로 모델(202)은 물리적으로 합성된 모델 또는 레이드 아웃(Laid Out) 모델을 포함할 수 있다. 다른 실시 예에서, 디지털 회로 모델(202)은 설계 과정의 두 양 끝단의 중간인 회로를 나타낸 것을 포함할 수 있다. 이들은 단지 이해를 돕기 위한 예시들일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
몇몇 실시 예에서, 디지털 회로 모델(202)은 클록 메시(또는, 그것을 나타낸 것)(204)를 포함할 수 있다. 이러한 실시 예에서, 클록 메시(204)는 복수의 로직 회로(또는, 그것을 나타낸 것)(206)로 클록 신호를 제공하도록 구성될 수 있다. 이러한 실시 예에서, 클록 신호는, 위에서 설명된 것과 같이, 클록 레이턴시의 양들 각각에 따라 로직 회로들(206) 각각에 도달할 수 있다.
본 발명의 실시 예에서, 위에서 설명된 것과 같이, 디지털 회로 모델(202)은 복수의 로직 회로(206)를 포함할 수 있다. 몇몇 실시 예에서, 로직 회로들(206) 각각은 로직 회로들(206) 각각의 하나 이상의 종점들로 제공되는 클록 신호에 의해 적어도 부분적으로 제어될 수 있다. 여기서, 종점은 플립플롭, 래치, 또는 다른 레지스터 또는 상태 장치(예컨대, 도 1의 플립플롭들, 메모리들 등)를 포함할 수 있다. 몇몇 실시 예에서, 종점은 파이프라인 단계의 시작/종료를 표시할 수 있다.
일 실시 예에서, 시스템(200)은 디지털 회로 수신기(210)를 포함할 수 있다. 디지털 회로 수신기(210)는 디지털 회로 모델(202)을 수신하도록 구성될 수 있다. 몇몇 실시 예에서, 디지털 회로 수신기(210)는 스큐 스케쥴링 파라미터들(211)을 수신하도록 더 구성될 수 있다.
몇몇 실시 예에서, 이 스큐 스케쥴링 파라미터들(211)은 푸시 스텝 크기(Push Step Size), 풀 스텝 크기(Pull Step Size), 최대 푸시 한계 또는 문턱값, 최대 풀 한계 또는 문턱값, 및 슬랙 문턱값 중 하나 이상을 포함할 수 있다.
몇몇 실시 예에서, 푸시 스텝 크기 파라미터는 실제의 스큐 버퍼들(또는, 클록 게이터(Gater) 버퍼 지연 등과 같은 다른 회로)에 의해 제공되는 실제 스텝 크기를 따르는 푸시 양자화(예컨대, 클록 푸시 스케쥴러(216) 등에 의한 것)의 형태를 나타낼 수 있다. 이 파라미터는 종래의 클록 트리 시스템 기반의 방법에서 발생하는 구현 효율성의 손실을 피할 수 있다. 도 2의 실시 예에서, 양자화된 푸시 스텝 크기를 채용함으로써, 이론적인 또는 구현 이전의 클록 레이턴시 스케쥴이 클록 메시(204)의 물리적인 또는 구현 이후의 클록 레이턴시 스케쥴과 좀 더 잘 연관될 수 있다.
몇몇 실시 예에서, 풀 스텝 크기 파라미터는 실제의 스큐 버퍼들(또는, 클록 게이터 버퍼 지연 등과 같은 다른 회로)을 제거함으로써 제공되는 실제 스텝 크기를 따르는 풀 양자화(예컨대, 클록 풀 스케쥴러(214) 등에 의한 것)의 형태를 나타낼 수 있다. 몇몇 실시 예에서, 풀 스텝 크기는 기능 또는 값 측면에서 푸시 스텝 크기와 유사할 수 있다.
일 실시 예에서, 최대 푸시 양(Push Amount) 파라미터는 어떤 종점에 부가될 수 있는 클록 레이턴시 스케쥴의 최대량을 위한 상단 값을 설정할 수 있다. 일 실시 예에서, 이는 성능과 전력 사이의 트레이드 오프(Trade-off)를 어떻게 결정할 것인지의 문제와 관련될 수 있다. 예로서, 더 많은 스큐 버퍼들(또는, 다른 회로)이 추가됨에 따라 더 많은 전력이 소모될 수 있으나, 디지털 회로의 전반적인 타이밍 특성은 향상될 수 있다(예컨대, 클록을 늦추는 것은 여러 타이밍 이슈들을 해결할 수 있다). 이러한 실시 예에서, 최대 푸시 양 파라미터는 추가된 스큐 버퍼들에 의해 소모되는 전력의 양을 제한할 수 있다. 나아가, 몇몇 실시 예에서, 최대 푸시 양 파라미터는, 예로서, 셀들의 정체, 손상 등과 같은 구현상 한계의 영향을 받을 수 있다.
몇몇 실시 예에서, 최대 풀 양(Pull Amount) 파라미터는 어떤 종점으로부터 제거될 수 있는 클록 레이턴시 스케쥴의 최대량을 위한 값을 설정할 수 있다. 몇몇 실시 예에서, 이는 풀 스케쥴링 및 독립적인 푸시 스케쥴링의 제어 가능성을 허용할 수 있다. 나아가, 몇몇 실시 예에서, 풀 스케쥴링은 설계로부터 스큐 버퍼들(또는, 클록 게이터 버퍼 지연 조정)을 제거함으로써 달성될 수 있다. 몇몇 실시 예에서, 제거될 수 있는 스큐 버퍼들의 개수는 한정될 수 있다. 예로서, 도 1에서, 단지 버퍼(134)만이 플립플롭(104)의 입력 측에 제공될 수 있다. 따라서, 플립플롭(104)(또는, 일반적으로 시스템(100))에 대한 최대 풀 양은 시간, 버퍼들, 단계들 등의 관점에서 하나의 버퍼와 관련될 수 있다.
몇몇 실시 예에서, 슬랙 문턱값 대 스큐(Slack Threshold to Skew) 파라미터는 총 음의 슬랙(Total Negative Slack)과 최악의 음의 슬랙(Worst Negative Slack) 사이에서 원하는 트레이드 오프를 가능하게 할 수 있다. 이는 성능과 전력 사이의 트레이드 오프를 가능하게 할 수 있다. 이들은 단지 이해를 돕기 위한 예시들일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
다른 실시 예에서, 디지털 회로 수신기(210)는 스큐 스케쥴링 파라미터들(211)을 수신하고, 그것들을 디지털 회로 모델(202)과 함께 시스템(200)의 다른 구성 요소들 중 하나 이상으로 전달할 수 있다. 이러한 실시 예에서, 시스템(200)의 다른 구성 요소들의 기능은 수정되거나 제한될 수 있다. 예로서, 위에서 설명된 것과 같이, 푸시 스텝 크기는 주어진 종점을 위해 클록 레이턴시를 늦추고자 할 때 클록 푸시 스케쥴러(216)에 의해 채용될 수 있는 양자화의 수준 또는 양을 나타낼 수 있고, 풀 스텝 크기와 클록 풀 스케쥴러(214)도 이와 유사하게 이해될 수 있다. 이들은 단지 이해를 돕기 위한 예시들일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
일 실시 예에서, 시스템(200)은 푸시/풀 조정 후보 식별기(212)를 포함할 수 있다. 몇몇 실시 예에서, 푸시/풀 조정 후보 식별기(212)는 선행 슬랙의 양 또는 후행 슬랙의 양을 포함하는 하나 이상의 종점들을 식별하도록 구성될 수 있다.
이상의 설명은 대부분 셋업 슬랙 및 타이밍들에 대해 언급되었으나, 다양한 실시 예들에서, 본 발명은 홀드 슬랙(Hold Slack)과 같은 다른 형태의 슬랙을 다루기 위해서도 채용될 수 있다. 이는 단지 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다. 다른 실시 예에서, 타이밍 슬랙보다는 전력 특성을 향상시키기 위해, 유용한 스큐의 스케쥴링이 채용될 수 있다. 또 다른 실시 예에서, 셋업 타이밍보다는 홀드 타이밍들을 개선하기 위해, 유용한 스큐의 스케쥴링이 채용될 수 있다.
몇몇 실시 예에서, 푸시/풀 조정 후보 식별기(212)는 종점을 두 개의(또는, 그 이상의) 카테고리들로 나누도록 구성될 수 있다. 이러한 실시 예에서, 제 1 카테고리는 늦춰질(푸시) 후보인 종점들을 포함할 수 있다. 일 실시 예에서, 어떤 종점이 후행 슬랙보다 짧은 선행 슬랙을 갖고 그 선행 슬랙이 음의 슬랙이고 그 선행 슬랙이 슬랙 문턱값 대 스큐 값보다 나쁜 경우, 그 종점은 푸시 후보일 수 있다. 제 2 카테고리는 당겨질(풀) 후보인 종점들을 포함할 수 있다. 일 실시 예에서, 어떤 종점이 후행 슬랙보다 긴 선행 슬랙을 갖고 그 후행 슬랙이 음의 슬랙이고 그 후행 슬랙이 슬랙 문턱값 대 스큐 값보다 나쁜 경우, 그 종점은 풀 후보일 수 있다. 몇몇 실시 예에서, 푸시 후보도 아니고 풀 후보도 아닌 종점들은 건너 뛰어질 수 있다. 몇몇 실시 예에서, 건너 뛰어진 또는 어떤 후보도 아닌 종점들은 제 3 카테고리에 포함될 수 있다. 다른 실시 예들에서, 건너 뛰어진 종점들은 디지털 회로의 전력 감소를 위해 스케쥴링될 수 있다. 이는 단지 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
일 실시 예에서, 시스템(200)은 클록 풀 스케쥴러(214)를 포함할 수 있다. 이러한 실시 예에서, 클록 풀 스케쥴러(214)는 풀 후보인 종점으로 제공되는 클록 신호의 클록 레이턴시를 제 1 양자화된 양만큼 줄이도록 구성될 수 있다.
아래의 의사 코드(Pseudo Code)는 푸시/풀 후보인 종점의 푸시/풀 조정의 양을 계산하기 위한 예시적인 기법을 보여준다. 몇몇 실시 예에서, 이러한 기법은 클록 풀 스케쥴러(214) 및/또는 클록 푸시 스케쥴러(216)에 의해 채용될 수 있다. 이는 단지 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
if ($slack_front < $slack_back} (
###########push situation#########
# for this case we have back slack better, so let 's degrade back slack to improve front slack
set num_step 0
while {($slack_front < $slack_threshold) && ($slack_back >= [expr $slack_front + $step])} {
set num_step [expr $num_step + 1]
set slack_front [expr $slack_front + $step]
set slack_back [expr $slack_back - $step]
}
# slack adjustment for push will be $num_step * $step
} else {
###########pull situation#########
# for this case we have front slack better, so let's degrade front slack to improve back slack
set num_step 0
while {($slack_back < $slack_threshold) && ($slack_front >= [expr $slack_back + $step] ) } {
set num_step [expr $num_step - 1]
set slack_front [expr $slack_front . $step]
set slack_back [expr $slack_back + $step]
}
# slack adjustment for pull will be $num_step * $step]
}
이러한 실시 예에서, 푸시/풀 후보들 각각에 관하여, 선행 슬랙이 후행 슬랙보다 짧은 경우, 선행 슬랙을 개선하기 위해 후행 슬랙이 저하될 수 있다. 몇몇 실시 예에서, 이는 선행 슬랙이 문턱 값보다 작고 후행 슬랙이 조정된 선행 슬랙보다 길게 유지될 경우에만 수행될 수 있다. 따라서, 조정이 발생하지 않는 후보가 있을 수 있다. 후보가 조정될 경우, 위 조건들이 만족될 때까지 선행 슬랙은 증가할 수 있고 후행 슬랙은 양자화된 스텝 양 만큼 감소할 수 있다. 이는 단지 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
일 실시 예에서, 시스템(200)은 타이밍 모델 생성기(218)를 포함할 수 있다. 몇몇 실시 예에서, 타이밍 모델 생성기(218)는 클록 풀 스케쥴러(214)가 디지털 회로 모델(202)을 처리한 이후 디지털 회로 모델(202)의 타이밍 모델을 갱신하도록 구성될 수 있다. 몇몇 실시 예에서, 시스템(200)은 디지털 회로 모델(202)의 레이턴시 양을 조정하도록 구성되는 증분의(Incremental) 레이턴시 조정기(219)를 포함할 수 있다.
일 실시 예에서, 시스템(200)은 클록 푸시 스케쥴러(216)를 포함할 수 있다. 이러한 실시 예에서, 클록 푸시 스케쥴러(216)는 푸시 후보인 종점으로 제공되는 클록 신호의 클록 레이턴시를 제 2 양자화된 양만큼 증가시키도록 구성될 수 있다. 클록 푸시 스케쥴러(216)가 클록 스큐 스케쥴들을 수정한 후, 디지털 회로 모델(202)의 타이밍 모델이 갱신될 수 있다(예컨대, 타이밍 모델 생성기(218) 및 증분의 레이턴시 조정기(219)에 의해 갱신될 수 있다).
몇몇 실시 예에서, 클록 풀 스케쥴러(214)는 클록 푸시 스케쥴러(216) 이전에 디지털 회로 모델(202)을 처리할 수 있다(예컨대, 디지털 회로 모델(202)을 처리하기 위해, 푸시/풀 조정 후보 식별기(212), 클록 풀 스케쥴러(214), 타이밍 모델 생성기(218), 증분의 레이턴시 조정기(219), 푸시/풀 조정 후보 식별기(212), 클록 푸시 스케쥴러(216), 및 타이밍 모델 생성기(218)의 순서를 따르는 경로가 형성될 수 있다). 다른 실시 예에서, 처리 순서가 바뀔 수 있다(예컨대, 푸시/풀 조정 후보 식별기(212), 클록 푸시 스케쥴러(216), 타이밍 모델 생성기(218), 증분의 레이턴시 조정기(219), 푸시/풀 조정 후보 식별기(212), 클록 풀 스케쥴러(214), 및 타이밍 모델 생성기(218)의 순서를 따르는 경로가 형성될 수 있다). 이는 단지 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
일 실시 예에서, 푸시/풀 후보들 각각에 관하여, 후행 슬랙이 선행 슬랙보다 짧은 경우, 후행 슬랙을 개선하기 위해 선행 슬랙이 저하될 수 있다. 몇몇 실시 예에서, 이는 후행 슬랙이 문턱 값보다 작고 선행 슬랙이 조정된 후행 슬랙보다 길게 유지될 경우에만 수행될 수 있다. 따라서, 조정이 발생하지 않는 후보가 있을 수 있다. 후보가 조정될 경우, 위 조건들이 만족될 때까지 선행 슬랙은 감소할 수 있고 후행 슬랙은 양자화된 스텝 양 만큼 증가할 수 있다. 이는 단지 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
몇몇 실시 예에서, 종점들을 두 개의 푸시/풀 대상들로 분류한 다음에 별개의 단계들을 통해 푸시 클록 스큐 스케쥴 조정 및 풀 클록 스큐 스케쥴 조정을 실행함으로써, 스케쥴링의 충돌이 방지될 수 있다. 이러한 실시 예에서, 모든 종점들을 스케쥴링한 뒤의 큰 비용의 증분의 타이밍 갱신에 관한 기존의 필요성을 피할 수 있다. 이러한 실시 예에서, 타이밍 모델은 디지털 회로 모델(202) 전체의 푸시/풀 후보들이 처리된 후에 갱신될 수 있다.
일 실시 예에서, 시스템(200)은 클록 풀 스케쥴러(214), 클록 푸시 스케쥴러(216), 타이밍 모델 생성기(218), 및 증분의 레이턴시 조정기(219)를 포함하는 루프를 여러 차례 통해 디지털 회로 모델(202)을 전달할 수 있다. 이러한 실시 예에서, 종점의 클록 스큐 스케쥴을 적절하게 결정하는 것은 여러 파이프라인 단계의 타이밍 슬랙들, 및 뒤로 이어지는 여러 단계로부터 동적으로 시간을 빌려오는 것의 영향을 받을 수 있다. 이는 여러 단계의 사전 예측(Look-ahead) 스케쥴링을 수반할 수 있는데, 사전 예측 스케쥴링은 복잡한 문제이다. 단일 단계의 스케쥴링(예컨대, 클록 풀 스케쥴러(214), 클록 푸시 스케쥴러(216) 등)을 통해 여러 차례의 반복 루프를 수행하여, 정상 상태(Steady State)가 얻어질 때까지 클록 스큐 스케쥴링의 변경이 설계를 통해 전달되도록 함으로써, 위 어려움이 해결될 수 있다.
일 실시 예에서, 시스템(200)은 클록 풀 스케쥴러(214), 클록 푸시 스케쥴러(216), 타이밍 모델 생성기(218), 증분의 레이턴시 조정기(219)를 포함하는 루프를 통한 여러 반복 연산 이후에 결과로 얻어진 클록 레이턴시 스케쥴들(208)을 생성할 수 있다. 몇몇 실시 예에서, 이 클록 레이턴시 스케쥴들(208)은 디지털 회로 설계 과정의 더 후반의 단계로 제공될 수 있다.
이러한 실시 예에서, 더 후반의 단계(및 시스템(200))는 클록 게이터 및/또는 스큐 버퍼 조정기(220)를 포함할 수 있다. 몇몇 실시 예에서, 클록 게이터 및/또는 스큐 버퍼 조정기(220)는 디지털 회로 모델(202) 및 클록 레이턴시 스케쥴들(208)을 입력으로서 취하고, 시스템(200)에 의해 결정된 타이밍 변경에 영향을 주기 위해 디지털 회로 모델(202) 내의 여러 회로들(예컨대, 스큐 버퍼들, 클록 게이터들 등)을 조정할 수 있다. 이는 단지 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
몇몇 실시 예에서, 더 후반의 단계는 정적 및/또는 동적 타이밍 검사기(230)를 포함할 수 있다. 이러한 실시 예에서, 정적 및/또는 동적 타이밍 검사기(230)는 주어진 클록 레이턴시 스케쥴들(208)에 기초하여 디지털 회로 모델(202)에 대해 정적인 및/또는 동적인 타이밍 분석을 수행하도록 구성될 수 있다. 이러한 실시 예에서, 물리적인 합성 및/또는 타이밍 최적화 동안, 클록 레이턴시 스케쥴들(208)을 적용하는 것은 타이밍 모델이 원하는 방식으로 집중되도록 디지털 회로 모델(202)을 "개편"할 수 있다. 정적 및/또는 동작 타이밍 검사기(230)는 회로 물리 모델(292)을 생성할 수 있다. 회로 물리 모델(292)은 회로의 기능적인 특성들뿐만 아니라, 회로의 물리적인 특성들까지 나타낼 수 있다.
도 3은 본 발명의 실시 예에 따른 방법을 설명하는 흐름도이다. 몇몇 실시 예에서, 도 3의 방법은 도 1, 도 2, 또는 도 4에 나타낸 시스템에 의해 이용되거나 수행될 수 있다. 이들은 단지 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다. 본 발명은 도 3에 나타낸 순서 또는 참조 번호에 의해 한정되지 않는다.
S302 동작에서, 위에서 설명된 것과 같이, 하나 이상의 구성 파라미터들이 정의될 수 있다. 몇몇 실시 예에서, 구성 파라미터들은 최대 푸시 한계, 최대 풀 한계, 푸시 스텝 크기, 풀 스텝 크기, 및/또는 슬랙 문턱값 대 스큐 값을 포함할 수 있다. 이들은 단지 이해를 돕기 위한 예시들일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
S304 동작에서, 시스템(예컨대, 도 2의 시스템(200) 등)은 종점들 각각에 관하여 풀 후보들 및 푸시 후보들을 결정할 수 있다. 몇몇 실시 예에서, 푸시 후보에 포함되는 종점은 후행 슬랙보다 짧은 선행 슬랙을 갖되, 그 선행 슬랙은 음의 슬랙이고 슬랙 문턱값 대 스큐 값보다 나쁠 수 있다. 몇몇 실시 예에서, 풀 후보에 포함되는 종점은 후행 슬랙보다 긴 선행 슬랙을 갖되, 그 후행 슬랙은 음의 슬랙이고 슬랙 문턱값 대 스큐 값보다 나쁜 종점을 포함할 수 있다. 이들은 단지 이해를 돕기 위한 예시들일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
S306 동작에서, 시스템(예컨대, 도 2의 시스템(200) 등)은 풀 후보들 각각에 관하여, 양자화된 풀 조정을 클록 스큐 스케쥴에 적용할 수 있다. 이러한 실시 예에서, 클록 스큐 스케쥴에 적용될 양자화된 풀 조정은 풀 스텝 크기 파라미터에 의해 좌우될 수 있다. 일 실시 예에서, 풀 조정은 위에서 언급된 의사 코드에 의해 계산될 수 있다.
S307 동작에서, 풀 조정들에 기초하여 타이밍 모델이 갱신될 수 있다. 몇몇 실시 예에서, S307 동작은 도 3의 방법에 포함되지 않을 수 있다. 이러한 실시 예에서, 타이밍 모델은 반복 연산들 각각에 대해 한 번만 갱신될 수 있다. 이는 단지 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
S308 동작에서, 시스템(예컨대, 도 2의 시스템(200) 등)은 푸시 후보들 각각에 관하여, 양자화된 푸시 조정을 클록 스큐 스케쥴에 적용할 수 있다. 이러한 실시 예에서, 클록 스큐 스케쥴에 적용될 양자화된 푸시 조정은 푸시 스텝 크기 파라미터에 의해 좌우될 수 있다. 일 실시 에에서, 푸시 조정은 위에서 언급된 의사 코드에 의해 계산될 수 있다.
S309 동작에서, 푸시 조정들에 기초하여 타이밍 모델이 갱신될 수 있다. 몇몇 실시 에에서, S309 동작은 푸시 조정들 및 풀 조정들 모두에 기초하여 수행될 수 있다. 이러한 실시 예에서, 타이밍 모델은 반복 연산들 각각에 대해 한 번만 갱신될 수 있다. 이는 단지 이해를 돕기 위한 예시일 뿐이고, 본 발명을 한정하기 위한 것은 아니다.
S310 동작에 따라, 위 처리들이 여러 차례 반복될 수 있다. 이러한 실시 예에서, 여러 파이프라인 단계의 슬랙들이 조정될 수 있다. 몇몇 실시 예에서, 뒤로 이어지는 여러 단계로부터 동적으로 시간을 빌려옴으로써, S310 동작에 따른 반복 처리가 여러 단계의 사전 예측 스케쥴링에 영향을 줄 수 있다.
S312 동작에서, 물리적인 합성 및/또는 타이밍 최적화가 실행될 수 있다. 이러한 실시 예에서, 이는 스케쥴링 및 데이터 경로 최적화를 동시에 가능하게 할 수 있다. S314 동작에 따라, 도 3의 방법이 여러 차례 반복될 수 있다. 몇몇 실시 예에서, 이는 시간이 원하는 방식으로 수렴하도록 디지털 회로 모델(202)을 "개편"할 수 있다.
도 4는 본 발명의 실시 예에 따른 정보 처리 시스템을 보여주는 블록도이다. 정보 처리 시스템(400)은 본 발명의 실시 예에 따라 형성된 반도체 장치들을 포함할 수 있다.
도 4를 참조하면, 정보 처리 시스템(400)은 본 발명의 실시 예에 따라 구성되는 하나 이상의 장치들을 포함할 수 있다. 또는, 정보 처리 시스템(400)은 본 발명의 실시 예에 따른 하나 이상의 방법들을 채용하거나 실행할 수 있다.
몇몇 실시 예에서, 정보 처리 시스템(400)은, 예로서, 랩톱, 데스크톱, 워크스테이션, 서버, 블레이드 서버(Blade Server), PDA(Personal Digital Assistant), 스마트폰, 태블릿, 및 그 외 다른 적절한 컴퓨터 등과 같은 컴퓨팅 장치, 또는 가상 머신(Virtual Machine) 또는 그것의 가상 컴퓨팅 장치 등을 포함할 수 있다. 몇몇 실시 예에서, 정보 처리 시스템(400)은 사용자에 의해 이용될 수 있다.
본 발명의 실시 예에 따른 정보 처리 시스템(400)은 중앙 처리 유닛(Central Processing Unit), 로직(Logic), 또는 프로세서(Processor; 410)를 포함할 수 있다. 몇몇 실시 예에서, 프로세서(410)는 하나 이상의 기능 유닛 블록(Functional Unit Block)들 또는 조합 로직 블록(Combinational Logic Block; 415)들을 포함할 수 있다. 이러한 실시 예에서, 조합 로직 블록(415)은 다양한 부울 논리 연산(Boolean Logic Operation; 예컨대, NAND, NOR, NOT, XOR 등)을 위한 논리 장치들, 안정화(Stabilizing) 로직 장치들(예컨대, 플립플롭, 래치 등), 그 외 다른 로직 장치들, 또는 그것들의 조합을 포함할 수 있다. 조합 로직 블록(415)은 단순한 또는 복잡한 방식으로 입력 신호를 처리하여 원하는 결과를 얻도록 구성될 수 있다. 동기식의(Synchronous) 조합 로직 연산의 몇 가지 예시가 언급되었으나, 본 발명은 이 예시들로 한정되지 않는다. 본 발명의 실시 예는 비동기식의(Asynchronous) 연산, 또는 동기식의 연산 및 비동기식의 연산의 조합을 이용할 수 있다. 일 실시 예에서, 조합 로직 블록(415)은 복수의 CMOS(Complementary Metal Oxide Semiconductor) 트랜지스터를 포함할 수 있다. 몇몇 실시 예에서, CMOS 트랜지스터들은 논리 연산들을 수행하는 게이트(Gate)들로 배열될 수 있다. 다만, 다른 기술들이 이용될 수 있으며, 그것들 역시 본 발명의 기술 사상의 범위에 포함된다. 조합 로직 블록(415)은 도 1 내지 도 3을 참조하여 설명된 본 발명의 실시 예들에 기초하여 구현될 수 있다.
본 발명의 실시 예에 따른 정보 처리 시스템(400)은 휘발성 메모리(420; 예컨대, RAM(Random Access Memory) 등)를 더 포함할 수 있다. 본 발명의 실시 예에 따른 정보 처리 시스템(400)은 불휘발성 메모리(430; 예컨대, 하드 드라이브, 광학 메모리, NAND 플래시 메모리 등)를 더 포함할 수 있다. 몇몇 실시 예에서, 휘발성 메모리(420), 불휘발성 메모리(430), 또는 그것들의 조합 또는 일부는 "저장 매체"로 불릴 수 있다. 몇몇 실시 예에서, 휘발성 메모리(420) 및/또는 불휘발성 메모리(430)는 반영구적인 또는 실질적으로 영구적인 형태로 데이터를 저장할 수 있다.
실시 예로서, 정보 처리 시스템(400)은 하나 이상의 네트워크 인터페이스(440)들을 포함할 수 있다. 네트워크 인터페이스(440)는 정보 처리 시스템(400)이 통신망의 일부로서 통신망을 통해 통신하도록 할 수 있다. 예로서, 네트워크 인터페이스(440)는 IEEE(Institute of Electrical and Electronics Engineers) 802.11g, IEEE 802.11n 등을 포함하는 Wi-Fi 규약, Wireless-MAN(Metropolitan Area Network) Advanced로도 알려진 IEEE 802.16m, LTE(Long Term Evolution) Advanced, EDGE(Enhanced Data rates for GSM(Global System for Mobile communications) Evolution), HSPA+(Evolved High Speed Packet Access) 등을 포함하는 셀 통신 규약(Cellular Protocol), 이더넷(Ethernet)으로도 알려진 IEEE 802.3, Fibre Channel, Power Line communication(예컨대, HomePlug, IEEE 1901 등) 등을 포함하는 유선 통신 규약 등을 채용할 수 있다. 다만, 이들은 단지 몇 가지의 예시들일 뿐이고, 본 발명을 제한하기 위한 것은 아니다.
본 발명의 실시 예에 따른 정보 처리 시스템(400)은 유저 인터페이스(450; 예컨대, 디스플레이 어댑터(Display Adapter), 햅틱(Haptic) 인터페이스, 휴먼 인터페이스 장치 등)를 더 포함할 수 있다. 여러 실시 예에서, 유저 인터페이스(450)는 사용자로부터 입력을 제공받거나 사용자에게 출력을 제공하도록 구성될 수 있다. 사용자와의 상호 작용을 제공하기 위해, 다른 종류의 장치들이 이용될 수 있다. 예로서, 사용자에게 제공되는 피드백(Feedback)은 감각적인 피드백(예컨대, 시각적인 피드백, 청각적인 피드백, 또는 촉각적인 피드백)의 형태를 가질 수 있다. 그리고, 사용자로부터의 입력은 음향, 음성, 또는 촉각을 포함하여 어떠한 형태로든 제공될 수 있다.
몇몇 실시 예에서, 정보 처리 시스템(400)은 하나 이상의 다른 장치들 또는 하드웨어 구성 요소들(460; 예컨대, 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 판독기, 비디오 처리기 등)을 포함할 수 있다. 다만, 이들은 단지 몇 가지의 예시들일 뿐이고, 본 발명을 제한하기 위한 것은 아니다.
본 발명의 실시 예에 따른 정보 처리 시스템(400)은 하나 이상의 시스템 버스(405)들을 더 포함할 수 있다. 이러한 실시 예에서, 시스템 버스(405)는 프로세서(410), 휘발성 메모리(420), 불휘발성 메모리(430), 네트워크 인터페이스(440), 유저 인터페이스(450), 및 하나 이상의 하드웨어 구성 요소들(460)과 통신하도록 연결될 수 있다. 프로세서(410)에 의해 처리된 데이터 또는 불휘발성 메모리(430)의 외부로부터 입력된 데이터는 시스템 버스(405)를 통해 불휘발성 메모리(430) 또는 휘발성 메모리(420)에 저장될 수 있다.
여러 실시 예에서, 정보 처리 시스템(400)은 하나 이상의 소프트웨어 구성 요소들(470)들을 포함하거나 실행할 수 있다. 몇몇 실시 예에서, 소프트웨어 구성 요소들(470)은 운영 체제(Operating System) 및/또는 응용 프로그램(Application)을 포함할 수 있다. 몇몇 실시 예에서, 운영 체제는 응용 프로그램으로 하나 이상의 서비스들을 제공하고, 응용 프로그램과 정보 처리 시스템(400)의 다양한 하드웨어 구성 요소들(예컨대, 프로세서(410), 네트워크 인터페이스(440) 등) 사이에서 중개 장치의 역할을 수행할 수 있다. 이러한 실시 예에서, 정보 처리 시스템(400)은 그 내부(예컨대, 불휘발성 메모리(430) 내부 등)에 설치되어 프로세서(410)에 의해 직접 실행되고 운영 체제와 직접 상호 작용하도록 구성되는 하나 이상의 내장(Native) 응용 프로그램들을 포함할 수 있다. 이러한 실시 예에서, 내장 응용 프로그램들은 미리 컴파일되어 기계로 실행 가능한(Pre-compiled Machine Executable) 코드를 포함할 수 있다. 몇몇 실시 예에서, 내장 응용 프로그램들은 소스 코드(Source Code) 또는 오브젝트 코드(Object Code)를 프로세서(410)에 의해 실행될 실행 가능한(Executable) 코드로 번역하도록 구성되는 스크립트 인터프리터(Script Interpreter; 예컨대, C shell, AppleScript, AutoHotkey 등) 또는 가상 머신(예컨대, Java Virtual Machine, Microsoft Common Language Runtime 등)을 포함할 수 있다.
위에서 언급된 반도체 장치들은 다양한 패키징(Packaging) 기법을 이용하여 실장될 수 있다. 예로서, 본 발명의 실시 예에 따라 구성되는 반도체 장치들은 POP(Package On Package), BGAs(Ball Grid Arrays), CSPs(Chip Scale Packages), PLCC(Plastic Leaded Chip Carrier), PDIP(Plastic Dual In-line Package), Die in waffle pack, Die in wafer form, COB(Chip On Board), CERDIP(Ceramic Dual In-line Package), PMQFP(Plastic Metric Quad Flat Package), PQFP(Plastic Quad Flat Package), SOIC(Small Outline Package), SSOP(Shrink Small Outline Package), TSOP(Thin Small Outline Package), TQFP(Thin Quad Flat Package), SIP(System In Package), MCP(Multi-Chip Package), WFP(Wafer-level Fabricated Package), WSP(Wafer-level processed Stack Package), 또는 그 외의 다른 패키징 기법들 중 하나 이상을 이용하여 실장될 수 있다.
본 발명의 실시 예에 따른 방법의 동작들은 입력 데이터를 처리하고 출력을 생성하여 고유의 기능을 수행하기 위해 컴퓨터 프로그램을 실행하도록 구성되는 하나 이상의 프로그램 가능한(Programmable) 프로세서들에 의해 수행될 수 있다. 본 발명의 실시 예에 따른 방법의 동작들은 전용 논리 회로(Special Purposed Logic Circuit; 예컨대, FPGA(Field Programmable Gate Array), ASIC(Application Specific Integrated Chip) 등)에 의해 수행될 수 있다. 본 발명의 실시 예에 따른 장치 또는 시스템은 전용 논리 회로(예컨대, FPGA, ASIC 등)로 구현될 수 있다.
실시 예로서, 컴퓨터로 읽을 수 있는 매체는 실행되었을 때 정보 처리 장치가 본 발명의 실시 예에 따른 방법의 적어도 일부분을 수행하도록 만드는 명령(Instruction)들을 포함할 수 있다. 몇몇 실시 예에서, 컴퓨터로 읽을 수 있는 매체는 자기 매체, 광학 매체, 그 외의 다른 매체, 또는 그것들의 조합(예컨대, CD-ROM, 하드 드라이브, 읽기 전용 메모리, 플래시 드라이브 등)에 포함될 수 있다. 이러한 실시 예에서, 컴퓨터로 읽을 수 있는 매체는 유형적이고 비일시적으로 구현되는 물품일 수 있다.
각각의 개념도에 나타낸 구성은 단지 개념적인 관점에서 이해되어야 한다. 본 발명의 이해를 돕기 위해, 개념도에 나타낸 구성 요소 각각의 형태, 구조, 크기 등은 과장 또는 축소되어 표현되었다. 실제로 구현되는 구성은 각각의 개념도에 나타낸 것과 다른 물리적 형상을 가질 수 있다. 각각의 개념도는 구성 요소의 물리적 형상을 한정하기 위한 것이 아니다.
각각의 블록도에 나타낸 장치 구성은 발명의 이해를 돕기 위한 것이다. 각각의 블록은 기능에 따라 더 작은 단위의 블록들로 형성될 수 있다. 또는, 복수의 블록들은 기능에 따라 더 큰 단위의 블록을 형성할 수 있다. 즉, 본 발명의 기술 사상은 블록도에 도시된 구성에 의해 한정되지 않는다.
이상에서 본 발명에 대한 실시 예를 중심으로 본 발명이 설명되었다. 다만, 본 발명이 속하는 기술 분야의 특성상, 본 발명이 이루고자 하는 목적은 본 발명의 요지를 포함하면서도 위 실시 예들과 다른 형태로 달성될 수 있다. 따라서, 위 실시 예들은 한정적인 것이 아니라 설명적인 측면에서 이해되어야 한다. 즉, 본 발명의 요지를 포함하면서 본 발명과 같은 목적을 달성할 수 있는 기술 사상은 본 발명의 기술 사상에 포함되는 것으로 해석되어야 한다.
따라서, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 수정 또는 변형된 기술 사상은 본 발명이 청구하는 보호 범위에 포함되는 것이다. 또한, 본 발명의 보호 범위는 위 실시 예들로 한정되는 것이 아니다.
100 : 시스템 102, 104, 106 : 플립플롭
112, 114, 116, 118 : 조합 로직
132, 134, 136, 142, 152 : 버퍼
200 : 시스템 202 : 디지털 회로 모델
204 : 클록 메시 206 : 로직 회로들
208 : 클록 레이턴시 스케쥴 210 : 디지털 회로 수신기
211 : 스큐 스케쥴링 파라미터들
212 : 푸시/풀 조정 후보 식별기
214 : 클록 풀 스케쥴러 216 : 클록 푸시 스케쥴러
218 : 타이밍 모델 생성기 219 : 증분의 레이턴시 조정기
220 : 클록 게이터/스큐 버퍼 조정기
230 : 정적/동적 타이밍 검사기
292 : 회로 물리 모델
400 : 정보 처리 시스템 405 : 시스템 버스
410 : 프로세서 415 : 조합 로직 블록
420 : 휘발성 메모리 430 : 불휘발성 메모리
440 : 네트워크 인터페이스 450 : 유저 인터페이스
460 : 하드웨어 구성 요소들 470 : 소프트웨어 구성 요소들

Claims (20)

  1. 클록 스큐들을 조정하는 방법에 있어서,
    각각의 로직 회로의 종점으로 각각의 클록 신호를 입력함으로써 로직 회로들 각각을 제어하는 클록 메시에 의해 제어되는 상기 로직 회로들을 포함하는 회로 모델을 수신하는 단계;
    각각의 종점의 클록 스큐 스케쥴의 조정을 위한 후보들인 하나 이상의 종점들을 결정하고, 음의 선행 슬랙과 관련되는 종점들 각각을 위하여 각각의 종점의 상기 클록 스큐 스케쥴을 양자화된 양만큼 최대 푸시 문턱값까지 조정하고, 음의 후행 슬랙과 관련되는 종점들 각각을 위하여 각각의 종점의 상기 클록 스큐 스케쥴을 양자화된 양만큼 최대 풀 문턱값까지 조정함으로써, 증분의 레이턴시 조정을 상기 회로 모델로 제공하는 단계;
    상기 증분의 레이턴시 조정을 상기 회로 모델로 제공하는 단계를 여러 차례 반복하는 단계; 및
    동적 타이밍 검사 및 정적 타이밍 분석 중 적어도 하나를 통해 상기 회로 모델에 대한 타이밍 검사를 수행하는 단계를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 증분의 레이턴시 조정을 상기 회로 모델로 제공하는 단계는, 상기 음의 선행 슬랙과 관련되는 상기 종점들을 조정하는 과정 및 상기 음의 후행 슬랙과 관련되는 상기 종점들을 조정하는 과정을 별개의 단계들에서 수행함으로써, 상기 하나 이상의 종점들 사이에서 푸시/풀 조정의 클록 레이턴시의 충돌들을 피하는 단계를 포함하는 방법.
  3. 제 1 항에 있어서,
    각각의 종점의 상기 클록 스큐 스케쥴을 조정하는 과정은, 상기 동적 타이밍 검사 및 상기 정적 타이밍 분석 중 적어도 하나를 수행하지 않고, 각각의 종점의 상기 클록 스큐 스케쥴을 조정한 후 각각의 종점에 관한 새로운 슬랙을 임시로 추정하는 단계를 포함하고,
    상기 증분의 레이턴시 조정을 상기 회로 모델로 제공하는 단계는, 상기 임시로 추정된 새로운 슬랙에 기초하여 조정을 위한 후보들인 종점들을 결정하는 단계를 포함하는 방법.
  4. 제 1 항에 있어서,
    상기 음의 선행 슬랙과 관련되는 상기 종점들 각각의 상기 클록 스큐 스케쥴을 조정하는 과정에서, 각각의 종점을 위하여 상기 클록 스큐 스케쥴이 조정된 후 별개의 타이밍 갱신이 수행되지 않고,
    상기 증분의 레이턴시 조정을 상기 회로 모델로 제공하는 단계는, 상기 음의 선행 슬랙과 관련되는 상기 종점들 각각의 상기 클록 스큐 스케쥴을 조정한 후 상기 음의 후행 슬랙과 관련되는 상기 종점들 각각의 상기 클록 스큐 스케쥴을 조정하기 전에 상기 회로 모델에서 각각의 종점을 위한 슬랙을 재검사하는 단계를 포함하는 방법.
  5. 제 1 항에 있어서,
    상기 음의 후행 슬랙과 관련되는 상기 종점들 각각을 위하여 각각의 종점의 상기 클록 스큐 스케쥴을 양자화된 양만큼 조정하는 과정은, 선행 슬랙 및 후행 슬랙이 모두 음의 슬랙인 경우 양자화 스텝 크기 내에서 상기 선행 슬랙 및 상기 후행 슬랙을 동등하게 만들기 위해 상기 클록 스큐 스케쥴을 조정하는 단계를 포함하는 방법.
  6. 제 1 항에 있어서,
    상기 증분의 레이턴시 조정을 상기 회로 모델로 제공하는 단계를 여러 차례 반복하는 단계는, 복수의 파이프라인 단계들을 위해 클록 슬랙의 여러 단계의 사전 예측 스케쥴링을 수행하는 단계를 포함하는 방법.
  7. 제 1 항에 있어서,
    상기 클록 스큐 스케쥴이 조정되는 양자화된 양은 스큐 버퍼 회로와 관련되는 지연이고,
    상기 최대 풀 문턱값은 상기 최대 푸시 문턱값보다 작은 방법.
  8. 제 1 항에 있어서,
    상기 증분의 레이턴시 조정을 상기 회로 모델로 제공하는 단계를 여러 차례 반복하는 단계는, 상기 회로 모델을 타이밍 수렴의 방향으로 재구성하기 위해 물리적인 합성 최적화와 함께 상기 클록 스큐 스케쥴을 최적화하는 단계를 포함하는 방법.
  9. 제 1 항에 있어서,
    각각의 종점의 상기 클록 스큐 스케쥴의 조정을 위한 후보들인 상기 하나 이상의 종점들을 결정하는 과정은, 상기 하나 이상의 종점들을 풀 후보 및 푸시 후보를 포함하는 적어도 두 개의 카테고리들로 분류하는 단계를 포함하는 방법.
  10. 제 1 항에 있어서,
    상기 증분의 레이턴시 조정을 상기 회로 모델로 제공하는 단계는, 슬랙 문턱값 대 스큐 값, 상기 최대 풀 문턱값, 및 상기 최대 푸시 문턱값의 선택을 통해 최악의 음의 슬랙 및 총 음의 슬랙 사이의 선호도를 선택하는 단계를 포함하는 방법.
  11. 복수의 로직 회로로 클록 신호를 제공하도록 구성되는 클록 메시의 모델, 및 상기 복수의 로직 회로의 하나 이상의 종점들에 상기 클록 신호를 적용함으로써 각각이 제어되는 상기 복수의 로직 회로의 모델을 포함하는 디지털 회로 모델을 저장하도록 구성되는 디지털 회로 수신기;
    풀 후보 또는 푸시 후보인 하나 이상의 종점들을 식별하도록 구성되는 조정 후보 식별기;
    상기 풀 후보인 각각의 종점으로 제공되는 상기 클록 신호의 클록 레이턴시를 제 1 양자화된 양만큼 줄이도록 구성되는 클록 풀 스케쥴러;
    상기 클록 풀 스케쥴러가 상기 디지털 회로 모델을 처리한 후 디지털 회로의 타이밍 모델을 갱신하도록 구성되는 타이밍 모델 생성기; 및
    상기 푸시 후보인 각각의 종점으로 제공되는 상기 클록 신호의 상기 클록 레이턴시를 제 2 양자화된 양만큼 증가시키도록 구성되는 클록 푸시 스케쥴러를 포함하되,
    상기 디지털 회로 모델의 클록 타이밍은 상기 조정 후보 식별기, 상기 클록 풀 스케쥴러, 상기 타이밍 모델 생성기, 및 상기 클록 푸시 스케쥴러를 여러 차례 통하여 증가하도록 조정되는 장치.
  12. 제 11 항에 있어서,
    상기 풀 후보들을 조정하는 것과 상기 푸시 후보들을 조정하는 것을 별개의 단계들에서 수행함으로써, 상기 하나 이상의 종점들 사이에서 상기 클록 레이턴시의 충돌들이 방지되는 장치.
  13. 제 11 항에 있어서,
    선행 슬랙 및 후행 슬랙이 모두 음의 슬랙인 경우, 상기 클록 푸시 스케쥴러는 상기 선행 슬랙 및 상기 후행 슬랙을 동등하게 만들기 위해 상기 클록 신호의 상기 클록 레이턴시를 조정하도록 구성되는 장치.
  14. 제 11 항에 있어서,
    상기 디지털 회로의 복수의 파이프라인 단계들을 위해, 슬랙의 여러 단계의 사전 예측 스케쥴링이 수행되는 장치.
  15. 제 11 항에 있어서,
    상기 클록 풀 스케쥴러는 상기 디지털 회로 모델의 상기 풀 후보인 종점의 상기 클록 레이턴시를 줄이도록 구성되고,
    상기 클록 푸시 스케쥴러는 상기 디지털 회로 모델의 상기 푸시 후보인 종점의 상기 클록 레이턴시를 증가시키도록 구성되는 장치.
  16. 제 11 항에 있어서,
    상기 클록 풀 스케쥴러는 제 1 풋 프린트를 갖는 느린 셀을 상기 제 1 풋 프린트를 갖는 빠른 셀로 교체하도록 구성되고,
    상기 클록 푸시 스케쥴러는 상기 제 1 풋 프린트를 갖는 빠른 셀을 상기 제 1 풋 프린트를 갖는 느린 셀로 교체하도록 구성되는 장치.
  17. 제 11 항에 있어서,
    상기 디지털 회로 모델은 물리적인 레이아웃 정보를 포함하고,
    상기 클록 풀 스케쥴러 및 상기 클록 푸시 스케쥴러는 상기 디지털 회로 모델의 상기 물리적인 레이아웃 정보가 무효로 되지 않도록 상기 클록 레이턴시를 조정하도록 구성되는 장치.
  18. 제 11 항에 있어서,
    상기 조정 후보 식별기는 선행 슬랙 또는 후행 슬랙을 갖는 종점들을 식별하되, 상기 선행 슬랙 또는 상기 후행 슬랙이 슬랙 문턱값 대 스큐 값을 초과하는 경우에만 상기 선행 슬랙 또는 상기 후행 슬랙을 갖는 종점들을 식별하도록 구성되는 장치.
  19. 디지털 회로의 클록 스큐 스케쥴들을 조정하기 위한 프로그램에 있어서,
    각각의 로직 회로의 종점으로 각각의 클록 신호를 입력함으로써 로직 회로들 각각을 제어하는 클록 메시에 의해 제어되는 상기 로직 회로들을 포함하는 회로 모델을 수신하는 단계; 및
    최소 슬랙 문턱값보다 큰 절대 슬랙의 양과 관련되는 하나 이상의 종점들을 결정하고, 음의 선행 슬랙과 관련되는 각각의 종점을 위하여 각각의 종점의 클록 스큐 스케쥴을 양자화된 양만큼 최대 푸시 문턱값까지 조정하고, 음의 후행 슬랙과 관련되는 각각의 종점을 위하여 각각의 종점의 상기 클록 스큐 스케쥴을 양자화된 양만큼 최대 풀 문턱값까지 조정함으로써, 증분의 타이밍 갱신을 상기 회로 모델로 제공하는 단계를 포함하는 처리를 컴퓨팅 장치에서 실행하도록 구성되는, 기록 매체에 저장된 프로그램.
  20. 제 19 항에 있어서,
    상기 처리에서, 각각의 종점을 위하여 상기 클록 스큐 스케쥴이 조정된 후 별개의 타이밍 갱신이 수행되지 않는, 기록 매체에 저장된 프로그램.
KR1020150143590A 2014-10-27 2015-10-14 클록 신호의 레이턴시를 조정하기 위한 방법, 장치, 및 프로그램 KR102413712B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201462069278P 2014-10-27 2014-10-27
US201462069276P 2014-10-27 2014-10-27
US62/069,278 2014-10-27
US62/069,276 2014-10-27
US14/814,495 2015-07-30
US14/814,495 US9571074B2 (en) 2014-10-27 2015-07-30 Efficient skew scheduling methodology for performance and low power of a clock-mesh implementation

Publications (2)

Publication Number Publication Date
KR20160049465A true KR20160049465A (ko) 2016-05-09
KR102413712B1 KR102413712B1 (ko) 2022-06-27

Family

ID=55698704

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150143590A KR102413712B1 (ko) 2014-10-27 2015-10-14 클록 신호의 레이턴시를 조정하기 위한 방법, 장치, 및 프로그램

Country Status (4)

Country Link
US (1) US9571074B2 (ko)
KR (1) KR102413712B1 (ko)
CN (1) CN105553448B (ko)
DE (1) DE102015117511A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106125822B (zh) * 2016-06-23 2019-02-15 中国电子科技集团公司第五十八研究所 一种降低长时钟走线上时钟偏斜的方法
US20180006653A1 (en) * 2016-06-29 2018-01-04 Altera Corporation Integrated circuits with hybrid fixed/configurable clock networks
US10423743B2 (en) * 2016-11-15 2019-09-24 Synopsys, Inc. Context-dependent useful skew estimation for optimization, placement, and clock tree synthesis
CN106788353A (zh) * 2016-11-18 2017-05-31 深圳市紫光同创电子有限公司 一种时钟偏斜纠正方法及电路、终端设备
CN106815657B (zh) * 2017-01-05 2020-08-14 国网福建省电力有限公司 一种考虑时序性和可靠性的配电网双层规划方法
US10048316B1 (en) 2017-04-20 2018-08-14 Qualcomm Incorporated Estimating timing slack with an endpoint criticality sensor circuit
US10755009B1 (en) 2017-04-20 2020-08-25 Synopsys, Inc. Optimization after allocating potential slacks to clock arrival times
US10289795B1 (en) * 2017-08-22 2019-05-14 Cadence Design Systems, Inc. Routing tree topology generation
US10445265B2 (en) * 2017-10-20 2019-10-15 Cisco Technology, Inc. Method and apparatus for deskewing decentralized data streams
US11829769B2 (en) * 2018-12-18 2023-11-28 Northwestern University Instruction driven dynamic clock management for deep pipeline and out-of-order operation of microprocessor using on-chip critical path messenger and elastic pipeline clocking
CN111835335B (zh) * 2020-05-26 2021-06-04 上海安路信息科技股份有限公司 现场可编程门阵列的时钟结构及其调整方法
CN112632887B (zh) * 2020-12-18 2023-04-18 展讯通信(上海)有限公司 存储器的时钟延时调整方法及装置、存储介质、终端
CN114818595B (zh) * 2022-06-24 2022-09-13 飞腾信息技术有限公司 芯片模块接口时钟构建方法、装置、存储介质及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0830655A (ja) * 1994-07-19 1996-02-02 Matsushita Electric Ind Co Ltd 半導体装置の同期回路レイアウト設計方法
US6550045B1 (en) * 2001-11-20 2003-04-15 Lsi Logic Corporation Changing clock delays in an integrated circuit for skew optimization
KR100652312B1 (ko) * 1999-09-20 2006-11-29 마츠시타 덴끼 산교 가부시키가이샤 클록회로 및 그 설계방법
KR20140082538A (ko) * 2012-12-21 2014-07-02 삼성전자주식회사 클록 스큐 구현 방법 및 이를 적용한 집적 회로

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7296246B1 (en) 2003-11-05 2007-11-13 Cadence Design Systems, Inc. Multi-domain clock skew scheduling
CN101038602A (zh) * 2007-04-19 2007-09-19 复旦大学 一种工艺参数变化下成品率驱动的时钟偏差安排方法
US7937604B2 (en) 2007-04-19 2011-05-03 International Business Machines Corporation Method for generating a skew schedule for a clock distribution network containing gating elements
US8336012B2 (en) * 2009-04-09 2012-12-18 Lsi Corporation Automated timing optimization
US8539413B1 (en) 2010-04-27 2013-09-17 Applied Micro Circuits Corporation Frequency optimization using useful skew timing
CN103324774B (zh) * 2012-12-29 2016-05-25 东南大学 一种基于时钟规划偏差算法的处理器性能优化方法
US8677298B1 (en) * 2013-01-04 2014-03-18 Altera Corporation Programmable device configuration methods adapted to account for retiming

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0830655A (ja) * 1994-07-19 1996-02-02 Matsushita Electric Ind Co Ltd 半導体装置の同期回路レイアウト設計方法
KR100652312B1 (ko) * 1999-09-20 2006-11-29 마츠시타 덴끼 산교 가부시키가이샤 클록회로 및 그 설계방법
US6550045B1 (en) * 2001-11-20 2003-04-15 Lsi Logic Corporation Changing clock delays in an integrated circuit for skew optimization
KR20140082538A (ko) * 2012-12-21 2014-07-02 삼성전자주식회사 클록 스큐 구현 방법 및 이를 적용한 집적 회로

Also Published As

Publication number Publication date
US9571074B2 (en) 2017-02-14
US20160118966A1 (en) 2016-04-28
DE102015117511A1 (de) 2016-04-28
KR102413712B1 (ko) 2022-06-27
CN105553448B (zh) 2020-09-22
CN105553448A (zh) 2016-05-04

Similar Documents

Publication Publication Date Title
KR102413712B1 (ko) 클록 신호의 레이턴시를 조정하기 위한 방법, 장치, 및 프로그램
US8205182B1 (en) Automatic synthesis of clock distribution networks
CN105027440B (zh) 用于高频时钟的低噪声计时的状态机
US7917882B2 (en) Automated digital circuit design tool that reduces or eliminates adverse timing constraints due to an inherent clock signal skew, and applications thereof
US20080263488A1 (en) Method for generating a skew schedule for a clock distribution network containing gating elements
US8977998B1 (en) Timing analysis with end-of-life pessimism removal
JP2009053989A (ja) 半導体回路設計方法
US10262096B2 (en) Component placement with repacking for programmable logic devices
US9672008B2 (en) Pausible bisynchronous FIFO
JP5120785B2 (ja) 非同期式論理回路の論理回路設計装置、論理回路設計方法および論理回路設計プログラム
KR102440129B1 (ko) 저전력 모드 지원 컴퓨터 시스템 및 그것의 방법
WO2023279341A1 (zh) 用于设计异步电路的方法和电子设备
US10380287B1 (en) Systems and methods for modifying a balanced clock structure
US10248750B2 (en) Power savings method in a clock mesh-based design through a smart decloning technique
US10404255B1 (en) Device for automatic configuration of semiconductor integrated circuit
KR20160078423A (ko) 에뮬레이션 및 프로토타이핑 플랫폼 상의 파티셔닝에 의한 동적 상호접속부
Saifhashemi et al. Performance and area optimization of a bundled-data intel processor through resynthesis
US9152756B2 (en) Group based routing in programmable logic device
US10372851B2 (en) Independently projecting a canonical clock
US10318699B1 (en) Fixing hold time violations using hold time budgets and slacks of setup times
CN112580278B (zh) 逻辑电路的优化方法、优化装置以及存储介质
US11321514B1 (en) Macro clock latency computation in multiple iteration clock tree synthesis
JPWO2008133116A1 (ja) 回路設計装置、回路設計方法および回路設計プログラム
US10885952B1 (en) Memory data transfer and switching sequence
Haetzer et al. A comparison of parallel systemc simulation approaches at RTL

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant