KR100465085B1 - 집적 회로 테스터를 위한 가상 채널 데이터 분산 시스템 - Google Patents

집적 회로 테스터를 위한 가상 채널 데이터 분산 시스템 Download PDF

Info

Publication number
KR100465085B1
KR100465085B1 KR10-1999-7009973A KR19997009973A KR100465085B1 KR 100465085 B1 KR100465085 B1 KR 100465085B1 KR 19997009973 A KR19997009973 A KR 19997009973A KR 100465085 B1 KR100465085 B1 KR 100465085B1
Authority
KR
South Korea
Prior art keywords
vector
data
virtual channel
test
cache
Prior art date
Application number
KR10-1999-7009973A
Other languages
English (en)
Other versions
KR20010020354A (ko
Inventor
일레스그레고리
스카라케네스엘.
모리스리차드비.
챔폭스듀안에이.
Original Assignee
크레던스 시스템스 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 크레던스 시스템스 코포레이션 filed Critical 크레던스 시스템스 코포레이션
Publication of KR20010020354A publication Critical patent/KR20010020354A/ko
Application granted granted Critical
Publication of KR100465085B1 publication Critical patent/KR100465085B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • 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/319Tester hardware, i.e. output processing circuits
    • G01R31/31903Tester hardware, i.e. output processing circuits tester configuration
    • G01R31/31908Tester set-up, e.g. configuring the tester to the device under test [DUT], down loading test patterns
    • 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/319Tester hardware, i.e. output processing circuits
    • G01R31/31917Stimuli generation or application of test patterns to the device under test [DUT]
    • G01R31/31919Storing and outputting test patterns
    • G01R31/31921Storing and outputting test patterns using compression techniques, e.g. patterns sequencer

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

집적회로 테스터(10)는 디바이스 언더 테스트(11)의 각각의 단자(27)를 위한 노드(24)를 포함한다. 각 노드(24)는 디바이스 단자(25)에서 테스트 동작을 실행하는 핀 전자 회로(32)와 상기 테스트 동작을 제어하기 위한 상기 로컬 핀 전자 회로(32)로 시퀀스(sequence)를 공급하기 위한 벡터 메모리 시스템(28)을 포함한다. 테스터를 포로그램하기 위해(to program the tester), 호스트 컴퓨터는 공통 버스(common bus)를 통해 각 벡터 메모리 시스템으로 적당한 벡터 셋트를 전송한다(transmit). 상기 벡터 메모리 시스템으로 벡터를 전송하기 전에, 호스트 컴퓨터는 하나 이상의 "가상채널(virtual channel)"을 할당하는 제어 데이터로서 각각 상기 벡터를 전송한다. 그러므로 동일한 벡터 셋트를 수신하는 모든 벡터 메모리 시스템은 동일한 가상 채널에 할당된다. 또한, 버스 상에 각 벡터 셋트를 전송하기 전에, 호스트 컴퓨터는 액티브로 하나의 가상 채널을 지정하는(designating) 모든 벡터 메모리 시스템으로 부가적인 제어 데이터(additional control data)를 동보한다. 그 후 액티브 가상 채널에 할당된 상기 벡터 메모리 시스템만이 전송된 벡터 셋트를 채택한다. 그래서 하나 이상의 벡터 메모리 시스템이 제어하는 핀 전자 회로가 동일한 테스트 동작을 실행할 경우 호스트 컴퓨터는 상기 벡터 메모리 시스템으로 동일한 벡터 셋트를 동시에 기록할 수 있다.

Description

집적 회로 테스터를 위한 가상 채널 데이터 분산 시스템 {VIRTUAL CHANNEL DATA DISTRIBUTION SYSTEM FOR INTEGRATED CIRCUIT TESTER}
집적 회로 테스터(integrated circuit tester)는 집적회로(integrated circuit; IC)의 입력 단자로 논리 신호(logic signal) 패턴을 공급하고 상기 집적회로의 출력 단자에서 발생되는 결과 출력 논리 신호 패턴을 확인한다. 일반적으로 테스터는 각 테스트 사이클 동안 단자로 소정의 특정 패턴의 출력 테스트 신호를 공급할 수 있고 및/또는 상기 사이클 동안 핀에서 IC 출력 신호를 모니터하며 상기 IC 출력 신호의 논리 상태(logic state)를 표시하는 데이터를 저장할 수 있는 각 IC 단자를 위한 개별 "핀 전자(pin electronics)" 회로를 포함한다. 각 핀 전자 회로의 동작은 소정 테스트 사이클 동안 공급된 데이터가 사이클이 시작될 때 상기 핀 전자 회로에 공급되는 입력 데이터("테스트 벡터(test vector)"로 인코드되는 것이다.
많은 테스터는 각 핀 전자 회로를 위한 개별 벡터 메모리 시스템(separate vector memory system)을 포함한다. 각 벡터 메모리 시스템은 각각 연관된 핀 전자 회로가 테스트가 이루어지는 동안 필요한 모든 벡터를 저장하고 테스트가 이루어지는 동안 상기 벡터들을 판독하여 상기 핀 전자 회로로 출력한다. 벡터 메모리 시스템은 공통 버스(common bus)를 통해 호스트 컴퓨터(host computer)에 모두 링크(link)되어 있으므로 호스트 컴퓨터는 테스트 전에 벡터 메모리 시스템 내로 테스트 벡터(test vector)를 기록할 수 있다. 대용량(large)의 IC 테스터에서, 일반적으로 호스트 컴퓨터는 상기 공통 버스를 통해 수 백 개의 벡터 메모리 시스템으로 많은 테스트 벡터를 개별적으로 보내야 한다. 버스의 대역폭(bandwidth)은 테스터가 프로그램될 수 있는 속도를 제한된다. 좀더 고속으로 벡터를 상기 벡터 메모리로 전송하기 위한 시스템이 요구된다.
[발명의 개요]
본 발명에 따른 집적 회로 테스터는 각각 벡터 메모리, 벡터 메모리 컨트롤러, 및 핀 전자 회로를 포함하는 한 셋트의 테스터 노드(test node)를 포함한다. 테스트가 이루어지는 동안, 각 노드의 벡터 메모리 컨트롤러는 벡터 메모리의 테스트 벡터를 판독하고 상기 핀 전자 회로로 상기 판독된 테스트 벡터를 순차적으로 공급한다. 각 테스트 벡터는 테스트의 한 사이클 동안 집적 회로 언더 테스트(DUT)의 단자와 상호 작용하는(interact) 방법을 상기 핀 전자 회로가 알 수 있도록(tell) 인코드된다. 벡터 메모리는 모두 공통 버스를 통해 호스트 컴퓨터에 병렬로 연결된다. 테스트를 실행하도록 테스터를 프로그램하기 위해, 호스트 컴퓨터는 병렬 버스를 경유하여 테스트 벡터를 각 벡터 메모리 컨트롤러로 보낸다. 각 벡터 메모리 컨트롤러는 자신이 수신한 테스트 벡터를 자신의 로컬 벡터 메모리에 저장한다.
두 개 이상의 벡터 메모리는 동일한 벡터 셋트를 저장할 수 있다. 예를 들면 멀티-사이트(multi-site)" 테스트 중에, 집적회로는 동일한 여러 집적 회로에서 동일한 테스트를 동시에 실행한다. 테스터가 500개의 노드를 구비할 경우, 상기 테스터는 각각 50개의 단자를 갖는 10개의 동일한 IC를 동시에 테스트한다. 이 경우에, 500개의 벡터 메모리가 벡터로 적재되어야 하지만, 단지 50개의 상이한 벡터 셋트만이 필요하다. 10개의 벡터 메모리 그룹 각각은 동일한 벡터 셋트를 요구한다.
본 발명에 따라서, 호스트 컴퓨터가 하나 이상의 벡터 메모리 내로 동일한 벡터 데이터를 동시에 기록할 수 있게 하여 벡터 메모리 내로 벡터를 적재하기 위해 필요한 시간(amount of time)은 감소된다. 메모리 컨트롤러가 현재 전송된 벡터 데이터의 저장을 제어하기 위해, 호스트 컴퓨터는 각 벡터 메모리 컨트롤러를 하나 이상의 "가상 채널(virtual channel)"에 할당하는 각 벡터 메모리 컨트롤러 내의 제어 레지스터(control register) 속으로 제어 데이터를 기록한다. 버스 상에 벡터를 전송하기 전에, 호스트 컴퓨터는 가상 채널이 액티브됨을 표시하는 모든 벡터 메모리 컨트롤러로 데이터를 동보한다(broadcast). 그런 다음, 호스트 컴퓨터가 버스 상에 벡터를 전송할 때마다, 액티브 가상 채널에 할당된 벡터 메모리 컨트롤러만이 자신의 벡터 메모리 내에 상기 벡터를 저장한다. 다른 벡터 메모리 컨트롤러는 상기 벡터를 저장하지 않는다. 이런 식으로, 호스트 컴퓨터는 적당할 때, 하나 이상의 벡터 메모리 컨트롤러로 동일한 벡터 데이터를 동시에 전송할 수 있다. 벡터 메모리 컨트롤러를 가상 채널에 할당하는 능력은 벡터 메모리 컨트롤러로 데이터를 전송하기 위해 필요한 컴퓨터 버스 기록 사이클 갯수를 감소시키므로 벡터 메모리로의 벡터 데이터 기록 동작(writing)을 가속화시킨다.
본 발명의 목적은 호스트 컴퓨터가 공통 버스를 통해 벡터를 집적 회로 테스터의 벡터 메모리로 빠르게 분산할 수 있게 하는 IC 테스터를 제공하는 것이다.
본 명세서의 결론 부분은 특히 본 발명의 주제를 지적하고 명백하게 청구한다. 그러나 해당 분야의 당업자는 첨부된 도면을 참조하여 본 명세서의 나머지 부분을 판독함에 따라, 본 발명의 장점 및 목적과 함께 본 발명의 작동 구조 및 방법 양자를 가장 잘 이해할 것이다. 여기에서 동일한 도면 부호는 같은 구성요소를 지칭한다.
본 발명은 일반적으로 집적 회로 테스터(integrated circuit tester)에 관한 것으로 더욱 상세하게는 빠르고 효율적으로 집적 회로 언더 테스트(integrated circuit under test)의 많은 단자에서 테스트 동작(test activity)을 제어하는 회로로 데이터를 분산하기 위한 시스템에 관한 것이다.
도 1은 본 발명에 따른 집적 회로 테스터의 블록도.
도 2는 도 1의 집적 회로 테스터의 일반적인 벡터 메모리 컨트롤러를 예시하는 블록도,
도 3은 도 2의 레지스터 인터페이스 회로 및 제어 레지스터에 대한 상세 블록도.
도 4는 도 1의 벡터 메모리 컨트롤러로 벡터를 분산할 경우 도 1의 호스트 컴퓨터가 실행하는 단계의 순서도.
도 5는 도 2의 캐시 언로드 회로, 판독 캐시 어레이, 및 캐시 로드 회로 간의 통신을 예시하는 블록도.
도 6은 도 2의 캐시 언로드 회로에 대한 상세 블록도.
도 7은 도 2의 VCB 인터페이스 회로에 대한 상세 블록도.
도 8은 도 2의 스캔 인터페이스 회로에 대한 상세 블록도.
도 9는 도 1의 마스터 컨트롤러에 대한 상세 블록도.
도 10은 도 1의 스캔 모듈에 대한 상세 블록도.
테스터 아키텍처(Test Architecture)
도 1은 IC 장치 언더 테스트(DUT)(11)를 테스트하기 위한 본 발명에 따른 집적 회로(IC) 테스터(10)의 블록도를 예시한다. (DUT(11)는 또한 하나 이상의 IC로 형성된 회로일 수 있거나 연결되지 않는 여러 IC일 수 있다.) 테스트가 이루어지는 동안 여러번(various times), 테스터(10)는 DUT(11)의 소정 핀이나 테스트 지점(point)(단자)에서 하이(high) 또는 로우(low) 논리 레벨(logic level)로 입력 논리 신호를 구동할 수 있거나, 상기 핀에서 발생된 DUT 출력 신호의 논리 레벨을 측정하고 상기 측정된 논리 레벨을 표시하는 테스트 데이터를 저장할 수 있다. 상기 저장된 테스트 데이터는 DUT(11)의 성능을 평가하는데(gauge) 사용될 수 있다.
테스터(10)는 마스터 컨트롤러(12), 호스트 컴퓨터(14), 스캔 모듈(16), 클럭 소스(18), 벡터 인스트럭션 메모리(20), 스캔 데이터 메모리(22) 및 테스터 노드 셋트(24)를 포함한다. 각 테스터 노드(24)는 DUT(11)의 개별 단자(27)에 연결되고 램덤 액세스 벡터 메모리(random access vector memory, 28), 벡터 메모리 컨트롤러(30) 및 핀 전자 회로(32)를 포함한다. 호스트 컴퓨터(14)는 통상적인 CPU 버스(34)를 경유하여 마스터 컨트롤러(12), 스캔 모듈(16) 및 테스터 노드(24)의 각 벡터 메모리 컨트롤러(30)와 핀 전자 회로(32)의 주소지정 가능 레지스터(addressable register)에 데이터를 기록한다. CPU 버스(34)는 16-비트(bit) 병렬 데이터 경로(parallel data path), 10-비트 어드레스 경로 및 많은 제어 라인(control line)을 포함한다. 스캔 모듈(16)은 또한 32-비트 크기(wide) 보조 데이터(auxiliary data; AUXN) 버스(bus)(36) 및 하나의 제어 라인(AUXN)을 경유하여 각 벡터 메모리 컨트롤러(30)에 연결된다. 호스트 컴퓨터(14)는 또한 벡터 메모리 컨트롤러(24), 마스터 컨트롤러(12) 및 스캔 모듈(16)로 데이터를 분산하기 위해 대안 루트(alternate route)로서 AUXD 버스(36)를 사용한다. 테스트가 이루어지는 동안, 명령이 AUXD와 VCB 버스 상에서 사용되는 경우, 마스터 시퀀서(master sequencer, 12)는 인스트럭션 오퍼랜드(instruction operand)를 전송하기(convey) 위해 AUXD 버스, 인스트럭션 연산코드(opcode)를 전송하기 위해 4-비트 벡터 제어 버스(VCB, 38), 및 메모리 컨트롤러로 신호를 보내기 위해(to signal) 제어 라인(CYC)을 사용하는 메모리 컨트롤러(30)로 명령 시퀀스를 보낸다. 테스터(10)의 모든 로직은 클럭 소스(18)에 의해 발생된 100㎒ 기준 발진기 신호(reference oscillater; ROSC, 42)에 동기된다. ROSC 신호는 마스터 시퀀서(12), 호스트 컴퓨터(14), 스캔 모듈(16) 및 각 테스터 노드(24)에 공급된다.
시스템 작동(System operation)
테스트는 장치-언더-테스트(DUT)의 속도에 조정된 연속적인 테스트 사이클 셋트 내에서 이루어진다(organize). 각각의 테스트 사이클은 클럭 소스(18)에 의해 발생된 미리 정해진 사이클 개수의 ROSC 클럭 신호를 유지한다. DUT(11)의 테스트가 이루어지는 동안, 각 핀 전자 회로(32)는 대응하는 DUT 단자(27)에서 요구된 모든 동작을 실행한다. 핀 전자 회로(32)는 하이 또는 로우 논리 레벨 테스트 신호를 DUT 핀("구동-하이" 또는 "구동-로우")으로 전송할 수 있고, DUT에 의해 생성된 출력 신호의 전압이 기준 레벨보다 높거나 낮은지를 결정하고 결과("비교-하이" 또는 "비교-로우")를 표시하는 테스트 데이터를 저장하거나, 또는 DUT 핀을 제3의 상태("무시(don't care)")로 할 수 있다. 각 테스트 사이클의 시작 시점에서 각 핀 전자 회로(32)로 공급된 8-비트 입력 데이터 필드("테스트 벡터")는 상기 테스트 사이클 동안 실행해야 할 일을 핀 전자 회로가 알 수 있도록 한다. 테스트 벡터 중 4비트는 동작(action)을 결정하고, 테스트 벡터 중 나머지 4비트는 16개의 타이밍 구조 중에서 하나를 선택한다. 선택된 타이밍 구조의 제어에 의해 핀 전자 회로(32)는 테스트 사이클 동안 상기 동작을 실행한다. 각 핀 전자 회로(32)는 내부 습득 메모리(internal acquisition memory)에 비교-하이와 비교-로우 동작에 대한 임의의 결과 표시 데이터를 저장한다. 테스트 종료 시점에서, 호스트 컴퓨터(14)는 CPU 버스(34)를 경유하여 핀 전자 회로(32) 내의 상기 습득 메모리로부터 결과를 판독하여, 예를 들면, 출력 파일로서 상기 데이터를 제공할 수 있고, 사용자 디스플레이를 생성하기 위해 소정 방식으로 상기 데이터를 처리할 수 있다.본 명세서에서 이미 기술된 방식으로 작동하는 핀 전자 회로(32)는 매우 잘 알려져 있고 통상적인 집적 회로 테스터에서 일반적으로 이용되므로 본 명세서에서는 더 이상 상세한 설명은 생략한다. 또한, 테스터 출력 데이터를 처리하고 디스플레이하기 위한 방법도 매우 잘 알려져 있으므로 본 명세서에서는 더 이상 상세한 설명을 생략한다.
그래서 연속적인 테스트 사이클 동안 핀 전자 회로(32)의 동작은 8-비트 테스트 벡터의 시퀀스에 의해 정해진다. 테스트가 이루어지는 동안, 호스트 컴퓨터(14) 이외의 테스터(10)의 다른 모든 구성요소의 기능은 각 테스트 사이클동안(for) 각 핀 전자 회로(32)로 적당한 테스트 벡터를 공급하는 것이다. 호스트 컴퓨터(14)는 적당한 벡터 시퀀스를 발생하도록 테스터(10)의 다른 구성요소를 프로그램하고, 테스터의 시작을 신호하고 테스트 결과를 처리한다. 그 외에 호스트 컴퓨터(14)는 테스트가 이루어지지는 동안 액티브되지(active role) 않는다.
테스트는 매우 잘 알려진 IC 시뮬레이터 소프트웨어(IC simulator software)에 의해 일반적으로 발생된 형태의 벡터 시퀀스에 의해 정해지고, 시퀀스는 (아래에 상세하게 기술되는 방식으로) 테스터(10)를 프로그램하기 위한 적당한 포맷(format)으로 처리되며 호스트 컴퓨터(141)로 전송된다. 테스터 프로그래밍 데이터(test programming data)는 벡터 메모리(28) 내에 적재된 테스트 벡터 셋트, 인스트럭션 메모리(20) 내에 적재된 인스트럭션, 스캔 데이터 메모리(22) 내에 적재된 "스캔(scan)" 데이터, 및 벡터 메모리 컨트롤러(30) 내의 많은 주소지정 가능 제어 레지스터(addressable control register) 내에 기록된 제어 데이터를 포함한다.
메모리(20, 22, 28)와 많은 제어 레지스터 내로 적당한 데이터를 적재한 후에, 호스트 컴퓨터(14)는 테스트를 시작하기 위해 마스터 컨트롤러(12)로 신호를 보낸다. 인스트럭션 메모리(20)는 각 테스트 사이클동안 개별 메모리 어드레스에 데이터를 저장한다. 각 인스트럭션 메모리(20)의 어드레스에 존재하는 데이터는 모든 테스터 노드(24)의 벡터 메모리 컨트롤러(30)로 전송되는 사이클 타이밍 데이터(cycle timing data) 및 인스트럭션을 포함한다. VCB 버스 상에 실린(carry) 4-비트 연산코드와 (어떤 경우에) AUXD 버스에 실린 오퍼랜드를 포함하는 인스트럭션은 각 벡터 메모리 컨트롤러(30)가 테스트 사이클 동안 벡터를 발생하는 방법을 알 수 있도록 한다. 연속적인 각 테스트 사이클 동안, 마스터 컨트롤러(12)는 인스트럭션 메모리(20)의 저장 위치(storage location)의 내용을 판독한다. 인스트럭션 메모리(20)의 데이터를 판독한 후에, 마스터 컨트롤러(12)는 CYC 신호를 펄스로 출력한다(pulse). CYC 신호 내의 ROSC 상승 에지(leading edge)에서 벡터 메모리 컨트롤러(30)는 VCB 및 AUXD 버스 상에서 인스트럭션을 획득한다.
각 인스터럭션 메모리(20)의 어드레스에 인스트럭션과 함께 저장된 사이클 타이밍 데이터는 마스터 컨트롤러(12)가 CYC 신호를 펄스로 출력하고 인스트럭션 메모리(20)의 어드레스에서 데이터를 판독하기 전에 대기하고 있고 많은 ROSC 클럭 신호의 사이클을 표시한다. 그래서 각 인스트럭션 메모리(20)의 어드레스에 저장된 사이클 타이밍 데이터는 대응하는 테스트 사이클의 지속기간(duration)을 제어한다.
상기 CYC 신호에 응답하여, 각 벡터 메모리 컨트롤러(30)는 VCB 및 AUXD 버스 상에서 인스트럭션을 획득한다. 각 벡터 메모리 컨트롤러(30)는 마스터 컨트롤러(30)로부터 인스트럭션을 획득한 후에 소정 테스트 사이클 동안(a few test cycle) 자신과 연관된 핀 전자 회로(32)로 벡터를 제공하기 위해 획득한 인스트럭션을 처리한다. 예를 들면 인스트럭션은 벡터 메모리 컨트롤러(30)가 벡터 메모리(28)로부터 이전에 판독된 특정 벡터(particular vector)를 핀 전자 회로(32)로 공급하거나, 마지막 전송된 벡터(last sent vector)를 단순히 반복하여 공급하거나(repeat), 또는 스캔 모듈(16)을 경유하여 스캔 데이터 메모리(22)로부터 이전에 획득한 스캔 데이터에 따라 벡터를 생성하도록 한다.
테스트 전에 스캔 데이터 메모리(22) 내에 적재된 스캔 데이터는 테스트가 이루어지는 동안 여러번(various times) 벡터 메모리 컨트롤러(30)로 분산된다. 벡터 메모리 컨트롤러(30)는 필요로 할 때까지 스캔 데이터를 저장한다. 핀 전자 회로(32)로 공급된 상대적으로 적은 양의 벡터(a relatively few vectors)가 매 사이클마다(from cycle-to-cycle) 상태를 변경하는 테스트 부분(portion) 동안에만 스캔 데이터는 사용된다. 다른 IC 단자가 제3의 상태로 되거나 일정한 레벨을 유지하는 동안(while) 상대적으로 긴 테스트 패턴(test pattern)을 수신하기 위해 특정 "스캔 단자"를 구비하는 집적 회로를 테스트할 경우에 이것은 매우 일반적이다. 그런 테스트 부분 동안, 마스터 컨트롤러(12)는 VCB 버스 상으로 "스캔" 인스트럭션을 메모리 컨트롤러(30)로 전송한다. 스캔 인스트럭션은 소정 벡터 메모리 컨트롤러(30)는 연속적인 테스트 사이클 동안 소정 벡터 메모리 컨트롤러(30)와 연관된핀 전자 회로(32)로 동일한 벡터를 계속 전송하도록 하고, 다른 벡터 메모리 컨트롤러(30)는 이전에 수신된 스캔 구조 데이터와 AUXD를 경유하여 분산된 스캔 모듈(16)로부터의 새로운 스캔 벡터 데이터에 기초하여 벡터를 생성하도록 한다. 벡터 메모리(28) 대신에 중앙집중식(centralized) 스캔 데이터 메모리(22)로부터 분산된 스캔 데이터에서 벡터를 얻으므로(drive), 테스터(10)는 호스트 컴퓨터(14)가 테스트 전에 벡터 메모리(28)로 분산해야 하는 벡터의 개수를 줄인다.
테스터(10)는 벡터 메모리(28)를 형성하는 상대적으로 저속, 저가인 일반적인 디램(DRAM; dynamic random access memory) 내로 벡터를 적재하기 위해 요구되는 시간을 최소화하도록 설계된다. 벡터 적재시간(vector loading time)은 물론 테스트 시에(to define the test) 필요한(needed) 벡터 개수에 관련이 있다. 호스트 컴퓨터(14)가 각 벡터 메모리(28)로 테스트 벡터 시퀀스를 단순히 공급하는 것도 가능하다. 여기에서 각 테스트 벡터 시퀀스는 각 테스트 사이클 동안(for) 벡터를 포함한다. 이 경우에 마스터 컨트롤러(12)는 연속적인 각 테스트 사이클 동안 다음에 저장된 벡터를 판독하도록 모든 벡터 메모리 컨트롤러(30)에게 간단히 명령한다. 그러나 테스트는 종종 수 백만개의(many millions) 테스트 사이클이상 계속되기(extend) 때문에, 각 벡터 메모리(28)는 수 백만개의 벡터를 저장해야 한다. 비록, 테스터(10)를 작동시키는 모드(mode)가 상대적으로 대용량의 벡터 메모리(28)의 사용을 요구할 지라도, 각 벡터 메모리(28)에 테스트 사이클 당 하나의 벡터를 저장할 때의 단점은 벡터 메모리 내로 그렇게 많은 벡터를 기록하기 위해 많은 시간을 필요로 한다는 것이다. DUT(11)가 많은 단자를 구비할 수 있고 매우짧은 테스트 사이클을 요구할 수 있기 때문에, 호스트 컴퓨터(14)는 단지 몇 초만을 지속하는 테스트 시에(to define a test) 벡터 메모리(30)로 많은 벡터를 전송해야한다. 또한, 메모리로 직접 벡터를 기록하기 위해 요구된 시간은 메모리 속도에 관련된다(function). 저속 벡터 메모리를 사용하여 비용을 절감할 경우, 상기 메모리로 직접 벡터를 기록하기 위해 요구된 시간은 증가한다.
테스터(10)는 벡터 메모리(28) 내로 벡터를 적재할 때 네 가지 방식으로 필요한 시간을 줄인다. 첫 번째로, 테스터(10)는 테스트가 IC 단자에서 반복적인 작동을 포함할 때마다 벡터 메모리에 저장된 벡터 시퀀스 부분을 재 사용할 수 있는 벡터 메모리 컨트롤러(30)를 제공하여 테스트를 제어하기 위해 필요한 벡터 개수를 줄인다.
두 번째로, 테스터(10)는 상대적으로 적은(a relatively few) 핀 전자 회로(32)로만 공급된 벡터가 상태를 변경하는 테스트 부분 동안 대안적이고 중앙집중식인 테스트 제어 데이터 소스(스캔 데이터 메모리(22))를 제공하여 벡터 메모리(28)에 저장되어야 하는 벡터의 개수를 줄인다.
세 번째로, 테스터(10)는 호스트 컴퓨터(14)가 벡터 메모리(28)를 직접 기록 액세스하는 비율보다 높은, 매우 높은 비율(rate)로 상기 호스트 컴퓨터(14)가 벡터를 노드(24)로 공급할 수 있게 하는 기록 캐싱 시스템(write caching system)을 제공한다.
마지막으로, 테스터(10)는 선택된 테스터 노드(24) 그룹이 테스트 부분동안 동일한 작동을 요구할 경우 호스트 컴퓨터(14)가 상기 선택된 테스터 노드(24) 그룹으로 데이터를 동보할 수 있게 구성된다. 그래서, 예를 들면, 100개의 노드가 동일한 테스트 시간 간격(interval) 동안 동일한 동작을 실행할 경우, 호스트 컴퓨터(14)는 상기 100개의 노드로 동시에 동일한 데이터를 기록한다. 그로 인해, 100개의 노드 각각에 개별적으로 데이터를 전송하기 위해 100개의 버스 사이클을 요구하는 대신에 단지 한 개의 버스 사이클만을 요구한다.
아래에 좀더 상세하게 기술된 것처럼, 이러한 네 개의 테스터 특징은 상대적으로 저속의 벡터 메모리를 사용하는 반면에 DUT(11)에서 고속 테스트를 수행할 수 있고, 또한 호스트 컴퓨터(14)가 상대적으로 컴팩트한 버스 장치(bus arrangement)를 경유하여 벡터 데이터를 벡터 메모리로 빠르게 분산할 수 있는 테스터를 제공하기 위해 서로(symbiotically) 상호 작용한다.
벡터 메모리 컨트롤러(Vector Memory Controller)
도 2는 도 1의 전형적인 벡터 메모리 컨트롤러(30)를 예시한다. 도 1 및 도 2를 참조하면, 벡터 메모리 컨트롤러(30)는 벡터 프로세싱 시스템(46) 및 벡터 저장 제어 시스템(48)을 포함한다. 벡터 프로세싱 시스템(46)은 스캔 인터페이스 회로(50), VCB 인터페이스 회로(52), 캐시 언로드 회로(60), 멀티플렉서(64) 및 레지스터(62)를 포함한다. 벡터 저장 제어 시스템(48)은 버스 인터페이스 회로(54), 캐시 로드 회로(56), 판독 캐시 어레이(58), 기록 캐시(66), 및 제어 레지스터 셋트(68)를 포함한다. 모든 로직 작동은 도 2의 많은 로직 블록에 공급된 ROSC 클럭 신호에 동기된다.
도 1 및 도 2 모두를 참조하면, 호스트 컴퓨터(14)는 버스 인터페이스회로(54)를 경유하여 CPU 버스나 AUXD 버스 중 어느 하나의 버스를 통해 벡터 메모리 컨트롤러(30) 내의 주소지정 가능 제어 레지스터(68)로 데이터를 전송할 수 있다. 제어 레지스터(68) 내에 저장된 데이터는 아래에 기술된 것처럼, 도 2의 다른 블록의 여러 작동 모드를 제어한다. 호스트 컴퓨터(14)는 또한 AUXD 데이터가 벡터 데이터일 경우 AUXD 버스를 경유하여 버스 인터페이스 회로(54)로 데이터를 전송한다(rote). 버스 인터페이스 회로(54)는 기록 캐시(66)를 형성하는 주소지정 가능 레지스터 내로 입력되는(incoming) 벡터를 저장한다. 기록 캐시(66)가 64개의 벡터 블록으로 완전히 적재될 경우, 호스트 컴퓨터(14)는 캐시 로드 회로(56)가 기록 캐시(66)에서 벡터 메모리(28)내로 벡터를 전송하도록 하는 제어 비트(DUMP)를 레지스터(68) 중 하나에 기록한다. 캐시 로드 회로(56)는 벡터 메모리(28)의 네 개의 모듈러(MODULO)-16 어드레스 각각에서 시작하는 16개의 8-비트 벡터(128비트)를 기록한다. 캐시 언로드 회로(56)가 상대적으로 저속인 벡터 메모리(28)에 액세스하여 기록하는 동안(while), 호스트 컴퓨터(14)는 다른 노드에 벡터를 기록할 수 있다. 그래서 호스트 컴퓨터(14)가 벡터 메모리(28)로 데이터를 분산하는 비율은 상대적으로 느린 벡터 메모리 자신의 액세스 속도에 제한되지 않고 상대적으로 고속인 기록 캐시(66)의 액세스 속도에 제한된다.
테스트가 이루어지는 동안, VCB 인터페이스 회로(52)는 CYC 신호에 응답하여 VCB 버스상에서 인스트럭션 연산코드(opcode)를 수신하고 캐시 언로드 회로(60)로 상기 수신된 인스트럭션 연산코드를 전송한다(forward). 또한 VCB 인터페이스 회로(52)는 스캔 인터페이스 회로(50)로 제어 신호(SCAN_INC)를 제공하고멀티플렉서(64)로 제어 신호(SW_CON)를 제공하도록 인스트럭션을 디코드한다. 또한 CYC 신호에 응답하여, VCB 인터페이스 회로(52)는 각 테스트 사이클의 시작을 표시하는 CYCLE 신호를 발생한다. 상기 CYCLE 신호는 연산코드와 오퍼랜드를 캐시 언로드 회로(60) 내로 동기시켜 전송하고(clock) 출력 레지스터(62)를 통해 벡터를 동기시켜 전송한다(clock).
테스트가 이루어지는 동안, 캐시 로드 회로(56)는 벡터 메모리(28)의 벡터 블록을 판독하여 판독 캐시 어레이(58) 내로 상기 판독된 벡터 블록을 저장한다. 캐시 언로드 회로(60)는 캐시 어레이(58) 각각의 벡터를 판독하고 멀티플렉서(64)와 출력 레지스터(62)를 경유하여 핀 전자 회로(32)로 상기 판독된 각각의 벡터를 보낸다. 판독 캐시 어레이(58)의 캐시 중 하나가 새로운 데이터용으로 선택될 때, 캐시 언로드 회로(60)는 벡터 메모리의 다른 벡터 블록을 판독하고 선택된 판독 캐시 내로 상기 판독된 다른 벡터 블록을 적재하도록 캐시 로드 회로(56)로 신호를 보낸다.
스캔 인터페이스 회로(50)는 스캔 모듈(16)로부터 출력된 AUXN 제어 라인 상의 펄스에 응답하여 테스트가 이루어지는 동안, 여러번 AUXD 버스를 경유하여 스캔 모듈(16)로부터 32-비트 스캔 데이터 워드를 수신하여 저장한다. 스캔 사이클 동안, VCB 인터페이스 회로(52)로부터의 SCAN_INC 신호는 스캔 인터페이스 회로(50)가 소정 비트의 상기 스캔 데이터를 멀티플렉서(64)로 전송하도록 한다. 멀티플렉서(64)로 전송되는(forward) 특정 비트는 레지스터(68)의 제어 데이터에 의해 정해진다. 벡터 메모리 컨트롤러(30)가 스캔 입력을 제공할 경우(serve), VCB 인터페이스 회로(52)는 멀티플렉서(64)의 출력 상태를 스위칭하여 캐시 언로드 회로(60)의 출력 벡터 중 선택된 비트를 스캔 인터페이스 회로(50)로부터 출력된 스캔 데이터 비트로 대체한다. 테스트가 시작되기 전에 제어 레지스터(68) 내에 기록된 데이터는 VCB 인터페이스 회로(52)가 벡터 비트를 대체할 수 있도록 한다.
레지스터 액세스(Register Access)
도 3은 도 2의 버스 인터페이스 회로(54) 및 제어 레지스터(68)에 대한 좀더 상세한 블록도를 예시한다. 도 2의 벡터 기록 캐시(66)는 도 3에 또한 도시된다. 버스 인터페이스 회로(54)는 기록 제어 회로(80), 두 개의 비교기(82, 84) 및 멀티플렉서(86)를 포함한다. 기록 제어 회로(80)는 실제로 두 개의 통상적인 기록 제어 회로이다. 즉, 하나는 호스트 컴퓨터(14)가 CPU를 경유하여 레지스터로 데이터를 기록할 수 있도록 하고 다른 하나는 호스트 컴퓨터(14)가 AUXD 버스를 경유하여 레지스터로 데이터를 기록할 수 있도록 한다. 호스트 컴퓨터(14)는 AUXD 버스를 경유하여 데이터를 전송하는 "패스트로드(fastload)"모드를 인에이블하도록 제어 상태 레지스터(CSR, 86)에 저장된 제어 비트(FASTLOAD)를 셋트하고 CPU 버스를 경유하여 데이터를 전송하는 "CPU 모드"를 인에이블하도록 상기 제어 비트를 리셋한다.
도 1에서 많은 테스터 노드(24)의 벡터 메모리 컨트롤러(30) 내의 대응 레지스터는 동일한 버스 어드레스를 갖는다. CPU 모드에서, 호스트 컴퓨터(14)는 CPU 버스 상에 데이터와 어드레스를 배치하고 CPU 버스 메모리 어드레스 스트로브(memory address strobe; MAS) 라인을 요구하여(asserting) 통상적인 방식으로 특정 레지스터 어드레스로 데이터를 기록할 수 있다. 패스트로드 모드에서 호스트 컴퓨터(14)는 또한 AUXD 버스 상에 데이터와 어드레스를 배치하고 AUXN 신호를 요구하는(asserting) 동일한 방식으로 특정 레지스터 어드레스에 데이터를 기록한다. CPU 모드와 패스트로드 모드 사이를 시프트하기 위해, 호스트 컴퓨터(14)는 CSR 레지스터(86)내의 패스트로드(FASTLOAD) 비트를 변경하여, 현재의 변경된 모드를 사용한다.
모든 벡터 메모리 컨트롤러(30) 내의 동일한 레지스터가 동일한 버스 어드레스를 구비하고 있을지라도, 임의의 특정 벡터 메모리 컨트롤러(30)의 특정 기록 제어 회로(80)가 실제로 저장하든지 저장하지 않든지 간에, 주소 지정된 레지스터로 들어오는(incoming) 데이터는 주소 지정된 레지스터의 액세스 모드에 의존하고 상기 특정 벡터 메모리 컨트롤러(30)가 할당되는 "물리적(physical)" 또는 "가상(virtual)" 데이터 채널에 의존한다. "동보", "채널" 및 "별명(alias)"인 세 개의 레지스터 액세스 모드가 존재한다. 물리적 데이터 채널이나 가상 데이터 채널에 대한 개념(notion)뿐만 아니라 이러한 상기 레지스터 액세스 모드는 아래에 모두 기술된다.
동보 모드(Broadcast mode)
기록 제어 회로(80)는 "동보 모드" 레지스터로서 소정의 제어 레지스터를 처리한다. 호스트 컴퓨터(14)가 CPU 버스나 AUXD 버스를 경유하여 주소 지정된 동보 모드 레지스터 어드레스로 데이터를 전송할 경우, 모든 메모리 컨트롤러(30)는 주소 지정된 레지스터에 상기 데이터를 저장한다. 그래서 단일(single) CPU 또는AUXD 버스 기록 작동과 함께 호스트 컴퓨터(14)는 모든 벡터 메모리 컨트롤러(30)의 대응하는 동보 모드 레지스터 내로 동일한 데이터를 기록할 수 있다. CPU 데이터 전송 모드에서 동보 기록하기 위해(to broadcast write), 호스트 컴퓨터(14)는 CPU 버스(34) 상에 데이터와 동보 모드 레지스터 어드레스를 배치하고 모든 벡터 메모리 컨트롤러(30)에 연결되는(leading) CPU 버스의 메모리 어드레스 스트로브(MAS) 라인에 펄스신호를 보낸다(pulse). 각 버스 인터페이스 회로(54)는 주소 지정된 레지스터에 상기 데이터를 저장하여 MAS 스트로보에 응답한다. 패스트 로드 데이터 전송 모드(fast load data transmission mode)에서 동보 기록하기 위해, 호스트 컴퓨터(14)는 AUXD 버스 상에 데이터와 동보 모드 레지스터 어드레스를 배치하고 AUXN 제어 라인에 펄스신호를 보낸다(pulse). 각 버스 인터페이스 회로(54)는 주소 지정된 레지스터에 상기 데이터를 저장하여 AUXN 제어 라인에 응답한다.
채널 모드(Channel Mode)(물리 채널(Physical Channel))
상이한 벡터 메모리 컨트롤러(30) 내의 동일한 레지스터가 동일한 버스 어드레스를 구비할지라도, 호스트 컴퓨터(14)는 동일하게 주소 지정된 다른 벡터 메모리 컨트롤러(30)의 채널 모드 레지스터에 데이터를 기록하지 않고 임의의 한 벡터 메모리 컨트롤러(30)의 채널 모드 레지스터에 데이터를 기록할 수 있다. 각 메모리 컨트롤러(30)는 영원히 "물리적 데이터 채널(physical data channel)"에 할당된다. CPU 버스(34)는 각 메모리 컨트롤러(30)에 대한 개별 메모리 어드레스 스트로브 라인을 포함한다.
채널 모드 기록 작동을 수행하기 위해, 첫 번째로 호스트 컴퓨터(14)는 채널_PTR 레지스터(88) 및 모든 벡터 메모리 컨트롤러(30) 내의 동보 모드 레지스터로 원하는 물리적 데이터 채널을 표시하는(referencing) 데이터를 동보하여 상기 원하는 물리적 데이터 채널을 액티브한다(activate). 채널이 자신에게 할당된 값과 액티브 MAS를 알면(see), PC_ENABLE 신호는 기록 제어 회로(8)로 공급된다. PC_ENABLE 신호가 요구될 경우(assert), 기록 제어 회로(80)는 CPU 버스 상으로 소정 데이터를 수신하기 위해 인에이블된다. 따라서, PC_ENABLE 신호가 요구된 후(asserted), 호스트 컴퓨터(14)는 CPU 버스(34) 상에 채널 모드 레지스터의 제어 데이터 및 어드레스를 배치하고 데이터를 수신하는 벡터 메모리 컨트롤러(30)와 연결되는(leading to) MSA 라인에 펄스 신호를 출력한다(pulse).
별명 모드(Alias Mode)(가상 채널(Virtual Channels))
호스트 컴퓨터(14)는 각각 고유의 16-비트 가상 채널 코드(unique 16-bit virtual channel code)로 표시되는(referenced), 65,536개의 "가상" 데이터 채널 중 하나에 각 벡터 메모리 컨트롤러(30)를 개별적으로 할당할 수 있다. 그 후 호스트 컴퓨터(14)는 임의의 소정 가상 채널을 액티브할 수 있고(activate) 그런 다음 상기 액티브된 가상 채널에 할당된 모든 벡터 메모리 컨트롤러(30) 내의 동일하게 주소 지정된 "별명 모드" 레지스터 내로 데이터를 동시에 기록할 수 있다.
벡터 메모리 컨트롤러(30)를 다수의 가상 채널에 할당하기 위해, 호스트 컴퓨터(14)는 각 벡터 메모리 컨트롤러(30) 내의 확정-별명 레지스터(define-alias register, 90)에 16-비트 가상 채널 코드를 기록하기 위해 채널 모드를 사용한다.소정 벡터 메모리 컨트롤러(30)의 확정 별명 레지스터(90)에 저장된 코드는 상기 컨트롤러(30)가 할당될 수 있는 개별 가상 채널을 표시한다(reference). 그런 다음 호스트 컴퓨터(14)는 각 벡터 메모리 컨트롤러(30)의 별명_PTR 레지스터(92)로 데이터를 동보한다. 상기 데이터는 비교기(84)의 입력으로 전송된다. 별명 포인터 코드(alias pointer code)는 벡터 메모리 컨트롤러(30)가 응답할 수 있는 가상 채널을 표시한다. 호스트 컴퓨터(14)는 각 벡터 메모리 컨트롤러(30) 내의 확정 별명 레지스터(90)에 새로운 데이터를 기록하여 소정 시간(any time)에 벡터 메모리 컨트롤러(30)를 상이한 가상 채널에 재 할당(reassign)할 수 있다.
각 벡터 메모리 컨트롤러(30)를 가상 채널에 할당하면, 호스트 컴퓨터(14)는 모든 벡터 메모리 컨트롤러(30)의 별명 포인터 레지스터(92) 내로 가상 채널 코드를 동보하여 상기 벡터 메모리 컨트롤러(30)의 가상 채널 중 임의의 하나를 액티브할 수 있다. 레지스터(92) 내에 저장된 코드가 레지스터(90)의 채널 코드 출력을 할당한 벡터 메모리 컨트롤러(30) 중 소정 것과 일치할 경우, 비교기(84)는 기록 제어 회로(80)로 공급된 가상 채널 인에이블 신호(VC_ENABLE)를 요구한다(assert). VC_ENABLE 신호가 요구되면, 기록 제어 회로(80)는 CPU 또는 패스트로드 모드 중 어느 하나의 모드에서 주소 지정된 소정 가상 채널 레지스터 내에 데이터를 기록한다. 이러한 가상 채널 시스템은 하나 이상의 벡터 메모리 컨트롤러(30)가 동일한 테스트 구조(test configuration)를 위해 동일한 데이터를 요구할 경우 호스트 컴퓨터(14)가 상기 하나 이상의 벡터 메모리 컨트롤러(30)로 동시에 데이터를 기록할 수 있도록 할 때 특히 유용한다.
벡터 분산(Vector Distribution)
호스트 컴퓨터(14)는 AUXD 버스를 경유하여 64×8-비트 벡터 기록 캐시(66)내로 32개의 16-비트 데이터 워드를 패스트로드 기록하도록 레지스터 액세스의 패스트로드 모드를 사용하여 벡터 메모리(28) 내로 64개의 8-비트 벡터 블록을 간접적으로 기록한다. 벡터 기록 캐시(66)는 32개의 16-비트 별명 모드 레지스터 셋트로 이루어진다. AUXD 버스 상에 나타나는 각 16-비트 데이터 워드는 32개의 벡터 기록 캐시 레지스터 중 하나로 보내진다. AUXD 버스 상에 도착하는 4개의 16-비트 워드로 이루어지는 제1 셋트는 모두 64개의 벡터로 이루어지는 제1 비트들을 포함한다. 유사하게, 4개의 16-비트 워드로 이루어지는 n번째 셋트는 모두 64개의 벡터로 이루어지는 n번째 비트들을 포함한다. 벡터 기록 캐시(66) 내로 소정 데이터를 기록하기 전에, 호스트 컴퓨터(14)는 한 쌍의 CPU_PTR 레지스터(89)에 어드레스를 기록하고 BIT_PTR 레지스터(94)로 8-비트 워드를 기록한다. CPU_PTR 레지스터(89) 내의 어드레스는 벡터 기록 캐시(66)로부터의 데이터가 기록되는 시작 벡터 메모리 어드레스(starting vector mamory address)를 캐시 로드 회로(56)(도 2)가 알 수 있도록 한다. BIT_PTR 레지스터(94)의 내용은 8개의 벡터 비트들 중 어느 것이 다음에 목표로 되는가를 기록 제어 회로(80)가 알 수 있도록 한다. 네 개의 기록 캐시 액세스를 각각 설정한 다음에 호스트 컴퓨터(14)는 BIT_포인터 레지스터(94)로 새로운 데이터를 기록한다. 64개의 벡터 모두가 벡터 기록 캐시(66)에 저장되면, 호스트 컴퓨터(14)는 기록 캐시(66)로부터 벡터를 획득하여 CPU_PTR 레지스터(89)에 저장된 어드레스에서 시작하는 벡터 메모리에 상기 획득된벡터를 저장하도록 캐시 로드 회로(56)로 신호하기 위해(to signal) 제어 상태 레지스터(control status register; csr) 내에 DUMP 비트를 셋트한다.
도 4는 벡터 메모리 컨트롤러(30)의 벡터 기록 캐시(66)를 경유하여 벡터 메모리(28) 내에 벡터를 기록할 때 호스트 컴퓨터(14)가 실행하는 단계를 좀더 상세하게 도시한 순서도이다. 도 4를 참조하면, 호스트 컴퓨터(14)는 먼저 확정-별명 레지스터(90) 내로 별명 확정(alias definition)을 기록하도록 레지스터 액세스의 채널 모드를 사용한다 (단계 100). 그런 다음, 호스트 컴퓨터(14)는 모든 벡터 메모리 컨트롤러(30)의 별명_PTR 레지스터(92)로 별명 포인터를 동보하고 채널_PTR 레지스터(88)로 채널 포인터를 동보한다 (단계 102). 그런 다음 호스트 컴퓨터(14)는 레지스터 액세스의 패스트로드 모드를 인에이블하도록 CSR 레지스터(86)로 패스트로드 코드를 기록한 후 (단계 104), CPU_PTR 레지스터(89)로 벡터 메모리 시작 어드레스(vector memory starting address)를 패스트로드 기록한다 (단계 106). 다음에 호스트 컴퓨터(14)는 각각 (64개의 벡터 각각에 대한 제1 비트들을 전송하는) 네 개의 16-비트 워드로 이루어지는 다음 셋트가 벡터 기록 캐시(66)의 제1 위치(the first position)에 저장되는 것을 표시하도록 BIT_PTR 레지스터(94)에 "0"을 패스트모드 기록한다 (단계 108). 그런 다음, 호스트 컴퓨터(14)는 벡터 캐시(66)의 메모리로 네 개의 16-비트 워드로 이루어지는 제1 비트들을 연속적으로 전송하기 위해 네 번의 기록 동작을 실행한다 (단계 110).
벡터 기록 캐시(66)에 네 개의 16-비트 워드로 이루어지는 제1 셋트를 기록하지만 벡터 캐시(66)에 32개의 데이터 워드로 이루어진 블록 전체를 기록하지 않으면 (단계 112), 호스트 컴퓨터(14)는 4개의 16-비트 워드로 이루어진 다음 셋트가 모두 64개의 벡터로 이루어진 제2 비트들을 포함한다는 것을 표시하기 위해 액티브 가상 채널의 각 벡터 메모리 컨트롤러(30)의 BIT_PTR 레지스터(94) 내로 새로운 비트 포인터를 기록하기 위한 단계(108)로 복귀한다. 그런 다음 호스트 컴퓨터(14)는 벡터 기록 캐시(66) 내로 네 개의 벡터쌍으로 이루어진 제2 셋트를 기록하기 위한 단계(110)로 복귀한다. 호스트 컴퓨터(4)는 단계(112)에서 액티브 가상 채널에 할당된 모든 벡터 메모리 컨트롤러(30)의 벡터 기록 캐시(66)로 64개의 벡터 모두를 전송할 때까지 단계 108 내지 단계 112를 반복한다. 이 때 벡터 블록이 벡터 메모리(28)에 저장되기 위해 기록 캐시(66)에서 이용 가능하다(available)는 것을 캐시 로드 회로(56)로 통지하기 위해 호스트 컴퓨터(14)는 모든 CSR 레지스터(86)에 DUMP 비트를 기록한다 (단계 114). 그런 다음 각 캐시 로드 회로(56)는 벡터 메모리(28) 내에 데이터를 기록하고 DUMP 비트를 리셋한다. 호스트 컴퓨터(14)는 캐시 로드 회로(56)가 벡터 데이터를 충분한 시간동안 벡터 메모리(28)내에 기록할 수 있도록 60 사이클(cycle)의 ROSC 클럭을 대기한다 (단계 116). 그런 다음 호스트 컴퓨터(14)가 동일한 가상 채널의 벡터 메모리 컨트롤러(30)로 다른 벡터 블록을 전송하길 원하면 (단계 118), 호스트 컴퓨터(14)는 벡터 기록 캐시 내에 다음 벡터 셋트의 기록 동작을 시작하기 위한 단계 106으로 복귀한다. 액티브 가상 채널에 대한 마지막 벡터 기록 동작을 완료한 후, 호스트 컴퓨터(14)는 레지스터 액세스의 패스트로드 모드를 디스에이블 하도록(disable) CSR 레지스터(86)에 코드를 기록한다 (단계 120). 현재 호스트컴퓨터(14)가 다른 가상 채널의 벡터 메모리 컨트롤러(30)로 벡터를 전송하길 원하면 (단계 122), 호스트 컴퓨터(14)는 단계 102로 리턴한다. 그렇지 않으면, 벡터 로딩 처리는 완료한다.
명령 처리(Instruction Processing)
테스트가 이루어지는 동안, 도 2의 VCB 인터페이스 회로(52)는 도 1의 마스터 컨트롤러(12)로부터 CYC 신호를 수신하고 상기 CYC 신호에 의해 인에이블되면 각 ROSC 클록 신호의 상승 에지(leading edge)에서 내부 CYCLE 신호(internal CYCLE signal)를 발생한다. 또한 상기 CYC 신호는 VCB 버스로부터 인스트럭션 연산코드(instruction opcode)를 획득하고 멀티플렉서(64)와 스캔 인터페이스(50)를 제어하는 방법을 결정하기 위해(determine) VCB 인터페이스는 상기 인스트럭션 연산코드의 디코딩을 시작하도록 한다. VCB 인터페이스(52)는 또한 캐시 언로드 회로(60)로 연산코드를 전송한다(forward).
도 5는 도 2의 캐시 언로드 회로(60), 판독 캐시 어레이(58), 및 캐시 로드 회로(56) 간의 통신 상호 연결을 좀더 상세하게 예시하는 블록도이다. 캐시 언로드 회로(60)는 입력으로서 인스트럭션 연산코드와 오퍼랜드 및 CYCLE 신호를 수신한다. 각 CYCLE 신호 펄스에 응답하여, 캐시 언로드 회로(60)는 판독 캐시 어레이(58)의 입력으로 공급된 어드레스(ADDR)를 갱신한다. 판독 캐시 어레이(58)는 상기 현재 어드레스(current address)에 저장된 벡터를 복원(return)하고 캐시 언로드 회로(60)는 멀티플렉서(64)로 상기 벡터를 전송한다(forward).
판독 캐시 어레이(58)는 각각 1024개의 벡터를 저장할 수 있는 13개의 캐시를 포함한다. 그래서 캐시 어레이(56)는 13,312개의 벡터를 저장할 수 있다. 캐시 언로드 회로(60)가 소정 캐시 어레이(58)의 벡터를 출력하기 시작할 때마다, 캐시 언로드 회로(60)는 정상적으로 LOAD 신호를 캐시 로드 회로(56)로 전송한다. 캐시 로드 회로(56)는 데이터를 판독한 마지막 벡터 메모리(28)의 어드레스를 기억하고 또한 판독 캐시 어레이(58)의 캐시가 상기 데이터를 마지막으로 수신했다는 것을 기억한다. 캐시 로드 회로(56)는, 적당한 캐시 기록 어드레스와 기록 인에이블 신호를 판독 캐시 어레이로 공급하여, 벡터 메모리(28)의 다음 64개의 어드레스 데이터를 판독하고 판독 캐시 어레이(58) 내의 빈 캐시(depleted cache)로 상기 판독된 데이터를 순차적으로 보내어 LOAD 신호 펄스에 응답한다. 캐시 언로드 회로(60)가 판독 캐시 어레이(58)의 상기 특정 캐시를 현재 액세스하지 않기 때문에, 캐시 로드 작동은 캐시 언로드 작동과 인터페이스하지 않는다. 캐시 로드 회로(56)와 판독 캐시 어레이(58)는 통상적인 구조로 이루어져 있으며 본 명세서에서는 상세하게 기술하지 않는다.
도 2로 되돌아가 참조하면, 오퍼랜드 버퍼(51)(FIFO 버퍼)는 CYC 신호의 각 펄스 시에 AUXD 버스 상에 나타나는 임의의 데이터를 시프트인(shift in)하고 소정 CYC 신호 펄스 후에 캐시 언로드 회로(60)로 데이터를 시프트아웃(shift out) 한다. 아래에 좀더 상세하게 설명된 것처럼, 마스터 컨트롤러(12)가 VCB 상에 오퍼랜드를 요구하는 인스트럭션의 연산코드를 배치하면, 도 1의 마스터 컨트롤러(12)는 또한 AUXD 버스 상에 오퍼랜드를 배치한다. 오퍼랜드는 VCB 인터페이스 회로(52)가 연산코드를 디코드하고 인스트럭션을 실행하도록 캐시 언로드 회로(60)로 신호를 보내는 시점에서 오퍼랜드 버퍼(51)를 통해 캐시 언로드 회로(60)에 도달하도록 작동한다(work). 그런 다음 캐시 언로드 회로(60)는 인스트럭션을 실행할 때 오퍼랜드를 사용한다. 오퍼랜드 버퍼(51)를 통해 캐시 언로드 회로(60)로 전송되는(passing) 대부분의 데이터는 대부분의 인스트럭션이 오퍼랜드를 요구하지 않기 때문에 캐시 언로드 회로(60)에서 사용되지 않는다. 그런 인스트럭션 때문에, 캐시 언로드 회로(60)는 오퍼랜드 버퍼(51)로부터의 입력을 간단히 무시한다.
소정 인스트럭션은 캐시 언로드 회로(60)가 벡터 위에 기록하기 위해 캐시 언로드 회로(56)로 신호하는 것을 보류하도록 하여(refrain) 상기 벡터를 판독한 후에 판독 캐시 어레이(58)의 소정 부분에 상기 벡터를 계속 유지하도록 한다. 이것은 후속 VCB 인스트럭션에 의해 판독 캐시 어레이(58)의 이점 시점의 벡터 시퀀스로 점프하도록 하는 명령이 발생하면, 캐시 언로드 회로(60)가 판독 캐시 어레이(58)의 이전 시점의 벡터 시퀀스로 나중에 점프할 수 있도록 한다. 그래서 캐시 언로드 회로(60)는 벡터 메모리(28) 내에 기억된 벡터의 소정 서브셋트가 반복적으로 이루어질지라도 동작 루프를 유지할 수 있다. 캐시 언로드 회로(60)의 작동과 캐시 언로드 회로(60)가 처리하는 인스트럭션은 다음에 좀더 상세하게 기술한다.
스캔 인스트럭션 처리(Scan Instruction Processing)
테스트가 이루어지는 동안, 도 1의 마스터 컨트롤러(12)는 스캔 모듈(16)로 스캔 신호 펄스를 보내어 벡터 메모리 컨트롤러(30)로 스캔 데이터를 전송하도록 스캔 모듈(16)로 신호를 보낼 수 있다. 스캔 모듈(16)은 AUXD 버스 상에 32-비트스캔 데이터 워드를 배치한 후 AUXN 신호를 요구하여(assert) 응답한다. 도 2의 스캔 인터페이스 회로(50)는 ROSC 신호에 의해 동기되고(clocked) AUXN 신호에 의해 인에이블된 내부 FIFO 버퍼를 포함한다. 그래서 스캔 모듈(16)이 AUXD 버스 상으로 스캔 데이터 워드를 전송하고(send out) AUXN 신호를 요구하면(assert), 모든 벡터 메모리 컨트롤러(30) 내의 스캔 인터페이스 회로(50)는 자신의 내부 FIFO 버퍼 내로 스캔 데이터 워드를 신속하게 적재한다. 마스터 컨트롤러(12)가 테스트가 이루어지는 동안 벡터 메모리 컨트롤러(30)로 인스트럭션 오퍼랜드를 전송하기 위해 AUXD 버스를 사용할지라도, 마스터 컨트롤러(12)는 스캔 작동 중에는 AUXD 버스를 사용하지 않는다. 그러므로, 인스트럭션 오퍼랜드는 스캔 인터페이스 회로(50)내의 FIFO 버퍼에 존재하지 (end up) 않는다.
VCB 인터페이스 회로(52)가 SCAN 인스트럭션을 디코드하면, VCB 인터페이스 회로(52)는 스캔 인터페이스 회로(50)의 FIFO 버퍼에 저장된 가장 긴 32-비트 스캔 데이터 워드를 시프트아웃 하도록 상기 스캔 인터페이스 회로(50)로 신호한다. VCB 인터페이스 회로(52)가 상기 스캔 인터페이스 회로(50)로 신호를 보내면, 스캔 인터페이스 회로(50)는 (제어 레지스터(68)의 제어 데이터에 의해 결정된 대로) 상기 32 비트로 이루어진 8개 셋트 중에서 하나를 선택하고 멀티플렉서(64)의 입력으로 상기 선택된 스캔 데이터 비트들을 보낸다. 스캔 인스트럭션 형태(type)는 또한 부가적인 테스트 사이클 동안 멀티플렉서(64)로 스캔 언로드 회로(60)의 현재 출력 벡터를 계속 보낼 것인지 또는 새로운 데이터를 취할 것인지(get)를 상기 캐시 언로드 회로(60)가 알 수 있도록 한다. 멀티플렉서(64)는 캐시 언로드회로(60)로부터의 벡터 중 소정 비트를 대응하는 스캔 인터페이스 회로(50)로부터의 스캔 비트로 대체할 수 있다. 테스터 노드가 스캔 데이터 입력을 제공한다(service)는 것을 레지스터(68)의 제어 데이터가 표시하면, VCB 인터페이스 회로(52)는 하나 이상의 캐시 언로드 회로(60)의 출력 벡터 비트를 선택된 스캔 비트로 대체하도록 멀티플렉서(64)로 신호를 보낸다. 대체되는 벡터 비트는 또한 레지스터(68)의 제어 데이터에 의해 결정된다(determine). 테스터 노드가 스캔 단자를 제공하지(service) 않으면, 레지스터(68)의 제어 데이터는 VCB 인터페이스 회로(52)가 캐시 로드 회로(60)의 출력 벡터를 변경되지 않은 레지스터(62)로 전송하기 위해(pass) 멀티플렉서(64)를 셋트하도록 한다.
레지스터(68)에서 선택된 스캔 모드에 따라서, 32-비트 스캔 데이터 워드는 각 테스트 사이클 동안에 1, 2, 4, 8, 16, 또는 32 비트까지 사용된다. 모든 비트가 모든 컨트롤러(30)에 액세스 가능하기(accessible) 때문에, 각 컨트롤러(30)는 식별 비트(identical bit) 또는 고유 비트(unique bit) 중 어느 하나를 사용할 수 있다. 각 32-비트 워드가 소비됨(consume)에 따라, 새로운 워드는 FIFO 버퍼에서 시프트아웃 되고, 마스터 컨트롤러(12)는 AUXD 버스 상에 다른 32-비트 워드를 배치하도록 스캔 모듈로 신호를 보낸다.
인스트럭션 셋트(Instruction Set)
마스터 컨트롤러(12)는 각 테스트 사이클 동안 VCB 버스를 경유하여 벡터 메모리 컨트롤러(30)로 하나의 14-비트 인스트럭션 연산코드를 전송한다. 마스터 컨트롤러(12)는 소정 연산 코드와 함께 AUXD 버스를 경유하여 벡터 메모리컨트롤러(30)로 오퍼랜드를 동시에 전송한다. 판독 캐시 어레이(58)의 각 벡터는 고유 어드레스(unique address)를 갖는다. 캐시 언로드 회로(60)는 항상 현재 자신의 입력 어드레스에 저장된 벡터를 출력한다. 각 인스트럭션은 캐시 언로드 회로(60)가 캐시 어드레스를 다음 테스트 사이클 동안 현재 캐시 어드레스로 되도록 한다. 인스트럭션 셋트는 또한 멀티플렉서(64)로 스캔 데이터를 제공하도록 VCB 인터페이스 회로(50)가 스캔 인터페이스 회로(50)로 신호를 보내도록 하고 (레지스터(68)의 제어 데이터와 함께) 출력 레지스터(62)로 전송되는 벡터 내의 상기 스캔 데이터를 삽입하기 위해 멀티플렉서(64)를 셋트 할 것인지를 VCB 인터페이스 회로(52)가 알 수 있도록 한다. 다음은 마스터 인스트럭션 컨트롤러(12)가 테스트가 이루어지는 동안 벡터 메모리 컨트롤러(30)로 보낼 수 있는 14개의 상이한 명령 형태의 리스트이다.
INCR: INCR 인스트럭션은 캐시 언로드 회로(60)가 다음 테스트 사이클 동안 현재 캐시 어드레스를 증가시키도록 한다.
REPEAT: REPEAT 인스트럭션은 캐시 언로드 회로(60)가 다음 테스트 사이클 동안 변경되지 않은 현재 캐시 어드레스를 보유하도록 한다(hold).
SCAN: SCAN은 캐시 언로드 인터페이스 회로(60)가 테스트 사이클 동안 현재 캐시 어드레스를 보유하도록 하고 또한 VCB 인터페이스 회로(52)가 다음 테스트 사이클 동안 멀티플렉서(64)로 스캔 비트를 공급하도록 스캔 인터페이스 회로(50)로 신호를 보내도록 한다. SCAN 인스트럭션은 또한 VCB 인터페이스 회로(52)가 의도된 인스트럭션에 해당하는 테스트 사이클 동안 제어 레지스터(68)중 하나의 데이터에 의해 표시된 상태로 멀티플렉서(64)를 절환하도록 한다. 테스터 노드가 DUT 스캔 단자를 제공한다는 것을 상기 데이터가 표시하면, VCB 인터페이스 회로(52)는 캐시 언로드 회로(60)의 벡터 출력 중 선택된 비트를 선택된 스캔 데이터 비트로 대체하도록 멀티플렉서(64)를 설정한다.
SCANI: SCANI 인스트럭션은 캐시 언로드 회로(60)가 현재 캐시 어드레스를 증가시키도록 하는 것을 제외하고는 SCAN 인스트럭션과 동일한다.
CACHEGI: CACHEGI 인스트럭션은 인스트럭션 연산코드가 VCB 인터페이스 회로(52)를 경유하여 캐시 언로드 회로(60)로 전송되는 동일한 시간에 오퍼랜드 버퍼(51)를 경유하여 캐시 언로드 회로(60)로 전송된 오퍼랜드를 포함한다. 상기 INCR 인스트럭션처럼, CACHEGI 인스트럭션은 캐시 언로드 회로(60)가 현재 캐시 어드레스를 증가시키도록 한다. 그러나, CACHEGI 인스트럭션은 또한 캐시 언로드 회로(60)가 "GOTO" 어드레스로서 오퍼랜드에 의해 표시된 특정 캐시 어드레스를 플래그 표시하도록 한다(to flag). 캐시 어드레스가 "GOTO" 어드레스로 플래그 표시되면(flag), 캐시 로드 회로(56)는 CACHEGI 오퍼랜드에 의해 지적된 벡터 메모리 내용으로 판독 캐시 어레이(58)에 전용 "GOTO" 캐시 셋트(dedicated "goto" cache set)를 적재한다. 시간(time)은 이러한 트랜잭션(transaction)이 발생할 수 있게 다음 테스트 사이클 전에 삽입된다.
GOTO: GOTO 인스트럭션은 캐시 언로드 회로(60)가 이전 CACHEGI 인스트럭션에 의해 플래그된 캐시 어드레스를 캐시 언로드 회로(60)의 현재 캐시 어드레스로 되게 한다.
CACHECI: CACHECI 인스트럭션은 캐시 언로드 회로가 다음 캐시 어드레스로 전진하고(advance), 동시에 인스트럭션 오퍼랜드에 의해 "호출(call)" 어드레스로서 표시된 캐시 어드레스를 플래그 표시하도록 한다. 캐시 어드레스가 호출 어드레스로서 플래그 표시되면, 캐시 로드 회로(56)는 지적된 벡터 메모리 내용으로 판독 캐시 어레이(58)의 전용 "호출" 캐시 셋트를 CACHEGI 오퍼랜드에 적재한다. 시간은 이러한 트랜잭션이 발생할 수 있게 다음 테스트 사이클 전에 삽입된다.
CALL: CALL 인스트럭션은 캐시 언로드 회로가 다음 어드레스를 "복귀(return)" 어드레스로서 플래그 표시하도록 하고, 시간 지연없이 전용 호출 캐시 셋트로부터의 데이터를 사용하기 시작한다. 부가적인 공간(additional space)이 후속 "복귀" 동작 동안 데이터가 액세스되고 고속 처리될(cache) 수 있게 호출 캐시 내에 만들어진 다음, 상기 CALL 인스트럭션은 지연 시간없이 전용 GOTO 캐시 셋트로부터의 데이터를 사용하기 시작한다.
RETURN: RETURN 인스트럭션은 캐시 언로드 회로(60)가 호출 어드레스 다음의 어드레스로 점프하도록 하고, 복귀 캐시를 플래그 표시하지 않도록 하여(unflage)어드레스가 순차적으로 재사용될 수 있다.
LOOP1: 첫 번째 LOOP1 인스트럭션의 발생은 캐시 언로드 회로(60)가 "LOOP1" 캐시로서 현재 캐시를 플래그 표시하고 캐시 어드레스를 증가시키도록 한다. 캐시가 LOOP1 캐시로서 플래그 표시되면, 캐시 언로드 회로(60)는 LOOP1 캐시 내에 새로운 데이터를 기록하도록 캐시 로드 회로(56)로 신호하는 것을 보류한다. 개입하는(intervening) LOOP01 인스트럭션없이, 두 번째 LOOP1 인스트럭션의 발생은 캐시언로드 회로(60)가 LOOP1 캐시를 플래그 표시하지 않도록 하여, 그 후 loop1 인스트럭션은 재사용될 수 있다.
LOOP01: LOOP01 인스트럭션은 캐시 언로드 회로(60)가 LOOP1 캐시의 LOOP1 어드레스로 복귀하고 상기 LOOP1 어드레스에 저장된 벡터를 출력하도록 한다.
LOOP2: 첫 번째 LOOP2 인스트럭션의 발생은 캐시 언로드 회로(60)가 "LOOP2" 캐시로서 현재 캐시를 플래그 표시한 후 현재 캐시 어드레스를 증가시키도록 한다. 캐시가 LOOP2 캐시로서 플래그 표시되면, 캐시 언로드 회로(60)는 LOOP2 캐시 내로 새로운 데이터를 기록하도록 캐시 로드 회로(56)로 신호하는 것을 보류한다(refrain). 개입하는(intervening) LOOP02 인스트럭션없이, 두 번째 LOOP2 인스트럭션의 발생은 캐시 언로드 회로(60)가 LOOP2 캐시를 플래그 표시하지 않도록 한다.
LOOP02: LOOP02 인스트럭션은 캐시 언로드 회로(60)가 LOOP2 캐시의 LOOP1 어드레스로 복귀하고 상기 LOOP2 어드레스에 저장된 벡터를 출력하도록 한다.
DGOTO: DGOTO 인스트럭션은 캐시 언로드 회로(60)가 현재 입력 오퍼랜드에 의해 전송된 캐시 어드레스를 현재 어드레스로 되게 하고, 상기 캐시 어드레스에 저장된 벡터를 출력하도록 한다. 이러한 동작은 벡터 메모리(28)로부터 새로운 데이터를 획득하기 위해 지연(delay) 시간을 요구한다.
캐시 언로드 회로(Cache Unload Circuit)
도 6은 도 2의 캐시 언로드 회로(60)에 대한 좀더 상세한 블록도를 예시한다. 캐시 언로드 회로(60)는 4-비트 인스트럭션 연산 코드를 수신하고 처리하기 위해 CYCLE 신호가 클럭으로 입력된(clocked) 상태 머신(130)을 포함한다. 도 2의 오퍼랜드 버퍼(51)로부터의 오퍼랜드는 상태 머신(130)에 의해 인에이블된 레지스터 셋트(132-133)의 입력으로 공급된다. 현재 내부 벡터 메모리 어드레스는 레지스터(134-136)의 입력으로 공급된다. 레지스터(132)는 GOTO 어드레스를 저장하고, 레지스터(133)는 호출 어드레스를 저장하고, 레지스터(134)는 복귀 어드레스(return address)를 저장하고, 레지스터(135)는 LOOP1 어드레스를 저장하고, 레지스터(136)는 LOOP2 어드레스를 저장한다. 상태 머신(13)에 의해 클럭 신호가 입력된(clocked) 어드레스 카운터(138)의 출력과 모든 레지스터(132, 133, 135, 136)의 내용은 상태 머신(130)에 의해 제어된 멀티플렉서(140)의 입력으로 제공된다. 멀티플렉서(140)는 현재 캐시 어레이 입력 어드레스(ADDR)로서 자신의 입력 중 하나를 선택한다. 상태 머신(130)에 의해 또한 제어된 다른 멀티플렉서(142)는 어드레스 카운터(138)의 입력으로서의 현재 어드레스, 복귀 레지스터(134)의 출력, 또는 오퍼랜드 중 어느 하나를 선택적으로 전송한다. 상태 머신(130)은 멀티플렉서(142)의 출력을 적재하도록 카운터(138)로 신호를 전송할 수 있다. 플립플럽(144-148)의 셋트는 각각 GOTO, 호출, 복귀, LOOP1 및 LOOP2 플래그를 저장한다. 상태 머신(130)은 플래그를 셋트하고 리셋하도록 플립플럽(142-148)을 셋트하고 리셋한다.
캐시 로드 제어 회로(150)는 상태 머신과 비교기 셋트를 포함한다. 캐시 로드 제어 회로는 현재 어드레스가 언제 어레이 경계(array boundary)를 통과하여 전송되었는지를 결정하도록 13개 캐시의 시작 어드레스(starting address)와 멀티플렉서(140)의 현재 어드레스 출력을 비교한다. 캐시 로드 제어 회로(150)는 또한 13개 캐시중 어느것이 액티브된 복귀, LOOP1 또는 LOOP2 어드레스를 포함하는지를 결정하도록 레지스터(132)의 현재 내용 및 플립플럽(144-148)의 상태를 모니터한다. 일반적으로 현재 어드레스가 캐시를 비우면(vacate), 캐시 로드 제어 회로(150)는 LOAD 신호를 펄스로 출력하여(pulse), 캐시 로드 제어 회로(50)가 비워진 캐시를 마음대로 사용하도록(to free up) 한다. 그러나 비워진 캐시가 액티브된 복귀, LOOP1 또는 LOOP2 어드레스를 포함하면, 캐시 로드 제어 회로(150)는 상태 머신(130)이 연관된 플립플럽(144-148)을 리셋할 때까지 LOAD 펄스의 요구 동작(asserting)을 지연한다.
상태 머신(130)은 다음과 같은 각 입력 인스트럭션 연산 코드에 응답한다.
INCR: 상태 머신(130)은 어드레스 카운터(138)의 출력을 선택하도록 멀티플렉서(140)를 셋트하고 상기 어드레스 카운터(138)에 클럭 신호를 출력하여 현재 어드레스를 증가시킨다.
REPEAT: 상태 머신(130)은 아무런 동작도 실행하지 않는다. 현재 어드레스는 변경되지 않은 상태를 유지한다.
SCAN: 상태 머신(130)은 어드레스 카운터(138)의 출력을 선택하도록 멀티플렉서(140)를 셋트하고 상기 어드레스 카운터(138)로 클럭 신호를 출력하여 현재 어드레스를 증가시킨다.
CACHEGI: 상태 머신(130)은 GOTO 레지스터(132) 내로 오퍼랜드를 동기시켜 입력하고(clock), 어드레스 카운터(138)의 출력을 선택하도록 멀티플렉서(140)를셋트하며, 어드레스 카운터(138)로 클럭 신호를 출력한다(clock)
GOTO: 상태 머신(130)은 현재 어드레스로서 GOTO 레지스터(132의 출력을 선택하도록 멀티플렉서(140)를 셋트하고, 어드레스 카운터(138)의 입력으로 현재 어드레스를 선택하도록 멀티플렉서(142)를 셋트하며, 상기 어드레스 카운터(138) 내로 상기 현재 어드레스를 적재하고 GOTO 플립플럽(144)을 셋트한다.
CACHECI: 상태 머신(130)은 호출 레지스터(133) 내로 오퍼랜드를 동기시켜 입력하고(clock), 어드레스 카운터(138)의 출력을 선택하도록 멀티플렉서(140)를 셋트하며, 어드레스 카운터(138)로 클럭 신호를 출력한다(clock).
CALL: 상태 머신(130)은 호출 레지스터(133)의 출력을 선택하도록 멀티플렉서(140)를 셋트하고, 어드레스 카운터(138)의 입력으로서 현재 어드레스를 선택하도록 멀티플렉서(142)를 셋트하고, 어드레스 카운터(138) 내로 현재 어드레스를 적재하며, 어드레스 카운터(138)로 클럭 신호를 출력하고(clock), 복귀 레지스터(134) 내로 오퍼랜드를 적재하고 호출 플립플럽(145)을 셋트하며 복귀 레지스터(146)를 셋트한다.
RETURN: 상태 머신(130)은 어드레스 카운터(138)의 출력을 선택하도록 멀티플렉서(140)를 셋트하고, 복귀 레지스터(134)의 출력을 선택하도록 멀티플렉서(142)를 셋트하며, 상기 어드레스 카운터(138) 내로 현재 어드레스를 적재하고 상기 어드레스 카운터(138)의 값을 증가시키며, 복귀 플립플럽(146)을 리셋한다.
LOOP1: LOOP1 인스트럭션이 첫 번째 발생 할때에, 상태 머신(130)은 LOOP1플립플럽(147)을 셋트하고, LOOP1 레지스터(135) 내로 현재 어드레스를 적재하며, 어드레스 카운터(138)의 값을 증가시키고 현재 어드레스로서 어드레스 카운터(138)의 출력을 선택하도록 멀티플렉서(140)로 신호를 보낸다. 개입하는(intervening) LOOP01 인스트럭션없이, LOOP1 인스트럭션이 두 번째 발생할 때에, 상태 머신(130)은 LOOP1 플립 플럽을 리셋하고, 어드레스 카운터(138)의 값을 증가시키며 멀티플렉서(140)의 출력을 선택하도록 멀티플렉서(140)로 신호를 보낸다.
LOOP01: 상태 머신(130)은 LOOP1 레지스터(135)의 출력을 선택하도록 멀티플렉서(140)로 신호를 보낸다.
LOOP2: LOOP2 인스트럭션이 첫 번째 발생할 때에, 상태 머신(130)은 LOOP2 플립플럽(148)을 셋트하고, LOOP2 레지스터(136) 내로 현재 어드레스를 적재하고, 어드레스 카운터(138)의 값을 증가시키며 현재 어드레스로서 어드레스 카운터(138)의 출력을 선택하도록 멀티플렉서(140)로 신호를 보낸다. 개입하는(intervening) LOOP02 인스트럭션없이 LOOP2 인스트럭션이 두 번째 발생할 때에, 상태 머신(130)은 LOOP2 플립 플럽을 리셋하고, 어드레스 카운터(138)의 값을 증가하며 멀티플렉서(140)의 출력을 선택하도록 멀티플렉서로 신호를 보낸다.
LOOP02: 상태 머신(130)은 LOOP2 레지스터(136)의 출력을 선택하도록 멀티플렉서(140)로 신호를 보낸다.
DGOTO: 상태 머신(130)은 어드레스 카운터(138)로 오퍼랜드를 전송하도록(pass) 멀티플렉서(142)로 신호를 보내고, 오퍼렌드를 적재하도록 어드레스 카운터(138)로 신호를 보내며, 어드레스 카운터(138)의 출력을 선택하도록 멀티플렉서(140)로 신호를 보낸다. 시간 지연이 발생하여 벡터 메모리(28)로부터 새로운 데이터를 액세스할 수 있게 한다.
VCB 인터페이스 회로(VCB Interface Circuit)
도 7은 도 2의 VCB 인터페이스 회로(52)에 대한 보다 상세한 블록도를 예시한다. VCB 인터페이스 회로(52)는 입력으로서 ROSC 및 CYC 클럭 신호를 수신하고 출력으로서 CYCLE 신호를 발생하는 AND 게이트(160)를 포함한다. CYCLE 신호의 각 상승에지는 테스트 사이클의 시작을 표시한다. CYCLE 신호는 VCB 버스 상에 도착하는 인스트럭션 연산 코드를 저장하는 레지스터(162)에 클럭신호로 입력된다. 인스트럭션 디코더(164)는 두 개의 제어 신호(SW_CON', SCAN_INC')를 발생하도록 레지스터(162)에 저장된 연산 코드를 디코드한다. 레지스터(162)에 저장된 연산 코드와 두 개의 디코더 출력 신호(SW_CON', SCAN_INC')는 CYCLE 신호가 클럭 신호로 입력된 개별 레지스터 파이프라인(166-168)을 통해 각각 전송된다(pass). 파이프라인(166)의 연산코드 출력은 도 1의 캐시 언로드 회로로 보내진다. AND 게이트(169)는 스캔 데이터 출력을 발생하도록 도 2의 스캔 인터페이스(50)로 출력되는 SCAN_INC 신호를 발생하기 위해 CYCLE 신호와 파이프라인(167)의 SCAN_INC' 출력 신호를 논리곱(AND)한다. 레지스터 파이프라인(168)의 SW_CON 출력은 도 2의 출력 멀티플렉서(64)를 제어한다.
입력되는(incoming) 인스트럭션이 SCAN 인스트럭션이 아닐 경우, 디코더(164)는 SW_CON' 신호를 셋트하여 출력 멀티플렉서(64)(도 2)는 캐시 언로드 회로(60)의 벡터 출력만을 선택한다. 입력되는 명령이 SCAN 인스트럭션일 경우,디코더(164)는 출력 멀티플렉서(64)가 스캔 데이터를 선택할 수 있게 하는 SW_CON'를 발생한다.
도 7에 도시된 많은 레지스터 파이프라인(166-168) 내의 단계(stage) 수와 도 2의 오퍼랜드 버퍼(51)내의 단계 수는 캐시 로드 회로(60), 스캔 인터페이스 회로(50) 및 멀티플렉서(64)의 상이한 처리 시간을 고려하여(to account) 개별적으로 조정된다. 이것은 인스트럭션에 의해 발생하는 캐시 언로드 회로(60)로부터의 벡터 데이터, 스캔 인터페이스(50)로부터의 스캔 데이터 및 제어 신호(SW_CON)는 상기 인스트럭션에 의해 제어되는 테스트 사이클 바로 전에 선행하는 테스트 사이클 동안 출력 멀티플렉서(64)에 동시에 도달할 수 있도록 한다.
스캔 인터페이스 회로(Scan Interface Circuit)
도 8은 도 2의 스캔 인터페이스 회로(50)를 좀더 상세한 블록도로 예시한다. 스캔 인터페이스 회로(50)는 AUXN 신호에 의해 전송되는(conveyed) 제어 비트뿐만 아니라 AUXD 버스 상에 나타나는 32-스캔 데이터 워드를 수신하여 저장하기 위해 ROSC 신호가 클럭 신호로 입력된(clocked by) 레지스터(80)를 포함한다. 레지스터(180)의 AUXD 데이터와 함께 레지스터(180)에 저장된 AUXN 비트는 레지스터(180)의 AUXD 데이터를 FIFO 버퍼(182) 내로 시프트한다. 도 2의 VCB 인터페이스 회로(52)로부터의 SCAN_INC 신호의 각 펄스에 응답하여, FIFO 버퍼(182)는 재구성 가능 멀티플렉서(reconfigurable multiplexer; 184)의 입력으로 32-비트 스캔 데이터 워드를 시프트 아웃한다. 호스트 컴퓨터(14)는 도 3의 SCAN_컨피그 제어 레지스터(scan_config control register, 97)에 적당한 SCAN_CFG 데이터를 저장하기 위해 1:1, 1:2, 1:4, 1:8, 1:16 또는 1:32 멀티플레서와 같은 멀티플렉서(184)를 구성할 수 있다. 멀티플렉서(184)에 의해 선택된 1, 2, 4, 8, 16 또는 32 비트의 특정 입력 셋트는 테스트 시작 전에 호스트 컴퓨터(14)가 SCAN_PTR 레지스터(99)에 저장하는 SCAN_PTR 데이터에 의해 제어된다. 그래서 멀티플렉서(184)는 입력 32-비트 스캔 데이터 워드 중 1, 2, 4, 8, 16 또는 32 비트의 소정 입력 셋트를 선택할 수 있고 출력 32-비트 워드를 형성할 때 필요하므로 상기 선택된 소정 입력 셋트를 복사할 수 있다. 도 3의 제어 레지스터(98)에 저장된 SCANCON 데이터에 의해 제어되는 32×8 크로스포인트 매트릭스(crosspoint matrix, 186)는 도 2의 출력 멀티플렉서(64)로 공급된 스캔 비트 내의 비트 중에서 8 비트를 선택하고 정렬한다. 스캔 사이클 동안, 출력 멀티플렉서(64)는 캐시 언로드 회로(60)의 출력 비트 중 하나 이상의 비트를 대응하는 스캔 비트로 대체할 수 있다.
마스터 컨트롤러(Master Controller)
도 9는 도 1의 마스터 컨트롤러(12)에 대한 좀더 상세한 블록도를 예시한다. 도 9의 마스터 컨트롤러(12)는 도 2의 벡터 메모리 컨트롤러(30)와 많은 공통점을 가지고 있다. 벡터 메모리 컨트롤러(30)가 AUXD 버스를 경유하여 호스트 컴퓨터(4)로부터 벡터 시퀀스를 수신하고 벡터 메모리(28)에 수신된 벡터 시퀀스를 저장하는 반면에, 마스터 컨트롤러(12)는 AUXD 버스를 경유하여 벡터 인스트럭션 시퀀스를 수신하고 인스트럭션 메모리(20)에 상기 수신된 벡터 인스트럭션 시퀀스를 저장한다. 도 9를 도 2에 비교하면, 마스터 컨트롤러(12)는, 도 2의 벡터 메모리 컨트롤러(30) 중 동일하게 명명된 구성요소와 일반적으로 동일한, 버스 인터페이스 회로(190), 인스트럭션 기록 캐시(192), 캐시 로드 회로(194), 인스트럭션 판독 캐시 어레이(196) 및 캐시 언로드 회로(98) 및 제어 레지스터(199)를 포함한다.
호스트 컴퓨터(4)는 마스터 컨트롤러(12)를 가상 채널에 할당하고, 벡터 메모리 컨트롤러(30)의 벡터 기록 캐시(66) 내로 벡터를 기록할 때와 실질적으로 동일한 방식으로, 마스터 컨트롤러(12)의 인스트럭션 캐시 내로 인스트럭션을 기록하기 위해 레지스터 액세스의 패스트로드/별명 모드(fastload/alias mode)를 이용한다. 캐시 로드 회로(56), 판독 캐시 어레이(58) 및 캐시 언로드 회로(60)는 벡터 메모리 컨트롤러(30) 중 대응하는 회로에 대한 특성 및 작동과 동일하다.
각 테스트 사이클 동안 캐시 언로드 회로(198)에 의해 발생된 출력 비트는 인스트럭션에 대한 4-비트 연산 코드 및 (요구될 경우) 인스트럭션에 대한 32-비트 오퍼랜드를 포함한다. 또한 상기 연산 코드와 오퍼랜드와 함께 출력으로서 발생되고 저장된 다른 데이터는 10-비트 CYCLE_LEN 데이터 값, AUXN 비트 및 스캔 비트를 포함한다. CYCLE_LEN 데이터는 소정 ROSC 클럭 신호 펄스에서 테스트 사이클의 길이를 표시한다. AUXN 비트는 새로운 AUXD 필드가 스캔 작동용으로 요구되었다는 것을 마스터 컨트롤러(12)가 결정할 경우 스캔 비트는 셋트된다. 상기 스캔 비트는 마스터 컨트롤러(12)가 다음 테스트 사이클 동안 스캔 데이터 전송을 시작하기 위해(initiate) 도 1의 스캔 모듈(16)로 스캔 신호 펄스를 전송하는 것을 표시하도록 셋트된다.
캐시 언로드 회로(198)의 연산 코드, 오퍼랜드 및 AUXN 비트 출력은 CYC 신호에 의해 인에이블된 출력 레지스터(200)의 입력으로 공급된다. 레지스터(200)에 저장된 연산 코드는 VCB 버스 상에 나타난다. 레지스터(200)에 저장된 오퍼랜드는 마스터 컨트롤러/스캔 로직에 의해 제어된 3상 버퍼(tristate buffer, 203)를 통해 AUXD 버스로 전송된다(pass). 마스터 컨트롤러(12)는 자신이 오퍼랜드를 요구하는 인스트럭션을 일반적으로 전송할 때만 AUXD 버스의 제어를 실행한다. 그렇지 않으면 AUXD 버스는 도 1의 스캔 모듈(16)에 의해 테스트가 이루어지는 동안 사용 가능하다. 이미 기술된 것처럼 스캔 모듈(16)은 32-비트 스캔 데이터 워드를 각 벡터 메모리 컨트롤러(30)의 오퍼랜드 버퍼(31)(도 2)로 전송한다. 그래서 상기 인스트럭션이 오퍼랜드를 요구하지 않을 때마다 호스트 컴퓨터(4)는 인스트럭션 메모리(20)에 상기 인스트럭션과 함께 저장된 스캔 비트를 셋트할 수 있고, 인스트럭션이 VCB 버스 상에 배치되는 동안 AUXD는 오퍼랜드를 실기(carry) 위해 사용되지 않는다.
캐시 언로드 회로(198)의 출력에서 각 인스트럭션과 함께 저장되고 나타나는 CYCLE_LEN 데이터 값은 ROSC 신호가 클럭으로 입력된 카운터(202)의 입력으로 제공된다. 호스트 컴퓨터(12)로부터의 시작신호(START) 펄스에 응답하여, 상태 머신(204)은 판독 캐시 어레이(196)로의 적재 동작을 시작하도록 캐시 로드 회로(194)로 신호를 출력할 수 있게 하고 판독 캐시 어레이(196)가 이용 가능할 경우 판독 캐시 어레이(196)로부터 출력 데이터를 얻도록 하는 CYC 펄스 시퀀스를 캐시 언로드 회로(198)로 전송한다. 이 때, 상태 머신(204)은 카운터(202) 내로 캐시 언로드 회로(198)의 현재 CYCLE_LEN 출력을 적재하도록 카운터(202)의 LOAD 입력을 펄스로 출력한다(pulse). 상태 머신(204)은 또한 캐시 언로드 회로(198)가 다음 인스트럭션을 출력할 수 있도록, 동일한 시간에 CYC 신호를 펄스로 출력한다. CYCLE_LEN 데이터를 적재한 후, 카운터(202)는 CYCLE_LEN 값에서 ROSC 신호 펄스 수를 감소시켜 카운팅 값이 "0"에 이르면 상태 머신(204)으로 신호를 보낸다. 이 때에 상태 머신(204)은 캐시 언로드 회로(18)가 카운터(202) 내로 다음 CYCLE_LEN 값을 적재하고 다음 테스트 사이클 동안 출력 데이터를 발생하도록 다시 한번 카운터 로드 신호와 CYC 신호를 동시에 펄스로 출력한다. 이러한 처리는 각 테스트 사이클 동안 계속된다. 마지막 명령 다음 테스트 종료 시점(end of the test)에서 캐시 언로드 회로(198)의 출력에 "0" CYCLE_LEN이 나타나면 디코더(206)는 상태 머신(204)을 리셋하도록 종료신호(STOP)를 보낸다. 리셋되면, 상태 머신(204)은 다른 시작 신호 펄스가 수신될 때까지 대기한다. 종료 신호는 또한 테스트가 완료됐다는 것을 호스트 컴퓨터(14)로 신호한다.
스캔 모듈(Scan Module)
도 10은 도 1의 스캔 모듈을 좀더 상세한 블록도로 예시한다. 스캔 모듈(16)은 또한 벡터 메모리 컨트롤러(30)와 다소 유사한다. 스캔 모듈(16)은 스캔 데이터 메모리(16)의 각 어드레스에 32-비트 스캔 데이터 워드를 저장한다. 테스트가 이루어지는 동안, 스캔 모듈(16)이 마스터 컨트롤러(12)로부터 스캔 신호 펄스를 수신할 때마다, 스캔 모듈(16)은 AUXD 버스 상에 스캔 데이터를 배치하고 AUXN 신호를 펄스로 출력한다. 스캔 모듈(16)은 도 2의 벡터 메모리 컨트롤러(30) 중 동일하게 명기된 구성요소에 대한 특성 및 작동에 있어서 일반적으로 동일한 버스 인터페이스 회로(220), 기록 캐시(222), 캐시 로드 회로(224), 판독 캐시 어레이(226), 캐시 언로드 회로(228), 및 제어 레지스터(240)를 포함한다. 호스트 컴퓨터(14)는 벡터 메모리 컨트롤러(30)의 기록 캐시(44) 내로 벡터 데이터를 기록하는 것과 동일한 방식으로 기록 캐시(222) 내로 스캔 데이터를 기록한다. 도 2의 캐시 로드 회로(56)가 기록 캐시(44)에서 벡터 메모리(28)로 벡터 메모리(28)에서 캐시 어레이(58)로 벡터를 이동하는 것과 동일한 방식으로, 캐시 로드 회로(224)는 기록 캐시(222)에서 스캔 데이터 메모리(22) 내로 데이터를 이동하고 스캔 데이터 메모리(22)에서 스캔 데이터 캐시 어레이(226)로 데이터를 이동한다. 그러나 캐시 언로드 회로(228)는 8-비트 벡터 대신에 캐시 어레이(226)의 32-비트 스캔 데이터 워드를 판독한다. 캐시 언로드 회로(228)는 출력 레지스터(234)로 스캔 데이터를 보낸다. 마스터 컨트롤러(12)로부터의 스캔 신호에 의해 인에이블될 때, 카운터(232)는 AUXN 펄스를 발생한다. 각 AUXN 펄스는 캐시 언로드 회로(228) 내로 하드-와이어드(hard-wired) INCR 인스트럭션을 적재하여, 캐시 언로드 회로(228)가 캐시 어레이(226)로부터 다음 32-비트 스캔 데이터 워드를 획득하고 출력 레지스터(234)로부터 획득한 32-비트 스캔 데이터 워드를 공급하도록 한다. 또한 AUXN 펄스는 AUXD의 목적지에서 유효 데이터(valid)로서 AUXD를 정당화하기 위해, AUXD 데이터와 함께 구동된다. AUXN 신호에 의해 인에이블된 3상 버퍼는 레지스터(234)의 스캔 데이터 내용을 AUXD 버스로 전송한다.
그래서 도 1의 테스터는 노드 간에 상대적으로 적은 양의 배선(wiring)을 이용하고 노드에 상대적으로 저속 벡터 메모리를 이용하며, 벡터 메모리에 대한 저속의 판독 액세스 속도 및 저속의 기록 액세스 속도에도 불구하고 여전히(yet) 각 노드로 빠르게 프로그래밍 데이타를 전송하고 고속 테스트를 수행하는 테스터를 인에이블하도록 서로(symbiotically) 동작하는 상호 관련된(interrelated) 많은 특징을 포함한다는 것을 알 수 있다. 판독 및 기록 캐시는 벡터 메모리의 액세스 속도 제한을 보상한다. 호스트 컴퓨터가 순차적이기보다는 동시에 다중 테스터 노드로 벡터를 분산할 수 있지만 가상 채널 셋트를 제공하기 위해 기록 캐시를 별명화하므로(aliasing) 벡터 데이터 분산율(rate of vector data distribution)은 한층 향상된다. 중앙집중식 벡터 처리 인스트럭션(vector processing instruction) 소스의 사용으로 대형 판독 캐시 어레이는 또한 벡터 메모리로부터 판독된 벡터 인스트럭션 시퀀스를 재사용하도록 캐시 언로드 회로를 인에이블한다. 그래서 로드로 분산되어야 하는 벡터의 개수를 줄인다. 마지막으로, 중앙집중식 스캔 데이터 소스로, 중앙집중식 인스트럭션 소스의 사용은 테스터 노드로 분산되어야 하는 벡터 개수를 더욱 감소시키도록 테스터를 또한 인에이블한다.
상기 명세서는 본 발명의 바람직한 실시예를 기술하였지만, 해당 분야의 당업자는 본 발명에서 벗어나지 않는 좀더 넓은 개념으로 바람직한 실시예에 대한 많은 변형을 할 수 있다. 따라서 첨부된 특허 청구범위는 본 발명의 범위와 본질 내에 존재하는 모든 변형을 포괄하기 위한 것이다.

Claims (12)

  1. 복수의 메모리로 데이터 시퀀스를 분산하는 장치로서,
    가상 채널 할당 데이터, 가상 채널 선택 데이터, 그리고 상기 데이터 시퀀스를 수신하고 전송하는 버스, 그리고
    상기 버스에 연결된 복수의 버스 인터페이스 수단
    을 포함하고,
    상기 각각의 버스 인터페이스 수단은 상기 개별 메모리 각각에 대응하고, 상기 버스 상에 전송된 상기 가상 채널 할당 데이터, 가상 채널 선택 데이터, 그리고 데이터 시퀀스를 수신하며,
    상기 가상 채널 할당 데이터는 상기 각각의 버스 인터페이스 수단을 복수의 가상 채널 중 하나에 할당하고,
    상기 가상 채널 선택 데이터는 상기 가상 채널 중 하나를 액티브 가상 채널로 지정하며(designate),
    상기 버스 인터페이스 수단은 자신이 상기 액티브 가상 채널에 할당되는 경우에만 대응하는 메모리로 전송된 모든 데이터 시퀀스를 기억하는
    데이터 시퀀스 분산 장치.
  2. 제1항에서,
    상기 가상 채널 할당 데이터가 동일한 가상 채널에 하나 이상의 상기 버스 인터페이스 수단을 할당하는 데이터 시퀀스 분산 장치.
  3. 제1항에서,
    상기 가상 채널 할당 데이터가 각각의 버스 인터페이스 수단에 복수의 별명(alias)을 할당하는 별명 데이터를 포함하고, 각각의 별명은 상기 가상 채널 중 하나를 표시하며(referencing), 또한 상기 가상 채널 할당 데이터가 상기 별명에 의해 표시되는 상기 가상 채널 중 특정 가상 채널에 각각의 버스 인터페이스 수단을 할당하는 별명 포인터 데이터(alias pointer data)를 포함하는 데이터 시퀀스 분산 장치.
  4. 복수의 단자를 구비하는 회로의 테스트를 수행하는 장치로서,
    버스,
    상기 테스트 전에 상기 버스 상에 가상 채널 할당 데이터, 가상 채널 선택 데이터, 그리고 벡터 시퀀스를 전송하는 수단, 그리고
    복수의 노드
    를 포함하고,
    각각의 노드는 상기 테스트 전에 자신에 기억된 벡터에 응답하여 단자에서 동작(action) 시퀀스를 수행하는, 상기 회로의 개별 단자로의 테스트 액세스를 제공하고,
    각각의 노드는 상기 테스트 전에 상기 버스 상에 전송된 상기 가상 채널 할당 데이터, 가상 채널 선택 데이터, 그리고 벡터 시퀀스를 수신하며,
    상기 가상 채널 할당 데이터는 복수의 가상 채널 중 하나에 상기 노드를 할당하고,
    상기 가상 채널 선택 데이터는 상기 가상 채널 중 하나를 액티브 가상 채널로 지정하며,
    상기 노드는 상기 가상 채널 할당 데이터가 액티브 가상 채널에 상기 노드를 할당하는 경우에만 기록 캐시에 전송된 상기 벡터 시퀀스를 기억하는
    회로 테스트 장치.
  5. 제4항에서,
    상기 가상 채널 할당 데이터가 하나 이상의 상기 노드를 동일한 가상 채널에 할당하는 회로 테스트 장치.
  6. 제4항에서,
    상기 가상 채널 할당 데이터가 각각의 노드에 대한 복수의 별명에 해당하는 별명 데이터를 포함하고, 각각의 별명은 상기 가상 채널 중 하나를 표시하며, 또한 상기 가상 채널 할당 데이터가 상기 별명에 의해 표시되는 상기 가상 채널 중 특정 가상 채널에 각각의 노드를 할당하는 별명 포인터 데이터를 포함하는 회로 테스트 장치.
  7. 복수의 단자를 구비하는 회로의 테스트를 수행하는 장치로서,
    버스,
    상기 테스트 전에 상기 버스 상에 가상 채널 할당 데이터, 가상 채널 선택 데이터, 그리고 벡터 시퀀스를 전송하는 수단, 그리고
    복수의 노드
    를 포함하고,
    각각의 노드는 벡터 시퀀스에 응답하여 단자에서 동작 시퀀스를 수행하는, 상기 회로의 개별 단자로의 테스트 액세스를 제공하며,
    상기 각각의 노드는
    상기 테스트 전에 벡터를 기억하는 기록 캐시, 그리고
    상기 테스트 전에 상기 버스 상에 전송된 상기 가상 채널 할당 데이터, 가상 채널 선택 데이터, 및 벡터 시퀀스를 수신하는 버스 인터페이스 수단
    을 포함하며,
    상기 가상 채널 할당 데이터는 복수의 가상 채널 중 하나에 상기 버스 인터페이스 수단을 할당하고,
    상기 가상 채널 선택 데이터는 상기 가상 채널 중 하나를 액티브 가상 채널로 지정하며,
    상기 버스 인터페이스 수단은 상기 가상 채널 할당 데이터가 상기 액티브 가상 채널에 상기 버스 인터페이스 수단을 할당하는 경우에만 상기 기록 캐시에 전송된 상기 벡터 시퀀스를 기억하는
    회로 테스트 장치.
  8. 제7항에서,
    벡터를 기억하는 벡터 메모리, 그리고
    상기 테스트 전에 상기 기록 캐시의 벡터를 판독하고 상기 벡터 메모리에 상기 판독된 벡터를 기억하는 메모리 로드 수단
    을 더 포함하는 회로 테스트 장치.
  9. 제8항에서,
    상기 테스트가 이루어지는 동안 상기 벡터 메모리의 벡터를 판독하고, 그에 응답하여 상기 동작 시퀀스를 수행하는 수단을 더 포함하는 회로 테스트 장치.
  10. 제8항에서,
    테스트가 이루어지는 동안 벡터를 기억하는 판독 캐시,
    상기 테스트가 이루어지는 동안 상기 벡터 메모리의 벡터를 판독하고 상기 판독 캐시에 상기 판독된 벡터를 기억하는 수단, 그리고
    상기 테스트가 이루어지는 동안 상기 캐시 어레이의 상기 벡터를 판독하고, 그에 응답하여 상기 동작 시퀀스를 수행하는 수단
    을 더 포함하는 회로 테스트 장치.
  11. 버스에 의해 상호 연결된 복수의 메모리 시스템에 데이터를 분산하는 방법으로서,
    복수의 가상 채널 중 적어도 하나에 각각의 벡터 메모리 시스템을 개별적으로 할당하는 제1 제어 데이터를 상기 버스를 통하여 각각의 메모리 시스템에 보내는 단계,
    상기 복수의 가상 채널 중 하나를 액티브 가상 채널로 식별하는(identifying) 제2 제어 데이터를 모든 벡터 메모리 시스템에 동보하는(broadcasting) 단계, 그리고
    상기 버스를 통하여 모든 메모리 시스템으로 동시에 데이터를 전송하는 단계
    를 포함하고,
    상기 액티브 가상 채널에 할당된 메모리 시스템만이 상기 전송된 데이터를 수신하고 기억하는
    데이터 분산 방법.
  12. 복수의 노드―여기서 노드 각각은 피검사 회로 장치(circuit device under test)의 개별 단자에서 테스트 동작(test activity)을 수행하는 핀 전자 회로와 상기 개별 단자에서 상기 테스트 동작을 제어하는 벡터 시퀀스를 상기 핀 전자 회로에 공급하는 메모리 시스템을 포함함―, 그리고 상기 모든 노드의 상기 벡터 메모리 시스템으로 벡터를 병렬로 전송하는 버스를 포함하는 형태의 회로 테스터에서, 상기 각각의 벡터 메모리 시스템으로 벡터를 전송하는 방법으로서,
    상기 버스를 통하여 상기 각각의 메모리 시스템에 제1 제어 데이터―여기서 제1 제어 데이터는 복수의 가상 채널 중 적어도 하나에 상기 각각의 벡터 메모리 시스템을 개별적으로 할당함―를 보내는 단계,
    상기 복수의 가상 채널 중 하나를 액티브 가상 채널로 식별하는(identifying) 제2 제어 데이터를 상기 모든 벡터 메모리 시스템에 동보하는 단계, 그리고
    상기 버스를 통하여 상기 모든 벡터 메모리 시스템으로 동시에 벡터를 전송하는 단계
    를 포함하고,
    상기 액티브 가상 채널에 할당된 벡터 메모리 시스템만이 상기 전송된 벡터를 수신한 후 상기 피검사 회로 장치의 테스트가 이루어지는 동안 핀 전자 회로에 상기 전송된 벡터를 공급하는
    벡터 전송 방법.
KR10-1999-7009973A 1997-04-28 1998-04-27 집적 회로 테스터를 위한 가상 채널 데이터 분산 시스템 KR100465085B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/848,547 1997-04-28
US08/848,547 US5805610A (en) 1997-04-28 1997-04-28 Virtual channel data distribution system for integrated circuit tester
US8/848,547 1997-04-28

Publications (2)

Publication Number Publication Date
KR20010020354A KR20010020354A (ko) 2001-03-15
KR100465085B1 true KR100465085B1 (ko) 2005-01-05

Family

ID=25303591

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1999-7009973A KR100465085B1 (ko) 1997-04-28 1998-04-27 집적 회로 테스터를 위한 가상 채널 데이터 분산 시스템

Country Status (6)

Country Link
US (1) US5805610A (ko)
EP (1) EP0990165B1 (ko)
JP (1) JP2001523342A (ko)
KR (1) KR100465085B1 (ko)
DE (1) DE69826466D1 (ko)
WO (1) WO1998049573A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6779140B2 (en) * 2001-06-29 2004-08-17 Agilent Technologies, Inc. Algorithmically programmable memory tester with test sites operating in a slave mode
US6988232B2 (en) * 2001-07-05 2006-01-17 Intellitech Corporation Method and apparatus for optimized parallel testing and access of electronic circuits
TWI252406B (en) * 2001-11-06 2006-04-01 Mediatek Inc Memory access interface and access method for a microcontroller system
KR100442696B1 (ko) * 2001-12-19 2004-08-02 삼성전자주식회사 반도체 메모리 소자의 병렬 테스트 시스템
DE602004007906T2 (de) * 2003-03-19 2008-04-10 Advantest Corp. Testeinrichtung und einstellverfahren
US7552370B2 (en) * 2006-03-31 2009-06-23 Robert Pochowski Application specific distributed test engine architecture system and method
US7908531B2 (en) * 2006-09-29 2011-03-15 Teradyne, Inc. Networked test system
US8397195B2 (en) * 2010-01-22 2013-03-12 Synopsys, Inc. Method and system for packet switch based logic replication
US8638792B2 (en) * 2010-01-22 2014-01-28 Synopsys, Inc. Packet switch based logic replication
US9594714B2 (en) 2012-11-15 2017-03-14 Empire Technology Development Llc Multi-channel storage system supporting a multi-command protocol
US9407499B2 (en) * 2013-07-03 2016-08-02 Harris Corporation Enhanced bypass operation in simulcast radio communication system
US9849077B2 (en) 2014-03-10 2017-12-26 Mary Kay Inc. Skin lightening compositions
US9281080B2 (en) * 2014-03-11 2016-03-08 Advantest Corporation Staged buffer caching in a system for testing a device under test
KR101443877B1 (ko) * 2014-07-07 2014-09-24 (주) 에이블리 반도체 테스트 설비의 인터페이스 장치
CN108061833B (zh) * 2017-12-14 2020-12-22 南京能云电力科技有限公司 基于虚拟测试仪接口模块的测试仪器自动检测系统及方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60210000A (ja) * 1984-04-04 1985-10-22 Hitachi Ltd フエイルメモリ
CA1251575A (en) * 1985-12-18 1989-03-21 A. Keith Jeffrey Automatic test system having a "true tester-per-pin" architecture
US4994732A (en) * 1985-12-18 1991-02-19 Schlumberger Technologies, Inc. Automatic test system having a "true tester-per-pin" architecture
US4931723A (en) * 1985-12-18 1990-06-05 Schlumberger Technologies, Inc. Automatic test system having a "true tester-per-pin" architecture
US4862067A (en) * 1987-06-24 1989-08-29 Schlumberger Technologies, Inc. Method and apparatus for in-circuit testing of electronic devices
US5225772A (en) * 1990-09-05 1993-07-06 Schlumberger Technologies, Inc. Automatic test equipment system using pin slice architecture
JPH04306756A (ja) * 1991-04-03 1992-10-29 Mitsubishi Electric Corp データ転送システム
DE69331061T2 (de) * 1992-08-10 2002-06-06 Monolithic System Tech Inc Fehlertolerantes hierarchisiertes Bussystem
EP0607988B1 (en) * 1993-01-22 1999-10-13 Matsushita Electric Industrial Co., Ltd. Program controlled processor
DE4305442C2 (de) * 1993-02-23 1999-08-05 Hewlett Packard Gmbh Verfahren und Vorrichtung zum Erzeugen eines Testvektors
US5453992A (en) * 1993-08-02 1995-09-26 Texas Instruments Incorporated Method and apparatus for selectable parallel execution of test operations
US5659796A (en) * 1995-04-13 1997-08-19 Cray Research, Inc. System for randomly modifying virtual channel allocation and accepting the random modification based on the cost function
US5673272A (en) * 1996-02-13 1997-09-30 Teradyne, Inc. Apparatus and method for performing digital signal processing in an electronic circuit tester

Also Published As

Publication number Publication date
US5805610A (en) 1998-09-08
DE69826466D1 (de) 2004-10-28
EP0990165A1 (en) 2000-04-05
EP0990165A4 (en) 2003-09-17
WO1998049573A1 (en) 1998-11-05
JP2001523342A (ja) 2001-11-20
EP0990165B1 (en) 2004-09-22
KR20010020354A (ko) 2001-03-15

Similar Documents

Publication Publication Date Title
KR100465085B1 (ko) 집적 회로 테스터를 위한 가상 채널 데이터 분산 시스템
US6092225A (en) Algorithmic pattern generator for integrated circuit tester
US4785416A (en) Microprocessor timing emulator having a "Wait" state
US5925145A (en) Integrated circuit tester with cached vector memories
US4931723A (en) Automatic test system having a "true tester-per-pin" architecture
US4994732A (en) Automatic test system having a "true tester-per-pin" architecture
JP3577332B2 (ja) 電子デバイスの試験装置
EP0560940B1 (en) Apparatus for a minimal memory in-circuit digital tester
US6181151B1 (en) Integrated circuit tester with disk-based data streaming
JP2674709B2 (ja) 自動回路テスタ制御システム
US5838694A (en) Dual source data distribution system for integrated circuit tester
US6507581B1 (en) Dynamic port mode selection for crosspoint switch
KR20020007325A (ko) 아날로그 및 디지털 겸용 채널을 구비한 집적회로 시험 장치
US5894484A (en) Integrated circuit tester with distributed instruction processing
EP0859318B1 (en) Optimized memory organization in a multi-channel computer architecture
EP0228332B1 (en) Automatic test system having a "true tester-per-pin" architecture
JP2005524851A (ja) 複数の命令メモリを有するテスタシステム
US7171598B2 (en) Tester system having a multi-purpose memory
US6009546A (en) Algorithmic pattern generator
US6321352B1 (en) Integrated circuit tester having a disk drive per channel
KR100634992B1 (ko) 집적회로 테스터를 제어하는 명령 처리 패턴 발생기
JPH05144297A (ja) メモリ試験装置
JPH1078476A (ja) 半導体試験装置用パターン発生器
JPS62259145A (ja) アルゴリズミツク・パタ−ン発生装置
JPH10239405A (ja) パタンデータ転送方式

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20081014

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee