KR100920277B1 - 파라미터 값 및 에러 표시 보존 방법과, 알고리즘 제어변수 복원 방법과, 에러 표시에서의 분기 방법 - Google Patents

파라미터 값 및 에러 표시 보존 방법과, 알고리즘 제어변수 복원 방법과, 에러 표시에서의 분기 방법 Download PDF

Info

Publication number
KR100920277B1
KR100920277B1 KR1020020022396A KR20020022396A KR100920277B1 KR 100920277 B1 KR100920277 B1 KR 100920277B1 KR 1020020022396 A KR1020020022396 A KR 1020020022396A KR 20020022396 A KR20020022396 A KR 20020022396A KR 100920277 B1 KR100920277 B1 KR 100920277B1
Authority
KR
South Korea
Prior art keywords
test
error
dut
program
pipeline
Prior art date
Application number
KR1020020022396A
Other languages
English (en)
Other versions
KR20020082791A (ko
Inventor
크레치알란에스2세
조단스티븐디
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 KR20020082791A publication Critical patent/KR20020082791A/ko
Application granted granted Critical
Publication of KR100920277B1 publication Critical patent/KR100920277B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/24Marginal checking or other specified testing methods not covered by G06F11/26, e.g. race tests
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/56External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Tests Of Electronic Circuits (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

메모리 테스터 테스트 프로그램 내에서 적절한 위치로 분기하여 돌아가고 그 알고리즘 제어 상태를 복원함에 있어서, 이후에 이에 관련된 에러가 DUT(14)에서 발생하는 경우가 문제이다. 이는 프로그램 실행 환경을 DUT로 연결하는 파이프라인(24/31,40,45,52)과 이를 다시 되돌리는 파이프라인(52,57,60,87)에서의 지연에 기인한다. 이들 지연으로 인하여 프로그램은 자극이 주어지는 곳을 지나 임의적으로 진행할 수 있다. 그러한 임의적 진행은 에러에 관련된 정확한 상황을 판정하는 것이 곤란하게 한다. 에러 신호에 근거한 분기는 테스트 프로그램의 한 섹션을 재시작할 수 있으나, 이는 테스트 프로그램이 실행되는 동안 동적으로 변화하는 테스트 알고리즘 제어 정보를 더 필요로 하는 템플릿(template)일 뿐이다. 히스토리 FIFO(History FIFO)(91-98,124-127)(그 히스토리 FIFO의 위치와 관련하여, 그 깊이가 파이프라인의 지연의 합을 설명하도록 조정됨)를 메모리 테스터(6)에 마련하는 것이 해결책이다. 에러 플래그(90,99)가 발생되는 경우 바람직한 프로그램 위치 및 상태 정보가 현재 적절한 히스토리 FIFO의 바닥에 존재하고 있다. 이는 테스트 프로그램이 ALU를 이용하여 그 자신의 DUT 자극을 생성하는 경우뿐만 아니라, 테스트 프로그램/ALU가 매개 버퍼 메모리(그 콘텐츠는 테스트 중인 DUT에 대한 테스트의 특성의 중심이 됨)를 어드레스하는 경우에도 용이하게 적용할 수 있다. 전자의 경우가 ALU 히스토리 FIFO(91-98)이고, 후자의 경우가 버퍼 메모리 히스토리 FIFO(124-127)이다. ECR 히스토리 FIFO도 있을 수 있다. 시스템 재구성이 발생하는 경우 이를 추적하고 결과적인 파이프라인 깊이에 따라서 다양한 히스토리 FIFO의 깊이를 조정하는 메카니즘(84)이 존재한다. 에러 발생시 히스토리 FIFO의 콘텐츠를 고정시키는 메카니즘(86,98)이 있다. 테스트 프로그램에서 분기 명령이 에러 플래그 값이 테스트 프로그램 내부 원인에 의하여 판정되는데 필요한 파이프라인 지연 보다 더 빨리 에러 플래그에 대하여 너무 일찍 응답하지 않도록 히스토리 FIFO가 연장될 수 있다.

Description

파라미터 값 및 에러 표시 보존 방법과, 알고리즘 제어 변수 복원 방법과, 에러 표시에서의 분기 방법{ALGORITHMICALLY PROGRAMMABLE MEMORY TESTER WITH HISTORY FIFO's THAT AID IN ERROR ANALYSIS AND RECOVERY}
도 1은, 본 발명에 따라서 구성된, 광범위하게 재구성 가능하고 알고리즘적으로(algorithmically) 구동되는 비휘발성 메모리 테스터(memory tester)의 단순화된 블록도,
도 2는 도 1에 도시된 DUT 테스터(6)를 확장하여 도시한 단순화된 블록도,
도 3은 ALU 히스토리 FIFO(ALU History FIFO)와 이에 관련된 제어 회로(associated control circuitry)의 속성(nature)을 도시한, 도 2의 일부분을 확장하여 도시한 도면,
도 4는, 최종 에러 데이터 레지스터(Last Error Data Register)와, 버퍼 메모리 히스토리 FIFO(Buffer Memory History FIFO)와, ECR 히스토리 FIFO, 그리고 각각에 관련된 제어 회로의 속성을 도시한, 도 2의 일부분에 대한 단순화된 블록도.

도면의 주요 부분에 대한 부호의 설명
2 : 테스트 시스템 제어기 4 : 테스트 사이트 제어기
6 : DUT 테스터 9 : 핀 전자장치
14 : DUT 20 : PGM SRAM
35 : 데이터 MUX 37 : 어드레스 비트 선택 회로
49 : 주기 생성기 57 : 수신 벡터 역매퍼/직병렬 변환기
60 : 포스트 디코드 85 : 링 버스
본 명세서는 "ERROR CATCH RAM FOR MEMORY TESTER HAS SDRAM MEMORY SETS CONFIGURABLE FOR SIZE AND SPEED"라는 명칭으로 2000년 9월 20일에 출원된 미국 특허 출원 제 09/665,892호에 개시된 정보에 관련되며, 특히 하기하는 이유로 인하여 본 명세서에서 이를 참조로써 인용하고 있다. 그 명세서의 주제는 반도체 메모리를 테스트하는 비교적 크고 복잡한 시스템의 일부 동작에 관한 것이다. 설명하고 있는 메모리 테스터(memory tester)는 그 자체 내부에서 테스트를 수행하기 위한 전체적 패러다임의 소자로서 확장형 메모리 서브시스템(extensive memory subsystem)을 포함하고 있다. 본 명세서에서는 그러한 메모리 서브시스템의 일부 기능에 관심을 가지며, 그러한 기능은 본 명세서에서 설명될 소정의 신규 주제에 대한 바람직한 기초가 된다. 생산의 경제성과, 그리고 테스터 내부에 많은 양의 이용 가능한 메모리를 포함하고자 하는 소망 때문에, 임의 어드레스 시에도 고속인 값비싼 SRAM을 대신하여 값싼 메모리(임의 액세스 시에는 느린 DRAM)를 이용하는 방법이 연구되었다. 그 결과는, 다양한 다른 메모리 서브시스템 특성과 결합되어, 그룹(Group)간 멀티플렉싱(multiplexing)과 뱅크(Bank)간 인터리빙(interleaving)을 수행할 뿐만 아니라 이들을 가변 워드 폭(variable word width)으로 구현하는 매우 복잡한 작업이 된다. 한편, 본 명세서에서 설명하고자 하는 특정한 특성은 SRAM만을 이용하는 시스템에서 구현되어, 복잡도가 크게 줄어들 수 있다. 그러나, 이는 경제적으로 큰 불이익을 가져올 것이며, 완성된 제품은 실행 가능한 상업적 기술에 되는 대신에 공학적 호기심을 충족시키기 위한 것이 될 것이다. 시스템 전체를 SRAM으로 구성하더라도 분명히 동작 가능할 것이지만, 본 명세서에서는 중도적 입장을 취하여, 그 시스템 전체를 SRAM으로 구성하지는 않는다. 물론 DRAM 기법을 포함하지만, DRAM 기법의 내부 동작에 관한 매우 복잡한 세부 사항을 다 설명하지는 않고 그 기초적 원리에 관한 적절한 설명만을 제공한다. 일반 독자는 재미있는 많은 주제(예컨대, 다양한 인터리빙 및 어드레싱 방안 그리고 서로 다른 동작 모드로의 연결 등)가 생략되었다고 생각할 수도 있다. 그러나, 모든 독자들은, 잘 생각해보면, 본 명세서에서 설명하는 기법과 특징들이, 일정한 경우 그 생략된 주제에 약간 영향을 받을지언정, 그 생략된 주제에 근본적으로 의존하지는 않는다는 것을 알 것이다. 그러므로 주요 관심사를 벗어나는 주변적인 문제는 제한한다. 앞서 언급된 명세서는 DRAM 기법에 관한 세부사항을 충분히 설명한다. 본 명세서 가 메모리 서브시스템에 관하여 해답을 제시하기보다 오히려 더 많은 문제를 제시하는 것으로 느껴지는 사람들은 앞서 인용된 명세서에서 그 답을 구할 수 있다. 그러한 이유로 본 명세서에서는 앞서의 명세서를 참조로써 인용하고 있다.
두 명세서의 원리를 결합하고자 하는 사람들은 주의할 점이 있다. 본 명세서에 인용되는 명세서에서는 관심을 갖는 메모리 전체를 에러 캐치 랩(Error Catch RAM : ECR)이라고 부르며 이는 메모리 세트로 분할된다는 관점을 취하고 있다. 그 인용되는 명세서에서는 ECR이 관심을 갖는 거의 유일한 메모리 기능(설사 다른 기능의 존재가 암시되고 있을지라도)이므로, 앞서와 같은 관점이 어렵지 않게 알 수 있다. 그러나, 본 출원을 준비하면서 숙고한 결과, 관심을 갖는 메모리 전체를, 차례로 4개의 별도의 독립적 메모리 세트(그 내부에서 다양한 기능적 메모리 메카니즘(ECR을 포함함)이 적절한 구성으로 정의될 수 있음)로 구성된, "내부 테스트 메모리(Interior Test Memory)"라는 용어로 설명하는 것이 보다 편리하다는 것을 알게 되었다. 그래서 인용되는 명세서에서는 메모리 세트가 ECR에 포함되는 것으로 보이지만, 본 명세서에서는 이와 다르게 보인다. 그럼에도 불구하고, 양 명세서는 동일한 전체 시스템에서 발견되는 주제에 관한 것이다. 그 차이는 대개 전문 용어 문제이며, 메모리 서브시스템 동작의 하위 레벨 세부 사항이 고려되면 양 명세서간 어떠한 외관상 불일치도 사라지게 된다. 그리고 이는 인용되는 명세서에 관심을 갖는 주요 독자에게 있어서 그 세부 사항이 이용 가능하게 한다.
본 명세서의 주제는 또한 "MEMORY TESTER WITH ENHANCED POST DECODE"라는 명칭으로 2000년 9월 31일에 출원된 미국 특허 출원 제 09/702,631호에 관련된다. 이 명세서에서는, 앞서 출원된 케이스의 주제의 중심인 PD_ERROR(90)라고 불리는 신호를 광범위하게 이용한다. 또한 본 명세서에서 그것이 무엇을 의미하는지 그리고 어떻게 생성되는지에 관하여 간략하지만 충분한 설명을 제공하고 있지만, 전체 세부 사항은 훨씬 더 복잡하다. 본 명세서에서는 어떠한 혼란이나 외관상 불일치가 발생할 수 있는 가능성에 대한 헤지(hedge)로서, 그리고 간결함을 위하여, 따라서 본 명세서에서는 "MEMORY TESTER WITH ENHANCED POST DECODE"를 통합하고 있다.
본 명세서의 주제는 또한 "MEMORY TESTER TESTS MULTIPLE DUT'S PER TEST SITE"라는 명칭으로 2000년 10월 2일에 출원된 미국 특허 출원 제 09/677,202호에 관련된다. 이 명세서에서는 FERR(113), PERR(114) 그리고 PD_ERROR(115)라고 불리는 소정의 신호 모음을 참조한다. 이들은 본 명세서에서 설명되는 일특징의 주제에 관하여 중요한 문제이지만, 그 발생(origin)과 본래의 이용(original use)은 앞서 출원된 케이스에서 설명되고 있다. 또한 본 명세서에서 그것이 무엇을 의미하는지 그리고 어떻게 생성되는지에 관하여 간략하지만 충분한 설명을 제공하고 있지만, 전체 세부 사항은, 이전의 경우와 같이, 훨씬 더 복잡하다. 따라서, 본 명세서에서 "MEMORY TESTER TESTS MULTIPLE DUT'S PER TEST SITE"를 참조로써 통합하도록 다시 선택하고 있다.
전자 장치와 그 전자 장치로 얻을 수 있는 성능은 일상 생활에서 극히 보편적인 것이 되었다. 가정의 개인용 컴퓨터와 더불어, 많은 개개의 장치들은 다양한 여러 가지 목적을 위하여 하나 이상의 생산 툴(productivity tool)을 포함한다. 대부분의 개인용 생산 전자 장치는 여러 형태의 비휘발성 메모리(non-volatile memory)를 포함한다. 휴대 전화는 전원이 턴오프될 때 사용자 입력 전화 번호 및 구성을 저장하고 유지하기 위하여 비휘발성 메모리를 사용한다. PCMCIA 카드는 컴퓨터의 슬롯에서 제거될 때에도 정보를 저장 및 유지하기 위하여 비휘발성 메모리를 사용한다. 많은 다른 보편적인 전자 장치 또한 전원이 공급되지 않은 상태에서 비휘발성 메모리의 장기 저장 능력(long-term storage capability)을 이용한다.
전자 장치 제조업자에게 판매하는 비휘발성 메모리를 제조하는 자는 그들이 생산하는 메모리의 적절한 동작을 검사하고 검증하기 위한 테스터를 필요로 한다. 대량의 비휘발성 메모리가 제조되고 계속 낮은 가격으로 판매되고 있기 때문에, 단일 부품(part)을 테스트하는데 소요되는 시간을 최소화하는 것이 매우 중요하다. 비휘발성 메모리의 구매자는 메모리 장치를 최소의 테스트만으로 또는 테스트하지 않고서도 더 고가의 조립 장치에 통합하는 경우 얻을 수 있는 비용 절감 때문에, 메모리 제조자에게 높은 출하율(shipment yield)을 제공하도록 요구한다. 따라서, 메모리 테스트 처리는 부합하지 않는 부품(non-conforming part)의 상당 퍼센트, 바람직하게는 부합하지 않는 부품 전체를 단일 테스트 처리로 식별할 수 있을 만큼 충분히 효율적이어야 한다.
비휘발성 메모리가 더욱 커지고, 집적도가 더 높아지며, 점점 복잡해짐에 따라, 테스터는 메모리 테스트에 소요되는 시간을 크게 증가시키지 않고서 그 증가된 크기나 복잡성을 처리할 수 있어야 한다. 메모리 테스터는 종종 연속적으로 동작하며, 테스트 시간은 최종 부품 비용에 있어서 주요 인자로 고려된다. 메모리가 발전 및 향상됨에 따라, 장치에 이루어진 변화를 테스터가 용이하게 수용할 수 있 어야 한다. 비휘발성 메모리의 테스트에 관한 또 다른 논점은 메모리 셀에 대한 반복적 기록이 부품의 전체적 수명 성능(overall lifetime performance)을 저하시킬 수 있다는 점이다. 비휘발성 메모리 제조자는 메모리 장치에 대해 특수한 테스트 모드를 구축함으로써 많은 테스트 논점에 대응하고 있다. 메모리 구입자는 이들 테스트 모드를 전혀 사용하지 않지만, 제조자는 이를 이용하여 가능한 한 적은 시간에 가능한 한 효율적으로 메모리 전체 또는 메모리 주요 부분을 테스트할 것이다. 일부 비휘발성 메모리는 또한 테스트 처리 동안 수리될 수도 있다. 따라서, 테스터는 수리의 필요성, 수리가 필요한 위치, 필요한 수리의 유형을 식별할 수 있어야 하고, 적절한 수리를 수행할 수 있어야 한다. 이러한 수리 처리는 메모리에서 부합하지 않는 특정한 부품을 검출하고 격리시킬 수 있는 테스터를 필요로 한다. 수리 기능뿐만 아니라 특수한 테스트 모드를 충분히 이용하기 위해서는, 테스터가 장치로부터의 응답에 근거한 조건부 분기(conditional branching)를 지원하는 테스트 프로그램을 실행할 수 있는 것이 바람직하다.
개념적 견지에서, 메모리를 테스트하는 처리는 알고리즘적 처리이다. 예컨대, 전형적인 테스트는 메모리 셀에 0과 1을 기록하면서 메모리 어드레스를 순차적으로 증가 또는 감소시키는 과정을 포함한다. 통상적으로 메모리 사이클 동안에 기록 또는 판독되는 1과 0의 집합(collection)을 "벡터(vector)"라고 지칭하는 한편, "패턴(pattern)"이라는 용어는 벡터 시퀀스(a sequence of vector)를 지칭한다. 테스트에 있어서 체커보드(checkerboard)와 같은 메모리 공간에 패턴을 기록하는 단계와 1과 버터플라이(butterfly) 패턴을 조금씩 이동시키는 단계를 포함하 는 것이 통상적이다. 테스트 개발자는 알고리즘 구조의 도움으로 이들 패턴을 생성하는 프로그램을 보다 용이하고 효율적으로 작성할 수 있다. 또한 알고리즘적으로 일관된 테스트 패턴이 예상대로 기능하지 않는 패턴의 일부를 격리시키는 논리적 방법을 디버깅하고 촉진하는데 있어서 보다 용이하다. 프로그래밍 루프(loop)내에서 반복되는 명령과 커맨드를 이용하여 알고리즘적으로 생성되는 테스트 패턴은 테스터 메모리에서 더 적은 공간을 차지한다. 따라서, 메모리 테스터에서 알고리즘적 테스트 패턴 발생 기능을 갖는 것이 바람직하다.
정확한 신호 에지 배치(signal edge placement)와 검출 또한 비휘발성 메모리 테스터의 효율성에 있어 고려 사항이 된다. 중앙(median)에서는 일반적으로 부합하지만 특정 가장자리(specified margin)에서는 부합하지 않는 부품을 캡쳐하기 위하여, 비휘발성 메모리 테스터는 각각의 신호 에지를 다른 신호 에지에 대해 시간적으로 정확하게 배치할 수 있어야 한다. 또한, 신호 에지가 어느 시점에서 수신되는지를 정확하게 측정할 수 있어야 하는 것도 중요하다. 따라서, 비휘발성 메모리 테스터는 자극(stimuli) 및 테스트 대상 장치(Device Under Test)(메모리)로부터의 응답의 타이밍(timing)과 배치(placement)를 충분히 잘 다루고 제어할 수 있어야 한다.
메모리 테스터는 테스트 대상 장치(DUT : Device Under Test)로 인가될 "전송(transmit)" 벡터(자극)와, 반환될 것으로 예상되는 "수신(receive)" 벡터(응답)를 발생시킨다고 말해진다. 이들 벡터를 발생시키는 알고리즘 논리는 일반적으로, 메모리 테스터가 핀으로/으로부터 신호를 라우팅(route)하는 매핑 장치(mapping arrangement)를 포함하는 것처럼, 벡터내의 특정 비트가 어떻게 DUT내의 특정 신호 패드에 주어지는지 또는 특정 신호 패드로부터 얻어지는지에 대해서는 문제삼지 않고서 상기와 같이 행할 수 있다.
메모리 테스터는 테스트 처리를 촉진하는데 이용되는 내부 테스트 메모리를 포함한다. 이러한 내부 테스트 메모리는 여러 가지 목적으로 이용될 수 있는바, 송신 벡터를 실시간으로 발생시키는 대신 이를 미리 저장하고, 수신 벡터를 저장하고, 다양한 에러 표시 및 기타 테스트 동안 얻어지는 DUT 동작 관련 정보를 저장하는데 이용된다. (SRAM을 이용하는 메모리 테스터의 동작에 대하여 내부적인 하우스키핑(housekeeping) 목적으로도 이용될 수 있으며 이는 "내부 메모리"라는 표현의 범위에 속하는 것으로 보일 것이다. 이들은 테스터의 내부 동작에 개별적(private)이고, 알고리즘 레벨에서는 명백하지 않을 수 있으며, 내부 제어 레지스터와 유사하다. 그 메모리는 "내부 제어 메모리"라고 표시되고, 본 명세서에서 DUT에 대한 자극 및 그로부터의 응답에 직접 관련되는 비트 패턴을 저장하는데 이용되는 메모리를 표시하고자 이용하는 "내부 테스트 메모리"라는 용어가 의미하는 것과는 다르다.) 이러한 내부 테스트 메모리는 적어도 테스트가 수행되는 만큼 빠르게 동작할 필요가 있음을 쉽게 알 수 있으며, 내부 테스트 메모리(또는 그 일부)가 DUT에 인가되는 동일 어드레스(또는 그에 대한 소정의 유도 어드레스)에 의하여 어드레싱되는 것은 매우 보편적인 패러다임이다. 내부 테스트 메모리 내에서 어드레싱된 위치에 저장되는 것은 DUT상의 그 어드레스에서 테스트 동작이 수행되는 동안 DUT의 행동을 표시하는 것이다. 테스트 프로그램 내부의 알고리즘을 고 려하면 연속적 송신 벡터에 관련된 어드레스 시퀀스가 가변적일 수 있음을 알 것이다. 그러므로, 내부 메모리는 고속이자 임의적인 어드레스 가능성이라는 이중적 속성을 가질 필요가 있다. SRAM은 즉각적이라 할만큼 고속이어야 하고, 제어가 용이해야 하며, 전체적으로 임의 어드레싱을 처리할 수 있어야 한다. 사실, 통상적인 메모리 테스터는 그 내부 테스트 메모리로서 SRAM을 이용한다.
불행히도, SRAM은 상당히 비싸고, 이점이 메모리 테스터가 작업을 해야하는 내부 테스트 메모리 양을 제한해왔다. 그 결과 메모리 부족으로 인하여 메모리 테스터 기능이 제한된다. DRAM은 훨씬 값이 싸지만, 임의 어드레싱에 있어서도 여전히 고속 처리를 할 수는 없다.
DRAM은 메모리 테스터의 내부 테스트 메모리로서 SRAM을 대신할 수 있다. 이하의 간략한 개요에서 간단히 설명되는 바와 같이, 내부 테스트 메모리로 이용하는 DRAM 동작의 속도를 증가시키는 문제는, 그 속도를 증가시키는 대신에, 이용되는 DRAM의 양을 증가시킴으로써 해결될 수 있다. 다수의 동일한 DRAM 뱅크가 그룹으로 취급된다. 그 중 하나의 그룹 내에서 서로 다른 메모리 뱅크에 대한 신호를 인터리빙하는 과정과 그러한 뱅크 그룹간에 멀티플렉싱을 하는 과정이 결합하여 어느 하나의 뱅크에 대한 메모리 트래픽(memory traffic)을 그 뱅크가 처리할 수 있는 속도까지 늦춘다. (이해를 돕기 위하여, 여기서 이러한 기법에 관한 매우 간략한 개요를 제공할 것이며, 그 구조적 특성 및 관련 전문 용어 대부분이 다음에서 이어질 발명 주제에 관한 설명에서 유용하다.)
각각 4개의 뱅크로 구성된 3개의 그룹에 있어서 그룹간의 3웨이(three-way) 멀티플렉싱은, 하나의 그룹에 대한 신호 트래픽에 있어서의 플렉시블(flexible) 4중(four-fold) 인터리빙 방안과 함께, 12의 인수에 도달하도록 동작 속도를 증가시키는 반면, 메모리 버스는 3개만을 필요로 한다. 멀티플렉서가 다음 그룹을 선택하기 위하여 라운드 로빈 기법(round robin strategy)을 이용한다면 이는 간단할 뿐만 아니라 각 그룹에 대한 인터리빙 메카니즘이 가장 최근에 할당받은 작업을 완료하기 위하여 필요로 하는 시간을 가질 수 있다는 것을 보장한다. 한 그룹 내의 모든 인터리브형 액세스가 다음 뱅크(그 그룹 내)에 대하여 수행되고, 또한 간단한 라운드 로빈 선택에 의하여 선택된다. 이러한 구성에서, 12개의 뱅크 각각은 전체 이용 가능한 어드레스 공간에 대한 중복 인스턴스(duplicate instance)를 나타내며, 각각의 개별적 기록 사이클마다 12개의 뱅크 중 어느 하나에 액세스하게 될 것이다. 테스트가 끝나면, 관심의 대상이 되는 임의의 주소 또는 주소 집합의 히스토리(history)가 전체 12개의 뱅크를 가로질러 펼쳐질 것이므로, DUT를 테스트하는 동안 무엇이 고장났는지를 알기 위하여는 12개의 뱅크 모두가 조사되어야만 한다는 점을 내포하고 있다. 따라서 특정 채널은 12 비트로 표시된다(각 뱅크로부터 한 비트이고 그 뱅크에 있어서 그 워드 내에서의 비트 위치는 채널로 결정됨).
그러나, 고장 정보를 발견하려면 12개의 뱅크 모두를 개별적으로 조사해야만(이를테면, 수동으로) 하는 것은 곤란한 일이며. 그러므로 하나의 어드레스에 대한 판독 사이클 동안 12개 뱅크 전체에 있어서의 결과를 하나 또는 12개 뱅크 전체에 저장될 수 있는 통일된 결과(unified result)로 자동으로 "합성(compose)"(중첩(merge))하는 유용한 메카니즘이 제공된다. 이는 그 합성 데 이터가 이후 최고 속도(full speed)로 판독될 수 있게 한다. 일실시예에서 최고 속도는 임의로 어드레스된 메모리 트랜잭션의 경우 100MHZ이다.
33MHZ가 충분히 빠른 경우라면, 멀티플렉싱없이 인터리빙만으로 임의 액세스가 지원될 수 있으며, 이러한 경우 그 합성 메카니즘과 메모리 어드레싱 방안이 적절하게 조정된다. 어드레싱 방안은 메모리 깊이(depth of the memory)가 100MHZ 임의 동작의 경우보다 3배는 더 깊게 하는 가외 그룹 선택 비트(extra Group selection bit)를 포함하도록 변화한다. 이들 두 동작 모드는 각각 R100과 R33으로 불린다. 또한 DRAM으로 전송되는 적절한 어드레스(행 어드레스의 절대 최소량이 변화함)에 의존하는 단일 뱅크에 대한 100MHZ 동작의 L100모드가 있다.
내부 테스트 메모리 구성의 최상위 레벨에서는 4개의 메모리 세트가 있으며, 각각은 그 자신의 별도의 독립적 어드레스 공간을 가지며 필요한 메모리 트랜잭션을 수행한다. 둘은 앞서 설명된 DRAM으로 구성되고, 둘은 SRAM으로 구성된다. 각각의 메모리 세트는 메모리 트랜잭션을 관리하는 고유 제어기를 가진다. 외부적으로 명백하게 알 수 있는 동작 능력에 있어서는, 전체 4개의 메모리 세트가 본질적으로 동일하다. 단지 메모리 공간의 사이즈와 내부적으로 구현되는 방법이 다를 뿐이다. SRAM 메모리 세트는 애초에 충분히 빠르기 때문에, 멀티플렉싱과 인터리빙을 이용하지 않는다. 그 독립성에도 불구하고, 동일한 유형의 메모리 세트(SRAM 또는 DRAM)가 "스택(stack)"되어, 하나의 대규모 어드레스 공간으로 다루어질 수 있다. 이는, 어드레스를 알고리즘적으로 발생시키고 어떤 메모리 세트가 실제로 메모리 트랜잭션을 전송하는지 판정함에 있어서, 전술한 메모리 세트 자체 제어 레 벨에서 이루어진다. 이는 메모리 세트와 그 제어기가 그룹을 스택하여 R100 동작 모드와 R33 동작 모드 사이의 어드레스 공간을 3배로 하는 방법과 같이 자동적인 것은 아니다. 각각의 메모리 세트 제어기에 있어서, 이와 다른 제어기를 가지는 또 다른 메모리 세트에 대한 어떠한 단서도 없다.
그러므로, 테스터의 내부 테스트 메모리는 4개의 메모리 세트로 분할되는데, 그 중 둘은 "내부" DRAM이고 나머지 둘은 "외부" DRAM이다. 분명히, 이러한 모든 메모리는 물리적으로 메모리 테스터 내에 존재하며, "내부"라는 용어와 "외부"라는 용어는 집적 레벨(integration level)에 보다 관련이 있다. SRAM은 테스터의 중심 기능 회로와 관련된 VLSI(Very Large Scale Integration) 회로의 집적 부품이며, DRAM은 VLSI 스터프(stuff)에 인접하여 장착된 개별적 패키지형 부품이다. SRAM의 양은 상당히 작은(말하자면, 메모리 세트당 대략 일메가비트) 반면, DRAM의 양은 충분하고 선택가능(말하자면, 메모리 세트당 128 내지 1024 메가비트의 범위)하다. SRAM 메모리 세트는 항상 존재하며, ROM(Read Only Memory)인 DUT의 예상 콘텐츠(expected content)를 저장하는 등 임의의 적합한 목적을 위하여 이용될 수 있다. DRAM 메모리 세트는 실제로 선택적(optional)이며, 여러 다른 기능도 있지만, 대표적으로 분석과 그에 뒤이어 이루어지는 수리(repair)를 위한 트레이스(trace) 생성에 이용된다. 테스터는 이용될 수 있는 용도에 있어서 SRAM과 DRAM 메모리 세트간 차이를 심화시키지 않는다. 그 차이는 대개 사이즈의 문제이다. SRAM 메모리 세트는 작은 반면, DRAM 메모리 세트는 거대한 것일 수 있다. 테스트 프로그래밍을 생성하는 사람들은 다양한 메모리 세트가 어떻게 이용될 것인 지에 관한 결정을 내린다.
지금까지 설명한 메모리 테스터는 파이프라인형이다. 파이프라인형이란 전체 작업이나 기능이 본질적으로 일정 수의 메카니즘(파이프라인 스테이지)을 포함하는 일련의 경로에 따라 펼쳐지고, 각각의 메카니즘은 공통 속도(common rate)로 입력 환경(input circumstance)을 수용하고 대응 출력을 생성할 수 있다. 그러므로, 예컨대, DUT로 "다운워드(downward)"를 이끄는 파이프라인 최상부에서 마이크로 제어기 시퀀서(Micro-Controller Sequencer)가 테스트 프로그램의 시작을 알고리즘적으로 프로그램할 수 있다. 이는 "원래(raw)"의 어드레스 또는 "알고리즘 레벨"의 어드레스(최종적으로 DUT로 인가됨)를 제공하되, 아마도 어느 정도 상당한 처리를 한 다음에야 제공할 것이다. 이들 어드레스(때로는 데이터)는, 소정의 ALU를 통과하고 (어드레스만을 위한) 어드레스 매퍼(Address Mapper)가 내부 테스트 메모리 및/또는 데이터 MUX로 인가될 수 있으며, 그리고 그에 따라 어드레스 비트 선택 회로(ADDRESS Bit Select circuit)와, 송신 벡터 매퍼/직렬 변환기 및 수신 벡터 비교 데이터 회로(TRANSMIT VECTOR MAPPER/SERIALIZER & RECEIVE VECTOR COMPARE DATA)와, 벡터 FIFO(45), 그리고 최종적으로 타이밍/포매팅 및 비교 회로(Timing/Formatting & Comparison Circuit)로 인가될 수 있고, 여기서 송신 벡터가 일부 핀 전자장치를 통하여 DUT로 인가된다. 파이프라인의 모든 스테이지가 동일한 지연(delay)을 가지는 것은 아니다. DUT로의 파이프라인에 있어서 동작이 복잡할 수록 그에 관한 스테이지에서 더 많은 시간을 소모할 것이다. 그러나, 모든 다양한 스테이지에 있어서, 지연은 고정되어 있고, 일단 정해지면, 파이프라인 의 전체 끝에서 끝까지의 속도를 방해하지는 않는다. 테스트 프로그램을 실행하는 환경으로 수신 벡터를 다시 "업워드(upward)"시키는 또 다른(그리고 상이한) 파이프라인형 경로가 있다고 할 수 있다.
하나의 테스트 프로그램이 하나의 특정한 세그먼트로 구성되는 소정의 방법에 의하여 메모리 테스터가 구성되는 경우는, 동일한 프로그램 내에 다양한 세그먼트가 구성되는 경우와 달리, 그 구성의 변화로 인하여 파이프라인 스테이지를 부가하거나 삭제할 수 있고, 그때 이용되는 파이프라인 스테이지의 길이를 변경할 수 있으며, 이들 모두가 그 테스트 프로그램의 관련 세그먼트에 대하여 전체적으로 결합된 파이프라인 지연에 영향을 줄 수 있다. 그러나, 이들 결합형 지연은 알려질 것이며, 그 테스트 프로그램 세그먼트의 지속시간 동안 변화하지 않을 것이다.
메모리 테스터로 실행되어질 테스트 프로그램을 개발하고 유지하는데 있어서 알고리즘 능력이 요구된다고 언급한 바 있다. 마이크로 제어기 시퀀서는 루프 내의 중첩 루프와 테스트 결과에 따른 분기에 의한 콤팩트한 형태를 지원한다. 그러나, 파이프라인형 구조를 이용함으로 인하여, 우리가 관심을 가지는 소정의 능력, 특히 DUT 행동에 의하여 야기되는 에러를 파악하고 처리하는 방법 등이 보다 복잡해진다.
"그러한 역기능/예상치 못한 결과가 프로그램 내의 어느 지점에서 발생하는지"를 알아야할 기본적 필요성에 대하여 고려해야 한다. 마이크로 제어기 시퀀서로부터 핀 전자장치로 그리고 다시 반대로의 파이프라인 지연이 느린 프로그램 실행 속도 안에 완전히 포함될 수 있을 만큼 충분히 느린 속도로 테스트 프로그램/DUT 사이클을 구동한다고 가정한다. 파이프라인이 있다는 것을 알 필요가 없을 지도 모른다. (그리고, DUT도 상당히 느릴 것이다!) 이러한 (가공적) 환경 하에서, 테스트 프로그램의 현재 상태와 DUT의 활동성은, 서로 일정한 시간/속도 관계(동기화 관계)에 있을 경우뿐만 아니라, 결코 테스트 프로그램을 위한 명령어 페치(instruction fetch)에 의하여 원인과 그에 따른 결과가 분리되지 않는 "순차적 일치(sequential unison)" 상태에 있을 경우에도 발생할 것이다. 이와 같은 이상적인 환경 하에서, DUT가 고장이 나면, 프로그램 다음 단계에서 응답을 평가하고, 프로그램의 선행 단계에서 에러가 발생하였다고 판정한다. 다음 단계는 프로그래머 의도에 따라서 정해질 것이다. 차후의 참작이나 분석에 대비하여, (프로그램 포인터와 일부 루프 인덱스에 의하여 표시되는 바에 따라서) 고장이 발생한 지점이 "프로그램 내의 어떤 단계인지"를 알고, 더불어 인가된 어드레스 그리고 기타 관련 자극 정보를 단순히 모으기(기록 및 보존)하기 원할 수 있다. 대안적으로, 프로그래머는 고장이 발생하였고 그 고장이 무엇이건 간에 이를 처리하고자 의도되는 또 다른 프로그램 세그먼트가 이미 제공되었다고 예상할 수 있다. 그러므로 프로그램은 어떤 위치로 분기할 것이다. "순차적 일치"의 특성으로 인하여 원인(테스트 프로그램 내에서의 소정의 자극)과 그 효과(DUT로부터의 대응하는 소정의 결과)가 테스트 프로그램을 위한 명령어 페치에 의하여 결코 분리되지 않을 것이기 때문에, 이러한 설계예에서 이들 바람직한 동작 양자 모두가 실제로 가능하다.
그러나 테스트되는 DUT는 그렇게까지 느리지 않고, 메모리 테스터 조작자는 그 테스터가 이용될 속도로 테스트하기 원한다. 또한, 테스트 프로그램은 어떠한 이전 자극이 관련된 에러를 생성하였는지 여부에 관하여 즉각적으로 조사하지 않을 것이다. 순차적 일치의 특성을 보유하는 초고속 하드웨어를 구성하지 않고서는, 파이프라인 지연이 명백해지도록 할 수밖에 없다. 그에 따라, "프로그램 내 어디에서 고장이 발생했는가"하는 기본적 질문은 에러 발생시 분기 작업을 허용할 필요가 있는 메카니즘으로서 답을 제공하기가 훨씬 어려워진다. 어떠한 경우에도, 파이프라인의 최상부에서 테스트 프로그램은 자극이 발생한 장소를 이미 지나쳐버렸을 것이다. 이미 그러한 자극점이 다수 발생하였을 수 있고, 그 이후 조건 분기를 수행하였을 수도 있다. 즉 에러 플래그가 최종적으로 세트되고 이후 프로그램에 의하여 이를 테스트한 경우, 이에 관하여 어떠한 사건이 발생하였는지를 알기가 어렵다. 또한 그 시점에 있어서, 여러 어드레스 등 정보를 알기도 곤란하다. 대개 현재의 환경은 그 당시 환경과 매우 다르다. 구성 환경 모두를 되돌리는 것은 곤란한 일이다. 테스트 프로그램에서 발생하는 사건은 DUT에 일정한 효과를 가져오기 이전에 지나가 버린다는 사실을 어떻게 효과적으로 다룰 수 있을 것인지가 문제이다. 이를 해결할 수 없다면, 메모리 테스트에 있어서 매우 중요한 결점이 될 것이다.
전술한 문제점은, 어떠한 에러가 발생하고 난 다음 그에 관하여 차후에 DUT에서 에러가 발생하였을 때, 메모리 테스터 테스트 프로그램 내의 적절한 위치로 분기를 돌리고, 그 알고리즘 제어 상태를 복구하는 문제라 할 수 있다. 프로그램 실행 환경으로부터 DUT로 어드레스 및 데이터 자극을 연결시키는 송신 벡터 파이프라인에서의 지연과 DUT로부터 테스트 프로그램의 실행 환경으로 그 응답을 다시 연결시키는 수신 벡터 파이프라인에서의 추가적 지연으로 인하여, 프로그램은 자극이 발생한 지점을 넘어서 임의적으로 진행할 수 있게 된다. 임의적으로 진행하기 때문에 그 에러에 관련되었던 정확한 환경을 판정하는 것이 어려워진다. 에러 신호에 근거한 분기로 테스트 프로그램 일부를 재시작할 수 있으나, 이는 테스트 프로그램 실행과 같이 동적으로 변화하는 테스트 알고리즘 제어 정보를 더 필요로 하는 템플릿(template)에 지나지 않을 것이다. 해결책은 메모리 테스터가 다양한 히스토리 FIFO(그 히스토리 FIFO의 위치에 관련하여, 송신 및 수신 벡터 파이프라인 지연의 합을 계산하도록 깊이가 조정됨)를 구비하도록 하는 것이다. 에러 플래그가 발생하면 바람직한 프로그램 상태와 알고리즘 제어 정보가 해당 히스토리 FIFO의 바닥에 저장되는데, 이는 원할 때 다시 이용할 수 있다. 이러한 기법은 테스트 프로그램이 고유의 DUT 자극(독립적)을 발생시키는 ALU를 이용하는 경우뿐만 아니라, 테스트 프로그램/ALU가 매개 버퍼 메모리(intermediate Buffer Memory)(그 콘텐츠는 DUT가 수행하는 테스트 속성에 도움이 되는 정보임)를 어드레스하는 경우에도 쉽게 적용할 수 있다. 전자의 경우 ALU 히스토리 버퍼가 있는 반면, 후자의 경우 버퍼 메모리 히스토리 FIFO가 있다. ("히스토리 FIFO"라는 용어는 개별적 FIFO들의 클래스에 대한 일반 명칭이다. "히스토리 FIFO"라고 명명되는 FIFO는 없으며, 그 클래스에 속하는 특정 멤버만이 존재한다.)
나아가, 테스트 프로그램 작성자는 분명히, 여러 가지 테스트를 수행하기 위 하여 프로그램이 여러 가지 메모리 테스터 구성을 갖추는 동안 잇따라 일어나는 다양한 파이프라인 깊이를 알아내는 일로 곤란을 겪고 싶어하지는 않을 것이다. 따라서, 그 구성을 추적하고 이에 따라 다양한 히스토리 FIFO의 깊이를 조정하는 메카니즘을 이용한다. 또한 테스트 프로그램 레벨에서 자극이 발생한 시점을 표시하는 소정의 "시작" 메카니즘(이로 인하여 차후 관련된 에러가 검사(check)될 것임)이 필요로 되며, 바람직한 이용 깊이(desired depth-in-use)를 위하여 히스토리 FIFO가 채워져 있는 정도(degree)가 그 "시작" 표시에 뒤이어 판정된다.
테스트 프로그램은 그 관련된 자극 이후 상당한 시간 동안 에러가 발생하였는지를 조사하지 않을 것이다. 히스토리 FIFO가 그 사이에 새로운 자극을 계속하여 저장하도록 한다면, 에러가 발생한 다음, 바람직한 대응 자극은 유실될 것이다. 따라서, 에러 발생시 히스토리 FIFO의 콘텐츠를 고정시키는 메카니즘을 포함한다.
ECR(Error Catch RAM)은 종종 DUT 테스트 진행 동안에 채워지고 나서 그런 다음 DUT를 실제로 이용하지 않는 추가적 테스트 프로그램 활동에서 조사된다. 다양한 파이프라인 지연으로 인하여 DUT에 인가되어 ECR에 기록(logged)되어 있는 특정한 에러 표시를 생성하도록 한 어드레스를 판정하는 것이 곤란하게 된다. 이에 대비하는 통상적 유틸리티 동작은 매우 느리다. 히스토리 FIFO 메카니즘이 ECR 조사에 적용될 수 있고 어떠한 시간적 불이익없이 ECR 히스토리 FIFO는 답을 제공할 것이다.
최종적으로, 테스트 프로그램 내의 분기 명령어가 테스트 프로그램 내에 존재하는 원인에 의하여 에러 플래그 값을 판정하는데 필요한 파이프라인 지연보다 더 빠르게 너무 일찍 응답하지 않도록 히스토리 FIFO를 구현하는데 필요한 오버헤드가 확장될 수 있다.
도 1을 참조하면, 본 발명의 원리에 따라 구성된 비휘발성 메모리 테스트 시스템에 대한 단순화된 블록도(1)가 도시되어 있다. 특히, 도시된 시스템은 36개까지의 개별적 DUT에 있어서, 각각 64개의 테스트 포인트(test point)에서, 동시에 테스트를 수행할 수 있고, 64개보다 더 많은 테스트 포인트를 가지는 DUT를 테스트하기 위하여는 테스트 리소스 집합(resource collection)의 구성 요소들이 서로 본딩되도록 재구성할 수 있다. 이들 테스트 포인트는 아직 다이싱(diced)되지 않고 패키징(packaged)되지 않은 일부 집적 회로 웨이퍼 상에 위치하고 있거나, 또는 패키징된 부품의 핀일 수도 있다. "테스트 포인트"라는 용어는 신호(예컨대, 전원(power supply), 클록(clock), 데이터 입력(data input))가 인가되거나 신호(예컨대, 데이터 출력)가 측정될 수 있는 전기적 위치를 지칭한다. 업계 관행에 따라 테스트 포인트를 "채널(channel)"이라고 지칭한다. 앞서 언급된 "서로 본딩될 테스트 리소스의 집합"은 36개만큼의 테스트 사이트라고 이해될 수 있는데, 각각의 테스트 사이트는 테스트 사이트 제어기(Test Site Controller)(4)와, (64개 채널) DUT 테스터(6)와, DUT(14)에 대하여 실제 전기적으로 연결된 (64개 채널) 핀 전자 장치(Pin Electronics) 집합을 포함한다. DUT 테스트가 64개 또는 그 이하의 채널을 필요로 하는 경우에는, 그 DUT에 대하여 테스트를 수행하기에 하나의 단일 테스 트 사이트로 충분하고, 말하자면, 예컨대, (도 1에 도시된 바에 따라) 테스트 사이트(#1)가 형성되어 "단일 사이트 테스트 스테이션"으로서 동작한다. 반면, 전술된 소정 형태의 재구성이 유효한 경우에는, 두 개(또는 그 이상의) 테스트 사이트가 서로 본딩되어 128개의 채널로 구성되는 하나의 대규모 등가의 테스트 사이트로 기능한다. 따라서, 도 1에 도시된 예를 다시 참조하면, 이른바 테스트 사이트(#35, #36)는 "2-사이트 테스트 스테이션"을 형성한다.
반대의 경우를 간단히 생각해보면, 단일 DUT를 테스트하는데 전체 테스트 사이트가 필요하다거나, 단일 테스트 사이트가 단지 하나의 단일 DUT만을 테스트할 수 있다고 생각해서는 안 된다. 웨이퍼가 둘, 셋 또는 네 개(아마도, 그러나 반드시 이 숫자여야 하는 것은 아니고, 그 정도)의 다이(die)를 가지며, 그 테스트 채널 요청의 합계가 64개 또는 그 이하의 채널이라고 가정한다. 그러한 DUT(15a-d)는 단일 테스트 사이트(예컨대, 도 2에 도시된 테스트 사이트(#2))에 의하여 동시에 테스트될 수 있다. 각 테스트 사이트의 범용 프로그램 가능성(general purpose programmability)(당연한 순서에 따라 설명될 소정의 하드웨어 특정에 의하여 증강됨)에 의하여 이것이 가능하다. 실제로, 테스트 사이트 리소소 중 일부가 DUT중 하나를 테스트하는데 이용되는 한편 다른 부분은 다른 DUT를 테스트하는데 이용되도록 테스트 사이트에 의하여 실행될 테스트 프로그램을 작성할 수 있다. 결국, 처음 두 개의 논리적 유니언(union)인 제 3 DUT가 있는 경우, 단일 테스트 사이트로 그 제 3 DUT를 테스트할 수 있다고 할 것이며, 즉 말하자면 그 "소자 DUT(component DUT)"를 유사하게 테스트할 수 있어야 한다. 물론, 두 개의 "소자 DUT"에 있어서 어느 것이 합격(pass)인지 고장(fail)인지를 개별적으로 추적하는 반면 "제 3" DUT의 경우 통합된 답이 도출된다는 점에서 중요한 차이가 있다. 즉, 제 3 DUT에 있어서는 어떤 부분에서 고장이 발생하는지에 관한 문제점이 있다. 또한 이와 달리, 결함이 있는 DUT에 대한 구동 신호를 제거하거나 제한하고, 어떤 DUT가 고장이라고 표시되는지에 근거하여 테스트 프로그램에서 분기를 일으키는 한편, 동시에 그 테스트 프로그램이 쓸모없이 멀티쓰레드(multi-thread)되지 않도록 해야하는 문제점도 있다. 이와 같은 단일 테스트 사이트의 "다수-테스트 스테이션" 능력에 관한 일부 단순한 기능은 정말로 간단하지만, 나머지는 복잡하다. 다수-DUT 테스트는 두 개 이상의 테스트 사이트를 서로 본딩하는 개념과 혼동되어서는 안된다.
이러한 테스트 사이트 재구성의 개념이 없다면 테스트 사이트와 테스트 스테이션간에는 어떠한 차이도 없을 것이고, 두 용어 중 하나는 없어도 될 것이다. 그러나, 사실, 테스트 스테이션의 수가 테스트 사이트의 수와 동일할 필요는 없다는 것을 쉽게 알게 될 것이다. 과거에는, 때때로 간단한 다수의 DUT 테스트를 위하여 테스트 사이트가 분할되어 더 많은 테스트 스테이션을 생성하였기 때문에(DUT는 전체 테스트 사이트를 사용할 만큼 복잡하지 않았다) 그 수가 서로 달랐을 수 있다. 그러나, 지금은, 그 차이가 다수-사이트 테스트 스테이션을 형성하기 위하여 테스트 사이트가 서로 본딩된다는 점에 기인할 수 있다(DUT는 단일 테스트 사이트로 처리하기에 너무 복잡하다).
그런 다음, 이어서, 테스트 시스템 제어기(2)는 시스템 버스(3)에 의하여 36 개의 테스트 사이트 제어기(그 이름이 첨자(#1) 내지 첨자(#36)로 끝남)(4a-4z)로 연결된다. (사실, a-z까지의 첨자는 26개뿐이며 36개까지가 가능하지 않다. 그러나 이러한 사소한 편법을 사용하는 것이 숫자로 된 참조 문자에 숫자로 된 첨자를 붙이는 것(이는 잠재적으로 큰 혼란을 야기할 수 있음)보다 더 바람직한 것으로 보인다.) 테스트 시스템 제어기(2)는 비휘발성 메모리 테스트 작업에 관련되는 적합한 테스트 시스템 제어 프로그램을 실행하는 컴퓨터(예컨대, NT를 실행하는 PC)이다. 테스트 시스템 제어 프로그램은 바람직한 테스트를 달성하기 위한 작업(및 복잡도)을 계층적으로 분할하여 매우 높은 수준의 추상화(abstraction)를 달성한다. 테스트 시스템 제어기는 어떠한 프로그램이 서로 다른 테스트 사이트에서 수행되고 있는지 뿐만 아니라 어떠한 프로그램이 필요에 따라 DUT와 테스트 프로브를 바꾸는 로봇 시스템(도시되지 않음)을 감독하는지 결정한다. 테스트 시스템 제어기(2)는 일부 테스트 사이트는 단일-사이트 테스트 스테이션으로 수행하도록 프로그램되고, 일부는 다수-DUT 테스트 스테이션으로 수행하도록 프로그램되는 한편, 다른 것들은 서로 본딩되어 다수-사이트 테스트 스테이션을 형성한다는 개념을 지지하는 방식으로 기능할 수 있다. 분명히, 그러한 환경에서는, 테스트되어야 하는 상이한 부품들이 있으며, 그 상이한 부품들에 대하여는 상이한 테스트가 수행되는 것이 가장 바람직하다. 유사하게, 모든 단일-사이트 테스트 스테이션이 동일한 유형의 부품을 테스트하도록 요구하는 경우는 없으며, 다수-사이트 테스트 스테이션에 대하여도 그러한 요구를 하는 경우는 없다. 따라서, 테스트 시스템 제어기(2)는 필요한 테스트 사이트 본딩을 달성하는 명령을 발행하고 그런 다음 다양한 테스트 스테이 션에서 이용될 적절한 테스트 프로그램을 호출하도록 프로그램된다. 테스트 시스템 제어기(2)는 또한 그 테스트로부터 얻어진 결과에 관한 정보를 수신하여, 잘못된 부품을 폐기하기 위한 적절한 행동을 취할 수 있으며 공장 설정(factory setting)에서 소위 생산 프로세스를 제어하는데 이용될 수 있는 다양한 분석에 관한 기록(log)을 유지할 수 있다.
테스트 시스템 그 자체는 상당히 크고 복잡한 시스템이며, 핀 전자장치(Pin Electronics)(9)에 연결된 프로브 하에 장래의 다이(웨이퍼가 아직 다이싱되지 않았음) 하나 이상을 순차적으로 배치하는 스테이지 상에 웨이퍼를 적재하는데 로봇 서브시스템을 이용하는 것이 일반적이며, 여기에서 그 장래의 다이가 테스트된다. 테스트 시스템은 또한 적절한 캐리어 상에 적재된 패키지형 부품을 테스트하는데 이용될 수도 있다. 얼마나 많은 테스트 사이트가 테스트 스테이션 형성에 이용되는지, 또는 얼마나 많은 테스트 스테이션이 테스트 사이트 상에 있는지에 관계없이, 각 테스트 스테이션에 관련하여 적어도 하나의 테스트 사이트 제어기가 (이하에서 설명되는 바와 같이) 이용될 것이다. 테스트 사이트 제어기는 내장형 시스템으로서 VOS(VersaTest O/S)라 불리는 전용 오퍼레이팅 시스템(proprietary operating system)을 실행하는 36 내지 64MB의 프로그램 및 데이터 결합형 메모리를 구비한 Intel i960 프로세서일 수 있으며, 이는 종래의 제품(예컨대, Agilent V1300 또는 V3300)에서도 비휘발성 메모리를 테스트하기 위해 이용되었다. 우선은, 단일-사이트 테스트 스테이션의 상황만을 고려한다. 명확한 예를 위하여, 테스트 사이트(#1)는 테스트 스테이션(#1)으로 기능하여, WHIZCO 부품 no.0013을 테 스트한다고 가정한다. 테스트 형태는 백 개 정도의 다양한 유형의 테스트(전압 레벨(voltage level), 펄스 폭(pulse width), 에지 위치(edge position), 지연(delay), 그리고 대규모 단순 저장 및 정보 패턴의 선택적 검출을 변화시키고 모니터링함)에 관련되며, 각 유형의 테스트는 DUT마다 수백만의 개별적 메모리 사이클과 관련된다. 최상위 레벨에서, 테스트 시스템의 오퍼레이터는 테스트 시스템 제어기(2)에 대하여 테스트 스테이션(#1)을 이용해서 WHIZCO 0013을 테스트하기 시작하도록 지시한다. 결국 테스트 시스템 제어기(2)가 테스트 사이트 제어기(#1)(4a)(내장형 [컴퓨터] 시스템임)에 대하여 관련된 프로그램, 즉 TEST_WHIZ_13을 실행하도록 지시한다. 테스트 사이트 제어기(#1) 환경에서 이미 프로그램이 이용 가능하다면, 단순히 그것을 실행한다. 그렇지 않다면, 테스트 시스템 제어기(2)가 이를 보완한다.
원칙적으로, 프로그램 TEST_WHIZ_13은 독립적(self-contained)일 수 있다. 그러나 만약 그렇다면, 분명히 상당히 큰 규모일 것이며, 이런 경우 테스트 사이트 제어기(4a)내의 내장형 시스템의 프로세서가 바람직한 속도, 심지어 하나의 DUT 메모리 사이클로부터 다음 사이클까지 일정한 속도로 테스트를 실시할 수 있을 만큼 충분히 빨리 실행하도록 하는 것이 곤란해질 수 있다. 따라서, 어드레스 시퀀스와 기록될 또는 판독 동작에서 예상되는 관련 데이터를 생성하는 하위 레벨의 서브루틴 유형 동작은 필요에 따라서 DUT 테스트(6)내에 위치한 프로그램 가능 알고리즘 메카니즘에 의해 발생되지만, 이는 테스트 사이트 제어기(4)내의 내장형 시스템에 의해서 실행되는 프로그램과 동기식으로(in synchrony) 동작한다. 이것을, 소정의 하위 레벨 서브루틴 유사 동작(subroutine-like activity) 및 DUT 메모리 사이클을 개시 작업을 DUT(14)의 하드웨어 환경에 보다 밀접한 메카니즘(DUT 테스터)으로 전달(export)하는 것으로 생각하기 바란다. 일반적으로 말해서, 테스트 시스템 제어기(2)가 테스트 사이트 제어기에 대하여 테스트 프로그램을 갖추도록 하는 경우마다, 테스트 사이트 제어기용 프로그래밍에서 지정되거나 혹은 필요로 되는 전체 동작을 달성하는데 필요한 적절한 하위 레벨 구현 루틴(아마도 테스트되는 메모리에 특정한 루틴)을 관련 DUT 테스터에게 공급한다. 그 하위 레벨 구현 루틴은 "패턴"이라는 용어로서, 일반적으로 이름 붙여진다(고급 프로그래밍 언어에서는 함수 및 변수라고 이름붙여지는 것과 마찬가지임).
각각의 테스트 사이트 제어기(#n)(4)는 사이트 테스트 버스(#n)(5)에 의하여 그 관련된 DUT 테스터(#n)(6)로 연결된다. 테스터 사이트 제어기는 사이트 테스트 버스를 이용하여 DUT 테스터의 동작을 제어하고 그로부터 테스트 결과에 관한 정보를 수신한다. DUT 테스터는 테스트 형태에 관련된 다양한 DUT 메모리 사이클을 고속으로 생성할 수 있으며, "판독" 메모리 사이클의 결과가 예상된 것과 같은지를 판정한다. 본질적으로, 대응하는 유용한 판독 및 기록 DUT 메모리 사이클 시퀀스를 개시함으로써 테스트 사이트 제어기로부터 전송된 명령 또는 작동 명령어에 응답("패턴이라 불림")한다(즉, 대응하는 패턴을 실행한다). 개념적으로, DUT 테스터(6)의 출력은 DUT로 인가될 자극 정보가 되고, 또한 DUT로부터의 응답 정보를 수용한다. 이러한 자극/응답 정보(7a)는 DUT 테스터(6a) 및 핀 전자 장치(#1) 어셈블리(9a) 사이를 통과한다. 핀 전자 장치 어셈블리(9a)는 DUT(14)로 인가될 수 있 는 64개까지의 프로브를 지원한다.
전술한 자극 정보는 DUT 테스터에서 이용되는 소정의 논리 장치군의 전압 레벨에 따라서 표현되는 병렬 비트 패턴의 시퀀스(즉, "송신 벡터" 및 예상되는 "수신 벡터"의 시퀀스)이다. 자극/응답내의 비트 위치와 다이로 가는 프로브 사이에 구성 가능한 매핑(configurable mapping)이 있으며, DUT 테스터(6)가 이 매핑을 이해한다. 개개의 비트는 그 타이밍 및 에지 위치에 관하여 올바르지만, 매핑에 더하여 DUT로 인가될 수 있을 때까지 전압 레벨 시프팅(voltage level shifting)을 필요로 할 수 있다. 이와 유사하게, 자극에 의하여 DUT에서 발생하는 응답은 DUT 테스터로 다시 입력하기 적당하다고 생각되기까지 버퍼링(buffering)과 (역(reverse)) 레벨 시프팅을 할 필요가 있을 수 있다. 이런 레벨 시프팅 작업은 핀 전자 장치(9a)의 책임이다. WHIZCO 0013을 테스트하기 위하여 필요한 핀 전자 장치 구성은 ACME사 부품을 테스트하는데 유효하지 못할 것이고, 아마도 심지어 다른 WHIZ사 부품에 대하여도 그러하지 못할 것이다. 그러므로, 핀 전자 장치 어셈블리가 또한 구성 가능할 필요가 있음을 알 것이다(그러한 구성 가능성은 PE Config 라인(8a)의 기능임).
이상으로 단일 테스트 사이트가 DUT 테스트를 위하여 어떻게 구성되는지에 관한 간단한 구조적 개요를 설명하였다. 이제 많은 테스트 사이트가 동작하는 경우 일어날 수 있는 문제에 관하여 논의하기로 한다. 예비적으로, 다수의 테스트 사이트를 가지는 테스트 시스템을 구성하는 바람직한 실시예를 설명할 것이다. 많은 측면에 있어서, 이제 설명하고자 하는 정보 중 일부는 고객 선호도와 비용 이익 분석의 시장 조사를 기초로 하는 선택의 문제이다. 어찌되었건, 이들 중 하나를 구성하기 위하여 일정한 선택을 하여야하며, 일단 선택이 이루어지면 전체 시스템을 통하여 명백한 특정 결과가 발생한다. 어쨌든 일반적으로는, 테스트 시스템의 하드웨어 특성에 관한 더 많은 개요를 설명하는 것이 유용할 것이다. 특성들 중 일부는 우연에 의한 것이라고 할지라도, 그럼에도 불구하고 이러한 특성들을 아는 것이 본 발명의 설명에 이용되는 다양한 실시예를 이해하도록 도울 것이다.
먼저, 네 개의 다소 큰 카드 케이지(card cages)를 생각한다. 각 카드 케이지는, 전원(power supplies) 및 워터 쿨링(water cooling)(팬(fan)은 청정실 환경에서 오염원이 될 수 있으며, 완전 로드형 시스템(fully loaded system)에 있어서 수십 KW의 분산열(dissipated heat)을 제거하기 위하여 공기를 냉각하는 것보다는 냉각수(chilled water)를 이용하는 편이 저렴함)에 더하여, 본체 기판(mother board)과, 프론트 플레인(front plane)과, 백 플레인(back plane)을 가진다. 각 카드 케이지에 대하여 9개까지의 어셈블리가 배치될 수 있다. 각각의 어셈블리는 테스트 사이트 제어기와, DUT 테스터와, 핀 전자 장치를 포함한다. 테스트 사이트 제어기가 서로 본딩되는 방법의 일반적 개요를 설명할 것이며, 데이지 체인(daisy chain)을 생성하기 위하여 버스를 일부 이용할 것이다.
본론에서 벗어나 "데이지 체인"이란 용어에 관하여 간단히 설명하겠다. 시스템 요소 A, B, C 및 D가 있다고 가정한다. 이들이 그 순서로 데이지 체인 되어야 한다고 가정한다. A를 떠나 B로 가는 정보 및 제어 경로가 있고, 그런 다음 B는 B를 떠나 C로 가도록 트래픽을 선택적으로 전달할 수 있으며, 그런 다음 C는 C 를 떠나 D로 가도록 트래픽을 선택적으로 전달할 수 있다고 말할 수 있다. 반대쪽 방향으로의 트래픽에 관하여도 이러한 동일한 종류의 배열이 존재할 수 있다. 데이지 체인은 종종 우선 순위 방안을 구성하고자 이용되는데, 여기서는 다양한 테스트 사이트 제어기들 사이에 마스터/슬레이브 관계를 생성하는데 이용할 것이다. 이들 데이지 체인 유형의 통신 장치는 "BUS" 대신에 첨자 "DSY"로 표시될 것이다. 따라서, 명령어/데이터 버스 대신에 명령어/데이터 DSY라고 말할 수 있다. 정보가 "B로 입력되어 선택적으로 전달된다"는 개념은 트래픽이 전달 이전에 별도의 도전체 세트로 복제되어야 한다는 것을 의미할 수 있다. 그러한 방법은, 성능상의 이유가 아니라면 어드레스 가능한 엔티티를 가지는 정규 버스와 더욱 유사한 것일 수 있다. 프로그램 가능 어드레스 매핑 장치와 다운스트림 테스트 사이트 제어기의 일부를 "수면(to sleep)" 상태에 있게 할 수 있는 능력에 의하여, 단일 버스가 논리적으로 다수의 데이지 체인처럼 보이게(즉, 그렇게 기능하게) 구성될 수 있다. 결국, 데이지 체인은 명령어와 제어 정보를 위한 고성능 경로라고 할 수 있고, 만약 그렇지 않다면, 마스터/슬레이브 조합(다수-사이트 테스트 스테이션)이 단일 테스트 사이트만큼 빨리 작동한다고 예상할 수 없다. 데이지 체인 성능의 이점을 위하여, 다양한 DSY는 그 각각의 카드 케이지를 벗어나지 않는다. 이러한 결정의 효과는 어떠한 테스트 사이트(그리고 또한 얼마나 많은 테스트 사이트)가 서로 본딩될 수 있는지에 관하여 일정한 제한을 설정한다. 원칙적으로, 이러한 제한이 반드시 요구되는 것은 아니며, 또한 그에 관하여 기술적으로 실현 가능성이 없는 것도 아니지만(실현 가능할 수 있음), 카드 케이지에는 이미 9개의 테스트 사이트가 있 으므로, DSY를 확장하는 것은 상대적으로 적은 이점에 비하여 너무나 많은 부가 비용을 추가하는 것처럼 보인다.
도 1에 관한 설명을 재개하면, 네 개의 카드 케이지에 존재하는 다양한 테스트 사이트 제어기(4a-4z)를 고려한다(각각의 카드 케이지는 9개의 테스트 사이트 제어기를 구비함). 이들을 참조 번호(4a-4f), 참조 번호(4g-4m), 참조 번호(4n-4t) 및 참조 번호(4u-4z)라고 표시한다. (이전에 설명했던 바와 같이, 이들은 명목상 26개의 첨자뿐임은 신경 쓸 필요가 없으며, 독자는 어딘가 또 다른 10개의 첨자 심볼이 있을 것이라고 생각하기 바란다.) CMD/DAT DSY(17a)(명령어 및 데이터 데이지 체인)는 하나의 카드 케이지에 있는 테스트 사이트 제어기(4a-4f)를 상호 연결하는 반면, 다른 CMD/DAT DSY(17b)는 또 다른 카드 케이지에서 테스트 사이트 제어기(4g-4m)를 상호 연결한다. 나머지 카드 케이지에서도 동일한 장치가, 테스트 사이트 제어기(4n-4t)와 테스트 사이트 제어기(4u-4z)를 각각 상호 연결한다. 앞서 DSY는 카드 케이지를 벗어나지 않으며, DSY를 실제로 형성하는 버스의 "테일 엔드(tail end)"가 카드 케이지를 벗어나지 않고 또 다른 카드 케이지에서 다음 세그먼트의 헤드(head)가 된다고 설명한 바 있다. 대신에, 테스트 시스템 제어기(2)로부터의 시스템 버스(3)는 테스트 사이트 제어기 전체로 연결되며, 각각은 카드 케이지를 벗어나지 않는 DSY 세그먼트의 헤드에서 마스터가 될 수 있다.
지금까지 논의해 온 CMD/DAT DSY(17a-17d)는 다양한 테스트 사이트 제어기(4a-4z) 사이에 존재한다. SYNC/ERR DSY(18a-18d) 및 DUT 테스터(6a-6z)에 대하여도 유사한 장치가 있다. SYNC/ERR DSY(18)에 의하여 전달된 동기화 및 에러 정보는 DUT 테스터가 일치하여 작동할 수 있게 해준다. 이들 두 개의 데이지 체인(17,18)은 약간씩 다른 유형의 정보를 전송하지만, 각각은 하나 이상의 테스트 사이트를 하나의 테스트 스테이션으로 서로 본딩하는 동일한 일반적 메카니즘의 일부로서 존재한다.
이제 도 2를 참조하면, 도 1의 DUT 테스터를 확장하여(36개까지 있을 수 있음) 도시하는 단순화된 블록도가 도시되어 있다. 지금은 하나의 경우만을 설명하는 것으로 충분하다. 도 2를 언뜻 보면, 상당히 조밀하게 구성된 것으로 보일 것이며, 특히 "단순화된" 블록도로서는 더욱 그러하게 보일 것이다. 블록도에 표시된 DUT 테스터(6)에 있는 것들 중 일부는 기능적으로 상당히 복잡하고, "오프 더 쉘프(off the shelf)" 형태로는 이용가능하지 않다. 여기서 두 가지 포인트를 지적할 필요가 있다. 첫 번째, 도면 세트에 도 2를 포함하는 주요 목적은 전체 비휘발성 메모리 테스트 시스템(1)내에서의 중요한 동작 환경의 기본 특성을 설명하고자 하는 것이다. 도 3과 그 이후의 도면들에 의하여 더욱 상세히 설명되는 본 발명은 다음의 도 2에 관한 설명에서 시작되는 메카니즘을 확장한 메카니즘이나 도 2로부터 그 동기적 전제 조건(motivational premise)이 부여되는 새로운 메카니즘일 것이다. 어느 쪽이든, 본 명세서를 작성하는 동안은 독자 앞에 어떤 것이 있는지 정확히 알 수가 없다. 현재의 목표는 수많은 바람직한 실시예에 관한 서로 다른 상세한 설명을 위하여 도움이 되는 단순화된 시작점을 제공하여, 그 상세한 설명 각각이 적절한 정도로 간결해지도록 하는 것이다(서로 다른 발명 각각에 있어서 모든 것을 설명하는 하나의 "점보(jumbo)" 명세서가 되지 않도록). 두 번째는, 확대 된 또는 확장된 요소가, 대개 전체적으로는 도 2와 일치하지만, 그 단순화된 버전과 정확하게 "매치(match-up)"되지는 않는 정보를 포함할 수 있다는 점이다. 이는 에러가 있다거나 또는 이들이 치명적으로 일관성이 없다는 것을 의미하는 것은 아니며, 때때로 무엇인가를 단순화하여 미니어처로 그 정확한 이미지를 나타내는 것이 곤란하거나 불가능하기 때문에 발생하는 것이다. 이러한 상황은 지도에서의 경우와 유사하다. 표준 사이즈의 콜로라도 지도는 I-70상에서 동쪽으로 가는 경우 덴버에서 I-25를 따라 북쪽으로 갈 수 있는 것을 보여줄 것이다. 이는 좌회전처럼 보인다. 이는 과거에는 실제로 좌회전이었으나 지금은 그렇지 않고, 그 교차로에 대한 상세한 지도에서 보면 일련의 구성 요소적 회전과 사이에 끼어있는 사거리가 있음을 알 수 있을 것이다. 그러나 누구도 그 표준 사이즈 지도가 잘못되었다고 말할 수 없으며, 그 추상화 레벨에 있어서는 올바른 것이다. 마찬가지로, 도 2는(상당히 복잡하게 보이는 그 외관에도 불구하고) 실제로 중간 레벨의 추상화로써 동작하는 간이한 것이지만, 일부 외관상 좌회전이 단순한 좌회전만은 아닌 경우도 있다.
도 1에 도시된 바와 같이, DUT 테스터(6)로의 주 입력(major input)은 하나의 테스트 사이트 버스(5) 인스턴스인데, 이는 관심의 대상이 되는 DUT 테스터(6)의 인스턴스와 연관된 테스트 사이트 제어기(4)로부터 시작된다. 테스트 사이트 버스(5)는 테스트 사이트 버스 상의 트래픽을 링 버스(Ring Bus)(85) 또는 VT 버스(89) 상의 트래픽으로 변환하는 멀티버스 제어기(multi-Bus Controller)(88)에 결합된다. 반대로 링 버스 트래픽이 VT 버스 트래픽으로 변환될 수도 있다. 도 2 의 거의 모든 부분은 대규모 집적 회로의 일부이며, (간단하게 하기 위하여 하나의 엔티티로 도시되어 있지만) 타이밍/포매팅 & 비교 회로(이하에서 설명됨)는 실제로 그러한 IC 8개로 이루어져있다. 다양한 Ext. DRAM(그 일부는 또한 내부 테스트 메모리(87)의 일부분임(도 3 참조))을 제외하고는, 도 2의 스터프 나머지 대부분은 APG(Automatic Pattern Generator)라 불리는 또 다른 대규모 IC의 일부이다. 링 버스(85)는 DUT 테스터(6)의 APG 부분 내에서 주요한 구성 요소를 배열하고, 동작 모드를 설정하는 등의 목적을 위한 범용 메카니즘간(inter-mechanism) 통신 경로이다. 또한 여러 APG 구성 요소사이에 매우 넓고 빠른 많은 전용 경로가 있다. VT 버스(89)는 DUT 테스터 그 자체내부에서 이용하는 IC 대 IC 버스이다.
링 버스(85)는 테스트 사이트 제어기가 DUT 테스터(6)의 APG 부분과 통신하는 메카니즘이다. 링 버스(85)는 마이크로 제어기 시퀀서(19)(이는 특수 목적 마이크로프로세서에 비유될 수 있음)와 결합된다. 넥스트 어드레스 계산기(Next Address Calculator)(102)에 의하여 생성된 어드레스를 이용하여, 마이크로제어기 시퀀서는, 그 마이크로 제어기 시퀀서(19)의 내부의 프로그램 메모리(PGM SRAM(20)) 또는 그 외부의 프로그램 메모리(EXT. DRAM(21)) 중 하나일 수 있는, 프로그램 메모리에 저장된 프로그램으로부터의 명령을 페치(fetch)한다. 이들 두 개의 메모리가 프로그램 카운터(또는 명령 페치 어드레스)로서 역할하는 본질적으로 논리 공통 어드레스(63)인 것에 의해 어드레싱되고, 둘 중 어느 하나가 수행될 프로그래밍의 소스가 될 수 있으나, (1) 임의의 시간 주기 동안에는 메모리 중 오직 하나만이 명령어 페치 메모리 사이클을 수행하고, (2) 실제로 두 메모리는 전기 적으로 상이한 신호에 의해 어드레싱된다는 점에 유의해야 한다. SRAM은 고속이고 진정한 임의 액세스를 허용하지만, 마이크로시퀀스 제어기(19)(대규모 APG IC의 일부임)내의 유용한 공간을 소모하기 때문에, 그 크기가 제한된다. 외부 DRAM은 많은 양의 조절 가능한 용량으로 제공될 수 있지만, 선형 실행(linear execution)으로 이루어지고 어떠한 분기도 포함하지 않는 순차적 청크(chunk)로 액세스될 때에만 고속이다. 알고리즘적으로 집중적인 것은 SRAM(20) 프로그래밍이 대개 흔한 반면, 초기화 루틴과 무작위 데이터나 비정규 데이터 등과 같이 알고리즘 프로세스에 의해 그리 잘 생성되지 않는 요소에 대하여는 EXT. DRAM(21)가 가장 적합하다.
넥스트 어드레스 계산기(102)는, 어느 명령어로의 무조건 분기(unconditional jump), 또는 조건 분기나 조건적 서브루틴 명령어(이는 다수 DUT 동작을 위하여 제공되는 여러 PROGRAM CONTROL FLAGS(25), OTHER FLAGS(55), 그리고 명확성을 위하여 별도로 도시된 기타 신호(DFE 0:3(103) 및 DPE 0:3(104))에서 조절됨)에 응답하여, 실행되는 테스트 프로그램에서 분기를 구현할 수 있다.
마이크로 제어기 시퀀서(19)에 의하여 페치되고 수행되는 명령어 워드는 208비트로 꽤 길다. 명령어 워드는 13개의 16비트 필드로 구성된다. 이들 필드는 대개 마이크로 제어기 시퀀서 외부의 적합한 메카니즘을 위하여 페치된 명령 정보를 나타낸다. 그러한 필드는 그 관련된 메카니즘에 전용된다. 하나의 ALU INSTRUCTION(22) 세트가 8개의 16비트 ALU 집합(24)에 제공되고, 이와 다른 ALU INSTRUCTION 세트가 DUT 테스터 도처에 분포된 다양한 기타 메카니즘에 분배된다. 후자의 경우가 "VARIOUS CONTROL VALUES & INSTRUCTIONS"(42) 라인 및 범례(legend)에 의하여 표시된다.
8개의 16 비트 ALU(24) 각각은 관련된 16비트 결과 레지스터(result register)(각각의 ALU는 또한 다른 여러 레지스터도 포함함)에 기초하여 구성된 통상적 산술 명령 레퍼토리를 갖는다. 이들 결과 레지스터 중 3개의 레지스터와 이에 연관된 ALU는 DUT에 제공될 완결 어드레스(complete address)로 다양하게 결합되는 X, Y 및 Z 어드레스 성분(27)을 생성하기 위한 것이다. 8개의 ALU/레지스터(DH & DL) 중 둘 이상이 최대 유효부(most significant portion : DH)와 최소 유효부(least significant portion : DL)로 분할되는 32비트 데이터 패턴(28)의 알고리즘적 생성을 지원하는데 제공된다. 마지막 3개의 ALU/레지스터(A, B, C)는 카운터로 이용되고, 프로그램에 의하여 지정된 일정한 반복 횟수 또는 기타 다른 횟수 조건이 완료되는 경우의 분기와 프로그램 제어를 지원하는 다양한 PROGRAM CONTROL FLAGS(25) 생성에 기여한다. 이들 PROGRAM CONTROL FLAGS(25)는 마이크로 제어기 시퀀서(19)로 되전송되어, 마이크로 프로그램형 실행 메카니즘의 경우와 유사한 방식으로 명령 페치 어드레스(넥스트 어드레스 계산기(102)에 의하여 생성됨)의 값에 영향을 미친다. 또한 프로그램 분기 실행에 이용될 수 있는 다양한 기타 플래그(55)가 존재한다. 이러한 플래그(55)는 페치된 명령어 워드의 서로 다른 필드에 의하여 제어되는 DUT 테스터(6)내의 다양한 기타 메카니즘으로부터 비롯된다. 특정한 추가 플래그 하나는 별도의 아이템, PD_ERROR(90)로 특별히 표시되어 있다. 이는 PGM SRAM(20)으로 공급되며, 포스트 디코드 메카니즘(60)으로부터 비롯되어, 그 포스트 디코드 메카니즘(60)에 에러가 있음을 표시한다. 또 다른 이와 같은 추가적 플래그는 VEC_FIFO_FULL(26)이다. 보다 덜 세부적인 다른 도면에서는, OTHER FLAGS(54)로 함께 일괄적으로 취급될 수 있다. 본 명세서에서는 마이크로 제어기 시퀀서(19) 동작의 한 특징을 설명을 돕기 위하여 이를 별도로 분리하고 있다.
VEC_FIFO_FULL은 마이크로 제어기 시퀀서(19)에 의한 추가적 프로그램 수행을 (일시적으로) 중지시키는 기능을 수행한다. 마이크로 제어기 시퀀서(19)에 의하여 페치되는 명령과 DUT에 적용될 테스트 벡터를 최종적으로 핸드 오프하는 메카니즘 사이에는 많은 단계의 파이프라인이 존재한다. 또한, DUT에 적용되도록 진행하는 동안 벡터에 수반하는 정보(baggage)의 일부는 궁극적인 벡터 애플리케이션의 속도 또는 각각의 벡터 지속 시간에 관련된 정보이다. 따라서, DUT로의 벡터 애플리케이션의 속도가 일정할 필요는 없으며, 특히 어떤 그룹의 벡터는 생성하는데 걸린 시간보다 적용하는데 더 오래 걸릴 수 있다. 마이크로 제어기 시퀀서는 단지 자신의 최대 속도로 프로그래밍을 수행한다. 그러나 명백하게, 파이프라인이 거의 무제한으로 탄력적(elastic)이지 않도록, 평균적으로 "벡터 소모"의 속도는 "벡터 생성"의 속도와 동일해야 한다. 벡터 FIFO(45)는 후술할 어드레스 매퍼(29)의 출력에 존재하여, 파이프라인에서 탄성 수용체(elastic capacity)로 기능한다. VEC_FIFO_FULL 신호는 파이프의 헤드 엔드(head end)에서 새로운 벡터의 생성을 일시 중지시켜 그 파이프라인에서 제한된 수의 단계를 초과하는 것을 방지하는데 이용된다.
계속하여, (16비트의 3배인 48비트의) X, Y 및 Z 어드레스 성분(27)이 어드 레스 매퍼(29)에 제공되며, 그 어드레스 매퍼(29)는 순서화된 48비트 어드레스 공간에서 거의 임의적으로 재구성된 어드레스 값으로 사전 선택하여 출력한다. 이것을 이해하기 위한 전제로서, 어드레스 매퍼(29)는 완전히 채워진 48비트 어드레스 공간인 메모리이고 각각의 어드레스에서 48비트 값을 보유한다고 먼저 가정한다(그런 메모리는 오늘날 대형 냉장고 사이즈가 임은 잠시 생각하지 않기로 한다). 이런 메모리가 주어지면, 어떠한 어드레스가 인가되었을 경우 대체 어드레스로 이용될 수 있는 또 다른, 임의적으로 선택된, 48비트 값으로 그 어드레스를 매핑할 수 있는 룩업 테이블(look-up table)이 구현될 수 있다. 이런 어드레스 매핑이 바람직한 이유는 X, Y 및 Z 어드레스 성분이 특정한 DUT 내부 아키텍처(대개는 하나의 큰 선형 디코더로 구현되지 않음)의 관점에서 유용한 의미를 갖기 때문이다. 행, 열 및 계층(layer), 블록(block) 또는 페이지(page)의 개념은 테스트 엔지니어에게 매우 유용할 수 있으며, 물리적으로 서로 가까운 위치에서 오류가 발생한다면 그 X, Y 및 Z 어드레스에 대응하는 접근성(closeness)이 있을 것이다. 테스트 결과에서의 이런 패턴은 무엇이 오류인지를 인식하는데 중요하며, 또한, 설계 레벨에서이거나 또는 예비 섹션의 동작으로 오류 섹션의 동작을 회피하도록 부품을 재프로그래밍하는 생성 레벨에서이거나, 그 오류를 정정하는데 중요하다. 이러한 개념에서 두 가지가 문제된다. 첫 번째는 DUT에 제공될 실제 비트 수에 대하여 48비트(말하자면, 32비트, 혹은 16비트)를 줄이는 문제이다. 여기서 그 줄이는 방법을 간략히 언급할 것인데, 이는 주로 X로부터 얼마의 비트를 취하고, Y로부터 얼마의 비트를 취하고, Z로부터 그 나머지 비트를 취하는 문제이다. 그러나 이것이 전체적인 것 은 아니며, 또한 이는 부차적 문제인데, 소정 어드레스가 회로 내에 놓여있고 그 회로는 회로의 다른 섹션에 대한 좌-우(left-for-right)(또는 좌-우 및 상-하) 대칭 상(mirror image)을 가질 수 있기 때문이다. 이는 그 회로 내 물리적 순서대로 어떠한 순차적 어드레스 값이 주어지는지에 관한 한, 그 비트가 가리키는 바를 재구성하는 효과를 가져온다. 이러한 칩 레이아웃 특성은 수 차례 발생할 수 있고, 말하자면, Y에 대한 하나의 비트 그룹이 해석되는 방법이, 말하자면, 수반하는 Z비트의 값에 의존하는 경우 이는 당연할 것이다. 어드레스 매퍼(29)가 제공되어 원래의 X, Y 및 Z 어드레스가 "재패키징"되도록 하고, 말하자면, 그러한 내부 구조 배열을 갖는 메모리를 테스트할 사람을 돕기 위하여 이러한 유형의 일을 반영한다. 실제 이루어지는 방법에 관하여, 어드레스 매퍼(29)는 상당히 많은 수의 상호 접속형 멀티플렉서(interconnected multiplexer)로 구성된다. 이는, 설명을 위하여 앞서 임시로 가정하였던 완전히 채워진 메모리 디코드 방안(fully populated memory decode scheme)에 있어서 완전히 임의적인 룩업 테이블 동작(completely arbitrary look-up table behavior)을 구현할 수 없다. 그러나, 어드레서 매퍼(29)는 필요에 따라 X, Y 및 Z 어드레스 성분의 서브필드를 재구성할 수 있는데, 특히 이는 48비트를 실제 필요한 수로 감소시킬 이와 다른 메카니즘이 역시 존재하기 때문이다. 어드레스 매퍼(29)는 또한 지역적 범위 내에서 제한된 임의 매핑을 수행하는 3개의 16비트(어드레스) 룩업 테이블을 포함한다.
어드레스 매퍼(29)의 매핑 어드레스 출력(30)은 버퍼 메모리 및/또는 태그 RAM(Tag RAM)(31A-B) 및 에러 캐치 RAM1/2(32A/B)에 대하여 어드레스로서 인가되는 데, 이들은 각각 서로 다른 기능을 수행하지만, 그럼에도 불구하고 일괄하여 내부 테스트 메모리(87)를 구성하는 4개의 메모리 세트 내에서 선택 가능한 부분으로서 구현될 수 있다. 매핑 어드레스 출력(30)은 Addr.비트 선택 회로(37)에 대하여 하나의 입력으로서 인가되는데, 그 Addr.비트 선택 회로(37)의 멀티플렉싱 기능은 이하에서 설명할 것이다. 내부 테스트 메모리는 서로 다른 기능을 위하여 이용되는 다양한 RAM 기반형 메모리 구조의 많은 인스턴스를 포함하도록 구성될 수 있다. 이는 서로 다른 메모리 세트에서 일정한 부분이 그 관련된 목적을 위하여 이용됨을 밝힘으로써 달성된다. 도 2에 도시된 것은 그러한 장치 중 하나이고, 그 장치는 테스트 절차에 따라서 변화될 수 있으며, 이러한 메모리 세트 이용의 전체 동작은 매우 동적인 것으로 생각되어야 한다. 내부 테스트 메모리의 장착물(예컨대, 에러 캐치 RAM(32A-B)) 중 어떤 것도 고정적 하드웨어 장치는 아니다. 4개의 메모리 세트만이 고정적이다. 그러나 그러한 메모리 세트 중 어떠한 부품이 주어진 시간(실제로 하나가 정의되어 있다면)에 에러 캐치 RAM이 되는지는 어떤 구성이 이루어지는지에 의존한다.
버퍼 메모리(31A,31B)를 고려한다. 그 기능은 DUT에 인가될 수 있는 데이터 패턴(33)과 어드레스(34)를 보유하는 것이다. 데이터 패턴(33)과 어드레스(34)는 실제로 그 관련된 버퍼 메모리(이들 버퍼 메모리(31)는 이중 "포트 메모리"는 아니지만, 바람직하게 두 개의 서로 다른 메모리 세트 부분으로 구성됨)로부터 별도의 출력이다. 계속하여, 저장형 데이터(Stored Data)는 하나의 메모리 세트에 저장되고, , 저장형 어드레스(Stored Address)(34)는 다른 메모리 세트에 저장되는 것이 바람직하다. 또한, 버퍼 메모리로의 기록에 대한 명시적 메카니즘을 지금까지 설명하지 않았는데, 이를 달성할 수 있는 한가지 방법은 실행 프로그램의 명령에 따라 테스트 사이트 제어기(4)에 의하여 개시되는 어드레스형 버스 동작에 의한 것이다. 도 2에서 거의 모든 부분에 대하여 "플로어보드 하부(under the floorboards)", 즉 링 버스라고 불리는 "유틸리티 서비스(utility service)"(도면을 매우 복잡하게 하기 때문에 그 대부분을 도시하지 않음)가 존재한다.
에러 캐치 RAM(32A-B)은 버퍼 메모리에 인가되는 동일한 어드레스로 어드레싱되고, 에러에 관한 정보를 저장하거나 또는 검색하는데, 후술할 포스트 디코드 회로와 함께 이 동작을 수행한다. 버퍼 메모리(31A-B)로부터의 경로(33,34)와 같이, 경로(62A-D)(에러 캐치 RAM1(32A)로부터)는 바람직하게, 링 버스(도시되지 않음)로 분배되는 구성 정보에 따라서, (에러 캐치 RAM으로 동작하도록 구성된) 메모리 세트의 일부분으로부터의 멀티플렉스형 출력(MUX'ed output)이다.
데이터 MUX(35)는 ALU의 집합(24)내의 레지스터(DH 및 DL)로부터의 데이터(28)뿐만 아니라 버퍼 메모리(31A)로부터의 저장형 데이터 출력(33)을 입력으로 갖는다. 데이터 MUX(35)는, PGM SRAM(20)에 저장된 값(36)에 따라서, 이들 입력(28,32) 중 어떤 것을 그 출력(38)으로 제공할 것인지 초기 선택을 수행하는데, 후술되는 바와 같이 변형되지 않는다면, 이 출력(38)은 송신 벡터 매퍼/직렬 변환기/수신 벡터 비교 데이터 회로(40)에 대하여 두 벡터 성분 중 하나로서 제공된다(다른 성분은 Addr.비트 선택 회로(37)의 출력(39)이다).
회로(40)는 세 가지 벡터 관련 기능, 즉 벡터 성분(38,39)을 DUT에 인가(송신)될 전체 벡터의 순서화된 논리 표현으로 어셈블링하는 기능과, 송신 벡터 논리 표현의 순서화된 비트와 그 신호(즉, 그 벡터 내 비트)를 대신하여 DUT와 접촉할 핀 전자 장치의 실제 물리 채널 번호(즉, 소정의 프로브 팁) 사이에 임의적인 동적 대응(매핑)을 적용하는 기능과, 컴파일러와 협력하여 전체 논리 벡터를 DUT(이를 허용하는 DUT)에 개별적으로 또한 순서대로 제공될 부분(pieces)으로 분할하는 기능을 수행할 수 있다. 이러한 기능 중 어떤 기능이 수행될 것인지는 SRAM(41)(이는 마이크로 제어기 시퀀서(19)에 의해 페치되는 208비트 명령어에서의 한 필드에 따라서 어드레스됨)으로부터의 제어 신호에 의하여 결정된다.
DUT 디스에이블 논리(DUT Disable Logic)(90) 섹션이 회로(40)에 포함된다. 그 목적은 다양한 조건(일부는 정적이고, 일부는 테스트 결과에 의존할 것이지만, 그 모두가 프로그램적으로 정의되어 있음)에 응답하여 4개의 DUT 중 어느 하나 또는 그 이상의 DUT가 디스에이블 될 것인지는 표시하는 것이다. 이러한 표시는 4개의 신호(DD 0:3(44b)(DUT 0, DUT 1 등에 대한 DUT 디스에이블))에 의하여 전달된다. 회로(40)의 출력은 DUT 디스에이블 신호(44b)와 함께 벡터 FIFO(45)에 인가되는 64비트에 달하는 벡터(44)인데, 벡터 FIFO(45)는 가득 채워지는 경우 VEC_FIFO_FULL 신호(26)(그 의미와 이용은 전술하였음)를 생성한다. 벡터 FIFO(45)의 최상위 벡터는 주기 생성기(Period Generator)(49)(간략히 설명될 것임)에서 발생하는 VEC_FIFO_UNLOAD 신호(47)의 수신시 제거된다. 그 제거된 벡터(46)는 핀 전자 장치(9)의 관련 인스턴스를 통하여 DUT에 연결된 타이밍/포매팅 및 비교 회로(Timing/Formatting & Comparison circuit)(52)로 인가된다. 즉, 핀 전자 장치(9)의 (여러 테스트 사이트 중) 각각의 인스턴스는 관련된 타이밍/포매팅 및 비교 회로(52)로부터 송신 & 수신 벡터(7)와 핀 전자 장치 구성 정보(8)를 수신한다.
타이밍/포매팅 및 비교 회로(52)는 VT 버스(89)에 결합되어 구정 및 제어 정보를 수신한다. 타이밍/포매팅 및 비교 회로(52)는 목적에 의하여 단일 엔티티로 다루어지지만 실제로 8개의 집적 회로임을 상기하기 바란다.
타이밍/포매팅 및 비교 회로(52)는 마이크로 제어기 시퀀서(19)의 프로그램 SRAM(20)과 동일한 명령 어드레스(Instruction Address)(작은 원 내부의 "A")에 의하여 어드레싱되는 내부 SRAM(54)을 갖는다. (외부 DRAM(53)이 내부 SRAM(54)을 대신하여 사용될 수 있으나, 이는 증가형 카운터(incremented counter)(도시되지 않음)에 의하여 지역적으로 어드레싱됨). 내부 SRAM(54)(또는 외부 DRAM(53))은 포맷에 관련된 구동 및 비교 사이클(Drive and Comparison cycle) 생성을 지원한다. 구동 사이클은 RAM(53,54) 중 하나에 의하여 공급되는 사전 선택형 포맷을 이용해서 DUT로 송신 벡터를 인가한다. 비교 사이클은 DUT가 제공하는 벡터를 수신하고 이를 검사하고, 또한 사전 선택형 RAM 공급형 포맷에 따라서, 이전에 제공된 비교 데이터와 매칭하는지를 판정한다. 구동 사이클 및 비교 사이클 양자 모두 그 지속 시간(duration time), 로드(load)가 인가되는지 여부 및 언제 인가되는지, 데이터가 언제 래치(latched)되는지 또는 스트로브(strobed)되는지, 신호가 0으로의 복귀(Return-To-Zero)인지 아닌지, 구동 신호를 그 상보 신호(complement)로 둘러싸는지 여부에 관하여 적절하게 조절 가능하다. (이들 선택 사항은 전술된 다양한 포맷을 갖는다)
타이밍/포매팅 및 비교 회로9523)에 의하여 수행되는 비교는 채널 기초마다(on a per channel basis) 논리 값이 부적당(기능적 에러)하기 때문에 그리고/또는 그 전기 특성이 수용 가능한 한계(파라미터 에러)를 벗어나기 때문에 채널이 고장났는지에 관한 정보를 포함한다. 또한, 다수의 DUT 테스트가 수행되는 경우 어떤 채널이 어떤 DUT에 관련되는지가 알려진다. 이로써 4개의 신호(DFE 0:3)(DUT #기능적 에러)(103) 및 4개의 신호(DPE 0:3)(DUT#파라미터 에러)(104)가 생성된다.
타이밍/포매팅 및 비교 회로(52)에 의하여 수행되는 비교는, 수신 벡터 역매퍼/직병렬 변환기(deserializer)(57)(그 기능은 회로(40)의 논리적 반전이라고 간주할 수 있음)에 인가되는 64비트 값(56)을 생성한다. (회로(57)의 동작은 SRAM(41)에 의한 회로(40)의 제어에 대응하는 SRAM(58)에 의하여 제어된다). 이어서, 회로(57)의 출력(59)이 포스트 디코드 회로(60)로 인가되고, 또한 에러 캐치 RAM(32A)으로 인가된다. 현재는, 포스트 디코드 회로(60)가 프로그램 기준(programmatic criteria)을 통해서 입력되는 에러 정보(59) 및 이전에 에러 캐치 RAM1(32A)에 저장된 에러 정보 양자 모두를 검사하여 압축되고 보다 용이하게 해석 가능한 에러 정보(이는 그 다음 경로(61)를 통해 에러 캐치 RAM2(32B)에 다시 저장될 것임)를 생성할 수 있다고 말할 수 있다. 일예로 특정한 범위의 어드레스 내부에 에러가 몇 차례나 존재하는지에 관한 정보를 생성할 수 있는데, 이 정보는 대체 회로(substitute circuit)를 구동하여 온칩 수리(on-chip repair)를 시도할 시기를 결정하는데 유용할 수 있다.
이제 주기 생성기(49) 및 그 관련 타이밍 SRAM(51)을 설명하겠다. 주기 생성기(49)와 타이밍 SRAM(51)은 마이크로 제어기 시퀀서(19)에 의해 페치되는 각 208비트 명령에 대해 타이밍/포매팅 및 비교 회로(52)의 관련 동작에 관한 지속 시간을 결정하는 8비트 신호 T_SEL(43)에 응답한다. T_SEL(43)은 페치 명령내의 상이한 필드에 의해 표시되는 다양한 제어값 및 명령(Various Control Values & Instruction)(42)의 멤버이다. T_SEL(43)은 8비트 값으로 256개의 서로 다른 경우를 표시하거나 또는 인코딩할 수 있다. 이에, 이들 각 "경우" 그 값은 타이밍 SRAM(51)에 저장된 28비트 값이고 T_SEL에 의해 어드레싱된다. 어드레스되는 각각의 28비트 값(23)은 19.5 피코초(picosecond) 해상도(resolution)로 원하는 지속 시간을 지정한다. 액세스되는 28비트 지속 값(23)의 시퀀스는 그 시퀀스의 개별 멤버가 벡터 FIFO(45)에 저장되어 있는 의도형 대응 벡터의 검색과 동시에 검색 및 인가되도록 주기 FIFO(50)에 저장된다.
FIFO(50)에서 최초 엔트리에서의 거친(coarse) 타이밍 값 필드는 5nsec의 해상도를 갖는 지속 시간 정보를 운반하고, 그로부터 다음 송신 벡터를 벡터 FIFO(45)에서 타이밍/포매팅 및 비교 회로(52)로 전송하는 VEC_FIFO_UNLOAD 신호(47)를 생성한다. 부속 신호 TIMING REMINDER(48)가 또한 회로(52)에 제공되는데, 이 회로(52)에서 최종 19.5 피코초 해상도가 달성된다.
전술한 바는 메모리 테스터의 전체 성격의 서론을 결말 짓는다. 이를 출발점으로 하여 스코프 모드(scope mode) 및 관련 사항을 설명하도록 한다.
도 3을 참조하면, ALU 히스토리 FIFO(69)와 관련 제어회로를 포함하도록 도 2의 블록도(6)의 일부분을 확장한 단순화된 블록도(64)가 도시되어 있다. 하드웨어에 의하여 실행되는 실제 208비트 명령 워드를 저장하는 PGM SRAM으로 인가되는 어드레스(63) 시퀀스를 생성할 책임이 있는 넥스트 어드레스 계산기(102)로 설명을 시작하는 것이 좋겠다. 즉, 넥스트 어드레스 계산기(102)는 다음 명령 워드가 페치될 어드레스를 표시하는 프로그램 포인터(program pointer) 보유 장치(keeper)이다. 새로운 유효 어드레스가 있을 때마다 신호 PGM_STEP(83)이 인가된다.
넥스트 어드레스 계산기(102)는, 실행되는 머신 워드가 관련 플래그(55), 프로그램 제어 변수(25) 등을 허용하는 경우, 시퀀스 어드레스 중 현재 어드레스에 응답함으로써 테스트 프로그램 내에서 분기를 구현한다. 이러한 용량(capacity)에서 중요한 신호 중 하나는 PD_ERROR(90)(포스트 디코드 에러)라 불린다. 이는 도 2의 포스트 디코드 회로(60)에서 시작되며, "MEMORY TESTER WITH ENHANCED POST DECODE"라는 명칭의 참조 출원에서 자세히 설명되고 있다. 이것이 의미하는 바를 간략히 말하면 포스트 디코드가 에러 검출을 위한 소정의 (포스트 디코드 회로(60) 자체 내부에서) 구성 가능한 기준이 만족되었는지 판정한다는 것이다. 현재 관심을 가지는 것은 PD_ERROR(90) 시작에 관련된 프로그램 위치 및 관련 상태 정보를 테스트하는 것이다. 즉, ALU 레지스터 X, Y, 및 Z의 콘텐츠(어드레스), 어쩌면 DH 및 DL 레지스터의 콘텐츠(이들은 결합되어 32비트 데이터를 구성함), 그리고 어쩌면 레지스터 A, B, 및 C의 콘텐츠(이들은 루프 인덱스로 이용되거나 다른 테스트 프로그램 조정을 위하여 이용될 수 있음)를 알 필요가 있다. 일부 실시예에서는 어드레스 레지스터만을 포함하는 것으로 충분할 것이지만, 이와 다른 실시예에서는 ALU 히스토리 FIFO(69)에 포함할 필요가 있는 추가적인 유용한 레지스터들(여기서는 언급되지 않았으나)이 있을 수 있다.
테스트 프로그램이 PD_ERROR 신호를 주기적으로 테스트할 것이며, 때에 따라 프로그램 내의 특정 위치로 JUMP할 것을 요구할 것이다. 그러나 대개 JUMP의 목적지는 실제로 무엇인가를 수행하기 위한 템플릿일 뿐이고, 의도대로 수행되는 JUMP에 있어서 다양한 레지스터의 콘텐츠(히스토리 FIFO에 저장된 것들)가 복구될 필요가 있다. 그러나, JUMP의 목적지는 프로그램 포인터(그 명령이 차후 관심을 갖는 PD_ERROR를 "야기"함)의 실제 값이 아닐 있다. 이러한 이유와 관련하여, 넥스트 어드레스 계산기(102)에 대한 프로그램 포인터의 값은 ALU 히스토리 FIFO에 저장된 아이템 중의 값이 아니라는 점에 주의해야 한다. 마이크로프로세서에서의 문맥 교환과 달리, 테스트 프로그램 위치를 진행되어야 하는 위치로 설정하기 위하여 정규 프로그램형 JUMP에 의존한다. 어쩌면 프로그램 제어에 따라, 어쩌면 자동으로, ALU 히스토리 FIFO는 DUT 어드레스의 문맥과, DUT 데이터와, 그리고 어쩌면 프로그램 루프 제어 인덱스를 복구한다. 이러한 방법에서, ALU 히스토리 FIFO 이벤트의 출력은 그것이 초래한 바로 그 프로그래밍에 의하여 유연하게 지시될 수 있다.
계속하여, PGM SRAM(20)으로부터 페치되는 208비트 명령 워드(65)는, 현재의 목적에 있어서, ALU 동작에 관련되는 ALU INSTRUCTION(22,66)을 표시하는 n비트 부분("테스트 프로그램의 알고리즘 제어")을 포함한다. BEGIN_HIST라고 불리는 1비트 부분(68)이 있는데, 그 의미와 이용이 이하에서 간단히 설명될 것이다. 208비트 중 남아있는 것 모두가 잔여 부분(67)이고, 이는 필요한 어디로도 진행할 수 있다.
ALU INSTRUCTION(22,66)은 ALU 레지스터(71-78) 집합에 적절하게 연결되어 있는 ALU 명령 회로(70) 집합으로 인가된다. 이들은 도 2에 도시된 것과 같은 것으로, 도 3에서 A_ALU 레지스터(71), B_ALU 레지스터(72), C_ALU 레지스터(73), DH_ALU 레지스터(74), DL_ALU 레지스터(75), X_ALU 레지스터(76), Y_ALU 레지스터(77), 그리고 Z_ALU 레지스터(78)라고 명명되어 있다. 간결함을 위하여 도 3에서는 이들 여러 레지스터로의 연결 모두를 도시하지는 않았으며, 도 2에 연결된 것으로 도시된 바와 같이 여전히 연결되어 있음을 알아야 한다. 그러나, 각각의 레지스터는 ALU 히스토리 FIFO(69)의 한 섹션에 관련된 것으로 도시되고 있으며, 사실 ALU 히스토리 FIFO(69)는 열과, 필드 또는 섹션과, 앞서 나열된 8개의 ALU 레지스터 각각에 대한 입력을 8개씩 갖는다는 점에 주의해야 한다. 이들은 일치하여 동작할 것이므로, 이들 FIFO 섹션 각각의 깊이는 서로 모두 동일하다. 85 정도의 깊이가 바람직한데, 이 수는 각각 대략 40의 길이를 가지는 2개의 파이프라인에 대한 길이의 합으로 얻어진 것이다. 바닥에 그려진, 두꺼운 검정색 라인(105)은 8개의 FIFO 섹션의 출력은 전체가 모여서 링 버스(85)를 통하여 시스템 나머지 부분에 대하여 이용 가능(UNLOAD 동작 동안)해진다는 것을 표시하고 있다.
ALU 히스토리 FIFO(69)는 중요한 4개의 제어 신호를 갖는다. 이 중에는 (내부) FIFO 로드 포인터와 (내부) FIFO 언로드 포인터(FIFO Unload Pointer)를 시작 값(starting value)으로 설정하고, 아마도 모든 콘텐츠를 클리어시키는 RESET 신호(79)가 있다. 또한, 8개의 레지스터(71-78)에 관련된 8개의 콘텐츠가 그 각각의 FIFO 섹션으로 로드되고 FIFO 로드 포인터를 전진시키도록 하는 LOAD 신호(81) 가 포함된다. 그리고, 최초 부하값이 FIFO로부터 검출되고 언로드 포인터의 값이 증가되도록 하는 UNLOAD 신호(107)가 있다. 그 검출은 링 버스로 이루어지며, 그로부터 일정한 매개장치를 통해서, 최종, 목적지에 이르게 된다. 링 버스에 직접 부하되는 것과 달리 필요한 경우마다 링 버스를 통하여 그 콘텐츠를 전달할 수 있고 전용 경로를 통하여 적절한 ALU 레지스터로 빠르게 되전송할 수 있는 소정의 전용 홀딩(holding) 레지스터에 저장할 수도 있다. 이러한 장치는, 프로그램 제어 하에서, 중요한 ALU 레지스터 값을 검사하고 복구할 수 있게 한다. UNLOAD는 링 버스의 폭 보다 더 많은 비트를 포함하고 있음에 주의해야 한다. 관련된 전용 홀딩 레지스터로 먼저 UNLOAD한 다음, 홀딩 레지스터의 링 버스로의 전송을 스태거링(staggered)하여 일어나게 함으로써 이러한 상황이 처리될 수 있다. UNLOAD가 엄격하게 수행되어 데이터를 전달하는 경우라면, 관련된 스태거형 전송이 생략될 수 있다.
나머지 FIFO 제어 신호를 FULL(80)인데, 이는 FIFO 내에 로드외지 않은 위치가 없으며, 따라서 임의의 추가적 정보가 있게되면 정보 유실(새로운 정보가 구 정보를 겹쳐 쓸것임)이 발생할 것이라는 것을 나타낸다. 이는 히스토리 FIFO의 목적과 상반되므로, 이를 방지하여야 하고, 파이프라인에 매치되기에 충분할 만큼 FIFO를 깊게 한다. 따라서, FULL 신호는 반전되어 LOAD에 대한 소스 신호(PGM_STEP (83))로 판명됨)와 AND되어, FULL(80)이 TRUE인 경우마다 LOAD(81)이 발생하지 않도록 한다. 그 AND 동작은 AND(82) 수행된다.
한가지 더 예비적 설명을 하고, ALU 히스토리 FIFO 동작을 설명할 것이다. 전술한 바와 같이, 파이프라인 깊이가 항상 고정된 것은 아니며 특정한 요구 각각에 대하여 생성된 메모리 테스터의 동작 구성에 따라서 변화하는데, 그 변화는 테스트 프로그램의 연속 세그먼트 레벨에서 발생할 수 있다. 테스트 프로그램 각각의 세트먼트마다, 테스트 프로그램의 로딩 및 실행에 관련되고 효율적 파이프라인 깊이가 얼마인지 알아내는 수퍼바이저 소프트웨어(이는 그 테스트 프로그램 요구에 따라서 어떠한 구성 변화를 일으키는데 이용되는 유틸리티 집합의 홈(home)이기 때문에 알고있음)에 의하여 수행되는 하우스키핑 기능이 있다. 초기에 그리고 어떠한 변화가 발생한 경우에, 그 수퍼바이저 소프트웨어에 의하여 그 값이 파이프라인 깊이 레지스터(Pipeline Depth Register)(84a)에 배치될 것이다. 신호 BEGIN_HIST(68)가 발생하면 파이프라인 깊이 레지스터(84a)로부터 그 값이 다운 카운터(Down Counter)(100a)로 복사될 수 있다.
BEGIN_HIST(68)는 본질적으로 208비트 명령 워드내의 한 비트 필드로 표시되는 테스트 프로그램에 내장된 플래그이다. 이는 그 플래그가 포함되는 명령 워드 또는 그 다음 명령 워드는, 그 다음으로 ALU 히스토리 FIFO(69)가 후속적 에러 테스트형 플래그 PD_ERROR(90)가 TRUE임을 확인하는 테스트 프로그램 내부 위치임을 의미한다. 이를 해석하는 또 다른 방법은 임의의 이전 히스토리를 끝내고, 새로운 히스토리를 시작하는 것이다. 그에 따라, 테스트 프로그램 내의 이 지점에서 BEGIN_HIST(68)가 어서트(asserted)되고, FIFO(69)는 재설정되고, 다운 카운터(100a)에 레지스터(84a)로부터 효율적 파이프라인 깊이가 로드된다. (또 다른 다운 카운터(100b)는 파이프라인 깊이 레지스터#2 등으로부터 로드된다. 이에 관하여 차후 더 설명한다.)
이제, PGM SRAM(20)으로부터 추가 명령이 페치되고 실행되면, 신호 PGM_STEP(83)으로 대응하는 신호가 있을 것이다. 이들은 FIFO에 대한 LOAD(81)의 대응 인스턴스(FIFO는 당연히 아직 가득 차 있지 않다)와 다운 카운터(100a)를 감소시키는 대응 인스턴스(PGM_STEP(83)은 다운 카운터(100a) 뿐만 아니라 다운 카운터(100b)의 COUNT 터미널로도 신호를 보낸다는 점에 주의해야 한다)를 야기할 것이다. 최종적으로 다운 카운터(100a)에서의 카운트가 0에 도달할 것이며, 이는 그 다운 카운터(100a)에 연결된 카운트#1 = 0 회로(101)로부터의 출력으로써 표시될 것이다. 이 상태는 효율적 파이프라인 깊이에 도달했으며, 이제 FIFO(69)내의 전체 엔트리 수를 증가시키는 것을 중단하고 FIFO 이용 깊이를 일정하게 유지하기 시작해야 한다는 것을 의미한다. 이로써, PD_ERROR가 나타나면 FIFO의 끝 "FO"에서 원하는 정보를 얻게된다.
PD_ERROR(90)의 인스턴스가 아직 나타나지 않았다면, 새로운 값을 로드할 때마다 매번 FIFO를 한번씩 언로드하는 것이 안전하다(다양한 값의 집합이 히스토리 FIFO의 끝 "FO"를 차지할 것이다). 이는 BEGIN_HIST 신호가 그 이전에 있었음을 의미하거나, 그렇지 않다면 아마도 PD_ERROR가 아직 발생하지 않았음을 의미한다(사실, 어느 하나도 일어나지 않을 수도 있다). LOAD/UNLOAD 동작은 FIFO가 어떠한 경우라도 가득 차지 않도록 할 것이다. 여기서 잠시 본론에서 벗어나, UNLOAD(107)이 어떻게 발생되는가를 설명할 것이다.
링 버스(85)를 통하여 설정된 수 있는 1비트 히스토리 모드 래치(one-bit History Mode Latch)(105)가 존재한다. 이는 설명중인 히스토리 FIFO 스터프 모두를 인에이블시키도록 요구하는 것을 의미한다. ALU 히스토리 모드 래치(105)는 신호 BEGIN_HIST(83)에 의하여 역시 재설정되는 설정/재설정 래치(98)에 관련된다. ALU 히스토리 모드 래치(105)가 설정될 때마다 신호 PD_ERROR(90)이 래치(98)를 설정한다. 이는 AND 게이트(86)에 의하여 이루어진다.
다시 본론으로 돌아가서, PD_ERROR의 인스턴스는 아직 발생하지 않았고, 또한, FIFO(69)가 현재 효율적 깊이의 파이프라인으로 신장하고 있음을 카운트#1 = 0 회로(101a)가 표시하는 동안 새로운 명령 페치(PGM_STEP(83)의 인스턴스)가 존재할 때마다 매번 FIFO(69)가 UNLOAD된다. 그러한 인스턴스가 결코 존재하지 않을 수도 있으나, 결국 그러한 경우가 발생한다고 가정하기로 한다. 여기서 래치(98)의 출력 Q가 설정(그 신호의 이름은 FREEZE_HIST(99)임)되고, AND 게이트(106)의 입력단에서 반전되어 어떠한 추가 UNLOAD 신호(107) 생성도 발생하지 않도록 한다. 관심 값이 레지스터(71-78)에 트랩되고, 이는 다음 UNLOAD를 수행할 때(아마도 일정한 소프트웨어가 이에 도달하는 경우일 것임) 얻을 수 있을 것이다. 여기에서 LOAD를 디스에이블하는 것도 바람직하지 않은지 의문을 가질 수도 있다. 신호 FULL(80)이 LOAD 생성을 디스에이블 하는 동안, AND 게이트(82)에 의하여 무엇이 이루어지는지 실제로 문제되지 않는다면 그렇게 할 수도 있을 것이다.
카운트#1 = 0이전에 PD_ERROR가 발생하는 경우 어떻게 될 것인가 의문을 가질 수도 있다. 이것은 실제로 좋은 질문이다. 간단히 답을 하면, 이런 일은 결코 발생하지 않는다고 할 수 있다. 이런 일이 발생한다면, 테스트 프로그램에서BEGIN_HIST의 인스턴스(이것은 테스트 프로그램에서 시작한다는 점을 기억해야 한다)를 이용하는 방법에 있어서 PD_ERROR(90)을 생성(또는 어쩌면 재설정)하도록 히스토리 모드 래치(105)를 설정하고 포스트 디코드 회로(60)를 구성하는 것과 관련하여 일정한 부주의가 있었음을 의미하는 것이다. 이런 상황은 괄호 표현의 중첩이 허용되지 않는 시스템에서 컴파일러가 매치되지 않는 괄호를 발견하는 것과 다소 유사하다. (결국, 히스토리 FIFO 세트 하나만 존재한다.)
이전의 기존 프로그램 위치와 에러 플래그의 상태를 상관시키는 이와 같은 ALU 히스토리 FIFO 메카니즘을 가지므로, 처음에 의도된 것과 다른 추가적 목적에 이용하기 원하게 된다. 그 과정을 살펴보면, "이러한 좋은 메카니즘이 단지 PD_ERROR에 있어서 ALU 상태를 복구하는데 제한되는 이유는 무엇인가? ALU 히스토리 FIFO는 파이프라인에 적절한 지연을 포함하는데, 관련 명령이 페치되고 실행된 다음 파이프라인 지연을 이용하여 에러 신호나 플래그의 값을 발생시(또는 심지어 그 이후에) 정확히(accurately) 테스트하는 방법은 없는가? 전에 어떠했는지는 이미 알고 있다."고 말할 것이다. 문맥에서, "정확히"가 의미하는 것은 발생하는 에러 신호나 플래그에 너무 빨리 응답하지 않는다는 것, 즉, 명령이전에 몇 사이클 동안 무엇인가 관심을 갖는 것이 수행되어야 한다는 것을 의미한다. 이에 대한 답은 "할 수 있다"이다.
관심을 갖는 에러 신호나 플래그는, FERR(113)(기능적 ERRor가 있었음을 의미함)과, PERR(114)(파라미터 ERRor가 있었음을 의미함)과, (다시 한번) PD_ERROR(90)이다. 이들 신호 중 처음 둘을 생성하는 방법에 관한 정확한 설명은 참조되는 MEMORY TESTER TESTS MULTIPLE DUT'S PER TEST SITE에 설명되고 있다. 그 출원의 도 5를 참조하면, DUT마다 기능적 에러 및 파라미터 에러 신호가 어떻게 발생하는지 알 수 있다. 그 출원의 도 6을 참조하면, 시스템이 DUT 신호마다 관련되는 성분 사이에서 가능한 다양한 조합을 나타낼 수 있는 YDFE(Yes DUT Functional Error) 및 YDPE(Yes DUT Parametirc Error)를 생성하도록 어떻게 구성 가능한지를 알 수 있다. 여기서, 그 YDPE는 본 명세서의 FERR과 동일하고, YDPE는 PERR과 동일하다.
FERR 및 PERR은 대개 그 외관에 관련된 동일한 파이프라인 지연을 가지지만, PD_ERROR에 있어서는 아마도 상당히 다를 수 있다. 어떠한 경우에도, 파이프라인 깊이 레지스터#2(84b)는 FERR 및 PERR에 대한 적절한 값으로 미리 설정될 것이며, 반면 파이프라인 지연 레지스터#1(84a)은 PD_ERROR에 대한 적절한 값으로 미리 설정될 것이다.
이제, 테스트 프로그램 내의 조성의 단계에서 전술된 신호 중 하나를 야기할 수 있는 자극이 이루어진다. 동일한 단계에서, 테스트 프로그램은 BEGIN_HIST(68)을 발행(issue)한다. 이는 다운 카운터(100b)에 파이프라인 깊이를 로드하는데, 다운 카운터(100b)는 프로그램 내의 추가적 단계(PGM_STEP(83)의 연속 인스턴스)에 의하여 카운트 다운된다. 최종적으로 COUNT#2 = 0(115)이 TRUE가 될 것이며, 이로써 두 개의 MUX(110,111)에 의하여 이루어지는 선택이 판정된다는 것을 알아야 한다. MUX(109)는 신호 COUNT#1 = 0(108)에 의하여 제어된다.
FERR(113)과 그 MUX(111)을 예로서 선택하기로 하고, 나머지는 동작 방식에 있어서 동일하다. COUNT#2 =0이 FALSE인 동안 MUX(111)은 신호 <NO_ERROR>(116)(에러가 없을 때 테스트 시스템에 의하여 관련되는 전기적 값)를 그 출력(3비트 집합 중 한 비트로서, 뒤이은 분기를 위하여 넥스트 어드레스 계산기로 전송됨)으로서 선택한다. 그러나, 파이프라인 지연이 끝나면, 실제 FERR(133)이 무엇인지 구하여야 한다. COUNT#2 = 0이 TRUE가 되기 때문에, MUX(111)가 넥스트 어드레스 계산기(102)로 전송될 FERR을 지금 선택하도록 한다.
PERR에서의 분기는, MUX(110)을 대신 이용하는 점을 제외하고는, FERR에 있어서와 같이 동작한다. PD_ERROR(90)에서의 이러한 분기 스타일은, "공유형" 다운 카운터#1(100a)에 의하여 구동되는 신호 COUNT#1 = 0(108)에 의하여 그 MUX(109)를 제어하지 않는 ALU 히스토리 FIFO(파이프라인 깊이 레지스터#1(84a))에 대한 지연을 공유하는 점을 제외하고는, 다른 둘과 같이 동작한다.
분명히, 테스트 프로그램은 예컨대, 고정된 충분한 지연의 루프(a loop of fixed but sufficient delay) 등을 올바르게 이용하도록 작성되어야 한다. 그러나 최소한 그 대응이 올바른 것이라는 점을 보장할 수 있어야 한다. 어떠한 방해 원인도 발생하지 않고 이 신호들을 스스로 설정하지 않는다고 보장한다면, 파이프라인 지연이 만료된 한참 후에도 테스트 할 수 있다.
그 밖의 유용한 히스토리 FIFO가 있으며, 도 4의 단순한 블록도(117)에 도시되어 있다. 일반적으로, 이는 메모리 테스터 구조에서 서로 다른 부품에 배치되고, ALU 히스토리 FIFO에 의하여 저장된 것과는 다른 정보를 저장한다는 점을 제외하고는, ALU 히스토리 FIFO(69)와 유사한 방식으로 작동할 것이다. 최근 비교 에 러 데이터를 기록하는 하나의 FIFO는 단지 한 레벨 깊이여야 하므로, 본격적 FIFO라기 보다는 단순한 레지스터가 되어야 한다. ECR 히스토리를 복원하기 위한 두 섹션 FIFO와 공동으로 제어되는 버퍼 메모리 히스토리를 복원하는 또 다른 두 섹션으로 구성된 FIFO가 하나 있다.
도 4를 참조하면, 좌측 부분에서 시작하는 것이 쉽다. 포스트 디코드 회로(60)의 부품이 도시되어 있으며, 이는 도 2에 도시된 것과 동일한 것으로, 수신 벡터 역매퍼/직병렬 변환기 회로(57)로부터 32비트의 비교 데이터(59)를 수신한다는 점에 주의해야 한다. 이에 한가지를 덧붙이면, 그 32비트는 DATA_VALID 신호(118)와 함께 송신된다는 점이다.
포스트 디코드로부터 유래한 32비트의 (처리된) 에러 데이터 및 DELAYUED_DATA_VALID(128)(묶어서(61))는 ECR(32B)(도 2 참조)로 전송될 것이다. 또한 포스트 디코드는 PD_ERROR(90)를 시발한다는 점에 주의해야 하며, 도 3에서 FREEZE_HIST(99)를 생성하기 위하여 BEGIN_HIST(83)과 함께 어떻게 이용되는지를 기억하기 바란다.
PD_ERROR를 야기한 에러 데이터(66)를 트랩하는 작업은 비교적 수월한 일이다. 보통, FREEZE_HIST(99)는 FALSE이고, AND 게이트(129)의 입력단에서 반전되어 DELAYED_DATA_VALID(128)가 Last_Error_Data 레지스터(132)의 LOAD 제어 입력으로 결합된 신호(131)를 생성하도록 신호(131)를 생성하게 한다. 이 레지스터로의 데이터 입력은 ECR2로 전송되는 정확히 32비트의 에러 데이터이고, 그러므로 그러한 데이터가 전송될 때마다 캡쳐된다. PD_ERROR은 FREEZE_HIST(99)를 야기하고, FREEZE_HIST(99)는 차례로 신호(131) 및 레지스터(132)로의 어떠한 추가적 로드도 방지한다. Last_Error_Data 레지스터(132)는 링 버스(85)에 결합되므로, 그 콘텐츠를 조사할 수 있다.
히스토리 FIFO가 버퍼 메모리 이용에 관련된다고 가정하기로 한다. 버퍼 메모리(31A,31B)는 여러 목적, 예를 들면 ROM의 예상 콘텐츠 저장하는 동작이나, 인가된 어드레스 시퀀스를 다른 시퀀스로 변환하는 동작 등을 위하여 이용될 수 있다. 어떠한 경우에도, 일단 로드된 버퍼 메모리는 어드레스 매퍼(29)에 의하여 어드레싱되는데, 어드레스 매퍼(29)는 ALU에 의하여 생성되는 X, Y, 및 Z 어드레스(27)에 의하여 구동된다. 각 버퍼 메모리마다 하나씩, 두 개의 버퍼 메모리 히스토리 FIFO(124,125)가 있다. 이는 PD_ERROR(90)의 생성에 관련되는 정확한 파이프라인 지연형 버퍼 메모리 콘텐츠를 제공하는 것을 책임진다. 이들 두 FIFO는, 버퍼 메모리(31A)에 관련된 버퍼 메모리 #1 히스토리 FIFO(124)와, 버퍼 메모리(31B)에 관련된 버퍼 메모리 #2 히스토리 FIFO(125)이다. 이들 두 버퍼 메모리 히스토리 FIFO는 각각 동일한 깊이(4가 적당함)이고, 함께 제어되며, 링 버스에 연결(ALU 히스토리 FIFO를 링 버스로 연결하는 것과 같이, 직접적으로 연결되거나 또는 매개 레지스터를 통하여 연결됨)된다. 이들은 ECR 히스토리 FIFO(126,127)를 포함하는 대규모 히스토리 FIFO 메카니즘의 일부이며, 버퍼 메모리 히스토리 FIFO에 대하여 설명한 다음 이를 논의할 것이다.
그러나 먼저, 설명에 들어가기 전에 사전 정보가 몇 가지 필요하다. 4개의 FIFO(133-136)에서, 그 출력은 도 2의 출력(62A-D)임을 주의해야 한다. 도 2와 같 이, 이들 출력은 포스트 디코드 회로(60)로 연결되지만, 버퍼 메모리 FIFO(133,134)에 대한 입력은 또한 STORED DATA(33) 및 STORED ADDRESSES(34)로서 ALU-to-DUT(송신 벡터) 파이프라인의 일부인 회로(35,37)로 전송된다는 점을 알아야 한다(도 2 참조). 버퍼 메모리를 위한 FIFO(133,134)는 상당히 깊고, 예컨대 30정도인데, 실제 깊이는 이용시 구성 가능하고, 그 존재 이유를 아는 것이 도움이 된다는 점을 제외하고는 본질적으로 주요 관심사가 아니다. 사실, 그 FIFO는 어떠한 버퍼 메모리 히스토리 FIFO도 없는 경우에도 존재할 것이다. 그 이유는 버퍼 메모리가 이용되는 방법에서 알 수 있다. 버퍼 메모리는 만약 이들이 없었다면 ALU에서 유래하였을 정보의 대체적 소스가 되고, 그 콘텐츠(33,34) 사본 하나를 ALU-to-DUT 파이프라인에 적용한다. 그러나, 또 다른 사본이 포스트 디코드로 전송될 수 있다. 다른 사본이 훨씬 먼저(즉, DUT로부터 비교 데이터(59)가 다시 되돌아오기 훨씬 이전에) 도달한다면 적절하지 않을 것이며, 따라서 FIFO(133,134)가 필요한 지연을 제공하여 동시에 도달하는 사본이 실제로 서로 대응하도록 한다. 이런 목적으로 그 깊이가 약 30에 이르는 것이다.
버퍼 메모리 히스토리 FIFO(124,125)에 관하여 설명하기로 한다. 많은 동작 특성은 ALU 히스토리 FIFO(69)와 동일하다. BEGIN_HIST 신호(68)에 의하여 재설정되고, 새로운 값이 존재하고 FIFO에 입력되어야 한다는 것을 나타내는 신호(DATA_VALID(118))를 어서트하고, 이를 not FULL(신호 121) 조건과 AND시킴(AND 게이트(119))으로써 LOAD된다. 이 FIFO는 DATA_VALID(DELAYED_DATA_VALID(182))의 지연 버전에 맞추어 UNLOAD된 상태이다. DATA_VALID의 두 버전간 시간 지연은 본질적으로 에러가 있는지 여부를 포스트 디코드가 판정하는데 필요한 시간이다. 아무 에러도 없는 경우, FIFO에 UNLOAD하기 원하겠지만, 발견하기까지 단지 기다려야만 한다.
FIFO 특성의 차이는 FIFO내에서 데이터 제거를 초래할 이벤트(PD_ERROR(90)의 발생)(이를 보유하는 이유임)가 본질적으로 (파이프라인 지연에 의하여 분리되지 않는다면) FIFO를 통과하는 데이터와 동시에 발생한다는 점이다. 그러므로, 파이프라인 깊이 레지스터나, 다운 카운터 등의 지원을 필요로 하지 않는다. FREEZE_HIST(99)(이는 실제로 히스토리 모드 래치(105)로 한정된 PD_ERROR임) 동안 UNLOAD를 중단하는 것으로 충분하다. 따라서, UNLOAD(122)가 AND 게이트(130)(그 입력은 DELAYED_DATA_VALID(182)와 FREEZE_HIST(99)의 반전된 인스턴스임)에 의하여 발생된다.
ECR 히스토리 FIFO(126,127)의 동작은 제어 신호가 영향을 미치는 한 동일하다. ECR이 이용되는 방법에 관하여 알면 설명된 방법이 유용한 이유를 알게 될 것이다. 도 2에는, DUT에 대한 현재 테스트로부터의 실제 데이터가 ECR로 직접 전달되도록 하는 포스트 디코드 우회 바이패스(bypass)(59)가 존재한다는 점을 주의해야 한다. 나중에, ECR에 저장된 데이터는, 여러 분석을 수행하기 위하여 다시 포스트 디코드로 인가되고 판독될 수 있다. 이제 "어떤 데이터가 PD_ERROR를 야기한 포스트 디코더로 들어가는가?"가 문제이다. 이는 ECR 히스토리 FIFO에서 답을 구할 수 있다. FIFO(135,136)은 "지역적"이고 대규모 파이프라인의 나머지 대부분이 이용되지 않기 때문에, 이 처리 과정 동안 FIFO(135,136)는 얕을 수 있다.
히스토리 FIFO(그 히스토리 FIFO의 위치와 관련하여, 그 깊이가 파이프라인의 지연의 합을 설명하도록 조정됨)를 메모리 테스터에 마련하여, 메모리 테스터 테스트 프로그램 내에서 적절한 위치로 분기하여 돌아가고 그 알고리즘 제어 상태를 복원함에 있어서, 이후에 이에 관련된 에러가 DUT에서 발생하는 경우, 에러에 관련된 정확한 상황을 판정할 수 있게 한다.

Claims (8)

  1. 테스트 대상 장치(Device Under Test)(14)(DUT)의 테스트와 관련되는 파라미터 값을 보존(preserving)하는 방법으로서,
    (a) 프로그램 실행 환경(program execution environment)(19,24)에서 자극 신호 값(stimulus signal value)(27,28)이 제 1의 개수의(a first number of) 스테이지(stage)로 구성된 자극 파이프라인(stimulus pipeline)(35,40,45,52)을 통하여 DUT로 디스패치(dispatched)되도록 하는 테스트 프로그램을 실행하는 단계와,
    (b) 상기 디스패치된 자극 신호 값으로 상기 DUT를 작동함으로써 얻어진 응답 신호 값을 제 2의 개수의(a second number of) 스테이지로 구성된 응답 파이프라인(response pipeline)(52,57,60,87)을 통하여 상기 DUT로부터 상기 프로그램 실행 환경으로 전송하는 단계와,
    (c) 상기 테스트 프로그램의 각 실행 사이클에 대해, 상기 자극 파이프라인 및 상기 응답 파이프라인 중 어느 하나의 선택된 위치로부터, 검색될(retrieved) 파라미터의 값을 히스토리 FIFO(History FIFO)(91-98,124-127)에 저장하는 단계와,
    (d) 선택된 에러 상태(selected error condition)에 응답해서, 상기 DUT에서의 발생을 포함하여, 상기 응답 파이프라인 내부에 에러 신호(error signal)(90)를 발생시키는 단계와,
    (e) 상기 단계(c)에서의 저장과 상기 단계(d)에서의 상기 에러 신호의 관련 인스턴스 발생을 분리하는 파이프라인 스테이지 수에 대응하도록 상기 히스토리 FIFO의 깊이를 조정(adjusting)하는 단계(84)와,
    (f) 상기 단계(d)에 의하여 발생된 에러 신호에 응답하여, 상기 단계(e)에서 조정된 상기 깊이에 저장된 파라미터 값을 상기 히스토리 FIFO에서 보존(99)하는 단계를 포함하는
    파라미터 값 보존 방법.
  2. 제 1 항에 있어서,
    (g) 상기 단계(f)에 이어서, 상기 히스토리 FIFO에 보존된 상기 파라미터의 값을 검색(retrieving)하는 단계를 더 포함하는
    파라미터 값 보존 방법.
  3. 제 2 항에 있어서,
    상기 단계(a)는 버퍼 메모리 어드레스(Buffer Memory Address)(30)를 발생시키는 단계를 포함하고 또한 상기 단계(c), 단계(f) 및 단계(g)의 상기 파라미터가 상기 버퍼 메모리 어드레스인
    파라미터 값 보존 방법.
  4. 제 2 항에 있어서,
    상기 단계(c), 단계(f) 및 단계(g)의 상기 파라미터는 에러시(in error) 응답 신호 값(7,56,59)인
    파라미터 값 보존 방법.
  5. 테스트 대상 장치의 테스트 중에 에러 캐치 RAM(Error Catch RAM)(32)(ECR)에 저장된 에러 표시(error indication)를 보존하는 방법으로서,
    (a) 프로그램 실행 환경(19,24)에서 자극 신호 값(27,28)이 제 1 의 개수의 스테이지로 구성된 자극 파이프라인(35,40,45,52)을 통하여 DUT로 디스패치되도록 하는 테스트 프로그램을 실행하는 단계와,
    (b) 상기 디스패치된 자극 신호 값으로 상기 DUT를 작동함으로써 얻어진 응답 신호 값을 제 2의 개수의 스테이지로 구성된 응답 파이프라인(52,57,60,87/32)을 통하여 상기 DUT로부터 상기 프로그램 실행 환경으로 전송하는 단계와,
    (c) 상기 단계(b)에 이어서, 상기 응답 파이프라인과 함께 배치된 임시 메모리(interim memory)(32A)에 응답 신호 값을 저장하는 단계와,
    (d) 상기 단계(a), 상기 단계(b) 및 상기 단계(c)에 이어서, 상기 임시 메모리 내부 위치로부터 저장된 응답 신호 값(62A-D)을 판독하여 이를 포스트 디코드 회로(Post Decode Circuit)(60)- 상기 포스트 디코드 회로는 선택된 유형의 에러에 대한 에러 표시를 형성함 -에 인가하는 단계와,
    (e) 상기 포스트 디코드 회로에 의하여 형성된 에러 표시(61)를 ECR(32B)에 저장하는 단계와,
    (f) 상기 단계(e)에서 저장된 상기 에러 표시를 ECR 히스토리 FIFO(126,127)에 저장하는 단계와,
    (g) 상기 단계(d)에서 판독되어 상기 포스트 디코드 회로로 인가된 , 저장된 응답 신호 값 중에 선택된 에러 상태에 응답하여 상기 포스트 디코드 회로 내에 에러 신호(90)를 발생시키는 단계와,
    (h) 상기 단계(f)에서의 저장과 상기 단계(g)에서 발생된 상기 에러 신호의 관련 인스턴스 발생을 분리하는 파이프라인 스테이지 수에 대응하도록 상기 ECR히스토리 FIFO의 깊이를 조정하는 단계와,
    (i) 상기 단계(g)에 의하여 발생된 에러 신호에 응답하여, 상기 단계(h)에서 조정된 깊이에 저장된 에러 표시를 상기 ECR 히스토리 FIFO 내에 보존하는 단계(99)를 포함하는
    에러 표시 보존 방법.
  6. 제 5 항에 있어서,
    상기 (j) 단계(i)에 이어서, 상기 ECR 히스토리 FIFO에 보존된 상기 에러 표시의 값을 검색하는 단계를 더 포함하는
    에러 표시 보존 방법.
  7. 테스트 대상 장치(14)(DUT)의 테스트와 관련되는 테스트 프로그램의 알고리즘 제어 변수(algorithmic control variable)(71-78)를 복원(restoring)하는 방법으로서,
    (a) 프로그램 실행 환경(19,24)에서 자극 신호 값(27,28)- 상기 자극 신호 값은 상기 테스트 프로그램의 알고리즘 제어 변수에 따라서 판정됨 -이 제 1 의 개수의 스테이지로 구성된 자극 파이프라인(35,40,45,52)을 통하여 DUT로 디스패치 되도록 하는 테스트 프로그램을 실행하는 단계와,
    (b) 상기 디스패치된 자극 신호 값으로 상기 DUT를 작동함으로써 얻어진 응답 신호 값을 제 2의 개수의 스테이지로 구성된 응답 파이프라인(52,57,60,87)을 통하여 상기 DUT로부터 상기 프로그램 실행 환경으로 전송하는 단계와,
    (c) 상기 테스트 프로그램의 각 실행 사이클동안, 복원될 상기 테스트 프로그램의 알고리즘 제어 변수의 값을 히스토리 FIFO(91-98)에 저장하는 단계와,
    (d) 선택된 에러 상태에 응답해서, 상기 DUT에서 상기 응답 파이프라인 내부에 에러 신호(90)를 발생시키는 단계와,
    (e) 상기 테스트 프로그램에서의 한 단계 실행과 상기 단계(d)에서의 상기 에러 신호의 관련 인스턴스 발생을 분리하는 파이프라인 스테이지 수에 대응하도록 상기 히스토리 FIFO의 깊이를 조정하는 단계(84)와,
    (f) 상기 단계(d)에 의하여 발생된 에러 신호에 응답하여, 상기 단계(e)에서 조정된 깊이에 저장된 상기 알고리즘 제어 변수를 상기 히스토리 FIFO에 보존하는 단계와,
    (g) 상기 단계(f)에 이어서, 상기 알고리즘 제어 변수의 값을 상기 히스토리 FIFO에 보존된 값으로 복원하는 단계와,
    (h) 상기 단계(d)에서 발생된 상기 에러 신호 존재에 응답하여 테스트 프로그램 흐름을 변경하는 상기 테스트 프로그램에서의 한 단계를 실행하는 단계를 포함하는
    알고리즘 제어 변수 복원 방법.
  8. 테스트 대상 장치(14)(DUT)의 테스트와 관련하여 테스트 프로그램 내 에러 표시에서의 분기(branching) 방법으로서,
    (a) 프로그램 실행 환경(19,24)에서 자극 신호 값(27,28)- 상기 자극 신호 값은 상기 테스트 프로그램의 알고리즘 제어 변수(71-78)에 따라서 판정됨 -이 제 1 의 개수의 스테이지로 구성된 자극 파이프라인(35,40,45,52)을 통하여 DUT로 디스패치 되도록 하는 테스트 프로그램을 실행하는 단계와,
    (b) 상기 디스패치된 자극 신호 값으로 상기 DUT를 작동함으로써 얻어진 응답 신호 값을 제 2의 개수의 스테이지로 구성된 응답 파이프라인(52,57,60,87)을 통하여 상기 DUT로부터 상기 프로그램 실행 환경으로 전송하는 단계와,
    (c) 상기 DUT에서의 발생을 포함하여, 상기 응답 파이프라인 내부의 응답 신호 값을 테스트하여 에러 상태를 검출하고 이를 표시하는 에러 표시(90, 113, 114)를 발생시키는 단계와,
    (d) 상기 단계(a)에서 실행되는 상기 테스트 프로그램의 선택된 위치에서, 상기 테스트 프로그램에서의 그 단계 실행과 뒤이은 단계(c)에서의 관련 에러 표시 발생을 분리하는 파이프라인 스테이지의 수에 대응하도록 파이프라인 지연 카운트(pipeline delay count)(84)를 설정하는 단계와,
    (e) 단계(d)에 뒤이은 상기 테스트 프로그램의 각 실행 사이클(83)에 대해 상기 파이프라인 지연 카운트가 0이 아닌 값을 가지는 경우, 상기 파이프라인 지연 카운트의 값을 1씩 감소(decrementing)시키는 단계와,
    (f) 대용 한정 신호(substitute qualifier signal)(112)- 그 값은 상기 파이프라인 지연 카운트의 감소된 값이 0이 아닌 한 "에러 없음(NO ERROR)(116)"를 의미하고, 상기 파이프라인 지연 카운트의 감소된 값이 0인 경우(115,108) 상기 단계(c)에서 발생된 상기 에러 표시의 실제 값을 가짐 -를 발생시키는 단계와,
    (g) 상기 단계(f)에서 발생된 상기 대용 한정 신호의 값에 응답하여 테스트 프로그램 흐름을 변경하는 상기 테스트 프로그램에서의 한 단계를 실행(112)하는 단계를 포함하는
    에러 표시에서의 분기 방법.
KR1020020022396A 2001-04-25 2002-04-24 파라미터 값 및 에러 표시 보존 방법과, 알고리즘 제어변수 복원 방법과, 에러 표시에서의 분기 방법 KR100920277B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/842,433 2001-04-25
US09/842,433 US6574764B2 (en) 2001-04-25 2001-04-25 Algorithmically programmable memory tester with history FIFO's that aid in error analysis and recovery

Publications (2)

Publication Number Publication Date
KR20020082791A KR20020082791A (ko) 2002-10-31
KR100920277B1 true KR100920277B1 (ko) 2009-10-08

Family

ID=25287279

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020020022396A KR100920277B1 (ko) 2001-04-25 2002-04-24 파라미터 값 및 에러 표시 보존 방법과, 알고리즘 제어변수 복원 방법과, 에러 표시에서의 분기 방법

Country Status (6)

Country Link
US (1) US6574764B2 (ko)
EP (2) EP1701359A1 (ko)
JP (1) JP4194799B2 (ko)
KR (1) KR100920277B1 (ko)
DE (1) DE60219990T2 (ko)
TW (1) TW583680B (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6763490B1 (en) * 2000-09-25 2004-07-13 Agilent Technologies, Inc. Method and apparatus for coordinating program execution in a site controller with pattern execution in a tester
US20030088810A1 (en) * 2001-11-02 2003-05-08 Sun Microsystems, Inc. Methods and apparatus for determining software component sizes associated with errors
US7117410B2 (en) * 2002-12-20 2006-10-03 Teradyne, Inc. Distributed failure analysis memory for automatic test equipment
WO2004079428A1 (ja) * 2003-03-03 2004-09-16 Nikon Corporation 顕微鏡デジタル画像取得システム
US7039545B2 (en) * 2004-04-19 2006-05-02 Agilent Technologies, Inc. Apparatus, system and/or method for converting a serial test to a parallel test
US20050285612A1 (en) * 2004-06-23 2005-12-29 From Thirty Incorporated Apparatus for measuring DC parameters in a wafer burn-in system
JP2006275986A (ja) * 2005-03-30 2006-10-12 Advantest Corp 診断プログラム、切替プログラム、試験装置、および診断方法
US7528622B2 (en) 2005-07-06 2009-05-05 Optimal Test Ltd. Methods for slow test time detection of an integrated circuit during parallel testing
DE102005048872A1 (de) * 2005-10-12 2007-04-26 Mühlbauer Ag Testkopfeinrichtung
US7536662B2 (en) * 2006-06-27 2009-05-19 Atrenta, Inc. Method for recognizing and verifying FIFO structures in integrated circuit designs
US8099583B2 (en) * 2006-08-23 2012-01-17 Axis Semiconductor, Inc. Method of and apparatus and architecture for real time signal processing by switch-controlled programmable processor configuring and flexible pipeline and parallel processing
US20090112548A1 (en) * 2007-10-30 2009-04-30 Conner George W A method for testing in a reconfigurable tester
US20090113245A1 (en) * 2007-10-30 2009-04-30 Teradyne, Inc. Protocol aware digital channel apparatus
US7792656B2 (en) * 2007-12-19 2010-09-07 Advantest Corporation Test apparatus
US8181003B2 (en) * 2008-05-29 2012-05-15 Axis Semiconductor, Inc. Instruction set design, control and communication in programmable microprocessor cores and the like
US8078833B2 (en) * 2008-05-29 2011-12-13 Axis Semiconductor, Inc. Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions
US8458536B2 (en) * 2008-07-17 2013-06-04 Marvell World Trade Ltd. Data recovery in solid state memory devices
US8527677B1 (en) 2010-06-25 2013-09-03 Altera Corporation Serial communications links with bonded first-in-first-out buffer circuitry
CN103163448B (zh) * 2011-12-16 2016-01-27 中国科学院微电子研究所 对现场可编程门阵列中查找表延迟故障进行检测的方法
US10268572B2 (en) * 2017-08-03 2019-04-23 Fujitsu Limited Interactive software program repair
US10565036B1 (en) 2019-02-14 2020-02-18 Axis Semiconductor, Inc. Method of synchronizing host and coprocessor operations via FIFO communication
CN116705137B (zh) * 2023-05-08 2024-04-02 深圳市晶存科技有限公司 固态硬盘的测试模式切换方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0356999A2 (en) * 1988-09-02 1990-03-07 Advantest Corporation Memory tester
EP0999499A2 (en) * 1998-11-05 2000-05-10 Hewlett-Packard Company Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data
KR20000033120A (ko) * 1998-11-19 2000-06-15 윤종용 반도체 메모리 장치를 위한 프로그램 가능한 내장 자기 테스트시스템
US6173238B1 (en) * 1996-08-09 2001-01-09 Advantest Corporation Memory testing apparatus
KR20010020404A (ko) * 1997-04-30 2001-03-15 오쿠모토 리차드 적어도 하나의 준 자율 테스트 장비를 포함하는 집적 회로 테스터

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5067129A (en) * 1989-08-16 1991-11-19 International Business Machines Corp. Service processor tester
US6067648A (en) * 1998-03-02 2000-05-23 Tanisys Technology, Inc. Programmable pulse generator
EP0992907B1 (en) * 1998-10-06 2005-09-28 Texas Instruments Inc. Trace fifo management
US6320812B1 (en) * 2000-09-20 2001-11-20 Agilent Technologies, Inc. Error catch RAM for memory tester has SDRAM memory sets configurable for size and speed

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0356999A2 (en) * 1988-09-02 1990-03-07 Advantest Corporation Memory tester
US6173238B1 (en) * 1996-08-09 2001-01-09 Advantest Corporation Memory testing apparatus
KR20010020404A (ko) * 1997-04-30 2001-03-15 오쿠모토 리차드 적어도 하나의 준 자율 테스트 장비를 포함하는 집적 회로 테스터
EP0999499A2 (en) * 1998-11-05 2000-05-10 Hewlett-Packard Company Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data
KR20000033120A (ko) * 1998-11-19 2000-06-15 윤종용 반도체 메모리 장치를 위한 프로그램 가능한 내장 자기 테스트시스템

Also Published As

Publication number Publication date
TW583680B (en) 2004-04-11
KR20020082791A (ko) 2002-10-31
DE60219990D1 (de) 2007-06-21
US20020162046A1 (en) 2002-10-31
EP1701359A1 (en) 2006-09-13
EP1253600A2 (en) 2002-10-30
DE60219990T2 (de) 2008-01-17
JP4194799B2 (ja) 2008-12-10
EP1253600B1 (en) 2007-05-09
EP1253600A3 (en) 2004-04-21
JP2003007089A (ja) 2003-01-10
US6574764B2 (en) 2003-06-03

Similar Documents

Publication Publication Date Title
KR100920277B1 (ko) 파라미터 값 및 에러 표시 보존 방법과, 알고리즘 제어변수 복원 방법과, 에러 표시에서의 분기 방법
KR100881843B1 (ko) 트리거 신호 생성 방법 및 전압 파형 표현 생성 방법
KR100786418B1 (ko) Dram에서의 메모리 동작 수행 방법
US7168005B2 (en) Programable multi-port memory BIST with compact microcode
KR100896585B1 (ko) 메모리 테스트 방법
US6779140B2 (en) Algorithmically programmable memory tester with test sites operating in a slave mode
US8386864B2 (en) Locally synchronous shared BIST architecture for testing embedded memories with asynchronous interfaces
US6598112B1 (en) Method and apparatus for executing a program using primary, secondary and tertiary memories
US6748562B1 (en) Memory tester omits programming of addresses in detected bad columns
US7076714B2 (en) Memory tester uses arbitrary dynamic mappings to serialize vectors into transmitted sub-vectors and de-serialize received sub-vectors into vectors
US6687861B1 (en) Memory tester with enhanced post decode
US6763490B1 (en) Method and apparatus for coordinating program execution in a site controller with pattern execution in a tester
US6687855B1 (en) Apparatus and method for storing information during a test program
US6968545B1 (en) Method and apparatus for no-latency conditional branching
US6973404B1 (en) Method and apparatus for administering inversion property in a memory tester
KR100771263B1 (ko) 메모리 어레이 테스트 방법과 이를 구현하기 위해 배열된메모리 기반 디바이스
EP1193502A2 (en) Apparatus and method for performing conditional calculations
KR20020020862A (ko) 메모리 테스터 어드레스 채널 관리 장치

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120823

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130827

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140826

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150825

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160825

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170824

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180823

Year of fee payment: 10