KR20240012406A - 테스트가능한 시간-디지털 컨버터 - Google Patents

테스트가능한 시간-디지털 컨버터 Download PDF

Info

Publication number
KR20240012406A
KR20240012406A KR1020237040590A KR20237040590A KR20240012406A KR 20240012406 A KR20240012406 A KR 20240012406A KR 1020237040590 A KR1020237040590 A KR 1020237040590A KR 20237040590 A KR20237040590 A KR 20237040590A KR 20240012406 A KR20240012406 A KR 20240012406A
Authority
KR
South Korea
Prior art keywords
multiplexer
input
output
coupled
inverter
Prior art date
Application number
KR1020237040590A
Other languages
English (en)
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 KR20240012406A publication Critical patent/KR20240012406A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K5/00Manipulating of pulses not covered by one of the other main groups of this subclass
    • H03K5/13Arrangements having a single output and transforming input signals into pulses delivered at desired time intervals
    • H03K5/131Digitally controlled
    • GPHYSICS
    • G04HOROLOGY
    • G04FTIME-INTERVAL MEASURING
    • G04F10/00Apparatus for measuring unknown time intervals by electric means
    • G04F10/005Time-to-digital converters [TDC]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K5/00Manipulating of pulses not covered by one of the other main groups of this subclass
    • H03K2005/00013Delay, i.e. output pulse is delayed after input pulse and pulse length of output pulse is dependent on pulse length of input pulse
    • H03K2005/00019Variable delay
    • H03K2005/00058Variable delay controlled by a digital setting

Landscapes

  • Physics & Mathematics (AREA)
  • Nonlinear Science (AREA)
  • General Physics & Mathematics (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

지연 선택기는 제1 멀티플렉서, 제1 인버터, 제2 멀티플렉서, 및 제2 인버터를 포함한다. 제1 멀티플렉서는 지연 선택기의 입력에 커플링되는 제1 입력을 갖는다. 제1 인버터는 지연 선택기의 입력과 제1 멀티플렉서의 제2 입력 사이에 커플링된다. 제2 멀티플렉서는 제1 멀티플렉서의 출력에 커플링되는 제1 입력을 갖는다. 제2 인버터는 제1 멀티플렉서의 출력과 제2 멀티플렉서의 제2 입력 사이에 커플링된다.

Description

테스트가능한 시간-디지털 컨버터
본 개시내용은 일반적으로 지연 선택기에 관한 것이다. 특히, 본 개시내용은 시간-디지털 컨버터를 위한 지연 선택기(delay selector)에 관한 것이다.
안전-필수 애플리케이션(safety-critical application)들은 집적 회로(integrated circuits)(IC)의 성능 저하 및 노후화를 모니터링한다. 따라서, 전압, 온도, 및 경로 모니터링을 위한 다양한 센서들이 IC들에 구축된다. 이들 센서들로부터의 데이터는 효율적인 실리콘 브링-업(silicone bring-up), 대량 생산, 및 현장 테스트(in-field testing)를 지원하기 위해 제조 테스트들 및 시스템 내 테스트(in-system test)들 동안 수집된다. 특히, 경로 모니터링(path monitoring)(PM) 유닛들은 IC에서 선택된 경로들에 대한 전파 지연의 저하를 측정하는 데 사용될 수 있다.
본 명세서에서 설명되는 실시예들은 테스트가능한 시간-디지털 컨버터(time-to-digital converter)들(TDC들) 및 TDC들 내의 지연 선택기들을 포함한다. 실시예에 따르면, 지연 선택기는 제1 멀티플렉서, 제1 인버터, 제2 멀티플렉서, 및 제2 인버터를 포함한다. 제1 멀티플렉서는 지연 선택기의 입력에 커플링되는 제1 입력을 갖는다. 제1 인버터는 지연 선택기의 입력과 제1 멀티플렉서의 제2 입력 사이에 커플링된다. 제2 멀티플렉서는 제1 멀티플렉서의 출력에 커플링되는 제1 입력을 갖는다. 제2 인버터는 제1 멀티플렉서의 출력과 제2 멀티플렉서의 제2 입력 사이에 커플링된다.
지연 선택기는 제2 인버터와 직렬로 제1 멀티플렉서의 출력과 제2 멀티플렉서의 제2 입력 사이에 커플링되는 버퍼를 포함할 수 있다.
지연 선택기는 제3 멀티플렉서, 제3 인버터, 및 하나 이상의 버퍼를 포함할 수 있다. 제3 멀티플렉서는 제2 멀티플렉서의 출력에 커플링되는 제1 입력을 갖는다. 제3 인버터는 제2 멀티플렉서의 출력과 제3 멀티플렉서의 제2 입력 사이에 커플링된다. 하나 이상의 버퍼는 제3 인버터와 직렬로 제2 멀티플렉서의 출력과 제3 멀티플렉서의 제2 입력 사이에 커플링된다. 제1 멀티플렉서의 출력과 제2 멀티플렉서의 제2 입력 사이에 제2 인버터와 직렬로 커플링되는 것보다 제2 멀티플렉서의 출력과 제3 멀티플렉서의 제2 입력 사이에 제3 인버터와 직렬로 더 많은 버퍼들이 커플링될 수 있다.
지연 선택기는 제2 멀티플렉서의 출력과 지연 선택기의 제1 출력 사이에 커플링되는 버퍼를 포함할 수 있다. 제2 멀티플렉서의 출력은 지연 선택기의 제2 출력에 커플링될 수 있다.
다른 실시예에 따르면, 시간-디지털 컨버터(TDC)는 지연 선택기 및 제1 플립플롭을 포함한다. 지연 선택기는 지연 선택기의 입력에 커플링되는 제1 입력을 갖는 제1 멀티플렉서; 지연 선택기의 입력과 제1 멀티플렉서의 제2 입력 사이에 커플링되는 제1 인버터; 제1 멀티플렉서의 출력에 커플링되는 제1 입력을 갖는 제2 멀티플렉서; 및 제1 멀티플렉서의 출력과 제2 멀티플렉서의 제2 입력 사이에 커플링되는 제2 인버터를 포함한다. 제1 플립플롭은 지연 선택기의 출력에 커플링되는 입력을 갖는다.
TDC는 제2 플립플롭; 및 제2 멀티플렉서의 출력과 제2 플립플롭의 입력 사이에 커플링되는 버퍼를 포함할 수 있다.
TDC는 제2 멀티플렉서의 출력에 커플링되는 제1 입력을 갖는 제3 멀티플렉서; 제2 멀티플렉서의 출력과 제3 멀티플렉서의 제2 입력 사이에 커플링되는 제3 인버터; 및 제3 인버터와 직렬로 제2 멀티플렉서의 출력과 제3 멀티플렉서의 제2 입력 사이에 커플링되는 하나 이상의 버퍼를 포함할 수 있다. 제1 멀티플렉서의 출력과 제2 멀티플렉서의 제2 입력 사이에 제2 인버터와 직렬로 커플링되는 것보다 제2 멀티플렉서의 출력과 제3 멀티플렉서의 제2 입력 사이에 제3 인버터와 직렬로 더 많은 버퍼들이 커플링될 수 있다. TDC는 제1 멀티플렉서 및 제2 멀티플렉서에 제어 신호들을 제공하도록 배열되는 레지스터를 포함할 수 있다. 제어 신호들은 지연 선택기에 의해 제공되는 지연을 조정할 수 있다.
실시예에 따르면, TDC는 지연 선택기의 입력에 커플링되는 제1 입력을 갖는 제1 멀티플렉서; 지연 선택기의 입력과 제1 멀티플렉서의 제2 입력 사이에 커플링되는 제1 인버터; 제1 멀티플렉서의 출력에 커플링되는 제1 입력을 갖는 제2 멀티플렉서; 및 제1 멀티플렉서의 출력과 제2 멀티플렉서의 제2 입력 사이에 커플링되는 제2 인버터를 포함하는 지연 선택기를 포함한다. TDC는 제3 멀티플렉서 - 제3 멀티플렉서는 제3 멀티플렉서의 제1 입력에서 지연 선택기의 출력을 수신하도록 배열됨 -; 및 제3 멀티플렉서의 출력에 커플링되는 제1 플립플롭을 포함한다.
TDC는 지연 선택기의 출력과 제3 멀티플렉서의 제2 입력 사이에 커플링되는 제3 인버터; 및 지연 선택기의 출력과 제3 멀티플렉서의 제1 입력 사이에 커플링되는 버퍼를 포함할 수 있다.
제3 멀티플렉서의 제2 입력은 반전 입력(inverting input)일 수 있고, 지연 선택기의 출력에 커플링될 수 있다. 제1 멀티플렉서의 제2 입력은 제1 인버터를 포함하는 반전 입력일 수 있다. 제2 멀티플렉서의 제2 입력은 제2 인버터를 포함하는 반전 입력일 수 있다.
TDC는 제1 멀티플렉서 및 제2 멀티플렉서에 제어 신호들을 제공하도록 배열되는 레지스터를 포함할 수 있다. 제어 신호들은 지연 선택기에 의해 제공되는 지연을 조정할 수 있다. TDC는 레지스터에 의해 제공되는 제어 신호들에 기초하여 제어 신호를 제3 멀티플렉서에 생성하도록 배열되는 로직을 포함할 수 있다. 로직에 의해 생성되는 제어 신호는 레지스터에 의해 제공되는 제어 신호들의 배타적 논리합(exclusive or)일 수 있다. 레지스터는 제3 멀티플렉서에 제어 신호를 생성하도록 배열될 수 있다.
본 개시내용은 아래에 주어진 상세한 설명으로부터 및 본 개시내용의 실시예들의 첨부 도면들로부터 더 완전하게 이해될 것이다. 도면들은 본 개시내용의 실시예들에 대한 지식과 이해를 제공하는 데 사용되고, 본 개시내용의 범위를 이들 특정 실시예들로 제한하지 않는다. 또한, 도면들은 반드시 일정한 비율로 도시되지는 않는다.
도 1은 직렬 및 병렬 시간-디지털 컨버터들(TDC들)의 다이어그램들을 도시한다.
도 2는 경로 모니터링(PM) 유닛의 타이밍 모델을 도시한다.
도 3은 지연 선택기의 자동 테스트 패턴 생성(automatic test pattern generation)(ATPG) 모델을 도시한다.
도 4는 테스트가능한 지연 선택기를 구성하기 위한 예시적인 구현 의존적 접근 방식을 도시한다.
도 5는 테스트가능한 지연 선택기들의 구성을 위한 예시적인 구현 독립적 접근 방식을 도시한다.
도 6은 테스트가능한 지연 선택기들의 구성을 위한 예시적인 구현 독립적 접근 방식을 도시한다.
도 7은 테스트가능한 직렬 8-비트 TDC의 예를 도시한다.
도 8은 테스트가능한 하이브리드 TDC의 예를 도시한다.
도 9는 테스트가능한 하이브리드 TDC의 예를 도시한다.
도 10a 및 도 10b는 테스트가능한 지연 선택기 내에서 반전들의 효과를 제거하기 위한 예시적인 기술들을 예시한다.
도 11a 및 도 11b는 테스트가능한 지연 선택기 내에서 반전들의 효과를 제거하기 위한 예시적인 기술들을 예시한다.
도 12는 회로 테스트를 위한 예시적인 동작들을 예시하는 흐름도이다.
도 13은 본 개시내용의 일부 실시예들에 따른 집적 회로의 설계 및 제조 동안 사용되는 다양한 프로세스들의 흐름도를 도시한다.
도 14는 본 개시내용의 일부 실시예들에 따른 예시적인 에뮬레이션 시스템의 다이어그램을 도시한다.
도 15는 본 개시내용의 실시예들이 동작할 수 있는 예시적인 컴퓨터 시스템의 다이어그램을 도시한다.
본 개시내용의 양태들은 테스트가능한 시간-디지털 컨버터들에 관한 것이다. 위에서 논의된 바와 같이, 경로 모니터링(PM) 유닛들은 집적 회로(IC)에서 선택된 경로들에 대한 전파 지연의 저하를 측정하는 데 사용될 수 있다. PM 유닛들은 전파 지연의 저하를 모니터링하기 위한 지연 선택기를 갖는 시간-디지털 컨버터(TDC)를 포함한다. 따라서, TDC들은 올바르지 않은 출력 값이 생성될 때까지 입력 신호들에 엑스트라 지연(extra delay)을 추가함으로써 전파 신호들에 대한 저하를 추정한다. 지연 선택기는 특정 문제들을 제시할 수 있다. 예를 들어, 직렬 TDC의 지연 선택기는 테스트가능하지 않을 수 있다. 결과적으로, 전파 지연의 저하의 측정들이 올바르지 않거나 오해의 소지가 있을 수 있다. 병렬 TDC는 이들 이슈들 중 일부를 해결할 수 있지만, 병렬 TDC는 직렬 TDC보다 더 큰 하드웨어 오버헤드를 갖는다.
본 개시내용은 2-입력 멀티플렉서(multiplexer)들(MUX들)을 사용하는 TDC들의 다양한 설계들을 설명하며, 이는 지연 선택기의 특정 결함들의 테스트를 허용한다. 다른 양태들은, 본 명세서에서 더 상세하게 설명되는 바와 같이, 직렬 TDC 구현과 병렬 TDC 구현을 결합할 수 있는 하이브리드 TDC의 구현을 포함한다. 일반적으로, TDC 설계들은 더 큰 MUX들을 사용하는 기존 TDC들의 기능들을 수행하기 위해 인버터들 및 2-입력 MUX들을 사용한다. 2-입력 MUX들 각각은 단일 제어 비트 또는 신호에 의해 제어될 수 있고, 제어 신호에 대한 변경들은 TDC에 의해 제공되는 지연을 변경한다. 추가적으로, 인버터들은 또한, 제어 신호가 변경될 때, MUX들이 상이한 신호들을 출력하게 한다.
이들 설계들은 하나 이상의 기술적 이점을 제공할 수 있다. 예를 들어, TDC들에 대한 제어 신호들 중 하나 이상이 변경될 때, TDC들은 상이한 값들을 출력할 수 있다. 결과적으로, TDC들의 출력들을 검사함으로써 TDC들을 테스트하는 것이 더 쉽다. 추가적으로, TDC들에 대한 제어 신호들 중 하나 이상을 변경하면 선택된 전파 지연들도 또한 변경하기 때문에, 전파 지연들의 저하들이 기존 설계들에 비해 더 쉽게 테스트될 수 있다. 다른 예로서, TDC들은 기존 병렬 TDC 설계들에 비해 더 낮은 하드웨어 오버헤드를 유지관리할 수 있다.
도 1은 직렬 TDC(100A) 및 병렬 TDC(100B)의 다이어그램들을 도시한다. 직렬 TDC(100A)는 한 번에 하나의 측정을 수행하고, n:1 지연 선택기(101)(n은 양의 정수임) 및 단일 캡처 플립플롭(102)을 포함한다. n:1 지연 선택기(101)는 멀티플렉서(106)에 의해 테스트 중인 경로로부터 선택적으로 포함되고 제외되는 일련의 n-1개의 버퍼(예를 들어, 버퍼(104))를 포함한다. 이러한 방식으로, 테스트 중인 선택된 경로들의 전파 지연의 저하가 결정될 수 있다. 또한, 직렬 TDC(100A)는 도 1에 도시되지 않은 임베디드 log2n-비트 레지스터(또는 카운터)를 포함할 수 있으며, 여기서, 레지스터의 값은 지연 선택기에 의해 추가되는 지연 요소들(또는 버퍼들)의 수를 결정한다. 반면, 병렬 TDC(100B)는 병렬로 n개의 측정을 수행하고, 일련의 n-1개의 버퍼(예를 들어, 버퍼(104)) 및 n개의 캡처 플립플롭(예를 들어, 플립플롭(102))을 포함한다.
직렬 TDC(100A)의 이점들은, 특정 실시예들에서, 병렬 TDC(100B)보다 더 작은 하드웨어 오버헤드를 갖는 것을 포함한다. 직렬 TDC(100A)의 한 가지 단점은, 도 3과 관련하여 더 자세히 설명되는 바와 같이, 직렬로 다수의 측정들을 취해야 하고 지연 선택기(101)가 테스트가능하지 않다는 점이다. PM 유닛들의 설계 고려사항들은: 정확도, 하드웨어 오버헤드, 및 테스트 애플리케이션 시간을 포함한다. 안전 필수 회로들은 수백 개의 PM 유닛들을 포함할 수 있으며, 이는 하드웨어 오버헤드에 중점을 둔다.
도 2는 PM 유닛의 타이밍 모델(200)을 도시한다. 데이터 및 클록 경로들은 구성가능한 지연 및 엑스트라 지연을 포함하며, 여기서, 구성가능한 지연은 일련의 버퍼들의 전파 지연과 동일하고, 엑스트라 지연은 경로 선택기 멀티플렉서(MUX) 게이트들 및 지연 선택기 MUX 게이트들의 전파 지연과 동일하다. 현재 컨텍스트에서, MUX 게이트들의 전파 지연의 변동들은 정확도에 영향을 미치고, PM 유닛들의 정확도는 데이터 경로의 2-입력 MUX 게이트들의 수에 비례하지 않는다.
도 3은 직렬 TDC들의 결함을 보여주는 데 사용되는 4:1 지연 선택기(302)의 자동 테스트 패턴 생성(ATPG) 모델(300)을 도시한다. 이 예는 제로 지연 모델에 기초한 4:1 지연 선택기(302)의 ATPG 모델(300) 및 등가 회로(304)를 도시한다. 따라서, 4:1 지연 선택기(302)의 선택 신호들 S0 및 S1의 값들은 그 로직 거동을 변경하지 않는다. ATPG 모델(300)이 지연을 고려하지 않기 때문에, 지연 선택기(302)의 ATPG 모델(300)은 테스트가능하지 않게 된다. 즉, 멀티플렉서(MUX)(306)에 대한 선택 신호와 상관없이, 동일한 출력이 생성될 수 있다. 선택 신호들의 이들 결함들은 테스트가능하지 않으며, 이들이 존재하는 경우, 측정들이 부정확하거나 손상된다.
도 4는 테스트가능한 n:1 지연 선택기를 구성하기 위한 예시적인 구현 의존적 접근 방식을 도시하며, 여기서, 파라미터 n의 통상적인 값들은 8 내지 32의 정수이다. 도시된 바와 같이, n-입력 MUX는 적어도 n-1개의 2-입력 MUX로서 구성될 수 있다. 구체적으로, 4-입력 MUX(402)를 사용하는 4:1 지연 선택기(400)는 3개의 2-입력 MUX(406, 408, 및 410)를 사용하여 테스트가능한 4:1 지연 선택기(404)로서 대신 구성될 수 있다. 테스트가능한 4:1 지연 선택기(404)의 경로들은 동일한 수의 2-입력 MUX를 포함할 수 있다. 또한, 4-입력 MUX(402)가 테스트가능한 것을 보장하기 위해, 각각의 2-입력 MUX(406, 408, 및 410)의 두 입력은 인버터(예를 들어, 인버터(412))를 지연 요소로서 사용함으로써 반대 값들(예를 들어, 상이한 로직 상태들의 값들)을 수신할 수 있다. 이 접근 방식은 n-입력 MUX의 내부 구조에 대한 지식을 수반한다. 또한, n-입력 MUX는, n이 2의 거듭제곱(power)이 아닐 때, 경로 조정들을 포함한다. 즉, MUX의 입력들 사이의 지연 요소로서 인버터를 사용함으로써, MUX의 출력은 MUX를 제어하는 데 사용되는 선택 신호에 따라 로직 상태들을 변경할 것이다. 따라서, 지연 선택기는 제로 지연 모델을 사용하여도 모델링 및 테스트가 가능하다.
도 5는, n이 2의 거듭제곱일 때(예를 들어, n=4 및 n=8), 테스트가능한 n:1 지연 선택기들의 구성을 위한 예시적인 구현 독립적 접근 방식을 도시한다. 구현 독립적인 접근 방식은 2-입력 MUX들의 수를 n-1로부터 log2n으로 감소시킨다. 구체적으로, 4:1 지연 선택기(500)는 4:1 지연 선택기(500)에 대한 입력 신호를 반전시키는 인버터(502)를 포함한다. 2-입력 MUX(504)는 인버터(502)로부터 입력 신호 및 반전된 입력 신호를 수신한다. 4:1 지연 선택기(500)는 또한 2-입력 MUX(504)의 출력을 반전시키는 인버터(506)를 포함한다. 다른 2-입력 MUX(508)는 인버터(506)로부터 2-입력 MUX(504)의 출력 및 2-입력 MUX(504)의 반전된 출력을 수신한다. 인버터들(502 및 506)은 또한 4:1 지연 선택기(500)에서 지연 요소들로서 역할을 한다. 추가적으로, 추가 지연을 도입하기 위해 인버터(506)와 직렬로 버퍼가 연결될 수 있다. 도 4 및 도 5의 예들에서 볼 수 있듯이, 4:1 지연 선택기(500)는 2-입력 MUX들의 수를 3개로부터 2개로 감소시킨다(또는 1.5x 감소).
추가적으로, 8:1 지연 선택기(510)는 8:1 지연 선택기(510)에 대한 입력 신호를 반전시키는 인버터(512)를 포함한다. 2-입력 MUX(510)는 인버터(512)로부터 입력 신호 및 반전된 입력 신호를 수신한다. 8:1 지연 선택기(510)는 또한 2-입력 MUX(514)의 출력을 반전시키는 인버터(516)를 포함한다. 추가 지연을 도입하기 위해 인버터(516)와 직렬로 버퍼가 연결될 수 있다. 다른 2-입력 MUX(518)는 인버터(516)로부터 2-입력 MUX(514)의 출력 및 2-입력 MUX(514)의 반전된 출력을 수신한다. 다른 인버터(520)는 2-입력 MUX(518)의 출력을 반전시킨다. 추가 지연을 도입하기 위해 인버터(520)와 직렬로 다수의 버퍼들이 연결될 수 있다. 다른 2-입력 MUX(522)는 인버터(520)로부터 2-입력 MUX(518)의 출력 및 2-입력 MUX(518)의 반전된 출력을 수신한다. 인버터들(512, 516, 및 518)은 또한 8:1 지연 선택기(510)에서 지연 요소들로서 역할을 한다. 결과적으로, 8:1 지연 선택기(510)는 7개의 2-입력 MUX가 아닌 3개의 2-입력 MUX를 사용한다(또는 2.33x 감소).
n=16 및 n=32인 경우, 2-입력 MUX들의 수의 감소는 각각 3.75x 및 6.2x이다. 도시된 바와 같이, MUX들 각각의 입력들 중 하나는 인버터에 의해 구동되어 각각의 MUX의 출력이 MUX에 대한 선택 신호에 따라 로직 상태들을 뒤집게 된다.
도 6은, n이 2의 거듭제곱이 아닐 때(예를 들어, n=5 및 n=7), 테스트가능한 n:1 지연 선택기들의 구성을 위한 예시적인 구현 독립적 접근 방식을 도시한다. 구체적으로, 5:1 지연 선택기(600)는 5:1 지연 선택기(600)에 대한 입력 신호를 반전시키는 인버터(602)를 포함한다. 2-입력 MUX(604)는 인버터(602)로부터 입력 신호 및 반전된 입력 신호를 수신한다. 다른 인버터(606)는 2-입력 MUX(604)의 출력을 반전시킨다. 추가 지연을 도입하기 위해 인버터(606)와 직렬로 버퍼가 연결될 수 있다. 다른 2-입력 MUX(608)는 인버터(606)로부터 2-입력 MUX(604)의 출력 및 2-입력 MUX(604)의 반전된 출력을 수신한다. 다른 인버터(610)는 2-입력 MUX(608)의 출력을 반전시킨다. 다른 2-입력 MUX(612)는 인버터(610)로부터 2-입력 MUX(608)의 출력 및 2-입력 MUX(608)의 반전된 출력을 수신한다. 레지스터(614)는 2-입력 MUX들(604, 608, 및 612)에 선택 신호들을 제공한다.
7:1 지연 선택기(616)는 7:1 지연 선택기(616)에 대한 입력 신호를 반전시키는 인버터(618)를 포함한다. 2-입력 MUX(620)는 인버터(618)로부터 입력 신호 및 반전된 입력 신호를 수신한다. 다른 인버터(622)는 2-입력 MUX(620)의 출력을 반전시킨다. 추가 지연을 도입하기 위해 인버터(622)와 직렬로 버퍼가 연결될 수 있다. 다른 2-입력 MUX(624)는 인버터(622)로부터 2-입력 MUX(620)의 출력 및 2-입력 MUX(620)의 반전된 출력을 수신한다. 다른 인버터(626)는 2-입력 MUX(624)의 출력을 반전시킨다. 추가 지연을 도입하기 위해 인버터(626)와 직렬로 다수의 버퍼들이 연결될 수 있다. 다른 2-입력 MUX(628)는 인버터(626)로부터 2-입력 MUX(624)의 출력 및 2-입력 MUX(624)의 반전된 출력을 수신한다. 레지스터(630)는 2-입력 MUX(620, 624, 및 628)에 선택 신호들을 제공한다.
지연 선택기들(600 및 616) 아래의 표들은 대응하는 지연 선택기(600 또는 616)의 MUX들을 제어하는 데 사용되는 대응하는 선택 신호들의 값들 및 대응하는 지연을 도시한다. 예를 들어, 5:1 지연 선택기(600)의 MUX들에 대한 선택 신호가 011인 경우, MUX(604)는 로직 로우(0)를 수신하고, MUX(608)는 로직 하이(1)를 수신하고, MUX(612)는 로직 하이(1)를 수신한다. 대응하는 지연은 각각의 지연 요소의 지연의 3배일 수 있다. 도 6에 도시된 바와 같이, 레지스터(614)는 5:1 지연 선택기(600)로부터 5개의 상이한 레벨의 지연을 생성하는 제어 신호들을 제공할 수 있다. 다른 예로서, 7:1 지연 선택기의 MUX들에 대한 선택 신호가 010인 경우, MUX(620)는 로직 로우(0)를 수신하고, MUX(624)는 로직 하이(1)를 수신하고, MUX(628)는 로직 로우(0)를 수신한다. 대응하는 지연은 각각의 지연 요소의 지연의 2배일 수 있다. 도 6에 도시된 바와 같이, 레지스터(630)는 7:1 지연 선택기(616)로부터 7개의 상이한 레벨의 지연을 생성하는 제어 신호들을 제공할 수 있다.
일부 양태들은 한 번에 다수의 측정들을 허용하는 TDC 구현들에 관한 것이다. PM 유닛의 잠재적인 애플리케이션들은 지연 선택기에 대한 선택 신호들이 임베디드 레지스터에 의해 생성되는 경우를 포함하여 다양한 시나리오들을 지원할 수 있다.
도 7은 PM 유닛이 8:1 지연 선택기(702), 캡처 플립플롭(704), 및 3-비트 레지스터(706)를 갖는 직렬 8-비트 TDC(700)를 포함하는 접근 방식을 도시한다. 8:1 지연 선택기(702)는 8:1 지연 선택기(702)의 입력 신호를 반전시키는 인버터(708)를 포함한다. 2-입력 MUX(710)는 인버터(708)로부터 입력 신호 및 반전된 입력 신호를 수신한다. 인버터(712)는 2-입력 MUX(710)의 출력을 반전시킨다. 추가 지연을 도입하기 위해 인버터(712)와 직렬로 버퍼가 연결될 수 있다. 2-입력 MUX(714)는 인버터(712)로부터 2-입력 MUX(710)의 출력 및 2-입력 MUX(710)의 반전된 출력을 수신한다. 인버터(716)는 2-입력 MUX(714)의 출력을 반전시킨다. 추가 지연을 도입하기 위해 인버터(716)와 직렬로 다수의 버퍼들이 연결될 수 있다. 2-입력 MUX(718)는 인버터(716)로부터 2-입력 MUX(714)의 출력 및 2-입력 MUX(714)의 반전된 출력을 수신한다. 캡처 플립플롭(704)은 2-입력 MUX(718)의 출력을 수신한다.
도 8은 PM 유닛이 8:2 지연 선택기(802), 2개의 캡처 플립플롭(804 및 806), 및 2-비트 레지스터(808)를 갖는 8-비트 하이브리드 TDC(800)를 포함하는 양태를 도시한다. 인버터(810)는 8:2 지연 선택기(802)의 입력 신호를 반전시킨다. 추가 지연을 도입하기 위해 인버터(810)와 직렬로 버퍼가 연결될 수 있다. 2-입력 MUX(812)는 인버터(810)로부터 입력 신호 및 반전된 입력 신호를 수신한다. 인버터(814)는 2-입력 MUX(812)의 출력을 반전시킨다. 추가 지연을 도입하기 위해 인버터(814)와 직렬로 다수의 버퍼들이 연결될 수 있다. 2-입력 MUX(816)는 인버터(814)로부터 2-입력 MUX(812)의 출력 및 2-입력 MUX(812)의 반전된 출력을 수신한다. 캡처 플립플롭(804)은 (예를 들어, 버퍼를 통해) 2-입력 MUX(816)의 출력의 지연된 버전을 수신한다. 캡처 플립플롭(806)은 2-입력 MUX(816)의 출력을 수신한다.
도 7과 도 8의 예들을 비교하면, 8:2 지연 선택기(802)의 하드웨어 오버헤드가, 8:1 지연 선택기(702)에 비해, 3비트로부터 2비트로의 레지스터(808)의 사이즈의 감소로 인해 하나의 2-입력 MUX뿐만 아니라 하나의 2-입력 AND 게이트만큼 감소된다. 또한, (예를 들어, 다수의 플립플롭들을 사용하여) 한 번에 다수의 측정들을 수행하면 패턴들의 수를 감소시킴으로써 테스트 애플리케이션 시간을 효과적으로 감소시킨다.
도 9는 8:4 지연 선택기(902), 4개의 캡처 플립플롭(904, 906, 908, 및 910) 및 1-비트 레지스터(912)를 갖는 예시적인 8-비트 하이브리드 TDC(900)이다. 8:4 지연 선택기는 8:4 지연 선택기(902)에 대한 입력 신호를 반전시키는 인버터(914)를 포함한다. 추가 지연을 도입하기 위해 인버터(914)와 직렬로 다수의 버퍼들이 연결된다. 2-입력 MUX(916)는 인버터(914)로부터 입력 신호 및 반전된 입력 신호를 수신한다. 캡처 플립플롭(910)은 2-입력 MUX(916)의 출력을 수신한다. 캡처 플립플롭(908)은 (예를 들어, 버퍼를 통해) 2-입력 MUX(916)의 출력의 지연된 버전을 수신한다. 캡처 플립플롭(906)은 (예를 들어, 추가 버퍼를 통해) 2-입력 MUX(916)의 출력의 훨씬 더 지연된 버전을 수신한다. 캡처 플립플롭(904)은 (예를 들어, 추가 버퍼를 통해) 2-입력 MUX(916)의 출력의 훨씬 더 지연된 버전을 수신한다. TDC(900)는 또한 8:4 지연 선택기(902)에 대한 입력 신호를 선택하는 경로 선택기 MUX(918)를 포함한다.
도 9의 예를 이전 예들과 비교한다. 하이브리드 TDC(900)의 하드웨어 오버헤드는 도 7에 도시된 직렬 TDC(700)보다 약간 높을 수 있다. 8:4 지연 선택기(902)에서 2개의 MUX를 감소시키는 것은 경로 선택기 MUX(918)를 확장하고 PM 유닛에 더 많은 경로들을 추가하는 것을 가능하게 한다. 이 접근 방식은 적절한 경로 그룹화 및 조정을 사용하여 모든 선택된 경로들의 잠재적인 경로 저하들이 경로 모니터링 윈도우에 맞는 것을 확인한다. 결과적으로, TDC(900)는 단일 측정을 수행하는 8-비트 직렬 TDC를 갖는 4개의 PM 유닛을 한 번에 4개의 측정을 수행하는 8-비트 하이브리드 TDC를 갖는 하나의 PM 유닛으로 효과적으로 결합한다. 이 접근 방식은, 적용가능할 때, PM 유닛의 하드웨어 오버헤드의 감소를 지원한다. 요약하자면, 테스트가능한 지연 선택기들을 구성하고 한 번에 다수의 측정들을 수행하여 정확도를 개선시키고 PM 유닛들의 하드웨어 오버헤드를 감소시키는 동시에 테스트 애플리케이션 시간을 감소시키기 위한 피처들이 설명된다.
도 10a 및 도 10b는 테스트가능한 지연 선택기 내에서 반전들의 효과를 제거하기 위한 예시적인 기술들을 예시한다. 도 10a에 도시된 바와 같이, (도 7을 사용하여 논의된 바와 같은) 8:1 지연 선택기(702)에 멀티플렉서(1008)가 추가될 수 있다. 멀티플렉서(1008)의 입력들 중 하나에 대한 신호는 인버터(1004)로부터의 8:1 지연 선택기(702)의 반전된 출력일 수 있고, 멀티플렉서(1008)의 입력들 중 다른 하나에 대한 신호는 버퍼(1006)로부터의 8:1 지연 선택기(702)의 버퍼링된 출력일 수 있다. 멀티플렉서(1008)는 지연 선택기(702)의 멀티플렉서들의 제어 입력들에 커플링되는 입력들을 갖는 로직(1002)을 통해 제어될 수 있다. 도 10b에 도시된 바와 같이, 인버터(1004) 및 버퍼(1006)를 사용하는 대신에, 멀티플렉서(1008)의 입력은 반전 입력일 수 있다. 지연 선택기(702)에 대해서도 유사하게, 인버터들을 사용하는 대신, 지연 선택기(702)의 멀티플렉서들 각각의 입력이 반전 입력일 수 있다. 레지스터(1010) 또는 레지스터(1010)의 출력들의 결함들은 도 10a 및 도 10b의 예들에서 테스트가능하지 않을 수 있다.
도 11a 및 도 11b는 테스트가능한 지연 선택기 내에서 반전들의 효과를 제거하기 위한 예시적인 기술들을 예시한다. 도 11a 및 도 11b에서 알 수 있는 바와 같이, 멀티플렉서(1008)에 대한 제어 신호는 레지스터(1102)에 엑스트라 비트를 추가함으로써 제공되며, 여기서, 레지스터(1102)의 엑스트라 비트의 값은 레지스터(1102)가 항상 짝수 개의 1(even number of ones)을 출력하는 것을 보장할 수 있다. 모든 멀티플렉서들의 제어 신호들이 짝수 개의 1을 포함하는 경우, 테스트가능한 지연 선택기(702) 내의 반전들의 효과가 제거될 수 있다. 이 조건을 보장하기 위해, 멀티플렉서(1008)에 대한 제어 신호인 레지스터(1102)의 엑스트라 비트는 8:1 지연 선택기(702)의 멀티플렉서들에 대한 제어 신호들의 XOR이다. 즉, 레지스터(1102)의 엑스트라 비트는 8:1 지연 선택기(702)의 멀티플렉서들에 대한 제어 신호들의 패리티 체크 비트이다. 결과적으로, 테스트가능한 지연 선택기 내의 반전들의 효과가 제거될 수 있을 뿐만 아니라, 레지스터(1102)의 결함들 또는 레지스터(1102)의 출력들이 도 11a 및 도 11b의 예들에서 테스트가능할 수 있다.
도 12는 본 개시내용의 특정 양태들에 따른, 회로 테스트를 위한 예시적인 동작(1200)을 예시하는 흐름도이다. 아래에서 더 자세히 설명되는 바와 같이, 동작(1200)은 비일시적 컴퓨터 판독 가능 매체에 저장된, 하나 이상의 소프트웨어 모듈일 수 있는, 하나 이상의 명령어 세트에 의해 구현될 수 있다. 컴퓨터 시스템(예를 들어, 도 15의 컴퓨터 시스템(1500))의 하나 이상의 프로세서는 하나 이상의 프로세서로 하여금 동작(1200)을 수행하게 하는 하나 이상의 명령어 세트를 판독하고 실행하도록 구성될 수 있다. 일부 예들에서, 동작(1200)의 일부 단계들은 하나 이상의 소프트웨어 컴포넌트로서 하나 이상의 명령어 세트로서 구현될 수 있고, 동작(1200)의 다른 단계들은 하나 이상의 다른 소프트웨어 모듈로서 하나 이상의 다른 명령어 세트로서 구현될 수 있다. 상이한 소프트웨어 컴포넌트들은 일부 예들에서 상이한 컴퓨터 시스템들의 개개의 하나 이상의 프로세서에 의한 실행을 위해 상이한 컴퓨터 시스템들의 상이한 비일시적 컴퓨터 판독가능 매체에 배포되고 저장될 수 있다.
1202에서, 하나 이상의 프로세서는 회로의 모델(예를 들어, ATPG 모델)을 수신한다. 1204에서, 하나 이상의 프로세서는 모델을 사용하여 회로의 테스트를 수행한다. 회로는 지연 선택기를 포함할 수 있으며, 지연 선택기는 지연 선택기의 제1 노드에 커플링되는 제1 입력을 갖는 제1 멀티플렉서, 및 제1 노드와 제1 멀티플렉서의 제2 입력 사이에 커플링되는 하나 이상의 제1 지연 요소를 갖는다. 일부 양태들에서, 제1 멀티플렉서의 제1 입력에 대한 입력 신호는 제1 멀티플렉서의 제2 입력에 대한 입력 신호와 비교하여 반전된다. 본 개시내용의 일부 양태들에서, 하나 이상의 제1 지연 요소 중 하나는 인버터이다. 하나 이상의 제1 지연 요소 중 적어도 다른 하나는 버퍼일 수 있다.
일부 양태들에서, 지연 선택기는 또한 지연 선택기의 제2 노드에 커플링되는 제1 입력을 갖는 제2 멀티플렉서 - 제2 멀티플렉서의 출력은 제1 노드에 커플링됨 -, 및 제2 노드와 제2 멀티플렉서의 제2 입력 사이에 커플링되는 하나 이상의 제2 지연 요소를 포함할 수 있다. 하나 이상의 제2 지연 요소 중 하나는 인버터일 수 있다. 일부 양태들에서, 하나 이상의 제2 지연 요소의 수량은 하나 이상의 제1 지연 요소의 수량과 상이하다.
일부 양태들에서, 회로는 지연 선택기를 갖는 시간-디지털 컨버터(TDC)를 포함하고, TDC는 제1 멀티플렉서의 출력에 커플링되는 입력을 갖는 제1 플립플롭을 더 포함한다. TDC는 또한 제2 플립플롭, 및 제1 멀티플렉서의 출력과 제2 플립플롭의 입력 사이에 커플링되는 지연 요소를 포함할 수 있다.
특정 실시예들에서, 지연 선택기는 지연 선택기의 입력에 커플링되는 제1 입력을 갖는 제1 멀티플렉서를 포함한다. 지연 선택기는 또한 지연 선택기의 입력과 제1 멀티플렉서의 제2 입력 사이에 커플링되는 제1 인버터를 포함한다. 지연 선택기는 제1 멀티플렉서의 출력에 커플링되는 제1 입력을 갖는 제2 멀티플렉서, 및 제1 멀티플렉서의 출력과 제2 멀티플렉서의 제2 입력 사이에 커플링되는 제2 인버터를 더 포함한다. TDC는 지연 선택기 및 지연 선택기의 출력에 커플링되는 입력을 갖는 제1 플립플롭을 포함한다. 일부 실시예들에서, TDC는 제3 멀티플렉서 - 제3 멀티플렉서는 제3 멀티플렉서의 제1 입력에서 지연 선택기의 출력을 수신하도록 배열됨 -, 및 제3 멀티플렉서의 출력에 커플링되는 제1 플립플롭을 포함한다.
도 13은 집적 회로를 표현하는 설계 데이터 및 명령어들을 변환하고 검증하기 위해 집적 회로와 같은 제조 물품의 설계, 검증, 및 제조 동안 사용되는 프로세스들의 예시적인 세트(1300)를 예시한다. 이들 프로세스들 각각은 다수의 모듈들 또는 오퍼레이션들로서 구성되고 인에이블될 수 있다. 'EDA'라는 용어는 '전자 설계 자동화(Electronic Design Automation)'라는 용어를 나타낸다. 이들 프로세스들은 설계자에 의해 공급되는 정보를 갖는 제품 아이디어(1310)의 생성으로 시작하며, 그 정보는 EDA 프로세스들(1312)의 세트를 사용하는 제조 물품을 생성하기 위해 변환된다. 설계가 파이널라이징(finalize)될 때, 설계는 테이프-아웃(1334)되고, 이때 집적 회로에 대한 아트워크(예를 들어, 기하학적 패턴들)가 마스크 세트를 제조하기 위해 제조 설비(fabrication facility)로 전송되고, 그 후 그것은 집적 회로를 제조하기 위해 사용된다. 테이프-아웃 후에, 반도체 다이가 제조(1336)되고, 완성된 집적 회로(1340)를 제조하기 위해 패키징 및 조립 프로세스들(1338)이 수행된다.
회로 또는 전자 구조에 대한 명세들(specifications)은 로우-레벨 트랜지스터 재료 레이아웃들로부터 하이-레벨 디스크립션 언어들에 이르기까지 다양할 수 있다. VHDL, Verilog, SystemVerilog, SystemC, MyHDL 또는 OpenVera와 같은 하드웨어 디스크립션 언어(hardware description language)('HDL')를 사용하여, 회로들 및 시스템들을 설계하기 위해 하이-레벨의 표현이 사용될 수 있다. HDL 디스크립션은 로직-레벨 레지스터 전송 레벨(register transfer level)('RTL') 디스크립션, 게이트-레벨 디스크립션, 레이아웃-레벨 디스크립션, 또는 마스크-레벨 디스크립션으로 변환될 수 있다. 더 자세한 디스크립션인 각각의 더 낮은 표현 레벨은 설계 디스크립션에 더 유용한 세부 사항, 예를 들어, 디스크립션을 포함하는 모듈들에 대한 더 많은 세부 사항들을 추가한다. 더 자세한 디스크립션들인 표현의 더 낮은 레벨들은 컴퓨터에 의해 생성되거나, 설계 라이브러리로부터 도출되거나, 또는 다른 설계 자동화 프로세스에 의해 생성될 수 있다. 더 상세한 디스크립션들을 특정하기 위한 표현 언어의 더 낮은 레벨에서의 명세 언어의 예는 SPICE이며, 이는 많은 아날로그 컴포넌트들을 갖는 회로들의 상세한 디스크립션들에 사용된다. 표현의 각각의 레벨에서의 디스크립션들은 해당 층의 대응하는 시스템들(예를 들어, 정식 검증 시스템)에 의한 사용을 위해 인에이블된다. 설계 프로세스는 도 13에 도시된 시퀀스를 사용할 수 있다. 프로세스들은 EDA 제품들(또는 EDA 시스템들)에 의해 인에이블되는 것에 의해 설명된다.
시스템 설계(1314) 동안, 제조될 집적 회로의 기능성이 특정된다. 설계는 전력 소비, 성능, 영역(물리적 및/또는 코드 라인들), 및 비용들의 감소 등과 같은 원하는 특성들에 대해 최적화될 수 있다. 상이한 유형들의 모듈들 또는 컴포넌트들로의 설계의 파티셔닝이 이 스테이지에서 발생할 수 있다.
로직 설계 및 기능 검증(1316) 동안, 회로 내의 모듈들 또는 컴포넌트들은 하나 이상의 디스크립션 언어로 특정되고, 명세는 기능 정확성에 대해 체크된다. 예를 들어, 회로의 컴포넌트들은 설계되는 회로 또는 시스템의 명세의 요건들에 매칭하는 출력들을 생성하도록 검증될 수 있다. 기능 검증은 테스트벤치 생성기들, 정적 HDL 체크기(checker)들, 및 공식 검증기들과 같은 시뮬레이터들 및 다른 프로그램들을 사용할 수 있다. 일부 실시예들에서, '에뮬레이터들' 또는 '프로토타이핑 시스템들'로서 지칭되는 컴포넌트들의 특수 시스템들은 기능 검증의 속도를 높이기 위해 사용된다.
테스트를 위한 합성 및 설계(1318) 동안, HDL 코드는 넷리스트로 변환된다. 일부 실시예들에서, 넷리스트는 그래프 구조일 수 있으며, 여기서, 그래프 구조의 에지들은 회로의 컴포넌트들을 표현하고, 그래프 구조의 노드들은 컴포넌트들이 어떻게 상호연결되는지를 표현한다. HDL 코드 및 넷리스트 둘 다는, 제조될 때, 집적 회로가 특정 설계에 따라 수행하는 것을 검증하기 위해 EDA 제품에 의해 사용될 수 있는 계층적 제조 물품들이다. 넷리스트는 타겟 반도체 제조 기술에 대해 최적화될 수 있다. 추가적으로, 완성된 집적 회로는 집적 회로가 명세의 요건들을 충족시키는 것을 검증하기 위해 테스트될 수 있다.
넷리스트 검증(1320) 동안, 넷리스트는 타이밍 제약들에 대한 준수 및 HDL 코드와의 대응에 대해 체크된다. 설계 플래닝(1322) 동안, 집적 회로에 대한 전체적인 플로어 플랜(overall floor plan)이 구성되고 타이밍 및 최상위-레벨 라우팅을 위해 분석된다.
레이아웃 또는 물리적 구현(1324) 동안, 물리적 배치(트랜지스터들 또는 커패시터들과 같은 회로 컴포넌트들의 포지셔닝) 및 라우팅(다수의 전도체들에 의한 회로 컴포넌트들의 연결)이 발생하고, 특정 로직 기능들을 인에이블하기 위한 라이브러리로부터의 셀들의 선택이 수행될 수 있다. 본 명세서에서 사용되는 바와 같이, '셀(cell)'이라는 용어는 부울 로직 함수(예를 들어, AND, OR, NOT, XOR) 또는 저장 기능(이를테면, 플립플롭 또는 래치)을 제공하는 트랜지스터들, 다른 컴포넌트들, 및 상호연결들의 세트를 특정할 수 있다. 본 명세서에서 사용되는 바와 같이, 회로 '블록(block)'은 2개 이상의 셀을 지칭할 수 있다. 셀 및 회로 블록 둘 다는 모듈 또는 컴포넌트로서 지칭될 수 있고, 물리적 구조물들 및 시뮬레이션들 둘 다로서 인에이블된다. 파라미터들은 사이즈와 같이 ('표준 셀들(standard cells)'에 기초하여) 선택된 셀들에 대해 특정되고, EDA 제품들에 의한 사용을 위해 데이터베이스에서 액세스가능하게 된다.
분석 및 추출(1326) 동안, 회로 기능은 레이아웃 레벨에서 검증되고, 이는 레이아웃 설계의 개선을 허용한다. 물리적 검증(1328) 동안, DRC 제약들, 전기적 제약들, 리소그래피 제약들과 같은 제조 제약들이 정확하도록, 및 회로부(circuitry) 기능이 HDL 설계 명세와 매칭하도록 보장하기 위해 레이아웃 설계가 체크된다. 해상도 향상(1330) 동안, 레이아웃의 기하형상은 회로 설계가 어떻게 제조되는지를 개선하도록 변환된다.
테이프-아웃 동안, 데이터는 리소그래피 마스크들의 생성을 위해 (적절한 경우에 리소그래피 향상들이 적용된 후에) 사용되도록 생성된다. 마스크 데이터 준비(1332) 동안, '테이프-아웃' 데이터는 완성된 집적 회로들을 생성하는 데 사용되는 리소그래피 마스크들을 생성하는 데 사용된다.
(도 15의 컴퓨터 시스템(1500), 또는 도 14의 호스트 시스템(1407)과 같은) 컴퓨터 시스템의 스토리지 서브시스템은 본 명세서에서 설명되는 EDA 제품들의 일부 또는 전부에 의해 사용되는 프로그램들 및 데이터 구조들, 및 라이브러리에 대한 셀들의 개발을 위해 그리고 라이브러리를 사용하는 물리적 및 논리적 설계를 위해 사용되는 제품들을 저장하는 데 사용될 수 있다.
도 14는 예시적인 에뮬레이션 환경(1400)의 다이어그램을 도시한다. 에뮬레이션 환경(1400)은 회로 설계의 기능성을 검증하도록 구성될 수 있다. 에뮬레이션 환경(1400)은 호스트 시스템(1407)(예를 들어, EDA 시스템의 부분인 컴퓨터) 및 에뮬레이션 시스템(1402)(예를 들어, FPGA(Field Programmable Gate Array)들 또는 프로세서들과 같은 프로그래밍가능 디바이스들의 세트)를 포함할 수 있다. 호스트 시스템은 회로 설계를 에뮬레이트하기 위한 에뮬레이션 시스템을 구조화하기 위해 컴파일러(1410)를 사용함으로써 데이터 및 정보를 생성한다. 에뮬레이트될 회로 설계는 또한 테스트 중인 설계(Design Under Test)(DUT)로서 지칭되며, 여기서, 에뮬레이션으로부터의 데이터 및 정보는 DUT의 기능성을 검증하는 데 사용된다.
호스트 시스템(1407)은 하나 이상의 프로세서를 포함할 수 있다. 호스트 시스템이 다수의 프로세서들을 포함하는 실시예에서, 호스트 시스템에 의해 수행되는 것으로서 본 명세서에서 설명되는 기능들은 다수의 프로세서들 사이에 분산될 수 있다. 호스트 시스템(1407)은, DUT를 표현하는 디스크립션 언어(description language)로 기입된 사양들을 변환하고 DUT를 에뮬레이트하기 위한 에뮬레이션 시스템(1402)을 구조화하는 데 사용되는 데이터(예를 들어, 바이너리 데이터) 및 정보를 생성하기 위한 컴파일러(1410)를 포함할 수 있다. 컴파일러(1410)는 DUT의 타이밍을 변환하고/하거나, 변경하고/하거나, 재구조화하고/하거나, 이에 새로운 기능들을 추가하고/하거나, 이를 제어할 수 있다.
호스트 시스템(1407)과 에뮬레이션 시스템(1402)은 에뮬레이션 연결에 의해 운반되는 신호들을 사용하여 데이터 및 정보를 교환한다. 연결은 RS232(Recommended Standard 232) 또는 USB(universal serial bus) 프로토콜들과 호환되는 핀 구조물들을 갖는 케이블들과 같은 하나 이상의 전기 케이블일 수 있지만, 이에 제한되지 않는다. 연결은 유선 통신 매체 또는 네트워크, 이를테면, 근거리 네트워크 또는 광역 네트워크, 이를테면, 인터넷일 수 있다. 연결은 BLUETOOTH 또는 IEEE 1402.11과 같은 무선 프로토콜을 사용하는 하나 이상의 액세스 포인트가 있는 네트워크 또는 무선 통신 매체일 수 있다. 호스트 시스템(1407)과 에뮬레이션 시스템(1402)은 네트워크 서버와 같은 제3 디바이스를 통해 데이터 및 정보를 교환할 수 있다.
에뮬레이션 시스템(1402)은 다수의 FPGA들(또는 다른 모듈들), 이를테면, FPGA들(14041 및 14042)뿐만 아니라 추가 FPGA들(내지 1404N)을 포함한다. 각각의 FPGA는 FPGA들이 신호들을 교환할 수 있도록 FPGA가 다른 FPGA들(및 잠재적으로 다른 에뮬레이션 컴포넌트들)에 연결되는 하나 이상의 FPGA 인터페이스를 포함할 수 있다. FPGA 인터페이스는 입력/출력 핀 또는 FPGA 패드로서 지칭될 수 있다. 에뮬레이터가 FPGA들을 포함할 수 있지만, 에뮬레이터들의 실시예들은 DUT들을 에뮬레이트하기 위해 FPGA들 대신 또는 이와 함께 다른 유형들의 로직 블록들을 포함할 수 있다. 예를 들어, 에뮬레이션 시스템(1402)은 커스텀 FPGA들, 에뮬레이션 또는 프로토타이핑을 위한 특수 ASIC들, 메모리들, 및 입력/출력 디바이스들을 포함할 수 있다.
프로그래밍가능 디바이스는 프로그래밍가능 로직 블록들의 어레이 및 프로그래밍가능 로직 블록들이 HDL 코드의 디스크립션들에 따라 상호 연결되도록 인에이블할 수 있는 상호 연결들의 계층 구조를 포함할 수 있다. 프로그래밍가능 로직 블록들 각각은 복잡한 조합 기능(complex combinational function)들을 인에이블하거나 또는 AND, 및 XOR 로직 블록들과 같은 로직 게이트들을 인에이블할 수 있다. 일부 실시예들에서, 로직 블록들은 또한 간단한 래치들, 플립-플롭들, 또는 다른 메모리 블록들일 수 있는 메모리 요소들/디바이스들을 포함할 수 있다. 상이한 로직 블록들 사이의 상호 연결들의 길이에 따라, 신호들은 상이한 시간들에 로직 블록들의 입력 단자들에 도달할 수 있고, 따라서, 메모리 요소들/디바이스들에 일시적으로 저장될 수 있다.
FPGA들(14041-804N)은 하나 이상의 보드(14121 및 14122)뿐만 아니라 추가 보드들(내지 1412M)에 배치될 수 있다. 다수의 보드들이 에뮬레이션 유닛(14141)에 배치될 수 있다. 에뮬레이션 유닛 내의 보드들은 에뮬레이션 유닛의 백플레인 또는 임의의 다른 유형들의 연결들을 사용하여 연결될 수 있다. 또한, 다수의 에뮬레이션 유닛들(예를 들어, 14141 및 14142 내지 1414K)이 케이블들 또는 임의의 다른 수단에 의해 서로 연결되어 멀티-에뮬레이션 유닛 시스템을 형성할 수 있다.
에뮬레이트될 DUT에 대해, 호스트 시스템(1407)은 에뮬레이션 시스템(1402)에 하나 이상의 비트 파일을 송신한다. 비트 파일들은 DUT의 디스크립션을 특정할 수 있으며, 트레이스 및 주입 로직, 에뮬레이터의 FPGA들에 대한 파티션들의 매핑들, 및 설계 제약들로 호스트 시스템(1407)에 의해 생성된 DUT의 파티션들을 추가로 특정할 수 있다. 비트 파일들을 사용하여, 에뮬레이터는 DUT의 기능들을 수행하도록 FPGA들을 구조화한다. 일부 실시예들에서, 에뮬레이터들의 하나 이상의 FPGA는 FPGA의 실리콘에 구축된 트레이스 및 주입 로직을 가질 수 있다. 이러한 실시예에서, FPGA들은 트레이스 및 주입 로직을 에뮬레이트하도록 호스트 시스템에 의해 구조화되지 않을 수 있다.
호스트 시스템(1407)은 에뮬레이트될 DUT의 디스크립션을 수신한다. 일부 실시예들에서, DUT 디스크립션은 디스크립션 언어(예를 들어, RTL(register transfer language))로 되어 있다. 일부 실시예들에서, DUT 디스크립션은 넷리스트 레벨 파일들 또는 넷리스트 레벨 파일들과 HDL 파일들의 혼합으로 되어 있다. DUT 디스크립션의 부분 또는 전체 DUT 디스크립션이 HDL로 되어 있는 경우, 호스트 시스템은 DUT 디스크립션을 합성하여 DUT 디스크립션을 사용하여 게이트 레벨 넷리스트를 생성할 수 있다. 호스트 시스템은 DUT의 넷리스트를 사용하여 DUT를 다수의 파티션들로 파티셔닝할 수 있으며, 여기서, 파티션들 중 하나 이상은 트레이스 및 주입 로직을 포함한다. 트레이스 및 주입 로직은 FPGA의 인터페이스들을 통해 교환되는 인터페이스 신호들을 트레이싱한다. 추가적으로, 트레이스 및 주입 로직은 트레이싱된 인터페이스 신호들을 FPGA의 로직에 주입할 수 있다. 호스트 시스템은 에뮬레이터의 FPGA에 각각의 파티션을 매핑한다. 일부 실시예들에서, 트레이스 및 주입 로직은 FPGA들의 그룹에 대한 선택 파티션들에 포함된다. 트레이스 및 주입 로직은 에뮬레이터의 FPGA들 중 하나 이상에 구축될 수 있다. 호스트 시스템은 FPGA들에 매핑되도록 멀티플렉서들을 합성할 수 있다. 멀티플렉서들은 트레이스 및 주입 로직에 의해 인터페이스 신호들을 DUT 로직에 주입하는 데 사용될 수 있다.
호스트 시스템은 DUT의 각각의 파티션 및 FPGA들에 대한 파티션들의 매핑을 기술하는 비트 파일들을 생성한다. 트레이스 및 주입 로직이 포함되는 파티션들의 경우, 비트 파일들은 또한 포함되는 로직도 기술한다. 비트 파일들은 장소 및 라우팅(route) 정보 및 설계 제약들을 포함할 수 있다. 호스트 시스템은 DUT의 각각의 컴포넌트를 에뮬레이트할 FPGA들(예를 들어, 각각의 컴포넌트가 매핑되는 FPGA들)을 기술하는 비트 파일들 및 정보를 저장한다.
요청 시, 호스트 시스템은 에뮬레이터에 비트 파일들을 송신한다. 호스트 시스템은 DUT의 에뮬레이션을 시작하도록 에뮬레이터에 시그널링한다. DUT의 에뮬레이션 동안 또는 에뮬레이션의 종료 시에, 호스트 시스템은 에뮬레이션 연결을 통해 에뮬레이터로부터 에뮬레이션 결과들을 수신한다. 에뮬레이션 결과들은 DUT의 에뮬레이션 동안 에뮬레이터에 의해 생성된 데이터 및 정보이며, 이는 각각의 FPGA의 트레이스 및 주입 로직에 의해 트레이싱된 인터페이스 신호들 및 인터페이스 신호들의 상태들을 포함한다. 호스트 시스템은 에뮬레이션 결과들을 저장하고/하거나 에뮬레이션 결과들을 다른 프로세싱 시스템에 송신할 수 있다.
DUT의 에뮬레이션 후에, 회로 설계자는 DUT의 컴포넌트를 디버깅하도록 요청할 수 있다. 이러한 요청이 행해지는 경우, 회로 설계자는 디버깅할 에뮬레이션의 시간 기간을 특정할 수 있다. 호스트 시스템은 저장된 정보를 사용하여 컴포넌트를 에뮬레이트하고 있는 FPGA들을 식별한다. 호스트 시스템은 시간 기간과 연관되고 각각의 식별된 FPGA의 트레이스 및 주입 로직에 의해 트레이싱된 저장된 인터페이스 신호들을 리트리브(retrieve)한다. 호스트 시스템은 식별된 FPGA들을 재-에뮬레이트하도록 에뮬레이터에 시그널링한다. 호스트 시스템은 특정된 시간 기간 동안 컴포넌트를 재-에뮬레이트하도록 에뮬레이터에 리트리브된 인터페이스 신호들을 송신한다. 각각의 식별된 FPGA의 트레이스 및 주입 로직은 호스트 시스템으로부터 수신된 그것의 개개의 인터페이스 신호들을 FPGA에 매핑된 DUT의 로직에 주입한다. FPGA의 다수의 재-에뮬레이션들의 경우, 결과들을 병합하면 전체 디버그 보기(full debug view)를 생성한다.
호스트 시스템은, 에뮬레이션 시스템으로부터, 컴포넌트의 재-에뮬레이션 동안 식별된 FPGA들의 로직에 의해 트레이싱된 신호들을 수신한다. 호스트 시스템은 에뮬레이터로부터 수신된 신호들을 저장한다. 재-에뮬레이션 동안 트레이싱된 신호들은 초기 에뮬레이션 동안의 샘플링 레이트보다 더 높은 샘플링 레이트를 가질 수 있다. 예를 들어, 초기 에뮬레이션에서, 트레이싱된 신호는 X 밀리초마다 컴포넌트의 저장된 상태를 포함할 수 있다. 그러나, 재-에뮬레이션에서, 트레이싱된 신호는 Y 밀리초마다 저장된 상태를 포함할 수 있으며, 여기서, Y는 X보다 작다. 회로 설계자가 재-에뮬레이션 동안 트레이싱된 신호의 파형을 보도록 요청하는 경우, 호스트 시스템은 저장된 신호를 리트리브하고 신호의 플롯을 디스플레이할 수 있다. 예를 들어, 호스트 시스템은 신호의 파형을 생성할 수 있다. 그 후, 회로 설계자는 상이한 시간 기간 동안 동일한 컴포넌트를 재-에뮬레이트하거나 또는 다른 컴포넌트를 재-에뮬레이트하도록 요청할 수 있다.
호스트 시스템(1407) 및/또는 컴파일러(1410)는 설계 합성기 서브-시스템, 매핑 서브-시스템, 런타임 서브-시스템, 결과들 서브-시스템, 디버그 서브-시스템, 파형 서브-시스템, 및 스토리지 서브-시스템과 같되, 이에 제한되지 않는 서브-시스템들을 포함할 수 있다. 서브-시스템들은 개별 또는 다수의 모듈들로서 구조화 및 인에이블될 수 있거나, 또는 2개 이상이 모듈로서 구조화될 수 있다. 이들 서브-시스템들은 함께 에뮬레이터를 구조화하고 에뮬레이션 결과들을 모니터링한다.
설계 합성기 서브-시스템은 DUT를 표현하고 있는 HDL(1405)을 게이트 레벨 로직으로 변환한다. 에뮬레이트될 DUT에 대해, 설계 합성기 서브-시스템은 DUT의 디스크립션을 수신한다. DUT의 디스크립션이 전체적으로 또는 부분적으로 HDL(예를 들어, RTL 또는 다른 표현 레벨)로 되어 있는 경우, 설계 합성기 서브-시스템은 게이트 레벨 로직의 측면에서 DUT의 디스크립션으로 게이트-레벨 넷리스트를 생성하기 위해 DUT의 HDL을 합성한다.
매핑 서브-시스템은 DUT들을 파티셔닝하고 파티션들을 에뮬레이터 FPGA들에 매핑한다. 매핑 서브-시스템은 DUT의 넷리스트를 사용하여 게이트 레벨에서의 DUT를 다수의 파티션들로 파티셔닝한다. 각각의 파티션에 대해, 매핑 서브-시스템은 트레이스 및 주입 로직의 게이트 레벨 디스크립션을 리트리브하고, 로직을 파티션에 추가한다. 위에서 설명된 바와 같이, 파티션에 포함된 트레이스 및 주입 로직은 파티션이 매핑되는 FPGA의 인터페이스들을 통해 교환되는 신호들(트레이스 인터페이스 신호들)을 트레이싱하는 데 사용된다. 트레이스 및 주입 로직은 파티셔닝 전에 DUT에 추가될 수 있다. 예를 들어, 트레이스 및 주입 로직은 DUT의 HDL을 합성하기 전에 또는 그 후에 설계 합성기 서브-시스템에 의해 추가될 수 있다.
트레이스 및 주입 로직을 포함하는 것 외에도, 매핑 서브-시스템은 트레이스 및 주입에 의해 트레이싱되지 않는 특정 DUT 컴포넌트들의 상태들을 트레이싱하기 위해 파티션에 추가 트레이싱 로직을 포함할 수 있다. 매핑 서브-시스템은 파티셔닝 전의 DUT에 또는 파티셔닝 후의 파티션들에 추가 트레이싱 로직을 포함할 수 있다. 설계 합성기 서브-시스템은 HDL 디스크립션을 합성하기 전에 DUT의 HDL 디스크립션에 추가 트레이싱 로직을 포함할 수 있다.
매핑 서브-시스템은 에뮬레이터의 FPGA에 DUT의 각각의 파티션을 매핑한다. 파티셔닝 및 매핑에 대해, 매핑 서브-시스템은 설계 규칙들, 설계 제약들(예를 들어, 타이밍 또는 로직 제약들), 및 에뮬레이터에 대한 정보를 사용한다. DUT의 컴포넌트들에 대해, 매핑 서브-시스템은 각각의 컴포넌트를 에뮬레이트할 FPGA들을 기술하는 정보를 스토리지 서브-시스템에 저장한다.
파티셔닝 및 매핑을 사용하여, 매핑 서브-시스템은 생성된 파티션들 및 에뮬레이터의 각각의 FPGA에 대한 로직의 매핑을 기술하는 하나 이상의 비트 파일을 생성한다. 비트 파일들은 DUT의 제약들 및 FPGA들 사이의 연결들 및 각각의 FPGA 내의 연결들에 대한 라우팅 정보와 같은 추가 정보를 포함할 수 있다. 매핑 서브-시스템은 DUT의 각각의 파티션에 대한 비트 파일을 생성할 수 있고, 스토리지 서브-시스템에 비트 파일을 저장할 수 있다. 회로 설계자로부터의 요청 시, 매핑 서브-시스템은 에뮬레이터에 비트 파일들을 송신하고, 에뮬레이터는 비트 파일들을 사용하여 DUT를 에뮬레이트하기 위해 FPGA들을 구조화할 수 있다.
에뮬레이터가 트레이스 및 주입 로직을 포함하는 특수 ASIC들을 포함하는 경우, 매핑 서브-시스템은 특수 ASIC들을 DUT에 연결하는 특정 구조를 생성할 수 있다. 일부 실시예들에서, 매핑 서브-시스템은 트레이싱된/주입된 신호의 정보 및 정보가 특수 ASIC에 저장되는 위치를 저장할 수 있다.
런타임 서브-시스템은 에뮬레이터에 의해 수행되는 에뮬레이션들을 제어한다. 런타임 서브-시스템은 에뮬레이터가 에뮬레이션 실행을 시작하거나 중지하게 할 수 있다. 추가적으로, 런타임 서브-시스템은 에뮬레이터에 입력 신호들 및 데이터를 제공할 수 있다. 입력 신호들은 연결을 통해 에뮬레이터에 직접적으로 또는 다른 입력 신호 디바이스들을 통해 간접적으로 제공될 수 있다. 예를 들어, 호스트 시스템은 에뮬레이터에 입력 신호들을 제공하기 위해 입력 신호 디바이스를 제어할 수 있다. 입력 신호 디바이스는, 예를 들어, 테스트 보드(직접적으로 또는 케이블들을 통해), 신호 생성기, 다른 에뮬레이터, 또는 다른 호스트 시스템일 수 있다.
결과들 서브-시스템은 에뮬레이터에 의해 생성된 에뮬레이션 결과들을 프로세싱한다. 에뮬레이션 동안 및/또는 에뮬레이션 완료 후에, 결과들 서브-시스템은 에뮬레이션 동안 생성된 에뮬레이션 결과들을 에뮬레이터로부터 수신한다. 에뮬레이션 결과들은 에뮬레이션 동안 트레이싱된 신호들을 포함한다. 구체적으로, 에뮬레이션 결과들은 각각의 FPGA에 의해 에뮬레이트된 트레이스 및 주입 로직에 의해 트레이싱된 인터페이스 신호들을 포함할 수 있고, DUT에 포함된 추가 로직에 의해 트레이싱된 신호들을 포함할 수 있다. 각각의 트레이싱된 신호는 에뮬레이션의 다수의 사이클들에 스패닝(span)될 수 있다. 트레이싱된 신호는 다수의 상태들을 포함하고, 각각의 상태는 에뮬레이션의 시간과 연관된다. 결과들 서브-시스템은 스토리지 서브-시스템에 트레이싱된 신호들을 저장한다. 각각의 저장된 신호에 대해, 결과들 서브-시스템은 트레이싱된 신호를 생성한 FPGA를 나타내는 정보를 저장할 수 있다.
디버그 서브-시스템은 회로 설계자들이 DUT 컴포넌트들을 디버깅하도록 허용한다. 에뮬레이터가 DUT를 에뮬레이트하였고 결과들 서브-시스템이 에뮬레이션 동안 트레이스 및 주입 로직에 의해 트레이싱된 인터페이스 신호들을 수신한 후에, 회로 설계자는 특정 시간 기간 동안 컴포넌트를 재-에뮬레이트함으로써 DUT의 컴포넌트를 디버깅하도록 요청할 수 있다. 컴포넌트 디버깅 요청에서, 회로 설계자는 컴포넌트를 식별하고, 디버깅할 에뮬레이션의 시간 기간을 나타낸다. 회로 설계자의 요청은 디버깅된 컴포넌트들의 상태들이 신호들을 트레이싱하는 로직에 의해 저장되어야 하는 빈도를 나타내는 샘플링 레이트를 포함할 수 있다.
디버그 서브-시스템은 스토리지 서브-시스템에 매핑 서브-시스템에 의해 저장된 정보를 사용하여 컴포넌트를 에뮬레이트하고 있는 에뮬레이터의 하나 이상의 FPGA를 식별한다. 각각의 식별된 FPGA에 대해, 디버그 서브-시스템은, 스토리지 서브-시스템으로부터, 회로 설계자에 의해 나타내어진 시간 기간 동안 FPGA의 트레이스 및 주입 로직에 의해 트레이싱된 인터페이스 신호들을 리트리브한다. 예를 들어, 디버그 서브-시스템은 시간 기간과 연관되는 트레이스 및 주입 로직에 의해 트레이싱된 상태들을 리트리브한다.
디버그 서브-시스템은 에뮬레이터에 리트리브된 인터페이스 신호들을 송신한다. 디버그 서브-시스템은 디버그 서브-시스템에 식별된 FPGA들을 사용하고 각각의 식별된 FPGA의 트레이스 및 주입 로직에 대해 그것의 개개의 트레이싱된 신호들을 FPGA의 로직에 주입하여 요청된 시간 기간 동안 컴포넌트를 재-에뮬레이트하도록 지시한다. 디버그 서브-시스템은 트레이싱 로직이 적절한 인터벌들로 상태들을 트레이싱하도록 에뮬레이터에 회로 설계자에 의해 제공된 샘플링 레이트를 추가로 송신할 수 있다.
컴포넌트를 디버깅하기 위해, 에뮬레이터는 컴포넌트가 매핑된 FPGA들을 사용할 수 있다. 추가적으로, 회로 설계자에 의해 특정된 임의의 포인트에서 컴포넌트의 재-에뮬레이션이 수행될 수 있다.
식별된 FPGA에 대해, 디버그 서브-시스템은 식별된 FPGA의 동일한 구성을 갖는 다수의 에뮬레이터 FPGA들을 로드하기 위한 명령어들을 에뮬레이터에 송신할 수 있다. 디버그 서브-시스템은 다수의 FPGA들을 병렬로 사용하도록 에뮬레이터에 추가적으로 시그널링한다. 다수의 FPGA들로부터의 각각의 FPGA는 인터페이스 신호들의 상이한 시간 윈도우와 사용되어 더 짧은 시간량에서 더 큰 시간 윈도우를 생성한다. 예를 들어, 식별된 FPGA는 특정 사이클들의 양을 사용하는 데 한 시간 이상을 요구할 수 있다. 그러나, 다수의 FPGA들이 식별된 FPGA의 동일한 데이터 및 구조를 갖고 있고 이들 FPGA들 각각이 사이클들의 서브세트를 실행하는 경우, 에뮬레이터는 FPGA들이 모든 사이클들을 총체적으로 사용하는 데 몇 분 정도 요구할 수 있다.
회로 설계자는 재-에뮬레이트하기 위한 DUT 신호들의 계층 구조 또는 리스트를 식별할 수 있다. 이를 인에이블하기 위해, 디버그 서브-시스템은 신호들의 계층 구조 또는 리스트를 에뮬레이트하는 데 필요한 FPGA를 결정하고, 필요한 인터페이스 신호들을 리트리브하고, 재-에뮬레이션을 위해 에뮬레이터에 리트리브된 인터페이스 신호들을 송신한다. 따라서, 회로 설계자는 디버깅/재-에뮬레이트하기 위한 DUT의 임의의 요소(예를 들어, 컴포넌트, 디바이스, 또는 신호)를 식별할 수 있다.
파형 서브-시스템은 트레이싱된 신호들을 사용하여 파형들을 생성한다. 회로 설계자가 에뮬레이션 실행 동안 트레이싱된 신호의 파형을 보도록 요청하는 경우, 호스트 시스템은 스토리지 서브-시스템으로부터 신호를 리트리브한다. 파형 서브-시스템은 신호의 플롯을 디스플레이한다. 하나 이상의 신호에 대해, 에뮬레이터로부터 신호들이 수신될 때, 파형 서브-시스템은 자동으로 신호들의 플롯들을 생성할 수 있다.
도 15는 머신으로 하여금 본 명세서에서 논의되는 방법론들 중 임의의 하나 이상을 수행하게 하기 위한 명령어들의 세트가 실행될 수 있는 컴퓨터 시스템(1500)의 예시적인 머신을 예시한다. 대안적인 구현들에서, 머신은 LAN, 인트라넷, 엑스트라넷, 및/또는 인터넷의 다른 머신들에 연결될 수 있다(예를 들어, 네트워크화될 수 있다). 머신은 클라이언트-서버 네트워크 환경에서 서버 또는 클라이언트 머신의 자격으로, 피어-투-피어(또는 분산) 네트워크 환경에서 피어 머신으로서, 또는 클라우드 컴퓨팅 인프라스트럭처 또는 환경에서 서버 또는 클라이언트 머신으로서 동작할 수 있다.
머신은 개인용 컴퓨터(personal computer)(PC), 태블릿 PC, 셋-톱 박스(set-top box)(STB), 개인용 정보 단말(Personal Digital Assistant)(PDA), 셀룰러 전화, 웹 기기, 서버, 네트워크 라우터, 스위치 또는 브리지, 또는 해당 머신에 의해 취해질 액션들을 특정하는 명령어들의 세트(순차적 또는 다른 방식)를 실행할 수 있는 임의의 머신일 수 있다. 또한, 단일 머신이 예시되어 있지만, "머신(machine)"이라는 용어는 본 명세서에서 논의되는 방법론들 중 임의의 하나 이상을 수행하기 위해 명령어들의 세트(또는 다수의 세트들)를 개별적으로 또는 공동으로 실행하는 머신들의 임의의 컬렉션을 포함하는 것으로 취해져야 할 것이다.
예시적인 컴퓨터 시스템(1500)은 프로세싱 디바이스(1502), 메인 메모리(1504)(예를 들어, 판독 전용 메모리(read-only memory)(ROM), 플래시 메모리, 동적 랜덤 액세스 메모리(dynamic random access memory)(DRAM), 이를테면, 동기식 DRAM(synchronous DRAM)(SDRAM), 정적 메모리(1506)(예를 들어, 플래시 메모리, 정적 랜덤 액세스 메모리(static random access memory)(SRAM) 등), 및 데이터 스토리지 디바이스(1518)를 포함하며, 이들은 버스(1530)를 통해 서로 통신한다.
프로세싱 디바이스(1502)는 마이크로프로세서, 중앙 프로세싱 유닛 등과 같은 하나 이상의 프로세서를 표현한다. 보다 구체적으로, 프로세싱 디바이스는 CISC(complex instruction set computing) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 또는 다른 명령어 세트들을 구현하는 프로세서, 또는 명령어 세트들의 조합을 구현하는 프로세서들일 수 있다. 프로세싱 디바이스(1502)는 또한 ASIC(application specific integrated circuit), FPGA(field programmable gate array), DSP(digital signal processor), 네트워크 프로세서 등과 같은 하나 이상의 특수 목적 프로세싱 디바이스일 수 있다. 프로세싱 디바이스(1502)는 본 명세서에서 설명되는 오퍼레이션들 및 단계들을 수행하기 위한 명령어들(1526)을 실행하도록 구성될 수 있다.
컴퓨터 시스템(1500)은 네트워크(1520)를 통해 통신하기 위한 네트워크 인터페이스 디바이스(1508)를 더 포함할 수 있다. 컴퓨터 시스템(1500)은 또한 비디오 디스플레이 유닛(1510)(예를 들어, LCD(liquid crystal display) 또는 CRT(cathode ray tube)), 영숫자 입력 디바이스(1512)(예를 들어, 키보드), 커서 제어 디바이스(1514)(예를 들어, 마우스), 그래픽 프로세싱 유닛(1522), 신호 생성 디바이스(1516)(예를 들어, 스피커), 그래픽 프로세싱 유닛(1522), 비디오 프로세싱 유닛(1528), 및 오디오 프로세싱 유닛(1532)을 포함할 수 있다.
데이터 스토리지 디바이스(1518)는 본 명세서에서 설명되는 방법론들 또는 기능들 중 임의의 하나 이상을 구현하는 소프트웨어 또는 명령어들(1526)의 하나 이상의 세트가 저장되어 있는 머신 판독가능 저장 매체(1524)(비일시적 컴퓨터 판독가능 매체로서도 알려짐)를 포함할 수 있다. 명령어들(1526)은 또한 컴퓨터 시스템(1500)에 의한 그 실행 동안 메인 메모리(1504) 내에 및/또는 프로세싱 디바이스(1502) 내에 완전히 또는 적어도 부분적으로 상주할 수 있으며, 메인 메모리(1504) 및 프로세싱 디바이스(1502)는 또한 머신 판독가능 저장 매체들을 구성한다.
일부 구현들에서, 명령어들(1526)은 본 개시내용에 대응하는 기능성을 구현하기 위한 명령어들을 포함한다. 머신 판독가능 저장 매체(1524)가 예시적인 구현에서 단일 매체인 것으로 도시되어 있지만, "머신 판독가능 저장 매체(machine-readable storage medium)"라는 용어는 명령어들의 하나 이상의 세트를 저장하는 단일 매체 또는 다수의 매체들(예를 들어, 중앙 집중식 또는 분산 데이터베이스, 및/또는 연관된 캐시들 및 서버들)을 포함하도록 취해져야 한다. "머신 판독가능 저장 매체"라는 용어는 또한, 머신에 의한 실행을 위한 명령어들의 세트를 저장하거나 인코딩할 수 있고 머신 및 프로세싱 디바이스(1502)로 하여금 본 개시내용의 방법론들 중 임의의 하나 이상을 수행하게 하는 임의의 매체를 포함하도록 취해져야 할 것이다. 따라서, "머신 판독가능 저장 매체"라는 용어는 솔리드-스테이트 메모리들, 광학 매체들, 및 자기 매체들을 포함하되, 이에 제한되지 않는 것으로 취해져야 할 것이다.
이전의 상세한 설명들의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 오퍼레이션들의 알고리즘들 및 기호 표현들의 측면에서 제시되었다. 이들 알고리즘 설명들 및 표현들은 데이터 프로세싱 기술 분야의 통상의 기술자들에 의해 그들의 작업의 내용을 본 기술 분야의 다른 통상의 기술자들에게 가장 효과적으로 전달하기 위해 사용되는 방식들이다. 알고리즘은 원하는 결과로 이어지는 오퍼레이션들의 시퀀스일 수 있다. 오퍼레이션들은 물리적 양들의 물리적 조작들을 요구하는 것들이다. 이러한 양들은 저장, 조합, 비교, 및 다른 방식으로 조작될 수 있는 전기 또는 자기 신호들의 형태를 취할 수 있다. 이러한 신호들은 비트들, 값들, 요소들, 기호들, 문자들, 용어들, 숫자들 등으로서 지칭될 수 있다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리적 양들과 연관되어야 하고 단지 이들 양들에 적용되는 편리한 레이블들이라는 점을 명심해야 한다. 본 개시내용으로부터 명백한 바와 같이 달리 구체적으로 언급되지 않는 한, 설명 전반에 걸쳐, 특정 용어들은 컴퓨터 시스템의 레지스터들 및 메모리들 내에서 물리적(전자적) 양들로서 표현되는 데이터를 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 이러한 정보 스토리지 디바이스들 내에서 물리적 양들로서 유사하게 표현되는 다른 데이터로 조작하고 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 액션 및 프로세스들을 지칭한다는 것이 이해된다.
본 개시내용은 또한 본 명세서의 오퍼레이션들을 수행하기 위한 장치에 관한 것이다. 이 장치는 의도된 목적들을 위해 특별히 구성될 수 있거나, 또는 이것은 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 플로피 디스크들, 광학 디스크들, CD-ROM들, 및 자기-광학 디스크(magnetic-optical disk)들을 포함하는 임의의 유형의 디스크, 판독 전용 메모리(read-only memory)(ROM)들, 랜덤 액세스 메모리(random access memory)(RAM)들, EPROM들, EEPROM들, 자기 또는 광학 카드들, 또는 전자 명령어들을 저장하는 데 적절한 임의의 유형의 매체들과 같되, 이에 제한되지 않는 컴퓨터 판독가능 저장 매체에 저장될 수 있으며, 이들 각각은 컴퓨터 시스템 버스에 커플링된다.
본 명세서에서 제시되는 알고리즘들 및 디스플레이들은 본질적으로 임의의 특정 컴퓨터 또는 다른 장치와 관련되지 않는다. 다양한 다른 시스템들이 본 명세서의 교시들에 따라 프로그램들과 함께 사용될 수 있거나, 또는 방법을 수행하기 위해 더 특수화된 장치를 구성하는 것이 편리할 수 있음이 입증될 수 있다. 또한, 본 개시내용은 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 본 명세서에서 설명되는 바와 같이 본 개시내용의 교시들을 구현하기 위해 다양한 프로그래밍 언어들이 사용될 수 있다는 것이 이해될 것이다.
본 개시내용은 본 개시내용에 따른 프로세스를 수행하기 위해 컴퓨터 시스템(또는 다른 전자 디바이스들)을 프로그래밍하는 데 사용될 수 있는 명령어들이 저장된 머신 판독가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 머신 판독가능 매체는 머신(예를 들어, 컴퓨터)에 의해 판독가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 머신 판독가능(예를 들어, 컴퓨터 판독가능) 매체는 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 자기 디스크 저장 매체들, 광학 저장 매체들, 플래시 메모리 디바이스들 등과 같은 머신(예를 들어, 컴퓨터) 판독가능 저장 매체를 포함한다.
전술한 개시내용에서, 본 개시내용의 구현들은 그의 특정 예시적인 구현들을 참조하여 설명되었다. 다음 청구범위에 제시된 바와 같은 본 개시내용의 구현들의 더 넓은 사상 및 범위로부터 벗어나지 않고 다양한 수정들이 이루어질 수 있다는 것이 명백할 것이다. 본 개시내용이 단수 시제로 일부 요소들을 언급하는 경우, 하나보다 많은 요소가 도면들에 도시될 수 있고, 유사한 요소들에는 유사한 번호들로 레이블링된다. 따라서, 본 개시내용 및 도면들은 제한적인 의미라기보다는 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 지연 선택기로서,
    상기 지연 선택기의 입력에 커플링되는 제1 입력을 갖는 제1 멀티플렉서;
    상기 지연 선택기의 입력과 상기 제1 멀티플렉서의 제2 입력 사이에 커플링되는 제1 인버터;
    상기 제1 멀티플렉서의 출력에 커플링되는 제1 입력을 갖는 제2 멀티플렉서; 및
    상기 제1 멀티플렉서의 출력과 상기 제2 멀티플렉서의 제2 입력 사이에 커플링되는 제2 인버터
    를 포함하는, 지연 선택기.
  2. 제1항에 있어서, 상기 제2 인버터와 직렬로 상기 제1 멀티플렉서의 출력과 상기 제2 멀티플렉서의 제2 입력 사이에 커플링되는 버퍼를 더 포함하는, 지연 선택기.
  3. 제1항에 있어서,
    상기 제2 멀티플렉서의 출력에 커플링되는 제1 입력을 갖는 제3 멀티플렉서;
    상기 제2 멀티플렉서의 출력과 상기 제3 멀티플렉서의 제2 입력 사이에 커플링되는 제3 인버터; 및
    상기 제3 인버터와 직렬로 상기 제2 멀티플렉서의 출력과 상기 제3 멀티플렉서의 제2 입력 사이에 커플링되는 하나 이상의 버퍼
    를 더 포함하는, 지연 선택기.
  4. 제3항에 있어서, 상기 제1 멀티플렉서의 출력과 상기 제2 멀티플렉서의 제2 입력 사이에 상기 제2 인버터와 직렬로 커플링되는 것보다 상기 제2 멀티플렉서의 출력과 상기 제3 멀티플렉서의 제2 입력 사이에 상기 제3 인버터와 직렬로 더 많은 버퍼들이 커플링되는, 지연 선택기.
  5. 제1항에 있어서, 상기 제2 멀티플렉서의 출력과 상기 지연 선택기의 제1 출력 사이에 커플링되는 버퍼를 더 포함하고, 상기 제2 멀티플렉서의 출력은 상기 지연 선택기의 제2 출력에 커플링되는, 지연 선택기.
  6. 시간-디지털 컨버터(time-to-digital converter)(TDC)로서,
    지연 선택기 - 상기 지연 선택기는:
    상기 지연 선택기의 입력에 커플링되는 제1 입력을 갖는 제1 멀티플렉서;
    상기 지연 선택기의 입력과 상기 제1 멀티플렉서의 제2 입력 사이에 커플링되는 제1 인버터;
    상기 제1 멀티플렉서의 출력에 커플링되는 제1 입력을 갖는 제2 멀티플렉서; 및
    상기 제1 멀티플렉서의 출력과 상기 제2 멀티플렉서의 제2 입력 사이에 커플링되는 제2 인버터
    를 포함함 -; 및
    상기 지연 선택기의 출력에 커플링되는 입력을 갖는 제1 플립플롭
    을 포함하는, TDC.
  7. 제6항에 있어서,
    제2 플립플롭; 및
    상기 제2 멀티플렉서의 출력과 상기 제2 플립플롭의 입력 사이에 커플링되는 버퍼
    를 더 포함하는, TDC.
  8. 제6항에 있어서,
    상기 제2 멀티플렉서의 출력에 커플링되는 제1 입력을 갖는 제3 멀티플렉서;
    상기 제2 멀티플렉서의 출력과 상기 제3 멀티플렉서의 제2 입력 사이에 커플링되는 제3 인버터; 및
    상기 제3 인버터와 직렬로 상기 제2 멀티플렉서의 출력과 상기 제3 멀티플렉서의 제2 입력 사이에 커플링되는 하나 이상의 버퍼
    를 더 포함하는, TDC.
  9. 제8항에 있어서, 상기 제1 멀티플렉서의 출력과 상기 제2 멀티플렉서의 제2 입력 사이에 상기 제2 인버터와 직렬로 커플링되는 것보다 상기 제2 멀티플렉서의 출력과 상기 제3 멀티플렉서의 제2 입력 사이에 상기 제3 인버터와 직렬로 더 많은 버퍼들이 커플링되는, TDC.
  10. 제8항에 있어서, 상기 제1 멀티플렉서 및 상기 제2 멀티플렉서에 제어 신호들을 제공하도록 배열되는 레지스터를 더 포함하는, TDC.
  11. 제10항에 있어서, 상기 제어 신호들은 상기 지연 선택기에 의해 제공되는 지연을 조정하는, TDC.
  12. TDC로서,
    지연 선택기 - 상기 지연 선택기는:
    상기 지연 선택기의 입력에 커플링되는 제1 입력을 갖는 제1 멀티플렉서;
    상기 지연 선택기의 입력과 상기 제1 멀티플렉서의 제2 입력 사이에 커플링되는 제1 인버터;
    상기 제1 멀티플렉서의 출력에 커플링되는 제1 입력을 갖는 제2 멀티플렉서; 및
    상기 제1 멀티플렉서의 출력과 상기 제2 멀티플렉서의 제2 입력 사이에 커플링되는 제2 인버터
    를 포함함 -;
    제3 멀티플렉서 - 상기 제3 멀티플렉서는 상기 제3 멀티플렉서의 제1 입력에서 상기 지연 선택기의 출력을 수신하도록 배열됨 -; 및
    상기 제3 멀티플렉서의 출력에 커플링되는 제1 플립플롭
    을 포함하는, TDC.
  13. 제12항에 있어서,
    상기 지연 선택기의 출력과 상기 제3 멀티플렉서의 제2 입력 사이에 커플링되는 제3 인버터; 및
    상기 지연 선택기의 출력과 상기 제3 멀티플렉서의 제1 입력 사이에 커플링되는 버퍼
    를 더 포함하는, TDC.
  14. 제12항에 있어서, 상기 제3 멀티플렉서의 제2 입력은 반전 입력이고, 상기 지연 선택기의 출력에 커플링되는, TDC.
  15. 제14항에 있어서,
    상기 제1 멀티플렉서의 제2 입력은 상기 제1 인버터를 포함하는 반전 입력이고;
    상기 제2 멀티플렉서의 제2 입력은 상기 제2 인버터를 포함하는 반전 입력인, TDC.
  16. 제12항에 있어서, 상기 제1 멀티플렉서 및 상기 제2 멀티플렉서에 제어 신호들을 제공하도록 배열되는 레지스터를 더 포함하는, TDC.
  17. 제16항에 있어서, 상기 제어 신호들은 상기 지연 선택기에 의해 제공되는 지연을 조정하는, TDC.
  18. 제16항에 있어서, 상기 레지스터에 의해 제공되는 제어 신호들에 기초하여 제어 신호를 상기 제3 멀티플렉서에 생성하도록 배열되는 로직을 더 포함하는, TDC.
  19. 제18항에 있어서, 상기 로직에 의해 생성되는 제어 신호는 상기 레지스터에 의해 제공되는 제어 신호들의 배타적 논리합(exclusive or)인, TDC.
  20. 제16항에 있어서, 상기 레지스터는 상기 제3 멀티플렉서에 제어 신호를 생성하도록 추가로 배열되는, TDC.
KR1020237040590A 2021-05-25 2022-05-24 테스트가능한 시간-디지털 컨버터 KR20240012406A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IN202141023266 2021-05-25
IN202141023266 2021-05-25
PCT/US2022/030793 WO2022251267A1 (en) 2021-05-25 2022-05-24 Testable time-to-digital converter

Publications (1)

Publication Number Publication Date
KR20240012406A true KR20240012406A (ko) 2024-01-29

Family

ID=82115605

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237040590A KR20240012406A (ko) 2021-05-25 2022-05-24 테스트가능한 시간-디지털 컨버터

Country Status (5)

Country Link
US (1) US12015411B2 (ko)
EP (1) EP4348831A1 (ko)
KR (1) KR20240012406A (ko)
CN (1) CN117461259A (ko)
WO (1) WO2022251267A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021254606A1 (en) * 2020-06-17 2021-12-23 Telefonaktiebolaget Lm Ericsson (Publ) Devices and method for frequency determination
US12032510B1 (en) * 2021-09-07 2024-07-09 Synopsys, Inc. Self-recovery mechanism for multi-hosts and multi-devices emulation and prototyping system bus
CN117134852A (zh) * 2023-06-29 2023-11-28 杭州雄迈集成电路技术股份有限公司 Ddrphy内部延时电路、运行方法和ddrphy结构

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5204559A (en) 1991-01-23 1993-04-20 Vitesse Semiconductor Corporation Method and apparatus for controlling clock skew
TWI355485B (en) 2007-12-04 2012-01-01 Univ Nat Taiwan Science Tech Time domain digital temperature sensing system and
US8717084B1 (en) * 2012-12-06 2014-05-06 Arm Limited Post fabrication tuning of an integrated circuit

Also Published As

Publication number Publication date
US12015411B2 (en) 2024-06-18
CN117461259A (zh) 2024-01-26
EP4348831A1 (en) 2024-04-10
WO2022251267A1 (en) 2022-12-01
US20220385280A1 (en) 2022-12-01

Similar Documents

Publication Publication Date Title
US12015411B2 (en) Testable time-to-digital converter
US11386250B2 (en) Detecting timing violations in emulation using field programmable gate array (FPGA) reprogramming
US11526641B2 (en) Formal gated clock conversion for field programmable gate array (FPGA) synthesis
US20210374314A1 (en) Engineering Change Order Scenario Compression by Applying Hybrid of Live and Static Timing Views
US20210312113A1 (en) Method for finding equivalent classes of hard defects in stacked mosfet arrays
US11443087B2 (en) System and method for power analysis for design logic circuit with irregular clock
US11022634B1 (en) Rail block context generation for block-level rail voltage drop analysis
US11023635B1 (en) Sequence of frames generated by emulation and waveform reconstruction using the sequence of frames
US11080446B2 (en) Method to regulate clock frequencies of hybrid electronic systems
US11797737B2 (en) Finding equivalent classes of hard defects in stacked MOSFET arrays
US11403450B2 (en) Convergence centric coverage for clock domain crossing (CDC) jitter in simulation
US20240028812A1 (en) Waveform capture using multicycle path properties
US11361135B2 (en) Guiding sample size choice in analog defect or fault simulation
US20230177244A1 (en) Creation of reduced formal model for scalable system-on-chip (soc) level connectivity verification
US20220391568A1 (en) Deterministic netlist transformations in a multi-processor parallel computing system
US20230409788A1 (en) Synchronizing distributed simulations of a circuit design
US20240104279A1 (en) Multicycle path prediction of reset signals
US20230071521A1 (en) Detecting simulation, emulation and prototyping issues using static analysis tools
US11941339B1 (en) Automated equal-resistance routing in compact pattern
US20240111660A1 (en) Managing high performance simulation representation of an emulation system
US20230244512A1 (en) Fast waveform capture with low hardware footprint enabling full visibility
US20240232485A1 (en) Test point insertion in analog circuit design testing
US20230035693A1 (en) Clock signal realignment for emulation of a circuit design
US20230195982A1 (en) Transformations for multicycle path prediction of clock signals
US20240330548A1 (en) Dynamic control of circuit design emulation