KR102413516B1 - 디바이스 테스트를 위한 래퍼 체인들에서의 상태 머신 구동 플롭들을 갖는 집적 회로 - Google Patents

디바이스 테스트를 위한 래퍼 체인들에서의 상태 머신 구동 플롭들을 갖는 집적 회로 Download PDF

Info

Publication number
KR102413516B1
KR102413516B1 KR1020200114429A KR20200114429A KR102413516B1 KR 102413516 B1 KR102413516 B1 KR 102413516B1 KR 1020200114429 A KR1020200114429 A KR 1020200114429A KR 20200114429 A KR20200114429 A KR 20200114429A KR 102413516 B1 KR102413516 B1 KR 102413516B1
Authority
KR
South Korea
Prior art keywords
flop
data
state machine
output
flops
Prior art date
Application number
KR1020200114429A
Other languages
English (en)
Other versions
KR20210157274A (ko
Inventor
구스타브 라우브 3세
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 KR20210157274A publication Critical patent/KR20210157274A/ko
Application granted granted Critical
Publication of KR102413516B1 publication Critical patent/KR102413516B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318533Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
    • G01R31/318541Scan latches or cell details
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/0008Arrangements for reducing power consumption
    • H03K19/0016Arrangements for reducing power consumption by using a control or a clock signal, e.g. in order to apply power supply
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/01Details
    • H03K3/012Modifications of generator to improve response time or to decrease power consumption
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31702Testing digital circuits including elements other than semiconductor transistors, e.g. biochips, nanofabrics, mems, chips with magnetic elements
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31727Clock circuits aspects, e.g. test clock circuit details, timing aspects for signal generation, circuits for testing clocks
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3177Testing of logic operation, e.g. by logic analysers
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318522Test of Sequential circuits
    • G01R31/318525Test of flip-flops or latches
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318533Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
    • G01R31/318536Scan chain arrangements, e.g. connections, test bus, analog signals
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318533Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
    • G01R31/318544Scanning methods, algorithms and patterns
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L27/00Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate
    • H01L27/02Devices consisting of a plurality of semiconductor or other solid-state components formed in or on a common substrate including semiconductor components specially adapted for rectifying, oscillating, amplifying or switching and having potential barriers; including integrated passive circuit elements having potential barriers
    • H01L27/0203Particular design considerations for integrated circuits
    • H01L27/0214Particular design considerations for integrated circuits for internal polarisation, e.g. I2L
    • H01L27/0229Particular design considerations for integrated circuits for internal polarisation, e.g. I2L of bipolar structures
    • H01L27/0233Integrated injection logic structures [I2L]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/08Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using semiconductor devices
    • H03K19/0813Threshold logic
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10KORGANIC ELECTRIC SOLID-STATE DEVICES
    • H10K19/00Integrated devices, or assemblies of multiple devices, comprising at least one organic element specially adapted for rectifying, amplifying, oscillating or switching, covered by group H10K10/00
    • H10K19/202Integrated devices comprising a common active layer

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Power Engineering (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Chemical & Material Sciences (AREA)
  • Nanotechnology (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Semiconductor Integrated Circuits (AREA)

Abstract

집적 회로의 내부 코어 논리를 테스트하는데 이용되는 입력 및/또는 출력 래퍼 체인들 내의 내부 상태 머신 구동 논리 요소들(예를 들어, 플롭들)을 이용하는 집적 회로들이 설명된다. 집적 회로 내의 래퍼 체인들의 하나 이상의 개별 논리 요소는 단일의 디지털 플립-플롭보다는 멀티-플롭 상태 머신으로서 구현된다. 멀티-플롭 상태 머신들로서, 래퍼 체인의 각각의 개선된 논리 요소는, 집적 회로의 입력 또는 출력 래퍼 체인들에서 발생할 수 있는 신호 송신 지연들로부터 상태 머신 구동 플롭들을 연관해제하도록 미리 선택된 값들을 출력하도록 개별적으로 구성가능하다.

Description

디바이스 테스트를 위한 래퍼 체인들에서의 상태 머신 구동 플롭들을 갖는 집적 회로{INTEGRATED CIRCUIT HAVING STATE MACHINE-DRIVEN FLOPS IN WRAPPER CHAINS FOR DEVICE TESTING}
본 개시는 주문형 집적 회로(application-specific integrated circuit)(ASIC)들, 집적 회로(integrated circuit)(IC)들 및 다른 회로들에 관한 것이다.
ASIC(application-specific integrated circuit)과 같은 반도체 집적 회로("칩"이라고도 지칭됨)는 논리 게이트들(logic gates), 플립-플롭들(flip-flops), 및 멀티플렉서들(multiplexers)과 같은 많은 상이한 타입들의 논리 소자들(logic elements)을 포함한다. 패킷 처리 ASIC들과 같은 데이터 처리 집적 회로들은, 데이터에 대해 동작하고 궁극적으로 칩을 통한 데이터의 흐름을 제어하는 내부 논리 요소들을 포함한다. 일부 예들에서, 테스터(tester)는 데이터가 예상된 방식으로 칩을 통해 흐르는지를 결정하기 위해 테스트를 수행한다. 예를 들어, 테스터는 칩에 대한 입력을 위해 데이터를 전달하고, 칩으로부터 출력된 데이터를 수신하고, 칩으로부터 출력된 데이터를 예상된 출력 데이터와 비교한다. 비교에 기초하여, 테스터는 칩에서의 하나 이상의 결함을 식별할 수 있다.
본 개시는 집적 회로의 내부 코어 논리(internal core logic)를 테스트하는데 이용되는 입력 및/또는 출력 래퍼 체인들(wrapper chains) 내의 내부 상태 머신 구동 논리 요소들(예를 들어, 플롭들(flops))을 이용하는 집적 회로의 예들을 설명한다. 본 명세서에서 설명된 바와 같이, 집적 회로 내의 래퍼 체인들의 하나 이상의 개별 논리 요소들은 단일의 디지털 플립-플롭보다는 대응하는 멀티-플롭 상태 머신(multi-flop state machine)으로서 구현된다. 또한, 래퍼 체인들의 각각의 상태 머신 구동 논리 요소는 집적 회로의 테스트 동안 원하는 거동들을 제공하기 위해 프로그래밍가능한 동작 모드들의 세트 중 하나에서 동작할 수 있다.
보다 구체적으로, 멀티-플롭 상태 머신들로서, 래퍼 체인의 각각의 개선된 논리 요소는 집적 회로의 입력 또는 출력 래퍼 체인들에서 발생할 수 있는 신호 송신 지연들로부터 상태 머신 구동 플롭들을 연관해제(disassociate)하기 위해 미리 선택된 값들을 출력하도록 개별적으로 구성가능하다. 집적 회로의 코어 논리의 테스트 동안, 입력 또는 출력 래퍼 체인에서의 플롭들은 전형적으로 직렬로 접속되고, 주어진 입력 래퍼 체인에서의 각각의 플롭은 코어 논리에 대한 그리고 입력 래퍼 체인에서의 연속적인 플롭에 대한 출력을 제공한다. 입력 래퍼 체인에서의 연속적인 플롭들 사이의 느린 인터커넥트(slow interconnect)(예를 들어, 대역폭 제한된 내부 전기 접속, 플롭들 사이의 거리 등)로 인해, 랩퍼 체인에서의 종래의 플롭으로부터의 출력은 짧은 시간 기간 동안 (예를 들어, 데이터가 그의 입력에서 수신되기 전에 플롭이 데이터를 출력하기 때문에) 알려지지 않을 수 있다. 본 명세서에 설명된 바와 같이, 입력 또는 출력 래퍼 체인에서의 하나 이상의 종래의 플롭 대신에 대응하는 상태 머신 구동 플롭을 이용함으로써, 본 명세서에 설명된 예시적인 기술들은, 그렇지 않은 경우 입력 또는 출력 래퍼 체인에서의 정의되지 않은 상태들로 이어지는 느린 접속들(slow connections)(예를 들어, 내부 송신 지연들)로부터의 면역성(immunity)을 제공할 수 있다. 예를 들어, 상태 머신 구동 플롭들은 미리 선택된 출력 값들을 정의하는 스캔 모드들(scan modes)에서 동작하도록 구성될 수 있기 때문에, 래퍼 체인의 이러한 요소들의 출력은, 입력 신호가 주어진 래퍼 체인의 스캔 경로를 따른 송신 지연으로 인해 불확정적일 수 있는 시간들에서 논리 요소의 입력 값(들)으로부터 분리될 수 있다.
이러한 방식으로, 본 명세서에서의 기술들은 본 명세서에서 '상태 머신 구동 플롭'이라고 지칭되는 상태 머신 구동 멀티-플롭 논리 요소를 생성하기 위해, 스캔 경로를 따른 느린 인터커넥트의 수신단에서의 종래의 플롭이 추가 회로로 대체되는 개선된 래퍼 체인들을 설명한다. 더 설명되는 바와 같이, 스캔 모드에서 동작하도록 구성될 때, 상태 머신 구동 플롭은, 예상된 데이터 비트 값을 캡처하도록, 상태 머신 구동 플롭이 테스트의 캡처 단계(capture phase) 동안 동작하기 위하여, 느린 접속으로부터의 입력 신호에 더 이상 의존하지 않는다. 즉, 래퍼 체인의 적어도 하나의 플롭을 상태 머신 구동 플롭으로 변환하는 것은, 하나 이상의 느린 접속이 입력 또는 출력 래퍼 체인의 스캔 경로들에 존재할 수 있더라도, 코어 논리가 캡처 단계 동안에 모든 예상된 입력 데이터 비트 값들을 캡처할 수 있게 한다.
이러한 방식으로, 일부 예들에서, 상태 머신 구동 플롭들은 프로그래밍가능한 동작 모드들에 따라 미리 선택된 값들을 출력하는 유연성을 제공하도록 개별적으로 구성가능하다. 예를 들어, 더 상세히 설명되는 바와 같이, 래퍼 체인의 상태 머신 구동 플롭은, 캡처 단계 동안, 플롭의 입력에 제시된 입력 신호에 기초하여 출력을 제공하기보다는 로드 단계(load phase) 동안 시프트된 플롭(예를 들어, 유지 동작 모드)으로 이전에 시프트된 현재 값에 기초하여 일정한 출력을 제공하도록 구성될 수 있다. 다른 예로서, 입력 또는 출력 래퍼 체인에서의 상태 머신 구동 플롭은, 캡처 단계 동안, 플롭에서 수신된 입력에 기초하기보다는 로드 단계 동안 시프트된 플롭(예를 들어, 토글 동작 모드(toggle operational mode))에서 이전에 시프트된 현재 값의 역을 출력하도록 구성될 수 있다. 이러한 방식으로, 상태 머신 구동 플롭들은 본 명세서에 설명된 바와 같은 느린 래퍼 체인 경로들(slow wrapper chain paths) 내에서 이용되어, 캡처 단계 동안 기능적 및 스캔 출력들에 제시된 값들 및/또는 전이들에 대한 정교한 결정 제어(fine grain control)를 제공하고, 그에 의해, 그렇지 않은 경우 집적 회로 내의 느린 내부 래퍼 체인 경로들로 인해 발생할 수 있는 임의의 타이밍 문제들을 제거할 수 있다.
일부 예들에서, 본 개시는 기능 논리 요소들(functional logic elements)을 갖는 코어 논리 및 코어 논리를 테스트하기 위한 복수의 플롭들을 갖는 래퍼 체인을 포함하는 집적 회로(IC)를 설명한다. 래퍼 체인의 복수의 플롭들은 코어 논리의 테스트 동안 플롭들의 연속적인 플롭들을 통해 스캔 데이터를 시프트하기 위해 스캔 경로를 따라 순차적으로 상호접속된다. IC는 또한 래퍼 체인의 스캔 경로를 따라 접속된 적어도 하나의 상태 머신 구동 플롭을 포함한다. 상태 머신 구동 플롭은, 테스트 동안, 스캔 경로를 따라 시프트되고 상태 머신 구동 플롭에 의해 수신되는 스캔 데이터와는 독립적인 값을 출력하도록 개별적으로 구성가능하다.
일부 예들에서, 본 개시는 테스터 및 집적 회로(IC)를 포함하는 시스템을 설명한다. IC는 기능 논리 요소들을 갖는 코어 논리 및 코어 논리를 테스트하기 위한 복수의 플롭들을 갖는 입력 래퍼 체인을 포함한다. 래퍼 체인의 복수의 플롭들은 코어 논리의 테스트 동안 플롭들의 연속적인 플롭들을 통해 스캔 데이터를 시프트하기 위해 스캔 경로를 따라 순차적으로 상호접속된다. IC는 또한 출력 래퍼 체인 및 입력 래퍼 체인의 스캔 경로를 따라 접속된 적어도 하나의 상태 머신 구동 플롭을 포함한다. 상태 머신 구동 플롭은, 테스트 동안, 스캔 경로를 따라 시프트되고 상태 머신 구동 플롭에 의해 수신되는 스캔 데이터와는 독립적인 값을 출력하도록 개별적으로 구성가능하다. 하나 이상의 예에서, 입력 래퍼 체인은, 로드 단계 동안 느린 클록 주파수(slow clock frequency)에서 로드 단계 클록 신호들의 세트를 수신하는 것에 응답하여, 테스터로부터의 입력 데이터의 스트링(input string of data)을 로드하여, 로드 값들을 복수의 플롭들로 로드하고, 상태 머신 구동 플롭을 구성하여 스캔 경로를 따라 시프트되는 스캔 데이터와는 독립적인 값을 출력하도록 구성된다. 하나 이상의 예에서, 출력 래퍼 체인은, 캡처 단계 동안 빠른 클록 주파수에서 캡처 단계 클록 신호들의 세트를 수신하는 것에 응답하여, 코어 논리를 통해 복수의 기능 경로들로부터 캡처된 데이터의 스트링(captured string of data)을 캡처하고, 언로드 단계 동안 느린 클록 주파수에서의 언로드 단계 클록 신호들(unload phase clock signals)의 세트를 수신하는 것에 응답하여, 캡처된 데이터의 스트링을 테스터에 언로드하도록 구성된다.
본 발명의 개요는 본 개시에 설명되는 청구 대상의 개요를 제공하기 위한 것이다. 그것은 첨부 도면들 및 이하의 설명 내에서 상세히 설명되는 시스템들, 디바이스, 및 방법들의 배타적 또는 완저한 설명을 제공하도록 의도되지 않는다. 본 개시의 하나 이상의 예의 추가 세부사항들은 첨부 도면들 및 이하의 설명에서 개시된다. 다른 특징들, 목적들, 및 이점들은, 상세한 설명 및 도면들, 및 청구항들로부터 명백해질 것이다.
도 1은 본 개시의 하나 이상의 기술에 따른, 입력 또는 출력 래퍼 체인에서 하나 이상의 상태 머신 구동 플롭을 갖는 논리 블록들의 세트를 포함하는 예시적인 시스템을 도시하는 블록도이다.
도 2는 본 개시의 하나 이상의 기술에 따른, 플롭들 및 입력 래퍼 체인 접속들의 세트를 포함하는 입력 래퍼 체인을 포함하는 시스템을 도시하는 블록도이다.
도 3a는 본 개시의 하나 이상의 기술에 따른, 입력들의 세트 및 출력들의 세트를 포함하는 플롭을 도시하는 블록도이다.
도 3b는 본 개시의 하나 이상의 기술에 따른, 상태 머신 구동 플롭의 일례를 도시하는 블록도이다.
도 4는 본 개시의 하나 이상의 기술에 따른, 느린 접속의 단부에 위치된 상태 머신 구동 플롭을 도시하는 블록도이다.
도 5는 본 개시의 하나 이상의 기술에 따른, 입력 또는 출력 래퍼 체인에서 플롭들을 통해 데이터를 로드, 캡처 및 언로드하기 위한 클록 신호 플롯, 제1 제어 신호 플롯, 및 제2 제어 신호 플롯을 도시하는 그래프이다.
도 6은 본 개시의 하나 이상의 기술에 따른, 테스트 동작을 수행하기 위한 예시적인 동작을 도시하는 흐름도이다.
유사한 참조 문자들은 텍스트 및 도면들 전체에 걸쳐 유사한 요소들을 지칭한다.
도 1은 본 개시의 하나 이상의 기술에 따른, 반도체 디바이스의 집적 회로(8)가, 집적 회로(8)를 테스트하기 위한 입력 래퍼 체인 또는 출력 래퍼 체인에서의 하나 이상의 상태 머신 구동 플롭을 갖는 논리 블록들(10A-10N)(집합적으로, "논리 블록들(10)")의 세트를 포함하는 예시적인 시스템(2)을 도시하는 블록도이다. 도 1에 도시된 바와 같이, 이러한 예에서, 시스템(2)은 논리 블록들(10) 및 최상위 논리(top logic)(18)를 포함하는 집적 회로(IC)(8)를 포함한다. 시스템(2)은 또한 테스터(20)를 포함한다. 논리 블록(10A)은 제1 세트의 입력/출력(I/O) 플롭들(12A-12N)(집합적으로, "플롭들(12)"), 제2 세트의 I/O 플롭들(14A-14N)(집합적으로, "플롭들(14)") 및 코어 논리(16)를 포함한다. 더 상세히 설명되는 바와 같이, 플롭들(12)은 입력 래퍼 체인을 형성하고, 플롭들(14)은 출력 래퍼 체인을 형성한다. 하나 이상의 예에서, 더 상세히 설명되는 바와 같이, 플롭들(12) 또는 플롭들(14) 중 하나는 본 명세서에서 "상태 머신 구동 플롭" 또는 SMDF라고 지칭되는 상태 머신 구동 멀티-플롭 논리 요소로 대체될 수 있다. 예를 들어, 도 1은 입력 래퍼 체인에서의 SMDF(13)를 도시하고, 출력 래퍼 체인에서의 SMDF(15)를 도시한다.
입력 래퍼 체인에서 하나의 SMDF(13)가 도시되어 있지만, 입력 래퍼 체인에서 복수의 SMDF가 있을 수 있다. 출력 래퍼 체인에서 하나의 SMDF(15)가 도시되어 있지만, 출력 래퍼 체인에서 복수의 SMDF가 있을 수 있다. 일부 예들에서, 입력 래퍼 체인에서 SMDF(13)와 같은 하나 이상의 SMDF가 있을 수 있고, 출력 래퍼 체인에서 SMDF가 없을 수 있다. 일부 예들에서, 출력 래퍼 체인에서 SMDF(15)와 같은 하나 이상의 SMDF가 있을 수 있고, 입력 래퍼 체인에서 SMDF가 없을 수 있다.
일부 경우들에서, IC(8)는 ASIC(application specific integrated circuit)이고, 논리 블록들(10) 및 최상위 논리(18)는 ASIC의 컴포넌트들을 나타내지만, 이것이 요구되는 것은 아니다. 논리 블록들(10) 및 최상위 논리(18)는 일부 경우들에서 다른 종류의 회로들의 컴포넌트들일 수 있다.
논리 블록들(10)의 각각의 논리 블록은 데이터의 흐름을 제어하도록 구성된 하나 이상의 반도체 기반 논리 요소를 포함한다. 예를 들어, 도 1은 코어 논리(16) 내의 기능 논리 요소들에 따라 전기 신호들(예를 들어, 데이터 비트들)을 처리하도록 구성되는 코어 논리(16) 내의 하나 이상의 논리 요소의 체인을 나타내는 기능 경로(17)를 도시한다. 즉, IC(8)의 정상 동작 동안, 기능 경로(17)는 입력으로부터 출력으로의, 코어 논리(16)의 기능 논리 요소들을 통한 경로를 나타낸다. 예를 들어, 기능 경로(17)는 입력 데이터 비트 값을 받아들이고, 출력 데이터 비트 값을 생성할 수 있으며, 출력 데이터 값은 하나 이상의 논리 연산을 데이터 비트 값에 적용하는 경로의 논리 요소들에 응답하여 생성된다. 일부 예들에서, 코어 논리(16)는 하나 이상의 코어 플롭을 포함할 수 있다. 기능 경로들(17) 중 하나 이상은 각각의 코어 플롭으로 시작하여, 플롭들(14) 중 하나로 종료할 수 있다. 기능 경로들(17) 중 하나 이상은 플롭들(12) 중 하나로 시작하여, 코어 플롭들 중 하나로 종료할 수 있다.
도 1은 또한 집적 회로(8)를 테스트하기 위해 이용되는 스캔 경로(19)를 도시한다. 스캔 경로(19)는 래퍼 체인의 각각의 플롭들(12)로부터 데이터를 수신하는 코어 논리(16)에서의 대응하는 논리 요소들을 테스트하기 위해 이용되는 일련의 플롭들(12)에 의해 형성되는 래퍼 체인을 통한 경로의 예이다. 예를 들어, 더 상세히 설명되는 바와 같이, 코어 논리(16)의 테스트와 같은, IC(8)의 테스트 동안, 스캔 경로(19)는 래퍼 체인을 통해 테스트 데이터를 전파하기 위한 경로를 나타내고, 여기서 각각의 플롭들(12)은 연속적으로 접속되고, 플롭들(12) 중 각각의 플롭은 플롭들(12) 중 이전 플롭으로부터 데이터를 수신하고, 후속 플롭(12) 및 코어 논리(16)에서의 대응하는 논리 요소들에 출력한다.
예를 들어, 래퍼 체인(예를 들어, 입력 래퍼 체인)은 코어 논리(16)를 테스트하기 위한 복수의 플롭들(12)을 포함한다. 복수의 플롭들(12)은 코어 논리(16)의 테스트 동안 스캔 데이터를 플롭들(12)의 연속적인 플롭들을 통해 시프트하기 위해 스캔 경로(예를 들어, 스캔 경로(19))를 따라 순차적으로 상호접속된다. 입력 래퍼 체인으로 설명되었지만, 복수의 플롭들(14)을 갖는 출력 래퍼 체인에 대해 유사한 상호접속들이 이용된다.
일부 예들에서, 논리 블록(10A)은 블록(10A)이 의도된 목적에 따라 기능하는 동안 기능 경로들(17)을 이용한다. 예를 들어, 논리 블록(10A)이 그것이 그렇게 하도록 설계되기 때문에 데이터를 처리하기 위해 적용될 때, 논리 블록(10A)은 스캔 경로들(19)보다는 기능 경로들(17)을 이용하여 데이터를 처리한다. 한편, 스캔 경로들(19)은 테스트 동안 동작가능하다.
시스템(2)의 기능 모드 동안, 논리 블록(10A)은 플롭들(12)을 통해 데이터를 수신하고, 기능 경로들(17)의 논리 연산들에 따라 코어 논리(16)를 이용하여 데이터를 처리하고, 플롭들(14)을 통해 최상위 논리(18)에 데이터를 출력하도록 구성된다. 그와 같이, 플롭들(12)은 본 명세서에서 논리 블록(10A)의 외부로부터 데이터를 수신하는 "입력 래퍼 체인"으로서 지칭될 수 있고, 플롭들(14)은 본 명세서에서 데이터가 코어 논리(16)에 의해 처리된 후에 논리 블록(10A)으로부터 외부로 데이터를 전달하는 "출력 래퍼 체인"으로서 지칭될 수 있다.
더 상세히 설명되는 바와 같이, SMDF(13)는 기능 모드에서 플롭들(12)과 유사하게 동작하도록 구성된다. 예를 들어, SMDF(13)는 수신된 데이터를 코어 논리(16)에 출력하도록 구성된다. 그러나, 테스트 동안, SMDF(13)는 미리 저장된 데이터를 코어 논리(16)에 뿐만 아니라, 입력 래퍼 체인에서의 후속 플롭에 출력하도록 구성된다. 도시된 바와 같이, SMDF(13)는 래퍼 체인(예를 들어, 입력 래퍼 체인)에 대한 스캔 경로(예를 들어, 스캔 경로(19))를 따라 접속된다. 더 상세히 설명되는 바와 같이, SMDF(13)는, 테스트 동안, 스캔 경로를 따라 시프트되고 SMDF(13)에 의해 수신되는 스캔 데이터와는 독립적인 값을 출력하도록 개별적으로 구성가능하다. 예를 들어, 더 상세히 설명되는 바와 같이, 테스트의 로드 단계 동안, SMDF(13)는 이전 플롭으로부터 그의 입력 상에서 수신된 데이터를 출력하도록 구성될 수 있다. 그러나, SMDF(13)의 입력 상에 수신된 데이터를 출력하기보다는, 캡처 단계 동안, SMDF(13)는 스캔 경로를 따라 시프트되고 SMDF(13)에 의해 수신되는 스캔 데이터와는 독립적인 값을 출력한다.
테스트를 위해, 플롭들(12) 중 하나 이상은 테스트 동안 연속적인 플롭으로 그리고 코어 논리(16)로 출력하도록 구성가능하다. 플롭들(14) 중 하나 이상은 테스트 동안 연속적인 플롭으로 출력하고, 코어 논리(16)로부터 수신하도록 구성가능하다. 즉, 입력 래퍼 체인은 제1 복수의 플롭들(12)을 포함하고, 여기서 제1 복수의 플롭들(12) 중 하나 이상은 테스트 동안 제1 복수의 플롭들(12)에서의 연속적인 플롭 및 코어 논리(16)로 출력하도록 구성가능하다. 또한, 출력 래퍼 체인은 제2 복수의 플롭들(14)을 포함하고, 여기서 제2 복수의 플롭들(14) 중 하나 이상은 테스트 동안 제2 복수의 플롭들(14)에서의 연속적인 플롭으로 출력하고, 코어 논리(16)로부터 수신하도록 구성가능하다. 예를 들어, 도시된 바와 같이, 테스트 동안, 플롭(12A)은 플롭(12B)으로 출력하고, 플롭(12B)은 플롭(12C)으로 출력하고, 플롭(12N)으로 출력하는 등으로 되고, 그리고 유사하게, 테스트 동안, 플롭(14A)은 플롭(14B)으로 출력하고, 플롭(14B)은 플롭(14C)으로 출력하고, 플롭(14N)으로 출력하는 등으로 된다. 따라서, 테스트를 위해, 플롭들(12) 또는 플롭들(14) 각각은 플롭들(12) 또는 플롭들(14)의 연속적인 플롭으로 데이터를 시프트한다.
본 개시에서 설명된 바와 같이, 플롭들(12) 또는 플롭들(14)의 하나 이상의 플롭은 본 명세서에서 '상태 머신 구동 플롭'으로 지칭되는 상태 머신 구동 멀티-플롭 논리 요소들로 대체될 수 있다. 예를 들어, 플롭(12C)이 존재하기보다는, 플롭(12C)은 상태 머신 구동 플롭(SMDF)(13)으로 대체되고, 플롭(14B)이 존재하기보다는, 플롭(14B)은 SMDF(15)로 대체된다. SMDF(13) 및 SMDF(15)는 래퍼 셀(wrapper cell)의 예들이다. 예를 들어, SMDF(13) 및 SMDF(15)는 플롭들(12) 또는 플롭들(14)(예를 들어, 입력 래퍼 체인 또는 출력 래퍼 체인과 같은 스캔 래퍼 체인에서의 플롭들)과 연관된 회로를 포함하고, SMDF(13) 및 SMDF(15)가, 더 상세히 설명되는 바와 같은, 테스트의 캡처 단계에서와 같이, 테스트 동안 SMDF(13) 또는 SMDF(15)의 입력 상에서 수신되는 연속적인 플롭 데이터를 출력하도록 구성되지 않는다는 점을 제외하고는, 플롭들(12) 및 플롭들(14)의 기능들 전부를 제공한다.
예를 들어, SMDF(13) 및 SMDF(15)는 입력 래퍼 체인 또는 출력 래퍼 체인에서의 접속들에서의 지연들로부터 SMDF(13) 및 SMDF(15)를 연관해제하기 위해 미리 선택된 값들을 출력하도록 개별적으로 구성가능하다. 즉, SMDF(13) 또는 SMDF(15)는, 테스트 동안, 스캔 경로를 따라 시프트되고 SMDF(13) 또는 SMDF(15)에 의해 수신되는 스캔 데이터와는 독립적인 값을 출력하도록 개별적으로 구성가능하다. 스캔 데이터와는 독립적인 값의 이러한 출력은 테스트의 캡처 단계 동안 발생하는데, 여기서 시프트 지연들은 SMDF(13) 또는 SMDF(15)가 데이터를 적시에 수신하는 것으로부터 영향을 미친다. 따라서, SMDF(13) 및 SMDF(15)는 입력 래퍼 체인 또는 출력 래퍼 체인을 통해 데이터를 시프트하는 것의 시프트 지연들로부터의 면역성을 제공할 수 있다.
예를 들어, 테스트되는 집적 회로의 특정 구현 및 레이아웃에 따라, 코어 논리(16) 내의 신호 송신 속도에 비해 입력 래퍼 체인 및/또는 출력 래퍼 체인에서의 연속적인 플롭들 사이의 접속을 따른 느린 신호 송신의 가능성이 있을 수 있다. 예를 들어, 입력 또는 출력 래퍼 체인에서의 2개의 플롭들 사이의 접속이 코어 논리(16)의 동작 레이트보다 작은(예를 들어, 코어 논리(16)가 동작하거나 동작할 수 있는 레이트보다 작은) 레이트로 데이터를 전파할 가능성이 있을 수 있다. 스캔 경로(19)를 따른 느린 접속은, 예를 들어, 에러가 코어 논리(16) 내의 회로의 그것과 같은 기능 회로 오동작으로 인한 것보다는 스캔 데이터가 스캔 경로를 따라 플롭들(12/14)을 통해 시프트함에 따른 느린 접속으로 인해 초래되는 것이 가능할 수 있기 때문에, 테스트에 영향을 미칠 수 있다.
더 상세하게 설명되는 바와 같이, 연속적인 플롭들 사이의 느린 접속은 설계 동안에 식별될 수 있고, 느린 접속의 단부에 있는 플롭들(12) 또는 플롭들(14)의 플롭들은, 상태 머신 구동 플롭으로부터의 출력을 상태 머신 구동 플롭에 대한 입력에 관계없이 (예를 들어, 스캔 경로를 따라 시프트되고 상태 머신 구동 플롭들에 의해 수신되는 스캔 데이터와는 독립적인) 알려진 값으로 선택적으로 설정하는 것을 허용하는 상태 머신 구동 플롭들로 대체될 수 있다. 따라서, 상태 머신 구동 플롭에 대한 입력에 기초하는 상태 머신 구동 플롭으로부터의 출력의 의존성은 제거되고, 느린 접속에 대한 영향은 완화될 수 있다.
예를 들어, 설계 동안, 플롭(12B)은 유사한 플롭(예를 들어, 플롭(12C))과 접속하도록 설계될 수 있고, 플롭(12B) 및 플롭(12C)은 접속(19)(예를 들어, 비아들 또는 마이크로스트립)에 의해 상호접속될 수 있다. 설계 동안, 접속(19)은 (예를 들어, 플롭(12B)과 플롭(12C) 사이의 거리로 인한, 또는 접속(19)에 대한 대역폭 제약들로 인한) 느린 접속으로서 식별되었을 수 있다. 예를 들어, 데이터는, 데이터가 코어 논리(16)를 통해 전파될 수 있는 속도와 동일한 속도로 접속(19)을 통해 전파될 수 없다. 달리 말하면, 접속(19)은 코어 논리(16)의 동작 레이트보다 작은 레이트로 데이터를 전파한다. 따라서, 플롭(12C)은 상태 머신 구동 멀티-플롭 논리 요소인 SMDF(13)로 대체된다. 테스트의 캡처 단계 동안과 같은 테스트 동안, SMDF(13)는 테스트 동안 그 입력에서 수신된 값보다는, 미리 저장된 값(예컨대, 로드 단계 동안, 예를 들어, SMDF(13)의 플롭으로 시프트된 값, 또는 SMDF(13)의 플롭으로 시프트된 값의 역)을 출력하도록 구성된다. 그러나, 정상 동작 동안, SMDF(13)는 코어 논리(16)에 그 기능 입력에서 수신된 데이터를 출력하도록 구성된다.
유사하게, 설계 동안, 플롭(14A)은 다른 플롭(예를 들어, SMDF(15))과 접속하도록 설계될 수 있고, 플롭(14A) 및 SMDF(15)는 접속(21)에 의해 상호접속될 수 있다. 설계 동안, 접속(21)은 (예를 들어, 플롭(14A)과 플롭(14B) 사이의 거리로 인한, 또는 접속(21)에 대한 대역폭 제약으로 인한) 느린 접속으로 식별되었을 수 있다. 예를 들어, 데이터는, 데이터가 코어 논리(16)를 통해 전파될 수 있는 속도와 동일한 속도로 접속(21)을 통해 전파될 수 없다. 따라서, 플롭(14B)은 상태 머신 구동 멀티-플롭 논리 요소인 SMDF(15)로 대체된다. 테스트의 캡처 단계 동안과 같은 테스트 동안, SMDF(15)는 스캔 경로를 따라 시프트되고 상태 머신 구동 플롭에 의해 수신되는 스캔 데이터와는 독립적인 값을 출력하도록 구성된다.
도시된 바와 같이, IC(8) 및 논리 블록들(10)의 테스트는 테스터(20)에 의해 수행된다. 테스터(20)의 이용은 단지 예시의 목적들을 위해 도시되어 있다. 일부 예들에서, 테스터(20) 또는 테스터(20)의 기능은 IC(8)가 논리 테스트 능력들을 갖도록 IC(8) 상에 통합될 수 있다.
테스터(20)는, 예를 들어, 마이크로프로세서들, 디지털 신호 프로세서(DSP)들, ASIC들, 필드 프로그래머블 게이트 어레이(field programmable gate array)(FPGA)들, 또는 등가의 이산 또는 통합 논리 회로, 또는 전술한 디바이스들 또는 회로 중 임의의 것의 조합을 포함할 수 있다. 따라서, 본 명세서에서 이용되는 바와 같은 "프로세서", "제어기", 또는 "테스터"라는 용어들은, 본 명세서에서 설명된 기술들을 수행하도록 동작가능한 전술한 구조들 또는 임의의 다른 구조 중 임의의 하나 이상을 지칭할 수 있다. 일부 예들에서, 테스터(20)는 시스템(2)의 하나 이상의 요소를 제어하기 위해 메모리(도 1에 도시되지 않음)에 의해 저장된 명령어들을 실행할 수 있다. 예를 들어, 테스터(20)는 플롭들(12) 각각이 연속적인 플롭(12)으로 출력하도록 스캔 경로(19)를 구성할 수 있다.
그러나, 플롭들(12) 중 하나가 SMDF(13)로 대체되는 경우, SMDF(13)는 SMDF(13)의 입력에서 수신된 값보다는 현재 값 또는 현재 값의 역을 플롭들(12)의 후속하는 플롭에 출력할 수 있다. 예를 들어, SMDF(13)는 테스트 동안, 이전 시프트 사이클 동안 SMDF(13)로 시프트된 SMDF(13)의 현재 값을 출력으로서 유지하도록 구성가능하다. 다른 예로서, SMDF(13)는 테스트 동안, 이전 시프트 사이클 동안 SMDF(13)로 시프트된 SMDF(13)의 현재 값의 역을 출력하도록 구성가능하다. 예를 들어, 테스트의 캡처 단계 전에 발생하는 테스트의 로드 단계 동안, SMDF(13)는 로드 단계 동안 SMDF(13)로 시프트된 SMDF(13)의 현재 값을 출력으로서 유지하도록 구성되었을 수 있거나, 또는 로드 단계 동안 SMDF(13)로 시프트된 SMDF(13)의 현재 값의 역을 출력하도록 구성되었을 수 있다.
논리 블록들(10)을 포함하는 IC(8)가 원하는 기능을 수행하고 있는지를 결정하기 위해, 테스터(20)는 플롭들(14)로부터 출력되는 데이터의 세트가 예상된 데이터의 세트와 매칭되는지를 식별하기 위해 기능 경로들(17)(예를 들어, 코어 논리(16)의 기능 논리 요소들)의 테스트 동작을 수행한다. 테스트 동작 동안 플롭들(14)로부터 출력된 데이터의 세트가 예상된 데이터의 세트와 매칭되지 않을 때, 테스터(20)는 코어 논리(16)가 적어도 하나의 에러와 연관되어 있다고 결정한다. 그러나, 에러를 야기하는 플롭들(12) 또는 플롭들(14) 사이의 느린 접속이 존재하는 경우, 테스터(20)는 느린 접속이 에러를 야기했는지 또는 코어 논리(16)에 오동작이 있는지를 결정하지 못할 수 있다.
예를 들어, 더 상세히 설명되는 바와 같이, 테스트의 캡처 단계 동안, 클록 신호는 플롭들(12) 또는 플롭들(14)이 연속적인 플롭들로 출력하게 한다. 캡처 단계에 이용되는 클록 신호는 비교적 빠른 클록 신호(예를 들어, 비교적 높은 주파수)이다. 연속적인 플롭들(12) 또는 플롭들(14) 사이에 느린 접속이 존재하는 경우, 느린 접속의 단부에서의 플롭이, 이전 플롭으로부터의 비트가 플롭의 입력에 있기 전에, 입력 샘플링 윈도우를 닫는 것이 가능할 수 있다. 이 경우, 플롭으로부터의 출력은 알려지지 않을 수 있고, (예를 들어, 코어 논리(16)에서의 오동작 때문에, 또는 느린 접속으로 인한) 에러의 원인은 알려지지 않는다.
테스터(20)에 의해 수행된 테스트 동작은 3개의 단계들: 로드 단계, 캡처 단계, 및 언로드 단계를 포함한다. 로드 단계 동안, 테스터(20)는 데이터 비트들의 스트링을 포함하는 데이터 패턴을 플롭들(12)로 향하게 하고, 플롭들(12)로 하여금 데이터 비트들의 스트링의 순서를 유지하면서 데이터 비트들의 스트링을 "로드"하게 한다. 즉, 플롭(12N)은 데이터 비트들의 스트링의 제1 데이터 비트를 로드하고, 플롭(12N) 이전의 플롭은 데이터 비트들의 스트링의 제2 데이터 비트를 로드하는 등등으로 된다. 플롭들(12)은 느린 클록 주파수에서 로드 단계 클록 신호들의 세트를 수신하는 것에 응답하여 입력 래퍼 체인을 따라 수직으로 데이터 비트들의 스트링을 로드한다. 로드 단계 동안, SMDF(13)는 스캔 경로를 따라 플롭(12B)으로부터 수신된 데이터를 시프트한다.
테스트 동작의 캡처 단계 동안, 입력 래퍼 체인의 플롭들(12)은 빠른 클록 주파수에서 캡처 단계 클록 신호들의 세트를 수신하는 것에 응답하여 기능 경로들(17)에 의한 처리를 위한 데이터 비트들의 스트링을 출력하여, 출력 래퍼 체인의 플롭들(14)이 "캡처된" 데이터 비트들의 스트링을 수신하게 한다. 언로드 단계 동안, 플롭들(14)은 느린 클록 주파수에서 언로드 단계 클록 신호들의 세트를 수신하여, 플롭들(14)이 캡처된 데이터 비트들의 스트링을 테스터(20)에 언로드하게 한다. 테스터(20)는 캡처된 데이터 비트들의 스트링을 캡처된 데이터 비트들의 예상된 스트링과 비교하고, 비교는 기능 경로들(17)이 캡처 단계 동안 플롭들(12)로부터 출력된 데이터 비트들의 스트링을 처리시에 하나 이상의 에러를 야기하는지를 나타낸다. 코어 논리(16)는 하나 이상의 코어 플롭 및 코어 플롭 체인을 포함할 수 있다. 예를 들어, 코어 플롭 체인들 중 하나 이상은 플롭들(12)로부터 수신된 데이터를 테스터(20)에 출력할 수 있다. 플롭들(12) 사이의 하나 이상의 느린 접속은 플롭들(12)로부터 코어 논리 체인에 의해 수신된 데이터에 영향을 미치지 않을 수 있다. 이러한 방식으로, 코어 플롭 체인은 플롭들(14)을 포함하는 출력 래퍼 체인에 의해 수행되는 것으로서 본 명세서에 설명된 하나 이상의 기술을 수행할 수 있다.
테스트 동안, 접속들의 세트는 플롭들(12)을 함께 접속한다. 그러나, 정상 동작 동안, 플롭들(12)은 함께 접속되지 않거나 함께 접속될 수 있지만, 이전 플롭으로부터의 출력은 현재 플롭에 대한 입력으로서 이용되지 않는다. 예를 들어, 플롭들(12) 및 유사하게 플롭들(14)은 입력 상에 MUX를 포함할 수 있고, MUX는 이전 플롭으로부터의 하나의 접속 또는 정규 데이터(예를 들어, 플롭들(12)에 대해, ASIC에 접속된 다른 회로로부터의 데이터, 및 플롭들(14)에 대해, 코어 논리(16)로부터의 데이터)를 위한 다른 접속 사이에서 선택한다. 테스트를 위해, MUX는 이전 플롭으로부터의 접속을 선택한다.
그러나, SMDF(13) 및 SMDF(15)는 이전 플롭으로부터 데이터를 수신하도록 구성될 수 있지만, 캡처 단계 동안, 이전 플롭으로부터 수신된 데이터를 출력하지 않는다. 대신에, SMDF(13) 및 SMDF(15)는 스캔 경로를 따라 시프트되고 SMDF(13) 또는 SMDF(15)에 의해 수신되는 스캔 데이터와는 독립적인 SMDF(13) 및 SMDF(15)의 플롭으로 이미 시프트된 값 또는 값들의 역을 출력한다. 이러한 방식으로, 접속들(19 및 21)이 느린 접속들(예를 들어, 코어 논리(16)의 인라인 컴포넌트들(inline components)만큼 빠르게 데이터를 전파할 수 없는 스캔 경로에서의 접속)이더라도, SMDF(13) 및 SMDF(15)가 SMDF(13) 또는 SMDF(15)에서의 현재 값 또는 현재 값의 역을 출력하도록 구성가능하기 때문에, 접속들(19 및 21)의 영향은 완화된다.
즉, 테스트를 위해, 연속적인 플롭들의 각각의 쌍은 접속들의 세트의 각각의 접속에 의해 접속된다. 예를 들어, 플롭(12A) 및 플롭(12B)은 접속들의 세트의 제1 접속에 의해 링크된다. 플롭들(12)을 링크하는 이러한 접속들은 입력 래퍼 체인의 각각의 플롭들 사이에서, 데이터, 예를 들어, 하나 이상의 데이터 비트 값을 나타내는 전기 신호들을 운반하도록 구성되는 전기 접속들을 나타낸다. 이러한 접속들은 코어 논리(16)의 테스트 동안 플롭들(12)의 연속적인 플롭들을 통해 스캔 데이터를 시프트하기 위해 스캔 경로를 따라 플롭들(12)을 순차적으로 상호접속한다.
접속 링크들의 대역폭은 전기 신호가 입력 래퍼 체인을 형성하는 접속들의 세트의 각각의 접속을 통해 전파하는데 걸리는 시간에 영향을 미친다. 일부 경우들에서, 입력 래퍼 체인을 형성하는 접속들의 세트의 적어도 하나의 접속은, 전기 신호가 느린 접속 링크(19)를 통해 전파하는데 걸리는 시간량이 임계 시간량보다 큰 접속(19)과 같은 "느린" 접속을 나타낸다. 예를 들어, SMDF(13)와 래퍼 체인에서의 이전 플롭 사이의 접속(19)은 코어 논리(16)의 동작 레이트보다 작은 레이트로 데이터를 SMDF(13)로 전파한다(예를 들어, 스캔 경로에서의 접속(19)은 코어 논리(16)의 인라인 컴포넌트들만큼 빠르게 데이터를 전파할 수 없다). 플롭들(12)과 관련하여 설명되었지만, 동일한 것이 출력 래퍼 체인에서의 플롭들(14)로 발생할 수 있다.
전기 신호가 느린 접속을 통해 전파하는데 걸리는 시간량이 임계 시간량보다 큰 경우, 플롭들(12)이 빠른 클록 주파수(예를 들어, 코어 논리(16)의 컴포넌트들이 동작하는 주파수)에서 캡처 단계 클록 신호들을 수신할 때 느린 접속은 캡처 단계 동안 효과적으로 동작할 수 없다. 접속 링크(19)가 느린 접속을 나타내는 예에서, 제1 캡처 단계 클록 신호는 플롭(12B)으로 하여금 데이터 비트 값을 출력하게 하고, 제2 캡처 단계 클록 신호는 데이터 비트 값이 느린 접속 링크(19)를 가로질러 플롭(12B)으로부터 SMDF(13)에 도달하기 전에 SMDF(13)에 도달한다. SMDF(13)가 아니라, 플롭(12B)과 유사한 플롭(12C)이 이용된다면, 플롭(12C)은 잘못된 데이터 비트 값을 코어 논리(16)에 출력하여, 테스터(20)에 의해 수행된 테스트에 악영향을 미친다.
즉, 테스터(20)는, 플롭들(12)의 각각의 플롭이 캡처 단계 클록 신호에 응답하여, 정확한 데이터 비트 값을 코어 논리(16)에 출력하도록, 데이터가 충분한 시간량 내에 접속의 세트의 각각의 접속을 통해 전파한다는 가정 하에서 동작한다. 이러한 방식으로, 테스터(20)는 입력 래퍼 체인이 발견된 에러들의 소스일 가능성을 배제하면서, 코어 논리(16)의 기능 경로들(17)이 데이터를 잘못 처리하고 있는지 여부를 결정한다. 다시, 용이성을 위해, 상기는 입력 래퍼 체인과 관련하여 설명되고, 유사한 에러들은 플롭들(14)을 갖는 출력 래퍼 체인을 통해 전파될 수 있다.
느린 접속(19)과 연관된 에러들이 테스트 동안 발생할 수 있지만, 설계 동안에 느린 접속이 발생하여, 설계 동안에, 느린 접속(19)에 의해 야기된 문제들을 해결하기 위해 측정들이 취해질 수 있다고 결정하는 것이 가능할 수 있다. 일부 예들에서, 논리 블록들(10)의 설계 동안, 예컨대, 시뮬레이션을 통해, 입력 래퍼 체인의 일부인 접속(19)과 같은 느린 접속들의 세트가 식별된다. 예를 들어, 플롭(12B)과 플롭(12C)을 링크하는 (즉, 플롭(12C)이 SMDF(13)로 대체되기 전의) 접속 링크는 느린 접속으로서 식별될 수 있다. 느린 접속을 바로잡기 위해 논리 블록(10A)을 재설계하거나 재생성하기보다는, 본 개시는 플롭(12B)과 플롭(12C) 사이의 접속 링크(19)로부터의 느린 접속의 영향을 완화시키기 위해 플롭(12C)을 수정하는데 이용되는 상태 머신 구동 플롭 회로의 예들을 설명하며, 따라서 느린 접속은 테스터(20)에 의해 수행된 코어 논리(16)의 테스트에 부정적인 영향을 미치지 않는다.
설명된 바와 같이, 플롭(12C)은 접속(19)이 느린 접속으로서 식별되고, 이어서 플롭(12C)이 SMDF(13)로 대체될 때까지 설계의 일부일 수 있다. 일부 예들에서, SMDF(13)는 다른 플롭들(12)에 대한 플립-플롭과 동일한 플립-플롭을 포함한다. 그러나, SMDF(13)는 하나 이상의 추가 플립-플롭을 포함하는데, 이 플립-플롭들은 함께, 느린 접속(19)의 존재시에도 테스터(20)에 의해 수행된 테스트의 캡처 단계 동안에 SMDF(13)가 코어 논리(16)에 알려진 데이터 비트 값들을 출력하는 것을 허용하는 (예를 들어, 상태 머신 구동 플롭을 함께 형성하는) 상태 머신 논리를 형성한다.
SMDF(13)는, 테스트 동안, 스캔 경로를 따라 시프트되고 상태 머신 구동 플롭에 의해 수신되는 스캔 데이터와는 독립적인 값을 출력하도록 개별적으로 구성가능한 상태 머신 구동 플롭의 예이다. 로드 단계 동안, 데이터가 느린 주파수 클록 신호를 갖는 스캔 경로를 통해 시프트될 때, SMDF(13)는 스캔 경로를 따라 데이터를 시프트한다(예를 들어, SMDF(13)의 입력에서 수신된 데이터를 출력한다). 그러나, 캡처 단계 동안, 데이터가 빠른 주파수 클록 신호를 갖는 스캔 경로를 통해 시프트될 때, SMDF(13)는 스캔 데이터의 SMDF(13)로의 시프트를 디스에이블하도록 구성될 수 있다. 그보다는, SMDF(13)는 캡처 단계 동안 스캔 경로를 따라 시프트되고 SMDF(13)에 의해 수신되는 스캔 데이터와는 독립적인 값을 출력하도록 구성될 수 있다.
일례로서, SMDF(13)는, 테스트 동안, 이전 시프트 사이클 동안(예를 들어, 로드 단계 동안) SMDF(13)로 시프트된 SMDF(13)의 현재 값을 출력으로서 유지하도록 구성가능할 수 있다. 다른 예로서, SMDF(13)는, 테스트 동안, 이전 시프트 사이클 동안(예를 들어, 로드 단계 동안) SMDF(13)로 시프트된 SMDF(13)의 현재 값의 역을 출력하도록 구성가능할 수 있다. 더욱이, 입력 래퍼 체인에서 SMDF(13)와 같은 복수의 SMDF들이 있을 수 있다. SMDF들 각각은 개별적으로 구성가능할 수 있다. 예를 들어, SMDF(13)(예를 들어, 제1 SMDF)는 SMDF(13)의 현재 값을 출력하도록 구성될 수 있고, 입력 래퍼 체인에서의 다른 SMDF(예를 들어, 제2 SDMF)는 제2 SDMF의 현재 값의 역을 출력하도록 구성될 수 있다. 또한, 입력 래퍼 체인과 관련하여 설명되었지만, 유사한 동작들이 출력 래퍼 체인에서 발생할 수 있다.
본 개시에 설명된 하나 이상의 예에 따르면, SMDF(13)는 단일의 디지털 플립-플롭보다는 멀티-플롭 상태 머신이다. SMDF(13)는 또한 멀티-플롭 상태 머신을 형성하기 위해 단일 플립-플롭에 추가된 추가 회로가 있다는 것을 나타내는 래퍼 셀로서 지칭될 수 있다. 유사하게, SMDF(15)는 단일의 디지털 플립-플롭보다는 멀티-플롭 상태 머신이다. SMDF(15)는 또한 멀티-플롭 상태 머신을 형성하기 위해 단일 플립-플롭에 추가된 추가 회로가 있다는 것을 나타내는 래퍼 셀로 지칭될 수 있다.
더 상세히 설명되는 바와 같이, 입력 래퍼 체인 또는 출력 래퍼 체인에서의 SMDF(13) 또는 SMDF(15)는, 각자, 상태 머신을 함께 형성하는 제1 플립-플롭, 제2 플립-플롭 및 배타적 OR(XOR) 논리 게이트를 포함할 수 있다. 추가적으로, 일부 예들에서, SMDF(13)는 제1 플립-플롭이 입력 래퍼 체인에서의 이전 플롭으로부터 전기 신호를 수신하는지를 제어하는 제1 멀티플렉서 및 제2 플립-플롭이 제1 플립-플롭으로부터 전기 신호를 수신하는지 또는 제2 플립-플롭의 출력으로부터 전기 신호를 수신하는지를 제어하는 제2 멀티플렉서를 포함할 수 있다. 본 명세서에서 이용된 바와 같이, "제1" 플립-플롭 및 "제2" 플립-플립이라는 용어들은 각각의 SMDF 내의 특정 순서를 나타내도록 의미하는 것이 아니다. "제1" 및 "제2"라는 용어들은 각각의 SMDF의 플립-플롭들 사이에서 구별하기 위해 이용된다.
예시의 용이성 및 예시적인 목적들만을 위해, SMDF(13) 및 SMDF(15)는 플립-플롭들 및 XOR 논리 게이트들로 설명된다. 그러나, 예시적인 기술들은 그렇게 제한되지 않는다. 다른 설계 선택들이 이용가능할 수 있다. 예를 들어, SMDF(13) 또는 SMDF(15)는 SMDF(13) 또는 SMDF(15)의 입력에 제시된 입력 신호에 기초하여 출력을 제공하기보다는, 캡처 단계 동안 유지 동작 모드에 대해 상태 머신의 현재 값을 출력하도록 개별적으로 구성가능한 상태 머신을 형성하는(예를 들어, 나타내는) 상태 머신 구동 플롭들일 수 있다. 다른 예로서, SMDF(13) 또는 SMDF(15)는 플롭에서 수신된 입력에 기초하기보다는 캡처 단계 동안 현재 값의 역을 출력(예를 들어, 토글 동작 모드)하도록 구성될 수 있다. 따라서, SMDF(13) 또는 SMDF(15)는 이전 플롭으로부터의 입력 값들의 클록킹(clocking)에 기초하여 값들을 출력하는 것에 더 이상 의존하지 않는다. 오히려, SMDF(13) 또는 SMDF(15)는 이전 플롭으로부터 출력되는 값과는 독립적인(예를 들어, 무관한) 현재 값 또는 현재 값의 역을 출력하도록 개별적으로 구성가능하다. XOR 및 추가 플립-플롭들을 갖는 상태 머신을 형성하는 것은 상태 머신을 형성하는 하나의 예시적인 방식이지만, 다른 방식들이 또한 가능하다.
더 상세히 설명되는 바와 같이, 제1 플립-플롭 SMDF(13) 또는 SMDF(15)에 의해 출력된 전기 신호는 본 명세서에서 "로컬 데이터 비트"라고 지칭되는 데이터 비트를 나타낼 수 있고, 제2 플립-플롭 SMDF(13) 또는 SMDF(15)에 의해 출력된 전기 신호는 본 명세서에서 "토글 상태(toggle state) 데이터 비트"라고 지칭되는 데이터 비트를 나타낼 수 있다. 본 명세서에서 이용된 바와 같이, "데이터 비트"라는 용어는 2개의 가능한 데이터 비트 값들, 낮은 데이터 비트 값 또는 높은 데이터 비트 값 중 하나를 차지하는 전기 신호를 지칭할 수 있다. 각각의 전기 신호의 낮은 크기(low magnitude)는 낮은 데이터 비트 값을 나타내고, 각각의 전기 신호의 높은 크기는 높은 데이터 비트 값을 나타낸다. 토글 상태 데이터 비트의 데이터 비트 값, 낮은(low) 또는 높은(high)은 SMDF(13) 및 SMDF(15)가 토글 모드 또는 유지 모드에 있는지를 나타낸다. 예를 들어, 낮은 데이터 비트 값은 유지 모드에 대응할 수 있고, 높은 데이터 비트 값은 토글 모드에 대응할 수 있다. 추가적으로, 일부 경우들에서, 로컬 데이터 비트는 높은 데이터 비트 값 또는 낮은 데이터 비트 값 중 하나를 포함한다. 로컬 데이터 비트는 SMDF(13)가 코어 논리(16)로 출력하고 입력 래퍼 체인의 다음 플롭으로 출력하는 데이터 비트를 나타낸다.
하나 이상의 예에서, SMDF(13)는 로컬 데이터 비트의 아이덴티티가 입력 래퍼 체인에서의 수정된 플롭과 이전 플롭 사이의 느린 접속에 의존하지 않도록, 캡처 단계 동안 로컬 데이터 비트가 높은 데이터 비트 값인지 낮은 데이터 비트 값인지를 제어하도록 구성될 수 있다. 그러한 제어는 테스터(20)에 의해 수행되는 테스트 동작의 로드 단계 동안 토글 상태 데이터 비트를 제2 플립-플롭에 로드하는 테스터(20)에 의해 달성될 수 있으며, 따라서 수정된 플롭을 토글 모드 또는 유지 모드로 설정하고, 이는 결국 로컬 데이터 비트의 아이덴티티(예를 들어, 높은 또는 낮은)를 제어한다. 유지 모드는 클록 신호(예를 들어, 로드 단계 동안에 SMDF(13)의 제1 플립-플롭에서 시프트된 값)를 수신하는 것에 응답하여 SMDF(13)가 로컬 데이터 비트의 현재 값을 출력하는 모드를 나타낸다. 토글 모드는 클록 신호(예를 들어, 로드 단계 동안에 SMDF(13)의 제1 플립-플롭에서 시프트된 값의 역)를 수신하는 것에 응답하여 SMDF(13)가 로컬 데이터 비트의 현재 값의 역을 출력하는 모드를 나타낸다. SMDF(15)는 실질적으로 유사한 방식으로 동작할 수 있다.
일부 예들에서, 테스터(20)는 로드 단계를 포함하는 테스트 동작을 수행하고, 여기서 테스터(20)는 데이터의 스트링을 플롭들(12)에 로드한다. 로드 단계 동안 데이터의 스트링을 입력 래퍼 체인으로 향하게 함으로써, 테스터(20)는 SMDF(13)의 로컬 데이터 비트를 높은 데이터 비트 값 또는 낮은 데이터 비트 값으로 설정하고, 테스터(20)는 SMDF(13)의 토글 상태 데이터 비트를 높은 데이터 비트 값 또는 낮은 데이터 비트 값으로 설정한다. 그와 같이, 데이터의 스트링을 입력 래퍼 체인으로 향하게 함으로써, 테스터(20)는 초기 로컬 데이터 비트 값으로 SMDF(13)를 "프로그래밍"하고, SMDF(13)를 토글 모드 또는 유지 모드에 있도록 프로그래밍한다. 그렇게 함에 있어서, 테스터(20)는 SMDF(13)와 래퍼 체인에서의 이전 플롭 사이의 느린 접속에 의존하지 않고, 캡처 단계 동안 예상되는 바와 같이 수행하기 위해 SMDF(13)를 셋업한다(예를 들어, 상태 머신 구동 플롭을 구성한다). 예상되는 바와 같이 수행하기 위해, SMDF(13)는 캡처 단계 동안, 테스터(20)가 테스트 동작에서의 하나 이상의 에러를 입력 래퍼 체인에 의해 야기된 에러들이 아니라, 코어 논리(16)에 의해 야기된 에러들로서 식별할 수 있게 하는 예상된 출력 데이터 비트를 출력한다.
테스터(20)에 의해 수행되는 테스트 동작의 로드 단계 동안, SMDF(13)의 제1 플립-플롭은 입력 래퍼 체인에서의 이전 플롭으로부터 전기 신호를 수신하여, 테스터(20)가 플롭들(12)을 링크하는 접속들의 세트를 통해 데이터의 스트링을 플롭들(12)로 로드하게 하여, 입력 래퍼 체인을 형성할 수 있게 한다. 캡처 단계 동안, SMDF(13)의 제1 플립-플롭은 느린 접속을 통해 래퍼 체인에서의 이전 플롭으로부터 전기 신호를 수신하기보다는, XOR 논리 게이트로부터 전기 신호를 수신할 수 있다. 그와 같이, SMDF(13)는 캡처 단계가 발생하고 있는 동안, 동작을 위해 느린 접속에 의존하지 않는다. 오히려, SMDF(13)는, 일부 예들에서, XOR 논리 게이트에 의해 출력되는 신호에 기초하여 동작하고, XOR 논리 게이트는 이번에는 제2 플립-플롭으로부터의 신호에 기초하여 신호를 출력한다. 이러한 방식으로, XOR 논리 게이트는 클록 신호가 빠른 클록 주파수에서 전달될 때 캡처 단계 동안 하나 이상의 연산을 수행할 수 있다. 그러나, 로드 단계 및 언로드 단계 동안, SMDF(13)의 제1 플립-플롭이 느린 접속을 통해 데이터를 수신할 때, 느린 접속은 SMDF(13)의 동작과 간섭하지 않는데, 그 이유는 클록 신호들이 느린 클록 주파수에서 전달되기 때문이다.
전술한 바와 같이, 테스터(20)는 데이터의 스트링을 입력 래퍼 체인 및/또는 출력 래퍼 체인에 로드하여, 하나 이상의 데이터 비트가 플롭들(12) 각각으로 로드되도록 할 수 있다. 캡처 단계 동안, 플롭들(12)은 캡처 단계 클록 신호들의 세트를 수신하여, 플롭들(12)의 각각의 플롭이 각각의 데이터 비트를 코어 논리(16)에 출력하게 한다. 코어 논리(16)는 기능 경로들(17)을 포함하고, 기능 경로들(17)의 각각의 기능 경로는 코어 논리(16)의 일부인 요소들의 세트를 통한 플롭들(12)로부터 플롭들(14)로의 경로를 나타낸다. 일부 경우들에서, 테스터(20)는, 기능 경로들(17)의 각각의 기능 경로가, 각각의 기능 경로들(17)이 수행하도록 프로그래밍되는 원하는 논리 연산들에 따라 정확하게 데이터를 처리하는지를 결정하기 위해, 로드 단계, 캡처 단계, 및 언로드 단계를 포함하는 테스트 동작을 수행한다. 플롭들(12)이 캡처 단계 동안 데이터 비트 값들을 출력할 때, 기능 경로들(17)의 하나 이상의 각각의 기능 경로는 플롭들(12)의 플롭에 의해 출력되는 각각의 데이터 비트를 처리하여, 각각의 캡처된 데이터 비트들을 플롭들(14)에 전달하도록 구성된다. 언로드 단계 동안, 테스터(20)는 플롭들(14)로 하여금, 예상된 데이터의 세트와의 비교를 위해, 캡처된 데이터를 테스터(20)에 언로드하게 한다. 하나 이상의 기능 경로(17)가 플롭들(12)에서 시작할 때, 플롭들(14)은 데이터의 세트를 캡처하도록 구성된 코어 스캔 체인을 나타낼 수 있다.
본 개시에 설명된 하나 이상의 예에 따르면, SMDF(13)는 SMDF(13)가 유지 모드 또는 토글 모드로 구성되는지에 기초하여 데이터 비트 값들을 코어 논리(16)에 출력한다. 예를 들어, 플롭(12B)으로부터 수신된 데이터 비트를 출력하기보다는, SMDF(13)는 SMDF(13)의 제1 플립-플롭에서의 현재 값 또는 SMDF(13)의 제1 플립-플롭에서의 현재 값의 역을 출력하도록 구성될 수 있다.
도 1은 플롭들(12), 플롭들(14), SMDF(13), SMDF(15), 및 코어 논리(16)를 포함하는 논리 블록(10A)을 도시한다. 일부 예들에서, 논리 블록들(10B-10N) 각각은 또한 입력 래퍼 체인, 출력 래퍼 체인, 및 코어 논리를 포함할 수 있다. 테스터(20)는 본 명세서에 설명된 기술을 이용하여 논리 블록들(10) 중 임의의 하나 이상의 기능 경로들을 테스트하도록 구성될 수 있다.
도 2는 본 개시의 하나 이상의 기술에 따른, 플롭들(22A-22D) 및 입력 래퍼 체인 접속들(24A-24E)의 세트를 포함하는 입력 래퍼 체인을 포함하는 시스템(27)을 도시하는 블록도이다. 도 2에 도시된 바와 같이, 플롭들(22A-22D)과 같은 플롭들만을 포함하는 입력 래퍼 체인보다는, 입력 래퍼 체인은 SMDF(23)를 포함한다. 테스트를 위해, 스캔 데이터는 스캔 경로(30)를 통해 시프트할 수 있다. 예외로, 이하에서 설명되는 바와 같이, 접속(24C)이 스캔 경로(30)에서의 느린 접속이기 때문에, 테스트의 캡처 단계 동안, SMDF(23)는 접속(24C)으로부터 수신된 값보다는, SMDF(23)에서의 값 또는 값의 역을 플롭(22D)으로 출력하도록 구성된다. 로드 단계 동안, SMDF(23)는, SMDF(23)가 플롭(22C)으로부터 수신한 값을 플롭(22D)에 출력할 수 있다. 도 2는 또한 기능 경로(17)와 유사한, 기능 경로들(28)을 포함하는 코어 논리(26)를 도시한다.
플롭들(22A-22D)(집합적으로, "플롭들(22)")은 입력 래퍼 체인을 형성하는 도 1의 플롭들(12)의 예들이다. SMDF(23)는 도 1의 SMDF(13)의 예이다. 코어 논리(26)는 도 1의 코어 논리(16)의 예이다. 기능 경로들(28)은 도 1의 기능 경로들(17)의 예이다. 스캔 경로들(30)은 도 1의 스캔 경로들(19)의 예이다.
입력 래퍼 체인 접속들(24A-24E)(집합적으로, "입력 래퍼 체인 접속들(24)")은 SMDF(23)를 제외하고는 플롭들(22)의 연속적인 플롭들의 쌍들 사이의 접속들을 나타낸다. 예를 들어, 도 2에 도시된 바와 같이, 접속(24C)이 플롭(22C)과 SMDF(23) 사이의 접속을 나타내는 것을 제외하고는, 입력 래퍼 체인 접속(24A)은 플롭(22A)과 플롭(22B) 사이의 접속을 나타내고, 입력 래퍼 체인 접속(24B)은 플롭(22B)과 플롭(22C) 사이의 접속을 나타내는 등으로 된다. 그와 같이, 플롭들(22), SMDF(23), 및 입력 래퍼 체인 접속들(24)은 입력 래퍼 체인을 형성한다.
플롭들(22)의 각각의 플롭 및 SMDF(23)는 기능 데이터 입력("D"), 스캔 데이터 입력("SI"), 및 데이터 출력("Q")을 포함한다. 또한, 플롭들(22)의 각각의 플롭 및 SMDF(23)는 제어 입력("SE") 및 클록 입력("CLK")을 포함한다.
플롭들(22) 및 SMDF(23)는 하나 이상의 다른 시스템으로부터 데이터를 수신하고, 코어 논리(26)에 데이터를 출력하도록 구성되는 입력 래퍼 체인의 플롭들을 나타낸다. 예를 들어, 시스템(27)의 기능 모드 동안, 플롭들(22) 및 SMDF(23)는 각각의 기능 입력들 D에서 전기 신호들을 수신할 수 있고, 출력들 Q에서 전기 신호들을 출력하며, 여기서 출력들 Q는 코어 논리(26)에 전기적으로 접속된다. 이러한 방식으로, 플롭들(22) 및 SMDF(23)는 시스템(27)의 기능 모드 동안 코어 논리(26)와 다른 디바이스들, 시스템들, 및 회로 사이의 인터페이스들로서 기능할 수 있다.
플롭들(22) 및 SMDF(23)는 또한 도 1의 테스터(20)와 같은 테스터가 코어 논리(26)를 다른 회로(예를 들어, 다른 논리 블록들의 코어 논리, 외부 회로, 및 최상위 논리)로부터 격리시키면서, 코어 논리(26)의 테스트 동작을 수행하는 것을 허용할 수 있다. 이러한 방식으로, 플롭들(22) 및 SMDF(23)는 테스터(20)가 테스트 동작을 수행할 때 격리 입력 래퍼 체인으로서 기능할 수 있으며, 이는 플롭들(22) 및 SMDF(23)가 D 입력들을 통해 외부 소스로부터 데이터를 수신하기보다는 SI 입력들을 통해 테스터(20)로부터 데이터를 수신하는 것을 의미한다.
테스터(20)에 의해 수행되는 테스트 동작은 로드 단계, 캡처 단계, 및 언로드 단계를 포함할 수 있다. 로드 단계 동안, 테스터(20)는 플롭들(22) 및 SMDF(23)의 SI 입력들 및 입력 래퍼 체인 접속들(24)을 통해 데이터의 스트링을 플롭들(22) 및 SMDF(23)로 향하게 한다. 그와 같이, 플롭들(22) 및 SMDF(23)는 시스템(27)의 동작 모드에 따라 D 입력들에서 데이터를 수신하거나, SI 입력들에서 데이터를 수신하고, D 입력들 또는 SI 입력들 중 어느 것이 SE 입력들에 제어 신호를 전달하는 것에 의해 플롭들(22) 또는 SMDF(23)에 데이터를 전달하는지를 제어하는 것이 가능하다. 테스트를 위해, 플롭들(22) 및 SMDF(23)의 MUX들은 SI 입력들로부터 데이터를 출력하도록 구성될 수 있다. 그러나, SMDF(23)는 테스트의 로드 단계 동안 SI 입력으로부터 데이터를 출력하도록 구성될 수 있다. 테스트의 캡처 단계에 대해, SMDF(23)는 SI 입력으로부터의 데이터를 출력하지 않고, 대신에 SI 입력으로부터의 출력 데이터가 아니라 현재 값 또는 현재 값의 역을 출력한다. 즉, SMDF(23)는 (예를 들어, 캡처 단계 동안과 같은 테스트 동안) 스캔 데이터의 SMDF(23)로의 시프트를 디스에이블하도록 구성될 수 있다.
일부 예들에서, 플롭들(22)의 각각의 플롭은, 각각의 클록 입력 CLK에서의 클록 신호를 수신하는 것에 응답하여, 기능 데이터 입력 D 또는 스캔 데이터 입력 SI 중 하나로부터 데이터 출력 Q로 데이터를 전송하도록 구성된다. 예를 들어, 플롭(22B)이 스캔 데이터 입력 SI에서 낮은 데이터 비트 값을 수신하고, 데이터 출력 Q에서 높은 데이터 비트를 출력할 때, 플롭(22B)은 클록 입력 CLK에서의 클록 신호를 수신하는 것에 응답하여, 스캔 데이터 입력 SI로부터의 낮은 데이터 비트 값을 데이터 출력 Q로 전송하여, 플롭(22B)으로 하여금 낮은 데이터 비트 값을 코어 논리(26) 및 플롭(22C)의 스캔 데이터 입력 SI으로 출력하게 한다. 추가적으로, 일부 경우들에서, 플롭(22B)이 기능 데이터 입력 D에서 낮은 데이터 비트 값을 수신하고, 데이터 출력 Q에서 높은 데이터 비트를 출력할 때, 플롭(22B)은 클록 입력 CLK에서 클록 신호를 수신하는 것에 응답하여, 기능 데이터 입력 D로부터의 낮은 데이터 비트 값을 데이터 출력 Q로 전송하여, 플롭(22B)이 낮은 데이터 비트 값을 코어 논리(26)에 출력하게 한다. 어쨌든, 플롭들(22)의 각각의 플롭들은 전진을 개시하는 클록 신호를 수신하는 것에 응답하여 데이터 비트 값을 "전진(advance)" 또는 "시프트(shift)"하도록 구성될 수 있다.
플롭들(22) 및 SMDF(23)는 하나 이상의 클록 신호의 시퀀스를 수신하여, 데이터 비트가 플롭들(22) 중 하나 이상을 통해 이동하게 할 수 있다. 일부 예들에서, 클록 신호들의 시퀀스는 플롭(22A)의 SI 입력으로부터 플롭(22A)의 Q 출력으로 데이터 비트 값을 전송하는 제1 클록 신호, 플롭(22B)의 SI 입력으로부터 플롭(22B)의 Q 출력으로 데이터 비트 값을 전송하는 제2 클록 신호, 플롭(22C)의 SI 입력으로부터 플롭(22C)의 Q 출력으로 데이터 비트 값을 전송하는 제3 클록 신호, SMDF(23)의 SI 입력으로부터 플롭(22D)의 Q 출력으로 데이터 비트 값을 전송하는 제4 클록 신호 등을 포함한다. 일부 예들에서, 클록 신호는 플롭(22A)의 D 입력으로부터 플롭(22A)의 Q 출력으로 데이터 비트 값을 전송하여, 데이터 비트 값이 코어 논리(26)로 출력되게 한다. 이 예에서, 플롭들(22) 및 SMDF(23)의 D 입력들은 인에이블되는 반면, 플롭들(22) 및 SMDF(23)의 SI 입력들은 디스에이블되는데, 이는 데이터 비트가 플롭(22B)에 전송되지 않고 플롭(22A)을 통해 코어 논리(26)로 전송되는 것을 의미한다. 어쨌든, 플롭들(22)의 클록 입력들에서 수신된 클록 신호들은 입력 래퍼 체인의 하나 이상의 플롭을 통해 (예를 들어, SI 입력이 선택되는 경우 이전 플롭으로부터의, 또는 D 입력이 선택되는 경우 다른 소스로부터의) 데이터의 전파를 야기할 수 있다.
각각의 플롭(예를 들어, 플롭(22B))의 제어 입력은 플롭으로 하여금 기능 입력(예를 들어, D 입력)으로부터 데이터를 수신하거나 또는 스캔 입력(예를 들어, SI 입력)으로부터 데이터를 수신하게 하는 제어 신호를 수신할 수 있다. 제어 신호는 높은 제어 신호 크기 또는 낮은 제어 신호 크기를 포함할 수 있다. 예를 들어, 플롭(22B)이 플롭(22B)의 SE 입력에서 높은 제어 신호 크기에서의 제어 신호를 수신할 때, 플롭(22B)은 플롭(22B)의 D 입력으로부터 데이터를 수신하지 않고 플롭(22B)의 SI 입력을 통해 데이터를 수신할 수 있다. 한편, 플롭(22B)이 플롭(22B)의 SE 입력에서 낮은 제어 신호 크기에서의 제어 신호를 수신할 때, 플롭(22B)은 플롭(22B)의 SI 입력으로부터 데이터를 수신하지 않고 플롭(22B)의 D 입력을 통해 데이터를 수신할 수 있다.
일부 예들에서, 시스템(27)의 기능 모드 동안, 플롭들(22)은 시스템(27) 외부로부터 코어 논리(26)로 데이터를 전달한다. 예를 들어, 시스템(27)의 기능 모드 동안, 플롭들(22)의 SE 입력들에 의해 수신된 제어 신호들은 낮은 제어 신호 크기를 나타낼 수 있어, 플롭들(22)로 하여금 D 입력들에서 데이터를 수신하고, Q 출력들에서 데이터를 출력하게 한다. 즉, 플롭(22A)은 플롭(22A)의 D 입력에서 데이터를 수신하고, 플롭(22A)의 Q 출력을 통해 데이터를 출력하고, 플롭(22B)은 플롭(22B)의 D 입력에서 데이터를 수신하고, 플롭(22B)의 Q 출력을 통해 데이터를 출력하고, 플롭(22C)은 플롭(22C)의 D 입력에서 데이터를 수신하고, 플롭(22C)의 Q 출력을 통해 데이터를 출력하고, SMDF(23)는 SMDF(23)의 D 입력에서 데이터를 수신하고, SMDF(23)의 Q 출력을 통해 데이터를 출력하고, 플롭(22D)은 플롭(22D)의 D 입력에서 데이터를 수신하고, 플롭(22D)의 Q 출력을 통해 데이터를 출력한다. 이 예에서, 클록 신호들은, SI 입력들이 디스에이블되는 동안, 플롭들(22) 및 SMDF(23)로 하여금 D 입력들로부터 Q 출력들로 데이터를 전송하게 한다.
일부 경우들에서, 시스템(27)은 (예를 들어, 테스트를 위해) 스캔 모드에서 동작하도록 구성된다. 예를 들어, 시스템(27)의 기능 모드 동안, 플롭들(22)의 SE 입력들에 의해 수신된 제어 신호들은 높은 제어 신호 크기를 나타낼 수 있고, 이는 플롭들(22)로 하여금 SI 입력들에서 데이터를 수신하고, Q 출력들에서 데이터를 출력하게 한다. 즉, SMDF (23)를 제외하고는, 플롭(22A)은 플롭(22A)의 SI 입력에서 데이터를 수신하고, 플롭(22A)의 Q 출력을 통해 데이터를 출력하고, 플롭(22B)은 플롭(22B)의 SI 입력에서 데이터를 수신하고, 플롭(22B)의 Q 출력을 통해 데이터를 출력하고, 플롭(22C)은 플롭(22C)의 SI 입력에서 데이터를 수신하고, 플롭(22C)의 Q 출력을 통해 데이터를 출력하는 등으로 된다. 이 예에서, 클록 신호들은, 플롭들(22)이, D 입력들이 디스에이블되는 동안, SI 입력들로부터 Q 출력들로 데이터를 전송하게 하고, 이는 플롭들(22)이 스캔 모드 동안에 D 입력들로부터 코어 논리(26)로 데이터를 전송하지 않는다는 것을 의미한다.
테스트의 로드 단계 동안, SMDF(23)는 SMDF(23)의 Q 출력을 통해 SMDF(23)의 SI 입력에서 수신된 데이터를 출력한다. 그러나, 테스트의 캡처 단계 동안, SMDF(23)는 SMDF(23)의 Q 출력을 통해 SMDF(23)의 SI 입력에서 수신된 데이터를 출력하지 않는다. 오히려, SMDF(23)는 SMDF(23)에서의 현재 값 또는 SMDF(23)에서의 현재 값의 역을 출력한다. 예를 들어, 로드 단계 동안, SMDF(23)는 로드 단계 동안 SMDF(23)로 시프트된 비트들에 기초하여, 유지 모드 또는 토글 모드에 있도록 구성될 수 있다. 유지 모드에서, 캡처 단계 동안, SMDF(23)는 이전 시프트 사이클 동안(예를 들어, 로드 단계 동안) SMDF(23)로 시프트된 SMDF(23)의 현재 값을 출력한다. 토글 모드에서, 캡처 단계 동안, SMDF(23)는 이전 시프트 사이클 동안(예를 들어, 로드 단계 동안) SMDF(23)로 시프트된 SMDF(23)의 현재 값의 역을 출력한다. 이러한 방식으로, SMDF(23)는 유지 또는 토글 모드로 구성될 수 있기 때문에, SMDF(23)는 테스트 동안, 예컨대, 캡처 단계 동안, 스캔 경로를 따라 시프트되고 SMDF(23)에 의해 수신되는 스캔 데이터와는 독립적인 값을 출력하도록 구성가능한, 개별적으로 구성가능한 상태 머신 구동 플롭의 예이다.
테스터(20)와 같은 테스터는 스캔 모드가 인에이블되는 동안 코어 논리(26)의 테스트 동작을 수행할 수 있다. 테스트 동작은 로드 단계, 캡처 단계, 및 언로드 단계를 포함할 수 있다. 로드 단계 동안, 테스터(20)는 데이터 비트들의 스트링을, 플롭들(22) 및 SMDF(23)를 포함하는 입력 래퍼 체인으로 향하게 한다. 일례에서, 데이터 비트들의 스트링은 "01001"을 포함하고, 데이터 비트들의 스트링은 제1 낮은 데이터 비트 값(예를 들어, 제1 "0"), 제1 높은 데이터 비트 값(예를 들어, 제1 "1"), 제2 낮은 데이터 비트 값, 제3 낮은 데이터 비트 값, 및 제2 높은 데이터 비트 값을 나타낸다. 플롭들(22) 및 SMDF(23)는 로드 단계 동안 데이터 비트들의 스트링을 로드한다. 예를 들어, 플롭(22A)은 플롭(22A)의 SI 입력에서 제1 낮은 데이터 비트 값을 수신할 수 있다. 플롭들(22) 및 SMDF (23)의 클록 입력들에서 로드 단계 클록 신호들의 시퀀스를 수신하는 것에 응답하여, 플롭들(22A)은 플롭(22D)이 제1 낮은 데이터 비트 값을 플롭(22D)의 데이터 출력 Q에 로드하고, SMDF(23)가 제1 높은 데이터 비트 값을 SMDF(23)의 데이터 출력 Q에 로드하고, 플롭(22C)이 제2 낮은 데이터 비트 값을 플롭(22C)의 데이터 출력 Q에 로드하고, 플롭(22B)이 제3 낮은 데이터 비트 값을 플롭(22B)의 데이터 출력 Q에 로드하고, 플롭(22A)이 제2 높은 데이터 비트 값을 플롭(22A)의 데이터 출력 Q에 로드하도록 순차적인 순서로 데이터 비트 값들의 스트링을 로드할 수 있다.
일반적으로, 로드 단계 동안, CLK에서 수신된 클록 신호의 주파수는 비교적 느리다(예를 들어, 정상 동작 동안에 이용된 클록 신호보다 더 느리다). 로드 단계 동안의 클록 신호의 주파수가 비교적 느리기 때문에, 접속(24C)과 같은 느린 접속이 있더라도, 느린 접속(24C)의 영향은 SMDF(23)로의 비트들의 로드에 영향을 미치지 않는다. 예를 들어, 로드 단계 동안 이용된 클록 신호는, 접속(24)이 느린 접속이더라도 플롭(22C)으로부터의 출력이 SMDF(23)로 전파하기에 충분한 시간이 있을 만큼 충분히 느리다.
플롭들(22) 및 SMDF(23)가 데이터 비트 값들의 스트링을 로드하는 테스트 동작의 로드 단계에 후속하여, 테스터(20)는 캡처 단계를 실행할 수 있다. 캡처 단계를 실행하기 위해, 테스터(20)는 2개 이상의 캡처 단계 클록 신호들의 세트를 플롭들(22) 및 SMDF(23)의 클록 입력들에 출력하는 한편, 플롭들(22)의 각각의 플롭에 의해 수신된 제어 신호는 높은 제어 신호 크기로 유지되고, 따라서 플롭들(22)의 SI 입력들을 인에이블하고 플롭들(22)의 D 입력들을 디스에이블할 수 있다. 플롭(22C)이 캡처 단계 클록 신호를 수신할 때, 예를 들어, 플롭(22C)은 플롭(22C)의 SI 입력에서 데이터 비트 값(예를 들어, 접속(24B)을 통해 플롭(22B)에 의해 출력된 데이터 비트)을 플롭(22C)의 Q 출력으로 전송하여, 플롭(22C)으로 하여금 데이터 비트를 코어 논리(26) 및 플롭 SMDF(23)의 SI 출력 둘다에 출력하게 한다. 이러한 방식으로, 플롭들(22)은 데이터 비트 값들을 플롭들(22)의 D 입력들로부터 코어 논리(26)에 출력하기보다는, 데이터 비트 값들을 플롭들(22)의 SI 입력들로부터 코어 논리(26)에 출력하는 "격리" 입력 래퍼 체인을 형성할 수 있다. 캡처 단계 동안에 플롭들(22)에 의해 출력된 데이터 비트 값들은 기능 경로들(28)을 통해 출력 래퍼 체인으로 또는 코어 체인으로 전파될 수 있다. 이어서, 테스터(20)는 언로드 단계를 실행하고, 출력 래퍼 체인의 캡처된 데이터 비트 값들을 예상된 데이터 비트 값들의 세트와 비교할 수 있다.
캡처 단계 동안, CLK에서 수신된 클록 신호의 주파수는 비교적 빠르다(예를 들어, 주파수는 코어 논리(26)가 동작하는 주파수와 동일하다). 캡처 단계 동안의 클록 신호의 주파수는 비교적 빠르고, 접속(24C)은 느린 접속이기 때문에, 다음 클록 신호가 출력을 위해 SMDF(23)에 대해 오기 전에, 데이터가 플롭(22C)으로부터 SMDF(23)로 전파되기에 충분한 시간이 없을 수 있다. 본 개시에 설명된 하나 이상의 예에 따르면, 캡처 단계 동안, SMDF(23)는 느린 접속인 접속(24)의 영향이 완화되도록, SMDF(23)의 현재 값 또는 SMDF(23)의 값의 역을 출력하도록 구성될 수 있다. 예를 들어, SMDF(23)의 SI 입력에서 수신된 데이터 비트의 값에 관계없이, SMDF(23)는 SMDF(23)의 플립-플롭에서의 현재 값 또는 SMDF(23)의 플립-플롭에서의 현재 값의 역을 출력하도록 구성된다.
도 3a는 본 개시의 하나 이상의 기술에 따른, 입력들의 세트 및 출력들의 세트를 포함하는 플롭(32)을 도시하는 블록도이다. 플롭(32)은 기능 데이터 입력(34), 스캔 데이터 입력(36), 제어 입력(40), 클록 입력(42) 및 데이터 출력(38)을 포함한다. 데이터 출력(38)은 접속(44) 및 접속(46) 둘다를 통해 데이터를 방출한다. 일부 예들에서, 플롭(32)은 도 1의 입력 래퍼 체인의 플롭들(12) 중 하나의 예이다. 일부 예들에서, 플롭(32)은 도 1의 출력 래퍼 체인의 플롭들(14) 중 하나의 예이다. 일부 예들에서, 플롭(32)은 도 2의 플롭들(22) 중 하나의 예이다.
플롭(32)이 논리 블록(10A)과 같은 논리 블록의 입력 래퍼 체인의 일부일 때, 기능 데이터 입력(34)은 "외부" 환경으로부터의 데이터를 수신하도록 구성된다. 외부 환경은 플롭(32)이 위치되는 논리 블록의 일부가 아닌 디바이스들 및 회로를 나타낸다. 예를 들어, 플롭(32)은 다른 논리 블록으로부터 데이터를 수신하거나, 다른 시스템의 최상위 논리로부터 데이터를 수신할 수 있다. 일부 예들에서, 스캔 데이터 입력(36)은 입력 래퍼 체인의 이전 플롭으로부터 데이터를 수신하도록 구성된다. 플롭(32)이 입력 래퍼 체인의 제1 플롭일 때, 스캔 데이터 입력(36)은 테스터(예를 들어, 도 1의 테스터(20)) 또는 다른 회로로부터 데이터를 수신하도록 구성된다. 제어 입력(40)은 때때로 본 명세서에서 "시프트 인에이블(shift enable)" 신호로서 지칭되는 제어 신호를 수신한다. 플롭(32)은 제어 입력에서 수신된 제어 신호에 기초하여 기능 데이터 입력 또는 스캔 데이터 입력이 인에이블되는지를 제어한다. 제어 신호가 높은 제어 신호 크기를 포함할 때, 플롭(32)은 스캔 데이터 입력(36)을 인에이블하고, 기능 데이터 입력(34)을 디스에이블할 수 있다. 제어 신호가 낮은 제어 신호 크기를 포함할 때, 플롭(32)은 기능 데이터 입력(34)을 인에이블하고, 스캔 데이터 입력(36)을 디스에이블할 수 있다.
데이터 출력(38)은 접속(44) 및 접속(46)을 통해 데이터를 출력한다. 플롭(32)이 입력 래퍼 체인의 일부일 때, 접속(44)은 입력 래퍼 체인의 다음 플롭에 플롭(32)을 링크하고, 접속(46)은 플롭(32)이 위치되는 논리 블록의 코어 논리에 플롭(32)을 링크한다. 일부 예들에서, 데이터 출력(38)은 낮은 데이터 비트 값(예를 들어, "0") 또는 높은 데이터 비트 값(예를 들어, "1")을 나타내는 데이터 비트를 출력한다. 그와 같이, 플롭(32)은 이진 데이터를 처리하도록 구성된다. 데이터 출력(38)은 접속(44) 및 접속(46) 둘다를 통해 데이터 비트를 방출한다. 예를 들어, 데이터 출력(38)이 낮은 데이터 비트를 출력할 때, 데이터 출력(38)은 낮은 전압을 포함하는 전기 신호가 접속(44) 및 접속(46) 둘다를 통해 이동하도록, 낮은 전압에서 전기 신호를 방출한다. 이러한 방식으로, 접속(44)의 종단에서의 회로 및 접속(46)의 종단에서의 회로는 둘다 낮은 전압을 포함하는 전기 신호를 수신하고, 따라서 낮은 데이터 비트 값을 수신할 수 있다. 한편, 데이터 출력(38)이 높은 데이터 비트를 출력할 때, 데이터 출력(38)은 높은 전압을 포함하는 전기 신호가 접속(44) 및 접속(46) 둘다를 통해 이동하도록, 높은 전압에서 전기 신호를 방출한다. 이러한 방식으로, 접속(44)의 종단에서의 회로 및 접속(46)의 종단에서의 회로는 둘다 높은 전압을 포함하는 전기 신호를 수신하고, 따라서 높은 데이터 비트 값을 수신할 수 있다. 높은 전압의 크기는 낮은 전압의 크기보다 더 크다.
플롭(32)은 클록 입력(42)에서 하나 이상의 클록 신호를 수신할 수 있다. 클록 신호들은 플롭(32)을 통한 데이터의 흐름을 구동하는 신호들이다. 예를 들어, 플롭(32)은, 클록 신호의 수신에 기초하여, 플롭(32)의 입력으로부터 플롭(32)의 출력으로 데이터 비트를 전송할 수 있다. 플롭(32)이 그로부터 데이터를 전송하게 되는 입력은 제어 입력(40)에서 수신된 제어 신호에 의해 결정된다. 예를 들어, 제어 신호가 낮은 제어 신호 크기를 포함하고, 플롭(32)이 클록 신호를 수신할 때, 플롭(32)은 데이터 비트 값을 기능 데이터 입력(34)으로부터 데이터 출력(38)으로 전송한다. 제어 신호가 높은 제어 신호 크기를 포함하고, 플롭(32)이 클록 신호를 수신할 때, 플롭(32)은 데이터 비트 값을 스캔 데이터 입력(36)으로부터 데이터 출력(38)으로 전송한다.
도 3b는 상태 머신 구동 플롭(SMDF)(31)의 일례를 도시하는 블록도이다. 예를 들어, SMDF(31)는 입력 래퍼 체인 또는 출력 래퍼 체인에 포함되는 스캔 래퍼 셀과 같은 래퍼 셀의 예이다.
일부 예들에서, SMDF(31)는 상태 머신을 형성하기 위해 추가 회로를 갖는 도 3a의 플롭(32)의 컴포넌트들과 유사한 컴포넌트들을 포함한다. 그러나, SMDF(31)에 대한 예들은 그와 같이 제한되지 않는다.
도 3b에 도시된 예에서, SMDF(31)는 본 개시의 하나 이상의 기술에 따른, 1차 플롭(32), 추가된 플롭(48), 및 상태 머신 논리(50)를 포함한다. 따라서, SMDF(31)는 멀티-플롭 상태 머신 구동 플롭이다. 1차 플롭(32)은 기능 데이터 입력(34), 스캔 데이터 입력(36), 제어 입력(40), 클록 입력(42) 및 데이터 출력(38)을 포함한다. 추가된 플롭(48)은, 일부 경우들에서, 기능 데이터 입력, 스캔 데이터 입력, 제어 입력, 클록 입력, 및 데이터 출력을 포함한다. 이러한 방식으로, 추가된 플롭(48)은 1차 플롭(32)과 실질적으로 동일할 수 있다. SMDF(31)는 추가된 플롭(48) 및 상태 머신 논리(50)가 플롭(32)과 통합되도록 1차 플롭(32)의 변경을 나타낼 수 있다. 따라서, SMDF(31)는 상태 머신 구동되는 개선된 플롭이고, 여기서 개선은 추가 회로로부터의 것이고, 추가 플롭들은 상태 머신을 형성하는데 이용된다. 일부 예들에서, 설계 동안, 접속(41)은 느린 접속으로서 식별된다. 플롭(32)은, 수정된 플롭(31)이 스캔 모드에서 동작하는 동안 느린 접속(41)이 코어 논리의 테스트 동작에 부정적으로 영향을 미치지 않도록 추가 플롭(48) 및 상태 머신 논리(50)로 보충될 수 있다. 예를 들어, 플롭(32)은 도 3b의 SMDF(31)와 같은 스캔 래퍼 셀로 대체될 수 있다.
도 4는 본 개시의 하나 이상의 기술에 따른, 접속(141)의 종단에 위치된 멀티-플롭 상태 머신 구동 플롭을 형성하는 스캔 래퍼 셀(130)을 도시하는 블록도이다. 접속(141)은 래퍼 체인에서의 플롭들 사이의 스캔 경로에서의 느린 접속이다. 스캔 래퍼 셀(130)은 느린 접속인 접속(141)의 영향으로부터 면역성을 제공하는 상태 머신 구동 플롭(SMDF)의 예이다. 따라서, 스캔 래퍼 셀(130)은 시프트 경로 지연 면역성을 제공하는 스캔 래퍼 셀일 수 있다. 시프트 경로 지연은 테스트의 캡처 단계 동안 플롭들 사이에서 데이터를 시프트하는 것으로부터의 지연을 지칭한다.
도 4에서 볼 수 있듯이, 셀(130)은 플립-플롭들(122A-122B)(집합적으로, "플립-플롭들(122)"), 멀티플렉서들(124A 내지 124C (집합적으로, "멀티플렉서들(124)"), 및 배타적 OR(XOR) 논리 게이트(126)를 포함한다. 제1 플립-플롭(122A)은 제1 플립-플롭 기능 데이터 입력(131), 제1 플립-플롭 스캔 데이터 입력(132), 제1 플립-플롭 데이터 출력(134), 제1 플립-플롭 제어 입력(135), 및 제1 플립-플롭 클록 입력(136)을 포함한다. 제2 플립-플롭(122B)은 제2 플립-플롭 데이터 입력(142), 제2 플립-플롭 데이터 출력(144), 및 제2 플립-플롭 클록 입력(146)을 포함한다. 제1 멀티플렉서(124A)는 제1 멀티플렉서 데이터 입력(152), 제2 멀티플렉서 데이터 입력(154), 제1 멀티플렉서 데이터 출력(156), 및 제1 멀티플렉서 제어 입력(158)을 포함한다. 제2 멀티플렉서(124B)는 제3 멀티플렉서 데이터 입력(162), 제4 멀티플렉서 데이터 입력(164), 제2 멀티플렉서 데이터 출력(166), 및 제2 멀티플렉서 제어 입력(168)을 포함한다. 제3 멀티플렉서(124C)는 제5 멀티플렉서 데이터 입력(172), 제6 멀티플렉서 데이터 입력(174), 제3 멀티플렉서 데이터 출력(176), 및 제3 멀티플렉서 제어 입력(178)을 포함한다. XOR 논리 게이트(126)는 제1 XOR 데이터 입력(182), 제2 XOR 데이터 입력(184), 및 XOR 데이터 출력(186)을 포함한다.
셀(130)은 논리 블록(10A)의 기능 모드 및 논리 블록(10A)의 스캔 모드 둘다 동안에 동작하도록 구성된다. 블록(10A)의 기능 모드 동안, 셀(130)은 도 3a의 플롭(32)과 같은 비수정된 플롭과 유사하게 동작할 수 있다. 예를 들어, 기능 모드 동안, 플립-플롭(122A)은 제1 플립-플롭 제어 입력(135)에서 제어 신호(206)를 수신하여, 플립-플롭(122A)으로 하여금 제1 플립-플롭 기능 데이터 입력(131)을 활성화하고, 제1 플립-플롭 스캔 데이터 입력(132)을 비활성화하게 할 수 있다. 그와 같이, 논리 블록(10A)의 기능 모드 동안, 플립-플롭(122A)은 제1 플립-플롭 기능 데이터 입력(131)으로부터 제1 플립-플롭 데이터 출력(134)으로 데이터를 전송할 수 있다. 즉, 플립-플롭(122A)은 논리 블록(10A) 외부의 회로로부터 논리 블록(10A)의 코어 논리(16)로 데이터를 전송할 수 있다. 이러한 방식으로, 셀(130)은, 제2 플립-플롭(122B), 제1 멀티플렉서(124A), 제2 멀티플렉서(124B), 및 XOR 논리 게이트(126)에 의존하지 않고 기능 모드가 인에이블되는 동안, 외부 회로로부터 코어 논리로 데이터를 전송하기 위해 플립-플롭(122A)에 의존할 수 있다.
플립-플롭들(122), 멀티플렉서들(124), 및 XOR 논리 게이트(126)는, 접속(141)이 코어 논리(16)의 테스트에 악영향을 미치는 것을 방지하기 위해 논리 블록(10A)의 스캔 모드가 인에이블되는 동안 동작할 수 있다. 즉, 셀(130)은, 테스터(20)가 하나 이상의 에러가 논리 블록(10A)의 입력/출력 래퍼 체인들이 아니라 코어 논리(16)에 의해 야기되는 것을 명확히 결정할 수 있도록, 테스트 동안 접속(141)에 의해 야기되는 지연으로부터 면역성을 제공할 수 있다.
일부 예들에서, 테스터(20)는 로드 단계, 캡처 단계 및 언로드 단계를 포함하는 테스트 동작을 실행한다. 로드 단계 동안, 셀(130)은 접속(141)을 통해 이전 플롭으로부터 수신된 데이터를 처리하도록 구성된다. 예를 들어, 제1 멀티플렉서(124A)는 제1 멀티플렉서 제어 입력(158)에서 제어 신호(216)를 수신하여, 제1 멀티플렉서(124A)로 하여금 제2 멀티플렉서 데이터 입력(154)을 활성화하고, 제1 멀티플렉서 데이터 입력(152)을 비활성화하게 하고, 제2 멀티플렉서(124B)는 제2 멀티플렉서 제어 입력(168)에서 제어 신호(216)를 수신하여, 제2 멀티플렉서(124B)로 하여금 제4 멀티플렉서 데이터 입력(164)을 활성화하고, 제3 멀티플렉서 데이터 입력(162)을 비활성화하게 한다. 로드 단계 동안 테스터(20)는 데이터 비트 값을 제1 플립-플롭(122A)의 제1 플립-플롭 데이터 출력(134)에 로드할 수 있고, 테스터(20)는 데이터 비트 값을 제2 플립-플롭(122B)의 제2 플립-플롭 데이터 출력(144)에 로드할 수 있다.
데이터 비트 값을 제1 플립-플롭(122A)의 제1 플립-플롭 데이터 출력(134)에 "로드"하고, 데이터 비트 값을 제2 플립-플롭(122B)의 제2 플립-플롭 데이터 출력(144)에 로드하기 위해, 제1 플립-플롭(122A) 및 제2 플립-플롭(122B)의 각각의 클록 입력들은 플립-플롭들(122)로 하여금 셀(130)을 통해 데이터 비트들을 전진시키게 하는 로드 단계 클록 신호들의 세트를 수신할 수 있다. 제2 멀티플렉서 데이터 입력(154) 및 제4 멀티플렉서 데이터 입력(164)은 로드 단계 동안 활성화되므로, 로드 단계 동안 셀(130)을 통한 데이터 비트들의 전진은 다음과 같이 발생할 수 있다.
제1 플립-플롭 클록 입력(136)은, 제1 플립-플롭(122A)으로 하여금 제1 데이터 비트를 제1 플립-플롭 스캔 데이터 입력(132)으로부터 제1 플립-플롭 데이터 출력(134)으로 전진시키게 하는 제1 로드 단계 클록 신호를 수신할 수 있고, 따라서 제1 데이터 비트를 멀티플렉서(124B)를 통해 제2 플립-플롭 데이터 입력(142)에 출력한다. 추가적으로, 제1 로드 단계 클록 신호는 제1 플립-플롭 스캔 데이터 입력(132)으로 하여금 접속(141) 및 멀티플렉서(124A)를 통해 제2 데이터 비트를 수신하게 한다. 제2 플립-플롭 클록 입력(146) 및 제1 플립-플롭 클록 입력(136)은, 제2 플립-플롭(122B)으로 하여금 제1 데이터 비트를 제2 플립-플롭 데이터 입력(142)으로부터 제2 플립-플롭 데이터 출력(144)으로 전진시키게 하는 제2 로드 단계 클록 신호를 수신할 수 있다. 추가적으로, 제2 로드 단계 클록 신호는 제1 플립-플롭(122A)으로 하여금 제2 데이터 비트를 제1 플립-플롭 스캔 데이터 입력(132)으로부터 제1 플립-플롭 데이터 출력(134)으로 전진시키게 한다. 이러한 방식으로, 제1 플립-플롭(122A) 및 제2 플립-플롭(122B)이 제1 로드 단계 클록 신호 및 제2 로드 단계 클록 신호를 수신한 후에, 제1 데이터 비트는 제2 플립-플롭 데이터 출력(144)에 로드될 수 있고, 제2 데이터 비트는 제1 플립-플롭 데이터 출력(134)에 로드될 수 있다. 그와 같이, 제1 데이터 비트는 "toggleState" 데이터 비트를 나타낼 수 있고, 제2 데이터 비트는 코어 논리에 출력되는 "localQ" 데이터 비트를 나타낼 수 있다.
일부 예들에서, localQ 데이터 비트는 낮은 데이터 비트 값 "0" 또는 높은 데이터 비트 값 "1"을 나타낸다. 또한, toggleState 데이터 비트는 낮은 데이터 비트 값 또는 높은 데이터 비트 값을 나타낼 수 있다. localQ 데이터 비트 값의 아이덴티티(예를 들어, 낮은 데이터 비트 값 또는 높은 데이터 비트 값) 및 toggleState 데이터 비트 값의 아이덴티티는, 테스터(20)에 의해 실행되는 테스트 동작의 캡처 단계 동안 셀(130)이 어떻게 동작하는지를 결정할 수 있다. 그와 같이, 테스트 동작 동안 입력 래퍼 체인에서의 이전 플롭과 셀(130)을 접속하는 접속(141)에 의존하지 않고 셀(130)이 진행하도록, localQ 데이터 비트 및 toggleState 데이터 비트를 프로그래밍하는 것이 유익할 수 있다. localQ 데이터 비트 및 toggleState 데이터 비트를 프로그래밍하기 위해, localQ 데이터 비트 및 toggleState 데이터 비트를 나타내는 데이터의 스트링의 2개의 연속 데이터 비트들이 각각 원하는 데이터 비트 값들을 포함하도록, 입력 래퍼 체인으로 향하는 데이터 스트링을 커스터마이즈하는 것이 가능할 수 있다. 예를 들어, toggleState 데이터 비트가 "1"이고, 데이터의 스트링에서의 toggleState 데이터 비트에 연속적인 localQ 데이터 비트가 "0"이 되도록, 데이터의 스트링을 생성하는 것이 가능할 수 있다. 입력 래퍼 체인이 데이터의 스트링을 로드할 때, 셀(130)은 데이터의 스트링을 로드할 수 있고, 따라서 localQ 데이터 비트 및 toggleState 데이터 비트를 "프로그래밍"할 수 있다.
테스트 동작의 캡처 단계 동안, 셀(130)은 토글 상태 및 유지 상태 중 하나로 동작하도록 구성될 수 있다. 즉, 셀(130)은, 셀(130)이 토글 모드에서 동작하고 있을 때 캡처 단계 클록 신호를 수신하는 것에 응답하여 localQ 데이터 비트의 값을 토글하고, 셀(130)은, 셀(130)이 유지 모드에서 동작하고 있을 때 캡처 단계 클록 신호를 수신하는 것에 응답하여 localQ 데이터 비트의 값을 유지한다. toggleState 데이터 비트가 "1"일 때, 셀(130)은 토글 모드에서 동작하고, toggleState 데이터 비트가 "0"일 때, 셀(130)은 유지 모드에서 동작한다. 결과적으로, toggleState 데이터 비트의 커스터마이즈된 값을 포함하도록 데이터의 스트링을 생성함으로써, 제2 플립-플롭 데이터 출력(144)에 로드될 때, toggleState 데이터 비트는 셀(130)의 동작을 안내한다.
셀(130)은 4개의 비트 조합들 중 하나에 따라 동작할 수 있다. 제1 비트 조합은 localQ 데이터 비트가 "0"이고, toggleState 데이터 비트가 "0"일 때 발생한다. 제2 비트 조합은 localQ 데이터 비트가 "0"이고, toggleState 데이터 비트가 "1"일 때 발생한다. 제3 비트 조합은 localQ 데이터 비트가 "1"이고, toggleState 데이터 비트가 "0"일 때 발생한다. 제4 비트 조합은 localQ 데이터 비트가 "1"이고, toggleState 데이터 비트가 "1"일 때 발생한다. 셀(130)이, 제1 비트 조합이 플립-플롭(122)에 로드되는 동안 캡처 단계 클록 신호를 수신할 때, 제1 플립-플롭(122A)은 localQ 데이터 비트 값을 "0"으로 유지하고, 제2 플립-플롭(122B)은 toggleState 데이터 비트 값을 "0"으로 유지한다. 셀(130)이, 제2 비트 조합이 플립-플롭들(122)에 로드되는 동안 캡처 단계 클록 신호를 수신할 때, 제1 플립-플롭(122A)은 localQ 데이터 비트 값을 "0"으로부터 "1"로 토글하고, 제2 플립-플롭(122B)은 toggleState 데이터 비트 값을 "1"로 유지한다. 셀(130)이, 제3 비트 조합이 플립-플롭들(122)에 로드되는 동안 캡처 단계 클록 신호를 수신할 때, 제1 플립-플롭(122A)은 localQ 데이터 비트 값을 "1"로 유지하고, 제2 플립-플롭(122B)은 toggleState 데이터 비트 값을 "0"로 유지한다. 셀(130)이, 제4 비트 조합이 플립-플롭들(122)에 로드되는 동안 캡처 단계 클록 신호를 수신할 때, 제1 플립-플롭(122A)은 localQ 데이터 비트 값을 "1"로부터 "0"으로 토글하고, 제2 플립-플롭(122B)은 toggleState 데이터 비트 값을 "1"로 유지한다.
XOR 논리 게이트(126)는 셀(130)로 하여금 토글 단계 동안 localQ 데이터 비트를 토글하고, 유지 단계 동안 localQ 데이터 비트를 유지하게 한다. 예를 들어, 제2 비트 조합이 플립-플롭들(122)에 로드될 때, toggleState 데이터 비트는 "1"이고, 이는 셀(130)이 토글 모드에 있다는 것을 의미한다. 제2 플립-플롭 데이터 출력(144)은 제1 XOR 데이터 입력(182)에 "1" 데이터 비트를 출력한다. 추가적으로, 제2 비트 조합이 플립-플롭들(122)에 로드될 때, localQ 데이터 비트는 "0"이고, 이는 제1 플립-플롭 데이터 출력(134)이 "0" 데이터 비트를 제2 XOR 데이터 입력(184)에 출력한다는 것을 의미한다. XOR 논리 게이트(126)는 제1 XOR 데이터 입력(182) 및 제2 XOR 데이터 입력(184)에 전송된 데이터 비트 값들에 기초하여 "0" 데이터 비트 값 또는 "1" 데이터 비트 값을 출력한다. 예를 들어, 제1 XOR 데이터 입력(182) 및 제2 XOR 데이터 입력(184)에 전송된 데이터 비트들의 합이 홀수일 때, XOR 논리 게이트(126)는 "1" 데이터 비트 값을 출력한다. 제1 XOR 데이터 입력(182) 및 제2 XOR 데이터 입력(184)에 전송된 데이터 비트들의 합이 짝수일 때, XOR 논리 게이트(126)는 "0" 데이터 비트 값을 출력한다. 그와 같이, 제2 비트 조합의 경우에, XOR 논리 게이트(126)는 "1" 데이터 비트 값을 출력하는데, 그 이유는 제1 XOR 데이터 입력(182)이 "1" 데이터 비트를 수신하고, 제2 XOR 데이터 입력(184)이 "0" 데이터 비트를 수신하기 때문이며, 이는 XOR 데이터 비트들에 의해 수신된 2개의 데이터 비트들이 1의 홀수 합을 갖는다는 것을 의미한다. 이것은 플립-플롭(122A)으로 하여금 제1 플립-플롭 스캔 데이터 입력(132)에서 "1" 데이터 비트 값을 수신하게 하는데, 그 이유는 캡처 단계 동안, XOR 데이터 출력(186)을 제1 플립-플롭 스캔 데이터 입력(132)과 접속하기 위해서 제1 멀티플렉서 데이터 입력(152)이 인에이블되기 때문이다.
비록 플롭(130)이 XOR 논리 게이트(126)를 포함하지만, 하나 이상의 다른 논리 게이트가, XOR 논리 게이트(126)에 의해 수행되는 것으로서 본 명세서에서 설명된 하나 이상의 기술을 수행하도록 구성될 수 있다. XOR 논리 게이트는 한가지 타입의 다음 상태 논리 요소를 나타낼 수 있다. 일부 예들에서, 다른 다음 상태 논리 요소 또는 다음 상태 논리 요소들의 조합이, XOR 논리 게이트(126)에 의해 수행되는 것으로서 본 명세서에 설명된 하나 이상의 기술을 수행할 수 있다. 일부 예들에서, 멀티플렉서(MUX), 배타적 NOR(XNOR) 논리 게이트, AOI(AND-OR-Invert) 논리 게이트, 다른 타입의 다음 상태 논리 게이트, 또는 이들의 임의의 조합이, XOR 논리 게이트(126)에 의해 수행되는 것으로서 본 명세서에서 설명된 하나 이상의 기술을 수행할 수 있다.
제2 비트 조합이 플립-플롭들(122)에 로드될 때 캡처 단계 클록 신호를 수신하는 제1 플립-플롭 클록 입력(136)에 응답하여, 플립-플롭(122A)은 제1 플립-플롭 스캔 데이터 입력(132)으로부터 제1 플립-플롭 데이터 출력(134)으로 "1" 데이터 비트 값을 전송하고, 따라서 localQ 데이터 비트 값을 "0"으로부터 "1"로 토글한다. 플립-플롭(122B)은 제2 플립-플롭 클록 입력(146)에서 캡처 단계 클록 신호를 수신하여, 플립-플롭(122B)으로 하여금 toggleState 데이터 비트를 "1" 데이터 비트 값으로 유지하게 한다. 이것은 캡처 단계 동안, 제3 멀티플렉서 데이터 입력(162)이 활성화되고, 제4 멀티플렉서 데이터 입력(164)이 비활성화되어, 제2 플립-플롭 데이터 출력(144)이 제2 플립-플롭 데이터 입력(142)에 접속되게 하기 때문이다.
셀(130)이 2개의 플립-플롭들(예를 들어, 플립-플롭(122A) 및 플립-플롭(122B))을 포함하는 것으로 도시되어 있지만, 도 4에 도시되지 않은 하나 이상의 플립-플롭은 2개보다 많은 플립-플롭들을 포함할 수 있다. 하나 이상의 예시적인 플롭은 하나 이상의 예시적인 플롭이 원하는 데이터 비트를 출력할 수 있게 하는 추가적인 논리 게이트들 및 추가적인 회로를 포함할 수 있다.
도 5는 본 개시의 하나 이상의 기술에 따른, 클록 신호 플롯(190), 제1 제어 신호 플롯(200), 및 제2 제어 신호 플롯(210)을 도시하는 그래프(188)이다. 도 5에서 볼 수 있듯이, 클록 신호 플롯(190)은 로드 단계 클록 신호들(192A-192E)(집합적으로, "로드 단계 클록 신호들(192)")의 세트, 캡처 단계 클록 신호들(194A-194B)(집합적으로, "캡처 단계 클록 신호들(194)")의 세트, 및 언로드 단계 클록 신호들(196A-196E)(집합적으로, "언로드 단계 클록 신호들(196)")의 세트를 포함한다. 제1 제어 신호 플롯(200)은 로드 단계, 캡처 단계 및 언로드 단계 전반에 걸쳐 높은 제어 신호 값(202)에 있는 제1 제어 신호(206)를 포함한다. 제2 제어 신호 플롯(210)은 로드 단계 동안에 높은 제어 신호 값(202)에 있고, 캡처 단계 동안에 낮은 제어 신호 값(204)에 있고, 언로드 단계 동안에 높은 제어 신호 값(202)에 있는 제2 제어 신호(216)를 포함한다. 도 5는 도 1의 시스템(2) 및 도 3의 플롭(130)과 관련하여 설명된다. 그러나, 도 5의 기술들은 시스템(2) 또는 플롭(130)의 상이한 컴포넌트들에 의해, 또는 추가적인 또는 대안적인 시스템들 및 디바이스들에 의해 수행될 수 있다.
로드 단계 동안, 도 1의 플롭들(12)과 같은 입력 래퍼 체인은 로드 단계 클록 신호들(192)의 세트를 수신할 수 있다. 추가적으로, 테스터(20)는 데이터 비트들의 스트링을 입력 래퍼 체인 쪽으로 향하게 할 수 있다. 로드 단계 클록 신호들(192)은 플롭들(12)이 기능 입력들을 이용하여 데이터 비트들을 로드하지 않고 스캔 입력들을 통한 데이터 비트들의 스트링을 로드하게 한다. 즉, 플롭들(12)은 테스트 동작 동안에 테스트 회로 외의 외부 회로로부터 논리 블록(10A)을 격리시키는 입력 래퍼 체인을 나타낼 수 있다. 일부 예들에서, 로드 단계 클록 신호들(192)은 플롭들(12)의 각각의 플롭이 적어도 하나의 데이터 비트를 로드하게 한다. SMDF(예를 들어, SMDF(13, 15, 23), 또는 셀(130))의 경우, SMDF는 로드 단계 동안 하나보다 많은 데이터 비트를 로드할 수 있다. 예를 들어, 셀(130)은 제1 플립-플롭(122A) 및 제2 플립-플롭(122B)을 포함한다. 로드 단계 동안 제1 플립-플롭(122A)은 localQ 데이터 비트를 로드할 수 있고, 제2 플립-플롭(122B)은 toggleState 데이터 비트를 로드할 수 있다.
제1 제어 신호(206) 및 제2 제어 신호(216)는 테스터(20)에 의해 수행되는 테스트 동작 동안 셀(130)의 상이한 컴포넌트들에 전달되는 제어 신호들을 나타낼 수 있다. 예를 들어, 제1 플립-플롭(122A)은 제1 플립-플롭 제어 입력(135)에서 제1 제어 신호(206)를 수신할 수 있다. 제1 멀티플렉서(124A), 제2 멀티플렉서(124B), 및 제3 멀티플렉서(124C)는 제1 멀티플렉서 제어 입력(158), 제2 멀티플렉서 제어 입력(168), 및 제3 멀티플렉서 제어 입력(178)에서 제2 제어 신호(216)를 각각 수신한다. 로드 단계 동안, 제1 제어 신호(206) 및 제2 제어 신호(216) 둘다 높은 제어 신호 값(202)에 있다. 이것은 데이터가 제1 플립-플롭(122A) 및 제2 플립-플롭(122B) 둘다를 통해 셀(130)을 통과하도록 구성된다는 것을 의미한다. 높은 제어 신호 값(202)에서, 제1 제어 신호(206)는 제1 플립-플롭 스캔 데이터 입력(132)을 활성화하고, 제1 플립-플롭 기능 데이터 입력(131)을 비활성화하여, 제1 플립-플롭(122A)이 제1 플립-플롭 스캔 데이터 입력(132)으로부터 제1 플립-플롭 데이터 출력(134)으로 데이터를 전송하는 것을 허용하고, 제1 플립-플롭(122A)이 제1 플립-플롭 기능 데이터 입력(131)으로부터 데이터를 전송하는 것을 방지한다. 예를 들어, 로드 단계 동안, 데이터 비트는 접속(141)을 통해 셀(130)에 도달하고, 제1 플립-플롭(122A)을 통해 제2 플립-플롭(122B)으로 전송되고, 제2 플립-플롭(122B)을 통해 입력 래퍼 체인의 다음 플롭으로 전송될 수 있다.
로드 단계에 이어서, 테스터(20)는 캡처 단계를 실행할 수 있다. 캡처 단계 동안, 제1 제어 신호(206)는 높은 제어 신호 값(202)에서 유지되고, 제2 제어 신호(216)는 낮은 제어 신호 값(204)으로 스위칭된다. 결과적으로, 제1 플립-플롭(122A)은 캡처 단계 클록 신호들(194)을 수신하는 것에 응답하여 제1 플립-플롭 스캔 데이터 입력(132)으로부터 데이터를 계속 전송하고, 멀티플렉서들(124)은 캡처 단계 동안 "I0" 입력들(152, 162, 및 172)을 인에이블한다. 이것은 제1 플립-플롭 스캔 데이터 입력(132)이 캡처 단계 동안 접속(141)을 통해 데이터를 수신하는 것에 의존하기보다는, XOR 데이터 출력(186)으로부터 데이터를 수신하고, 따라서 접속(141)이, 접속(141)이 느릴 때 테스트 동작에서의 에러들을 야기하는 것을 방지한다는 것을 의미한다.
따라서, 제1 플립-플롭(122A)은 현재 값을 포함하고, 제2 플립-플롭(122B)에서의 값(예를 들어, 셀(130)이 토글 모드 또는 유지 모드를 위해 구성되는지의 여부)에 기초하여, 셀(130)은 현재 값 또는 현재 값의 역을 출력할 수 있다. 입력 또는 출력 래퍼 체인에 다수의 셀들(130)이 있는 것과 같은 하나 이상의 예에서, 셀들(130) 중 하나(예를 들어, 제1 SMDF)는 제1 SMDF의 제2 플립-플롭에서의 값에 기초하여 토글 모드로 구성될 수 있고, 셀들(130) 중 다른 하나(예를 들어, 제2 SMDF)는 제2 SMDF의 제2 플립-플롭에서의 값에 기초하여 유지 모드로 구성될 수 있다.
언로드 단계가 캡처 단계를 뒤따른다. 언로드 단계 동안, 제1 제어 신호(206)는 높은 제어 신호 값(202)에 남아 있고, 제2 제어 신호(216)는 다시 높은 제어 신호 값(202)으로 스위칭한다. 언로드 단계 클록 신호들(196)은 출력 래퍼 체인(예를 들어, 도 1의 플롭들(14))이 분석을 위해 캡처된 데이터 비트들의 스트링을 테스터(20)에 전송하게 할 수 있다.
도 6은 본 개시의 하나 이상의 기술에 따른, 테스트 동작을 수행하기 위한 예시적인 동작을 도시하는 흐름도이다. 도 6은 도 1의 시스템(2) 및 도 4의 셀(130)과 관련하여 설명된다. 그러나, 도 6의 기술들은 시스템(2) 또는 셀(130)의 상이한 컴포넌트들에 의해, 또는 추가적인 또는 대안적인 시스템들 및 디바이스들에 의해 수행될 수 있다.
테스트 동작의 로드 단계를 실행하기 위해, 테스터(20)는 도 1의 플롭들(12) 및 SMDF(13)와 같은 입력 래퍼 체인으로 하여금 데이터의 스트링을 로드하게 한다(602). 예를 들어, 플롭들(12) 및 SMDF(13)는 로드 단계 클록 신호들의 세트를 수신하여, 플롭들(12) 및 SMDF(13)로 하여금 데이터의 스트링을 로드하게 할 수 있다. 입력 래퍼 체인이 데이터의 스트링을 로드한 후에, 논리 블록(10A)은 코어 논리(16)를 통해 복수의 기능 경로들(17)을 실행함으로써 데이터의 스트링을 캡처한다(604). 예를 들어, 플롭들(12) 및 SMDF(13)는 플롭들(12) 및 SMDF(13)로 하여금 데이터 비트들의 스트링을 기능 경로들(17)을 통해 플롭들(14)로 전송하게 하는 캡처 단계 클록 신호들의 세트를 수신할 수 있다. 이러한 방식으로, 기능 경로들(17)은 캡처된 데이터 비트들의 스트링을 생성하기 위해 하나 이상의 논리 연산을 수행할 수 있다. 테스터(20)는 도 1의 플롭들(14) 및 SMDF(15)와 같은 출력 래퍼 체인으로 하여금 캡처된 데이터의 스트링을 출력하게 한다(606). 예를 들어, 출력 플롭들(14) 및 SMDF(15)는 언로드 단계 클록 신호들의 세트를 수신하여, 출력 플롭들(14) 및 SMDF(15)로 하여금 캡처된 데이터 비트들의 스트링을 테스터(20)에 출력하게 할 수 있다.
테스터(20)는 캡처된 데이터의 스트링을 예상된 데이터의 스트링과 비교할 수 있다(608). 예상된 데이터의 스트링은, 입력 래퍼 체인에 의해 로드된 데이터의 스트링이 주어질 때, 기능 경로들(17)이 생성할 것으로 예상되는 데이터 비트들의 스트링을 나타낼 수 있다. 캡처된 데이터의 스트링과 예상된 데이터의 스트링 사이의 차이들은 코어 논리(16)에서의 에러들에 의해 야기될 수 있다. 그와 같이, 테스터(20)는, 비교에 기초하여, 기능 경로들(17)이 하나 이상의 에러를 야기하는지를 결정하도록 구성될 수 있다(610).
본 명세서에 설명된 기술은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 모듈들, 유닛들 또는 컴포넌트들로서 설명된 다양한 특징들은 통합된 논리 디바이스에서 함께 구현되거나, 분리되어 있지만 상호운용가능한 논리 디바이스들 또는 다른 하드웨어 디바이스들로서 개별적으로 구현될 수 있다. 일부 경우들에서, 전자 회로의 다양한 특징들이 집적 회로 칩 또는 칩셋과 같은 하나 이상의 집적 회로 디바이스로서 구현될 수 있다.
하드웨어로 구현되는 경우, 본 개시는 프로세서 또는 집적 회로 디바이스, 예를 들어, 집적 회로 칩 또는 칩셋과 같은 장치에 관한 것일 수 있다. 대안적으로 또는 추가적으로, 소프트웨어 또는 펌웨어로 구현되는 경우, 기술들은, 실행될 때 프로세서로 하여금 전술한 방법들 중 하나 이상을 수행하게 하는 명령어들을 포함하는 컴퓨터 판독가능한 데이터 저장 매체에 의해 적어도 부분적으로 실현될 수 있다. 예를 들어, 컴퓨터 판독가능한 데이터 저장 매체는 프로세서에 의한 실행을 위해 그러한 명령어들을 저장할 수 있다.
컴퓨터 판독가능한 매체는 패키징 재료들을 포함할 수 있는 컴퓨터 프로그램 제품의 일부를 형성할 수 있다. 컴퓨터 판독가능한 매체는 RAM(random access memory), ROM(read-only memory), NVRAM(non-volatile random access memory), EEPROM(electrically erasable programmable read-only memory), 플래시 메모리, 자기 또는 광학 데이터 저장 매체 등과 같은 컴퓨터 데이터 저장 매체를 포함할 수 있다. 일부 예들에서, 제조 물품은 하나 이상의 컴퓨터 판독가능한 저장 매체를 포함할 수 있다.
일부 예들에서, 컴퓨터 판독가능한 저장 매체는 비일시적인 매체를 포함할 수 있다. "비일시적"이라는 용어는 저장 매체가 반송파 또는 전파 신호로 구현되지 않는다는 것을 나타낼 수 있다. 특정한 예들에서, 비일시적 저장 매체는 시간에 따라 변할 수 있는 데이터를 (예를 들어, RAM 또는 캐시에) 저장할 수 있다.
코드 또는 명령어들은 하나 이상의 디지털 신호 프로세서(DSP), 범용 마이크로프로세서, 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA) 또는 다른 등가의 집적 또는 개별 논리 회로와 같은 하나 이상의 프로세서를 포함하는 처리 회로에 의해 실행되는 소프트웨어 및/또는 펌웨어일 수 있다. 따라서, 본 명세서에서 이용된 바와 같은 "프로세서"라는 용어는 본 명세서에서 설명된 기술들의 구현에 적합한 전술한 구조 또는 임의의 다른 구조 중 임의의 것을 지칭할 수 있다. 또한, 일부 양태들에서, 본 개시에서 설명된 기능은 소프트웨어 모듈들 또는 하드웨어 모듈들 내에 제공될 수 있다.

Claims (20)

  1. 집적 회로(integrated circuit)(IC)로서,
    기능 논리 요소들을 갖는 코어 논리;
    상기 코어 논리를 테스트하기 위한 복수의 플롭들을 갖는 래퍼 체인―상기 래퍼 체인의 상기 복수의 플롭들은 상기 코어 논리의 테스트 동안 상기 플롭들의 연속적인 플롭들을 통해 스캔 데이터를 시프트하기 위해 스캔 경로를 따라 순차적으로 상호접속됨―; 및
    상기 래퍼 체인의 상기 스캔 경로를 따라 접속된 적어도 하나의 상태 머신 구동 플롭―상기 상태 머신 구동 플롭은, 상기 테스트 동안, 상기 스캔 경로를 따라 시프트되고 상기 상태 머신 구동 플롭에 의해 수신되는 상기 스캔 데이터와는 독립적인 값을 출력하도록 개별적으로 구성가능함―을 포함하는, IC.
  2. 제1항에 있어서,
    상기 상태 머신 구동 플롭은, 테스트 동안, 상기 래퍼 체인의 이전 시프트 사이클 동안 상기 상태 머신 구동 플롭으로 시프트된 상기 상태 머신 구동 플롭의 현재 값을 출력으로서 유지하도록 구성가능한, IC.
  3. 제1항에 있어서,
    상기 상태 머신 구동 플롭은, 테스트 동안, 상기 래퍼 체인의 이전 시프트 사이클 동안 상기 상태 머신 구동 플롭으로 시프트된 상기 상태 머신 구동 플롭의 현재 값의 역을 출력하도록 구성가능한, IC.
  4. 제1항에 있어서,
    상기 상태 머신 구동 플롭은, 테스트 동안, 스캔 데이터의 상태 머신 구동 플롭으로의 시프트를 디스에이블하도록 구성가능한, IC.
  5. 제1항에 있어서,
    상기 래퍼 체인은, (1) 상기 코어 논리를 테스트하도록 입력 데이터를 제공하기 위한 제1 복수의 플롭들을 포함하는 입력 래퍼 체인, 또는 (2) 상기 코어 논리로부터 출력 데이터를 수신하기 위한 제2 복수의 플롭들을 포함하는 출력 래퍼 체인 중 하나를 포함하는, IC.
  6. 제1항에 있어서,
    상기 상태 머신 구동 플롭과 상기 래퍼 체인에서의 이전 플롭 사이의 접속은 상기 코어 논리의 동작 레이트보다 작은 레이트로 상기 상태 머신 구동 플롭에 데이터를 전파하는, IC.
  7. 제1항에 있어서,
    상기 적어도 하나의 상태 머신 구동 플롭은 제1 상태 머신 구동 플롭의 현재 값을 출력하도록 구성된 상기 제1 상태 머신 구동 플롭이고, 상기 IC는 제2 상태 머신 구동 플롭의 현재 값의 역을 출력하도록 구성된 상기 제2 상태 머신 구동 플롭을 더 포함하는, IC.
  8. 제1항에 있어서,
    상기 상태 머신 구동 플롭은 제1 플립-플롭 및 제2 플립-플롭을 포함하고, 상기 제1 플립-플롭에서 시프트된 값은 상기 상태 머신 구동 플롭의 현재 값이고, 상기 제2 플립-플롭에서 시프트된 값은 상기 상태 머신 구동 플롭의 상기 현재 값 또는 상기 상태 머신 구동 플롭의 상기 현재 값의 역을 출력하도록 상기 상태 머신 구동 플롭을 구성하는, IC.
  9. 제8항에 있어서,
    상기 상태 머신 구동 플롭은,
    로드 단계 동안 입력 데이터의 스트링의 제1 데이터 비트를 상기 제1 플립-플롭으로 로드―상기 제1 데이터 비트는 로컬 데이터 비트를 나타냄―하고,
    상기 로드 단계 동안 상기 입력 데이터의 스트링의 제2 데이터 비트를 상기 제2 플립-플롭으로 로드―상기 제2 데이터 비트는 상기 상태 머신 구동 플롭이 토글 모드 또는 유지 모드에 있는지를 나타내는 토글 상태 데이터 비트를 나타냄―하도록 구성되고,
    상기 상태 머신 구동 플롭이 상기 유지 모드에 있을 때, 상기 상태 머신 구동 플롭은 상기 로컬 데이터 비트의 현재 값을 출력하고,
    상기 상태 머신 구동 플롭이 상기 토글 모드에 있을 때, 상기 상태 머신 구동 플롭은 상기 로컬 데이터 비트의 상기 현재 값의 상기 역을 출력하는, IC.
  10. 제1항에 있어서,
    상기 테스트의 로드 단계 동안, 상기 복수의 플롭들 및 상기 상태 머신 구동 플롭은, 제1 주파수를 갖는 클록 신호에 응답하여, 각각의 플롭들과의 접속들로부터 수신된 데이터 비트들을 로드하도록 구성되고, 상기 테스트의 캡처 단계 동안, 상기 상태 머신 구동 플롭은, 상기 제1 주파수보다 큰 제2 주파수를 갖는 상기 클록 신호에 응답하여, 시프트되는 상기 스캔 데이터와는 독립적인 상기 값을 출력하도록 구성되는, IC.
  11. 제1항에 있어서,
    상기 상태 머신 구동 플롭은 제1 다음 상태 논리 게이트 입력, 제2 다음 상태 논리 게이트 입력, 및 다음 상태 논리 게이트 출력을 포함하는 다음 상태 논리 게이트를 포함하고, 상기 다음 상태 논리 게이트 출력은 상기 제1 다음 상태 논리 게이트 입력에 의해 수신되는 데이터에 기초하여 그리고 상기 제2 다음 상태 논리 게이트 입력에 의해 수신되는 데이터에 기초하여 데이터를 출력하도록 구성되는, IC.
  12. 제11항에 있어서,
    상기 상태 머신 구동 플롭이 현재 값의 역을 출력하기 위해 토글 모드에서 동작하고 있을 때, 상기 상태 머신 구동 플롭의 플립-플롭은 토글 모드 데이터 비트 값을 상기 제1 다음 상태 논리 게이트 입력에 전달하도록 구성되고, 상기 다음 상태 논리 게이트는, 상기 토글 모드 데이터 비트 값을 수신하는 것에 응답하여, 상기 현재 값을 상기 현재 값의 상기 역으로 토글하도록 구성되는, IC.
  13. 제11항에 있어서,
    상기 상태 머신 구동 플롭이 현재 값을 출력하기 위해 유지 모드에서 동작하고 있을 때, 상기 상태 머신 구동 플롭의 플립-플롭은 유지 모드 데이터 비트 값을 상기 제1 다음 상태 논리 게이트 입력에 전달하도록 구성되고, 상기 다음 상태 논리 게이트는, 상기 제1 다음 상태 논리 게이트 입력에서 상기 유지 모드 데이터 비트 값을 수신하는 것에 응답하여, 상기 현재 값을 유지하도록 구성되는, IC.
  14. 제1항에 있어서,
    상기 래퍼 체인은 입력 래퍼 체인을 포함하고, 상기 IC는 출력 래퍼 체인을 더 포함하고,
    상기 입력 래퍼 체인은,
    로드 단계 동안, 느린 클록 주파수에서 로드 단계 클록 신호들의 세트를 수신하는 것에 응답하여, 테스터로부터의 입력 데이터의 스트링을 로드하도록 구성되고,
    상기 출력 래퍼 체인은,
    캡처 단계 동안, 빠른 클록 주파수에서 캡처 단계 클록 신호들의 세트를 수신하는 것에 응답하여, 상기 코어 논리를 통해 복수의 기능 경로들로부터의 캡처된 데이터의 스트링을 캡처하고;
    언로드 단계 동안, 상기 느린 클록 주파수에서 언로드 단계 클록 신호들의 세트를 수신하는 것에 응답하여, 상기 캡처된 데이터의 스트링을 상기 테스터에 언로드하도록 구성되는, IC.
  15. 시스템으로서,
    테스터; 및
    집적 회로(IC)를 포함하고, 상기 집적 회로는,
    기능 논리 요소들을 갖는 코어 논리;
    상기 코어 논리를 테스트하기 위한 복수의 플롭들을 갖는 입력 래퍼 체인―상기 래퍼 체인의 상기 복수의 플롭들은 상기 코어 논리의 테스트 동안 상기 플롭들의 연속적인 플롭들을 통해 스캔 데이터를 시프트하기 위해 스캔 경로를 따라 순차적으로 상호접속됨―;
    출력 래퍼 체인; 및
    상기 입력 래퍼 체인의 상기 스캔 경로를 따라 접속된 적어도 하나의 상태 머신 구동 플롭―상기 상태 머신 구동 플롭은, 상기 테스트 동안, 상기 스캔 경로를 따라 시프트되고 상기 상태 머신 구동 플롭에 의해 수신되는 상기 스캔 데이터와는 독립적인 값을 출력하도록 개별적으로 구성가능함―을 포함하고,
    상기 입력 래퍼 체인은,
    로드 단계 동안, 느린 클록 주파수에서 로드 단계 클록 신호들의 세트를 수신하는 것에 응답하여, 상기 테스터로부터의 입력 데이터의 스트링을 로드하여, 상기 복수의 플롭들에 값들을 로드하고, 상기 스캔 경로를 따라 시프트되는 상기 스캔 데이터와는 독립적인 값을 출력하도록 상기 상태 머신 구동 플롭을 구성하도록 구성되고,
    상기 출력 래퍼 체인은,
    캡처 단계 동안, 빠른 클록 주파수에서 캡처 단계 클록 신호들의 세트를 수신하는 것에 응답하여, 상기 코어 논리를 통해 복수의 기능 경로들로부터의 캡처된 데이터의 스트링을 캡처하고;
    언로드 단계 동안, 상기 느린 클록 주파수에서 언로드 단계 클록 신호들의 세트를 수신하는 것에 응답하여, 상기 캡처된 데이터의 스트링을 상기 테스터에 언로드하도록 구성되는, 시스템.
  16. 제15항에 있어서,
    상기 테스터는,
    상기 캡처된 데이터의 스트링을 예상된 데이터의 스트링과 비교―상기 예상된 데이터의 스트링은 상기 입력 데이터의 스트링에 기초하여 상기 코어 논리가 생성할 것으로 예상되는 데이터를 나타냄―하고;
    상기 비교에 기초하여, 상기 복수의 기능 경로들이 상기 캡처된 데이터의 스트링을 생성하는데 있어서 하나 이상의 에러를 수행하는지 결정하도록 구성되는, 시스템.
  17. 제15항에 있어서,
    상기 상태 머신 구동 플롭은, 테스트 동안, 상기 래퍼 체인의 이전 시프트 사이클 동안 상기 상태 머신 구동 플롭으로 시프트된 상기 상태 머신 구동 플롭의 현재 값을 출력으로서 유지하도록 구성가능한, 시스템.
  18. 제15항에 있어서,
    상기 상태 머신 구동 플롭은, 테스트 동안, 상기 래퍼 체인의 이전 시프트 사이클 동안 상기 상태 머신 구동 플롭으로 시프트된 상기 상태 머신 구동 플롭의 현재 값의 역을 출력하도록 구성가능한, 시스템.
  19. 제15항에 있어서,
    상기 상태 머신 구동 플롭은, 테스트 동안, 스캔 데이터의 상태 머신 구동 플롭으로의 시프트를 디스에이블하도록 구성가능한, 시스템.
  20. 제15항에 있어서,
    상기 상태 머신 구동 플롭은 제1 플립-플롭 및 제2 플립-플롭을 포함하고, 상기 제1 플립-플롭에서 시프트된 값은 상기 상태 머신 구동 플롭의 현재 값이고, 상기 제2 플립-플롭에서 시프트된 값은 상기 상태 머신 구동 플롭의 상기 현재 값 또는 상기 상태 머신 구동 플롭의 상기 현재 값의 역을 출력하도록 상기 상태 머신 구동 플롭을 구성하는, 시스템.
KR1020200114429A 2020-06-19 2020-09-08 디바이스 테스트를 위한 래퍼 체인들에서의 상태 머신 구동 플롭들을 갖는 집적 회로 KR102413516B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/906,877 2020-06-19
US16/906,877 US11342914B2 (en) 2020-06-19 2020-06-19 Integrated circuit having state machine-driven flops in wrapper chains for device testing

Publications (2)

Publication Number Publication Date
KR20210157274A KR20210157274A (ko) 2021-12-28
KR102413516B1 true KR102413516B1 (ko) 2022-06-27

Family

ID=72432756

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200114429A KR102413516B1 (ko) 2020-06-19 2020-09-08 디바이스 테스트를 위한 래퍼 체인들에서의 상태 머신 구동 플롭들을 갖는 집적 회로

Country Status (5)

Country Link
US (1) US11342914B2 (ko)
EP (1) EP3926351A1 (ko)
KR (1) KR102413516B1 (ko)
CN (1) CN113824430A (ko)
TW (1) TWI784303B (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI819520B (zh) * 2022-03-10 2023-10-21 瑞昱半導體股份有限公司 測試電路與測試方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050283690A1 (en) 2002-09-13 2005-12-22 Mclaurin Teresa L Wrapper serial scan chain functional segmentation
JP2009512873A (ja) 2005-10-24 2009-03-26 エヌエックスピー ビー ヴィ Icのテスト方法及び装置
KR101799724B1 (ko) 2017-02-17 2017-11-22 연세대학교 산학협력단 반도체 적층 테스트를 위한 테스트 경로를 재구성할 수 있는 반도체 테스트 장치 및 그 동작 방법

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1571456A1 (en) * 2004-03-01 2005-09-07 Koninklijke Philips Electronics N.V. Test circuit and method for hierarchical core
US20070061657A1 (en) 2005-08-12 2007-03-15 National Tsing Hua University Delay fault testing apparatus
CN103154755B (zh) * 2010-08-12 2015-04-01 爱德万测试(新加坡)私人有限公司 用于生成参考扫描链测试数据的测试装置、测试系统和方法
US8533548B2 (en) 2010-11-11 2013-09-10 Wisconsin Alumni Research Foundation Wrapper cell for hierarchical system on chip testing
US8645777B2 (en) 2011-12-29 2014-02-04 Intel Corporation Boundary scan chain for stacked memory
WO2014166549A1 (en) 2013-04-12 2014-10-16 Advantest (Singapore) Pte. Ltd. Scan speed optimization of input and output paths
US8832608B1 (en) * 2013-06-17 2014-09-09 Duke University Retiming-based design flow for delay recovery on inter-die paths in 3D ICs
US10289577B2 (en) * 2016-05-11 2019-05-14 New York University System, method and computer-accessible medium for low-overhead security wrapper for memory access control of embedded systems
US10310013B2 (en) 2016-12-12 2019-06-04 Samsung Electronics Co., Ltd. Test mode isolation and power reduction in embedded core-based digital systems of integrated circuits (ICs) with multiple power domains
US10234504B1 (en) 2017-03-07 2019-03-19 Cadence Design Systems, Inc. Optimizing core wrappers in an integrated circuit
US11047909B2 (en) 2018-10-30 2021-06-29 Maxlinear, Inc. Inter-domain power element testing using scan

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050283690A1 (en) 2002-09-13 2005-12-22 Mclaurin Teresa L Wrapper serial scan chain functional segmentation
JP2009512873A (ja) 2005-10-24 2009-03-26 エヌエックスピー ビー ヴィ Icのテスト方法及び装置
KR101799724B1 (ko) 2017-02-17 2017-11-22 연세대학교 산학협력단 반도체 적층 테스트를 위한 테스트 경로를 재구성할 수 있는 반도체 테스트 장치 및 그 동작 방법

Also Published As

Publication number Publication date
TW202201027A (zh) 2022-01-01
CN113824430A (zh) 2021-12-21
KR20210157274A (ko) 2021-12-28
EP3926351A1 (en) 2021-12-22
US11342914B2 (en) 2022-05-24
TWI784303B (zh) 2022-11-21
US20210399729A1 (en) 2021-12-23

Similar Documents

Publication Publication Date Title
US7840864B2 (en) Functional frequency testing of integrated circuits
US8627160B2 (en) System and device for reducing instantaneous voltage droop during a scan shift operation
US8479068B2 (en) Decoded register outputs enabling test clock to selected asynchronous domains
KR20010033037A (ko) 속도 관련 결함을 테스트하기 위해 멀티플렉서 스캔플립플롭을 이용하는 방법 및 장치
JP6054597B2 (ja) 半導体集積回路
US20080250288A1 (en) Scan Testing Methods
US8904251B2 (en) Semiconductor device and test system for testing the same
JP4130329B2 (ja) スキャンパス回路および当該スキャンパス回路を備えた半導体集積回路
CN106019119B (zh) 半导体集成电路的试验电路及使用其的试验方法
US7237164B1 (en) Area optimized edge-triggered flip-flop for high-speed memory dominated design
KR102413516B1 (ko) 디바이스 테스트를 위한 래퍼 체인들에서의 상태 머신 구동 플롭들을 갖는 집적 회로
US20090240996A1 (en) Semiconductor integrated circuit device
US7240263B2 (en) Apparatus for performing stuck fault testings within an integrated circuit
US9021323B1 (en) Test techniques and circuitry
JP2002257903A (ja) 半導体集積回路の試験方法と試験パタン生成方法及び装置並びにプログラム
WO2014116914A1 (en) Circuits and methods for dynamic allocation of scan test resources
JP4265934B2 (ja) スキャンパス回路およびそれを備える論理回路ならびに集積回路のテスト方法
US20090083595A1 (en) Scan test circuit
JP2002228722A (ja) バウンダリ・スキャン・レジスタを有する集積回路装置
JP6534592B2 (ja) スキャンテスト回路及びスキャンテスト装置
JP2006038831A (ja) スキャン試験回路を備えた半導体集積回路
US7941716B2 (en) Method for race prevention and a device having race prevention capabilities
US9110140B2 (en) Scan circuit, semiconductor device, and method for testing semiconductor device
JP2019036622A (ja) 記憶回路及び記憶回路の制御方法

Legal Events

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