KR20190131445A - 자동 테스팅 동안 디바이스 결함의 근본 원인을 식별하기 위한 트래픽 캡쳐 및 디버깅 툴 - Google Patents

자동 테스팅 동안 디바이스 결함의 근본 원인을 식별하기 위한 트래픽 캡쳐 및 디버깅 툴 Download PDF

Info

Publication number
KR20190131445A
KR20190131445A KR1020190056869A KR20190056869A KR20190131445A KR 20190131445 A KR20190131445 A KR 20190131445A KR 1020190056869 A KR1020190056869 A KR 1020190056869A KR 20190056869 A KR20190056869 A KR 20190056869A KR 20190131445 A KR20190131445 A KR 20190131445A
Authority
KR
South Korea
Prior art keywords
dut
capture
programmable logic
logic device
system controller
Prior art date
Application number
KR1020190056869A
Other languages
English (en)
Inventor
린덴 수
벤 로겔-파빌라
마이클 존스
듀안 챔푸
메이-메이 수
Original Assignee
주식회사 아도반테스토
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 아도반테스토 filed Critical 주식회사 아도반테스토
Publication of KR20190131445A publication Critical patent/KR20190131445A/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/26Functional testing
    • G06F11/273Tester hardware, i.e. output processing circuits
    • 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/26Functional testing
    • 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
    • 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/2832Specific tests of electronic circuits not provided for elsewhere
    • G01R31/2834Automated test systems [ATE]; using microprocessors or computers
    • 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/31704Design for test; Design verification
    • 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/31705Debugging aspects, e.g. using test circuits for debugging, using dedicated debugging test circuits
    • 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/2257Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using expert systems
    • 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/2273Test methods
    • 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
    • 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/25Testing of logic operation, e.g. by logic analysers
    • 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/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • 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/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • 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
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0631Management of faults, events, alarms or notifications using root cause analysis; using analysis of correlation between notifications, alarms or events based on decision criteria, e.g. hierarchy, tree or time analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0028Serial attached SCSI [SAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0032Serial ATA [SATA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/12Network monitoring probes

Abstract

자동 테스트 장비를 이용하여 결함의 근본 원인을 진단하기 위한 방법이 개시된다. 방벙은 복수의 캡쳐 모듈을 이용하여 자동 테스트 장비에서의 DUT(device under test)를 테스팅하는 것과 관련된 데이터 트래픽을 모니터링하는 것을 포함하고, 복수의 캡쳐 모듈은 프로그래밍가능 로직 디바이스 상으로 프로그래밍되고, 프로그래밍가능 로직 디바이스는 시스템 제어기에 의해 제어되고 DUT를 테스트하기 위한 코맨드 및 데이터를 생성하도록 동작가능하고, 복수의 캡쳐 모듈은 모니터링될 데이터 트래픽을 선택적으로 캡쳐하도록 동작가능하고, 모니터링된 데이터 트래픽은 DUT와 시스템 제어기 사이의 트래픽의 흐름을 포함한다. 방법은 모니터링과 관련된 결과를 복수의 캡쳐 모듈 각각과 관련된 개개의 메모리에 저장하는 것을 더 포함한다. 더욱이, 방법은 요청시에 결과를 시스템 제어기 상에서 실행되는 애플리케이션 프로그램에게 송신하는 것을 포함한다.

Description

자동 테스팅 동안 디바이스 결함의 근본 원인을 식별하기 위한 트래픽 캡쳐 및 디버깅 툴{TRAFFIC CAPTURE AND DEBUGGING TOOLS FOR IDENTIFYING ROOT CAUSES OF DEVICE FAILURE DURING AUTOMATED TESTING}
관련 출원에 대한 상호 참조
관련 출원
본 출원은 발명자 Linden Hsu, Ben Rogel-Favila, Bob Collins, Ed Chow, Michael Jones, Duane Champoux 및 Mei-Mei Su에 의해 "A LOG POST PROCESSOR FOR IDENTIFYING ROOT CAUSES OF DEVICE FAILURE DURING AUTOMATED TESTING" 이라는 명칭으로 2018년 3월 8일자로 출원되었으며, 대리인 문서 번호 ATSY-0061-01.01US를 갖는, 미국 특허 출원 제15/916,126호와 관련된 것이다. 그 미국 특허 출원은 전체로서, 모든 목적을 위해, 본 명세서에서 참조로 인용된다.
발명의 분야
일반적으로, 본 개시 내용은 전자 디바이스 테스팅 시스템에 관한 것으로서, 보다 구체적으로, DUT(device under test)를 테스트하기 위한 전자 디바이스 테스팅 장비에 관한 것이다.
ATE(automated test equipment)는 반도체 디바이스 또는 전자 어셈블리에 대해 테스트를 수행하는 임의의 테스팅 어셈블리일 수 있다. ATE 어셈블리는 측정을 신속하게 수행하고, 이후에 분석될 수 있는 테스트 결과를 생성하는 자동 테스트를 실행하는데 이용될 수 있다. ATE 어셈블리는 계측기(meter), 커스텀(custom) 전용 컴퓨터 제어 시스템을 포함할 수 있는 복잡한 자동 테스트 어셈블리, 및 전자 부품을 자동으로 테스트할 수 있고/있거나, SOC(system-on-chip) 테스팅 또는 집적 회로 테스팅과 같은 반도체 웨이퍼 테스팅이 가능한 많은 상이한 테스트 기구에 연결된 컴퓨터 시스템으로부터의 임의의 것일 수 있다. ATE 시스템은 디바이스가 설계된 대로 기능하는 것을 보장하기 위해 디바이스를 테스트하는데 사용된 시간량을 감소시키고, 소정의 디바이스가 고객에게 도달되기 전에 그 디바이스 내의 결함이 있는 구성요소의 존재를 결정하기 위한 진단 툴로서 기능한다.
종래의 ATE가 갖는 한 가지 문제점은, 전형적으로 합격/실패(pass/fail) 결과만을 보고한다는 것이다. 즉, ATE는 하나 이상의 DUT가 실행중인 개개의 테스트에 합격 또는 실패하였는지의 여부만을 보고한다. ATE는 자격 테스팅(qualification testing) 동안 발생되는 디바이스 결함의 근본 원인을 식별하도록 구성되지 않는다. 전형적으로, ATE는 엔지니어로 하여금 DUT가 갖는 문제점들을 쉽게 진단할 수 있게 하는, 그 내부에 내장된 어떠한 하드웨어 또는 소프트웨어 기반 툴도 갖지 않을 것이다.
전형적인 테스팅 환경에서, ATE를 동작하는 엔지니어는 데이터 로그(data log)를 수집하고, 그러한 로그에 대해 분석을 수행함으로써, 결함의 원인을 수작업으로 식별할 필요가 있을 것이다. 이러한 방안은 노동 집약적이고, 에러 발생이 쉽고, 스케일러블(scalable)하지 않다. 또한, 그것은 엔지니어가 어떤 데이터 로그를 분석할 것인지 또는 데이터 로그 내에서 디바이스 결함의 근본 원인을 어떻게 찾을 것인지를 결정하기 위해 이용가능한 정보가 충분하지 않을 수 있으므로, 원하는 결과를 제공하지 못할 수도 있다. 더욱이, 전통적인 ATE 시스템은 엔지니어가 테스트와 관련되는 진단 정보를 캡쳐하고, 자동으로 해석하고, 분석하는 데에 도움이 되는, 하드웨어 내에 내장된 어떠한 인텔리전스(intelligence)도 포함하지 않는다.
따라서, 시간에 걸친 테스터의 상태에 관한 가치있는 정보 및 테스터와 DUT 사이에 교환되는 데이터를 수집하기 위해, 테스터와 DUT 사이에 교환되는 데이터를 수집 및 모니터링하는 하드웨어 기반 트래픽 캡쳐 모듈을 포함하는 ATE에 대한 필요성이 존재한다. 더욱이, 실패할 것 같은 디바이스에 관한 정보를 제공하는 디바이스 결함 전조(device failure precursor)에 대한 모니터링을 수행하는 하드웨어 기반 로직 모듈에 대한 필요성이 존재한다. 마지막으로, 엔지니어로 하여금 수집된 데이터를 보다 용이하게 해석할 수 있게 하는 하드웨어 및 소프트웨어 기반 툴에 대한 필요성이 존재한다.
일 실시예에서, 자동 테스트 장비를 이용하여 결함의 원인을 진단하기 위한 방법이 제공된다. 방법은 복수의 캡쳐 모듈을 이용하여, 자동 테스트 장비에서 DUT를 테스팅하는 것과 관련된 데이터 트래픽을 모니터링하는 것을 포함하고, 복수의 캡쳐 모듈은 프로그래밍가능하고, 프로그래밍가능 로직 디바이스 내에 통합되고, 프로그래밍가능 로직 디바이스는 시스템 제어기에 의해 제어되고, DUT를 테스트하기 위한 코맨드 및 데이터를 생성하도록 동작가능하고, 복수의 캡쳐 모듈은 모니터링될 데이터 트래픽을 선택적으로 캡쳐하도록 동작가능하고, 데이터 트래픽은 DUT와 프로그래밍가능 로직 디바이스 사이의 트래픽의 흐름을 포함한다. 방법은 모니터링과 관련된 결과를 복수의 캡쳐 모듈 각각과 관련된 개개의 메모리에 저장하는 것을 더 포함한다. 더욱이, 방법은 요청시에 결과를 시스템 제어기 상에서 실행되는 애플리케이션 프로그램에게 송신하는 것을 포함한다.
다른 실시예에서, 자동 테스트 장비를 이용하여 결함의 근본 원인을 진단하기 위한 장치가 개시된다. 장치는 시스템 제어기를 포함하는 컴퓨터 시스템을 포함하고, 시스템 제어기는 테스터 프로세서 및 프로그래밍가능 로직 디바이스를 포함하는 사이트 모듈 보드(site module board)에 통신가능하게 연결되고, 시스템 제어기는 DUT에 대해 테스트를 수행하기 위한 인스트럭션을 테스터 프로세서 및 프로그래밍가능 로직 디바이스에게 송신하도록 동작가능하다. 장치는 DUT에 통신가능하게 연결되고, DUT에 대한 테스트를 실행하기 위한 코맨드 및 데이터를 생성하도록 동작가능한 프로그래밍가능 로직 디바이스를 더 포함하고, 프로그래밍가능 로직 디바이스는 복수의 프로그래밍가능 캡쳐 모듈을 포함하고, 복수의 프로그래밍가능 캡쳐 모듈은 프로그래밍가능 로직 디바이스 상에서 프로그래밍되고, (a) DUT를 테스트하는 것과 관련된 데이터 트래픽을 모니터링하고; (b) 모니터링될 데이터 트래픽을 선택적으로 캡쳐 ― 데이터 트래픽은 DUT와 프로그래밍가능 로직 디바이스 사이의 트래픽의 흐름을 포함함 ― 하고; (c) 데이터 트래픽을 모니터링하는 것과 관련된 결과를 복수의 캡쳐 모듈 각각과 관련된 개개의 메모리에 저장하고; (d) 요청시에 결과를 시스템 제어기 상에서 실행되는 테스터 애플리케이션 프로그램에게 송신하도록 동작가능하다.
다른 실시예에서, 테스터가 개시된다. 테스터는 복수의 DUT를 테스트하기 위한 테스트 프로그램을 제어하기 위한 시스템 제어기를 포함한다. 더욱이, 시스템은 복수의 DUT와 인터페이스하고 복수의 DUT를 테스트하도록 동작가능한 복수의 모듈을 포함하고, 복수의 모듈은 시스템 제어기에 연결되고, 각각의 모듈은 사이트 모듈 모드를 포함하고, 각각의 사이트 모듈 보드는 (a) 시스템 제어기와 통신하도록 연결되어, 테스트 프로그램에 따라 시스템 제어기로부터 인스트럭션 및 데이터를 수신하는 테스터 프로세서; 및 (b) 테스터 프로세서에 연결된 복수의 프로그래밍가능 로직 디바이스를 포함하고, 각각의 프로그래밍가능 로직 디바이스는 개개의 DUT에 대한 적용을 위한 테스트 데이터를 생성하도록 동작가능하고, 또한 개개의 DUT에 의해 생성된 테스트 데이터를 수신 및 비교하도록 동작가능하고, 또한 개개의 DUT와 호환가능한 통신 프로토콜에서 개개의 DUT와 통신하게 프로그래밍되도록 동작가능하고, 프로그래밍가능 로직 디바이스 각각은 복수의 캡쳐 모듈을 포함하고, 복수의 캡쳐 모듈은 프로그래밍가능 로직 디바이스 상에서 프로그래밍되고, (i) 개개의 DUT를 테스트하는 것과 관련된 데이터 트래픽을 모니터링하고; (ii) 모니터링될 데이터 트래픽을 선택적으로 캡쳐 ― 데이터 트래픽은 개개의 DUT와 시스템 제어기 사이의 트래픽의 흐름을 포함함 ― 하고; (iii) 데이터 트래픽을 모니터링하는 것과 관련된 결과를 복수의 캡쳐 모듈 각각과 관련된 개개의 메모리에 저장하고; (iv) 요청시에 결과를 시스템 제어기 상에서 실행되는 테스터 애플리케이션 프로그램에게 송신하도록 동작가능하다.
이하의 상세한 설명은 첨부 도면과 함께, 본 발명의 본질 및 이점에 대한 보다 완전한 이해를 제공할 것이다.
유사한 참조 번호가 유사한 요소를 나타내는 첨부 도면에서, 제한적인 것이 아닌 예시를 통해, 본 발명의 실시예가 도시된다.
도 1은 본 발명의 일 실시예에 따른, 본 발명의 자동 테스트 시스템의 실시예가 구현될 수 있는 컴퓨터 시스템이다.
도 2는 DUT가 제어된 환경 챔버 내에 위치되는 전형적인 테스팅 환경을 도시한다.
도 3은 테스터 슬라이스, 및 테스터 슬라이스와 시스템 제어기 및 DUT와의 상호접속의 예시적인 실시예를 도시하는 상세 개략 블록도이다.
도 4는 본 발명의 실시예에 따른, 본 발명의 트래픽 캡쳐 모듈이 자동 테스팅과 관련되는 진단 정보를 수집하는 방법을 도시하는 상위 레벨 블록도이다.
도 5는 본 발명의 실시예에 따른, 본 발명의 트래픽 캡쳐 모듈이 프로그래밍되는 방법을 도시하는 블록도이다.
도 6은 본 발명의 일 실시예에 따른, 디바이스 결함의 근본 원인을 결정하기 위해 자동 디바이스 테스팅의 과정 동안의 주요 정보를 캡쳐하기 위한 예시적인 컴퓨터 구현된 프로세스의 흐름도를 도시한다.
도 7은 본 발명의 일 실시예에 따른, 데이터 트래픽을 모니터링 및 문제점들을 진단하기 위한 자동 디바이스 테스팅 동안 캡쳐 모듈을 이용하기 위한 예시적인 컴퓨터 구현된 프로세스의 흐름도를 도시한다.
도면에서, 동일한 명칭을 갖는 요소들은 동일하거나 또는 유사한 기능을 갖는다.
본 개시 내용의 다양한 실시예에 대한 상세한 참조가 이루어질 것이며, 그 예들이 첨부 도면에 도시된다. 이들 실시예와 함께 기술되지만, 그것은 본 개시 내용을 이들 실시예로 제한하고자 의도하는 것은 아님을 이해할 것이다. 반대로, 본 개시 내용은 첨부된 청구항들에 의해 정의된 개시 내용의 사상 및 영역 내에 포함될 수 있는 대안, 수정 및 등가물을 커버하도록 의도된다. 더욱이, 본 개시 내용에 대한 이하의 상세한 설명에서, 본 개시 내용에 대한 완전한 이해를 제공하기 위해 많은 특정한 세부사항들이 개시된다. 그러나, 본 개시 내용은 이들 특정 세부사항들 없이도 실시될 수 있음을 이해할 것이다. 다른 경우에 있어서, 잘 알려진 방법, 절차, 구성요소 및 회로에 대해서는, 본 개시 내용의 양상들을 불필요하게 모호하게 하지 않도록, 상세히 기술되지 않았다.
이하의 상세한 설명의 일부 부분들은 절차, 로직 블록, 프로세싱, 및 컴퓨터 메모리 내의 데이터 비트에 대한 동작의 다른 상징적 표현의 관점에서 제공된다. 이들 설명 및 표현은, 데이터 처리 분야의 당업자가 그들의 작업의 본질을 본 기술 분야의 다른 당업자에게 가장 효율적으로 전달하기 위해 이용한 수단이다. 본 출원에서, 절차, 로직 블록, 프로세스 등은 원하는 결과로 이끄는 단계들 또는 인스트럭션들의 일관성 있는 시퀀스인 것으로 고려된다. 단계들은 물리적인 양들의 물리적인 조작을 이용하는 것들이다. 통상적으로, 반드시 필요한 것은 아니지만, 이들 양은 컴퓨터 시스템에서 저장되고, 전송되고, 결합되고, 비교되며, 그렇지 않은 경우 조작될 수 있는 전기 또는 자기 신호의 형태를 취한다. 주로 일반적인 사용상의 이유로, 이들 신호를 트랜잭션, 비트, 값, 요소, 심볼, 문자(character), 샘플, 픽셀 등으로서 지칭하는 것이 가끔은 편리한 것으로 입증되었다.
그러나, 이들 및 유사한 용어들 전부는 적절한 물리적인 양과 관련되며, 이들 양에 적용된 편리한 라벨일 뿐임을 알아야 한다. 이하의 설명으로부터 명백한 것으로서, 구체적으로 달리 언급되지 않는 한, 본 개시 내용 전체를 통해, "구성하는", "제공하는", "실행하는", "송신하는", "획득하는", "구현하는", "프로그래밍하는", "할당하는", "관련시키는", "설정하는", "액세스하는", "검색하는", "저장하는", "캡쳐하는", "생성하는", "완료하는", "모니터링하는", "제어하는", "결정하는", "식별하는", "캐싱하는", "유지하는", "비교하는", "제거하는", "판독하는", "기록하는" 등과 같은 용어들을 이용한 설명은 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스 또는 프로세서(예를 들면, 도 1의 시스템(110))의 동작 및 프로세스(예를 들면, 도 7의 흐름도(700))와 관련됨을 이해할 것이다. 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스는 컴퓨터 시스템 메모리, 레지스터 또는 다른 그러한 정보 스토리지, 송신 또는 디스플레이 디바이스들 내의 물리적인 (전자) 양으로서 표현된 데이터를 조작 및 변환한다.
본 명세서에서 기술된 실시예는 하나 이상의 컴퓨터 또는 다른 디바이스에 의해 실행된, 프로그램 모듈과 같은, 몇몇 형태의 컴퓨터 판독가능 저장 매체 상에 상주하는 컴퓨터 실행가능 인스트럭션의 일반적인 문맥에서 기술될 수 있다. 예로써, 제한적인 것은 아니지만, 컴퓨터 판독가능 저장 매체는 비일시적 컴퓨터 판독가능 저장 매체 및 통신 매체를 포함할 수 있고; 비일시적 컴퓨터 판독가능 매체 는 일시적, 전파 신호를 제외한 모든 컴퓨터 판독가능 매체를 포함한다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 또는 특정한 추상적 데이터 타입을 구현하는 루틴, 프로그램, 객체, 구성요소, 데이터 구조 등을 포함한다. 프로그램 모듈의 기능은 다양한 실시예에서 원하는 바에 따라 결합되거나 또는 분산될 수 있다.
컴퓨터 저장 매체는 컴퓨터 판독가능 인스트럭션, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 제거가능 및 비제거가능 매체를 포함한다. 컴퓨터 저장 매체는, 제한적인 것은 아니지만, RAM(random access memory), ROM(read only memory), EEPROM(electrically erasable programmable ROM), 플래시 메모리 또는 다른 메모리 기술, CD-ROM(compact disk ROM), DVD(digital versatile disk) 또는 다른 광학 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 저장 디바이스, 또는 원하는 정보를 저장하는데 이용될 수 있고, 해당 정보를 검색하도록 액세스될 수 있는 임의의 다른 매체를 포함한다.
통신 매체는 컴퓨터 실행가능 인스트럭션, 데이터 구조 및 프로그램 모듈을 구현할 수 있고, 임의의 정보 전달 매체를 포함할 수 있다. 예로써, 제한적인 것은 아니지만, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체, 및 음향(acoustic), RF(radio frequency), 적외선, 및 다른 무선 매체와 같은 무선 매체를 포함한다. 전술한 것들 중 임의의 것의 조합이 컴퓨터 판독가능 매체의 영역 내에 또한 포함될 수 있다.
도 1은 디바이스 결함의 근본 원인을 식별하는 것을 돕는 하드웨어 및 소프트웨어 기반 트래픽 캡쳐 및 디버그 툴을 지원할 수 있는 테스터 제어 시스템(110)의 예에 대한 블록도이다. 예를 들어, 시스템(110)은 FPGA 기반 테스터 모듈들에 접속할 수 있고, FPGA는 테스터의 상태 및 접속된 DUT와 FPGA 사이에 교환되는 정보와 관련되는 정보를 수집하기 위한 캡쳐 로직을 포함한다. 테스터 제어 시스템(110)은 컴퓨터 판독가능 인스트럭션을 실행할 수 있는 임의의 단일 또는 다중 프로세서 컴퓨팅 디바이스 또는 시스템을 넓게 나타낸다. 제어 시스템(110)의 예는, 제한적인 것은 아니지만, 워크스테이션, 랩탑, 클라이언트측 단말기, 서버, 분산 컴퓨팅 시스템, 핸드헬드 디바이스, 또는 임의의 다른 컴퓨팅 시스템 또는 디바이스를 포함한다. 가장 기본적인 구성에 있어서, 제어 시스템(110)은 적어도 하나의 프로세서(114) 및 시스템 메모리(116)를 포함할 수 있다.
프로세서(114)는 일반적으로, 데이터를 처리하거나 또는 인스트럭션을 해석 및 실행할 수 있는 임의의 타입 또는 형태의 처리 유닛을 나타낸다. 특정 실시예에서, 프로세서(114)는 소프트웨어 애플리케이션 또는 모듈로부터 인스트럭션을 수신할 수 있다. 이들 인스트럭션은 프로세서(114)로 하여금, 본 명세서에서 기술 및/또는 예시된 예시적인 실시예들 중 하나 이상의 기능을 수행하도록 할 수 있다.
시스템 메모리(116)는 일반적으로, 데이터 및/또는 다른 컴퓨터 판독가능 인스트럭션을 저장할 수 있는 임의의 타입 또는 형태의 휘발성 또는 비휘발성 저장 디바이스 또는 매체를 나타낸다. 시스템 메모리(116)의 예는, 제한적인 것은 아니지만, RAM, ROM, 플래시 메모리, 또는 임의의 다른 적절한 메모리 디바이스를 포함한다. 요구되는 것은 아니지만, 특정 실시예에서, 제어 시스템(110)은 (예를 들면, 시스템 메모리(116)와 같은) 휘발성 메모리 유닛 및 (예를 들면, 주 저장 디바이스(primary storage device)(132)와 같은) 비휘발성 저장 디바이스 둘다를 포함할 수 있다.
테스터 제어 시스템(110)은 프로세서(114) 및 시스템 메모리(116) 이외에, 하나 이상의 구성요소 또는 요소를 또한 포함할 수 있다. 예를 들어, 도 2의 실시예에서, 제어 시스템(110)은 메모리 제어기(118), 입/출력(I/O) 제어기(120) 및 통신 인터페이스(122)를 포함하고, 그 각각은 통신 기반 시설(communication infrastructure)(112)을 통해 상호접속될 수 있다. 통신 기반 시설(112)은 일반적으로, 컴퓨팅 디바이스의 하나 이상의 구성요소들 사이의 통신을 가능하게 할 수 있는 임의의 타입 또는 형태의 기반 시설을 나타낸다. 통신 기반 시설(112)의 예는, 제한적인 것은 아니지만, (ISA(Industry Standard Architecture), PCI(Peripheral Component Interconnect), PCIe(PCI Express), 또는 유사한 버스와 같은) 통신 버스 및 네트워크를 포함한다.
메모리 제어기(118)는 일반적으로, 메모리 또는 데이터를 처리하거나, 제어 시스템(110)의 하나 이상의 구성요소들 사이의 통신을 제어할 수 있는 임의의 타입 또는 형태의 디바이스를 나타낸다. 예를 들어, 메모리 제어기(118)는 통신 기반 시설(112)을 통해 프로세서(114), 시스템 메모리(116) 및 I/O 제어기(120) 사이의 통신을 제어할 수 있다.
I/O 제어기(120)는 일반적으로, 컴퓨팅 디바이스의 입력 및 출력 기능들을 조정 및/또는 제어할 수 있는 임의의 타입 또는 형태의 모듈을 나타낸다. 예를 들어, I/O 제어기(120)는 프로세서(114), 시스템 메모리(116), 통신 인터페이스(122), 디스플레이 어댑터(126), 입력 인터페이스(130) 및 저장 인터페이스(storage interface)(134)와 같은, 제어 시스템(110)의 하나 이상의 요소들 사이에서의 데이터의 전송을 제어하거나 또는 가능하게 할 수 있다.
통신 인터페이스(122)는 예시적인 제어 시스템(110)과 하나 이상의 추가적인 디바이스 사이의 통신을 가능하게 할 수 있는 임의의 타입 또는 형태의 통신 디바이스 또는 어댑터를 넓게 나타낸다. 예를 들어, 통신 인터페이스(122)는 추가적인 제어 시스템을 포함하는 개인 또는 공용 네트워크와 제어 시스템(110) 사이의 통신을 가능하게 할 수 있다. 통신 인터페이스(122)의 예는, 제한적인 것은 아니지만, (네트워크 인터페이스 카드와 같은) 유선 네트워크 인터페이스, (무선 네트워크 인터페이스 카드와 같은) 무선 네트워크 인터페이스, 모뎀 및 임의의 다른 적절한 인터페이스를 포함한다. 일 실시예에서, 통신 인터페이스(122)는 인터넷과 같은 네트워크에 대한 직접 링크를 통해 원격 서버에 대한 직접 접속을 제공한다. 통신 인터페이스(122)는 또한, 임의의 다른 적절한 접속을 통해 그러한 접속을 간접적으로 제공할 수 있다.
통신 인터페이스(122)는 또한, 외부 버스 또는 통신 채널을 통해 제어 시스템(110)과 하나 이상의 추가적인 네트워크 또는 저장 디바이스 사이의 통신을 가능하게 하도록 구성된 호스트 어댑터를 나타낼 수 있다. 호스트 어댑터의 예는, 제한적인 것은 아니지만, SCSI(Small Computer System Interface) 호스트 어댑터, USB(Universal Serial Bus) 호스트 어댑터, IEEE(Institute of Electrical and Electronics Engineers) 1394 호스트 어댑터, SATA(Serial Advanced Technology Attachment) 및 eSATA(External SATA) 호스트 어댑터, ATA(Advanced Technology Attachment) 및 PATA(Parallel ATA) 호스트 어댑터, 파이버 채널 인터페이스 어댑터(Fibre Channel interface adapter), 이더넷 어댑터(Ethernet adapter) 등을 포함한다. 또한, 통신 인터페이스(122)는 제어 시스템(110)이 분산 또는 원격 컴퓨팅에 참여하도록 허용할 수 있다. 예를 들어, 통신 인터페이스(122)는 실행을 위해 원격 디바이스로부터 인스트럭션을 수신하거나 또는 인스트럭션을 원격 디바이스에게 송신할 수 있다.
도 1에 도시된 바와 같이, 제어 시스템(110)은 디스플레이 어댑터(126)를 통해 통신 기반 시설(112)에 연결된 적어도 하나의 디스플레이 디바이스(124)를 또한 포함할 수 있다. 디스플레이 디바이스(124)는 일반적으로, 디스플레이 어댑터(126)에 의해 전달된 정보를 시각적으로 디스플레이할 수 있는 임의의 타입 또는 형태의 디바이스를 나타낸다. 유사하게, 디스플레이 어댑터(126)는 일반적으로, 디스플레이 디바이스(124) 상에 디스플레이하기 위한 그래픽, 텍스트 및 다른 데이터를 전달하도록 구성된 임의의 타입 또는 형태의 디바이스를 나타낸다.
도 1에 도시된 바와 같이, 제어 시스템(110)은 입력 인터페이스(130)를 통해 통신 기반 시설(112)에 연결된 적어도 하나의 입력 디바이스(128)를 또한 포함할 수 있다. 입력 디바이스(128)는 일반적으로, 컴퓨터에 의해 또는 사람에 의해 생성된 입력을 제어 시스템(110)에 제공할 수 있는 임의의 타입 또는 형태의 입력 디바이스를 나타낸다. 입력 디바이스(128)의 예는, 제한적인 것은 아니지만, 키보드, 포인팅 디바이스, 음성 인식 디바이스, 또는 임의의 다른 입력 디바이스를 포함한다.
도 1에 도시된 바와 같이, 제어 시스템(110)은 저장 인터페이스(134)를 통해 통신 기반 시설(112)에 연결된 주 저장 디바이스(132) 및 백업 저장 디바이스(133)를 또한 포함할 수 있다. 저장 디바이스(132 및 133)는 일반적으로, 데이터 및/또는 다른 컴퓨터 판독가능 인스트럭션을 저장할 수 있는 임의의 타입 또는 형태의 저장 디바이스 또는 매체를 나타낸다. 예를 들어, 저장 디바이스(132 및 133)는 자기 디스크 드라이브(예를 들면, 소위 하드 드라이브), 플로피 디스크 드라이브, 자기 테이프 드라이브, 광학 디스크 드라이브, 플래시 드라이브 등일 수 있다. 저장 인터페이스(134)는 일반적으로, 제어 시스템(110)의 저장 디바이스(132 및 133)와 다른 구성요소들 사이의 데이터 전송을 위한 임의의 타입 또는 형태의 인터페이스 또는 디바이스를 나타낸다.
하나의 예에서, 데이터베이스(140)가 주 저장 디바이스(132)에 저장될 수 있다. 데이터베이스(140)는 단일의 데이터베이스 또는 컴퓨팅 디바이스의 부분들을 나타내거나, 또는 다수의 데이터베이스 또는 컴퓨팅 디바이스를 나타낼 수 있다. 예를 들어, 데이터베이스(140)는 제어 시스템(110)의 일부분 및/또는 (아래의) 도 2에서의 예시적인 네트워크 아키텍쳐(200)의 부분들을 나타낼 수 있다(그것에 저장될 수 있다). 대안적으로, 데이터베이스(140)는 제어 시스템(110) 및/또는 네트워크 아키텍쳐(200)의 부분들과 같은, 컴퓨팅 디바이스에 의해 액세스될 수 있는 하나 이상의 물리적으로 분리된 디바이스를 나타낼 수 있다(그것에 저장될 수 있다).
도 1을 계속해서 참조하면, 저장 디바이스(132 및 133)는 컴퓨터 소프트웨어, 데이터, 또는 다른 컴퓨터 판독가능 정보를 저장하도록 구성된 제거가능 저장 유닛으로부터 판독 및/또는 제거가능 저장 유닛으로 기록하도록 구성될 수 있다. 적절한 제거가능 저장 유닛의 예는, 제한적인 것은 아니지만, 플로피 디스크, 자기 테이프, 광학 디스크, 플래시 메모리 디바이스 등을 포함한다. 저장 디바이스(132 및 133)는 컴퓨터 소프트웨어, 데이터, 또는 다른 컴퓨터 판독가능 인스트럭션이 제어 시스템(110) 내로 로딩되도록 허용하는 다른 유사한 구조 또는 디바이스를 또한 포함할 수 있다. 예를 들어, 저장 디바이스(132 및 133)는 소프트웨어, 데이터, 또는 다른 컴퓨터 판독가능 정보를 판독 및 기록하도록 구성될 수 있다. 저장 디바이스(132 및 133)는 또한, 제어 시스템(110)의 일부이거나 또는 다른 인터페이스 시스템을 통해 액세스되는 분리된 디바이스일 수 있다.
많은 다른 디바이스 또는 서브시스템이 제어 시스템(110)에 접속될 수 있다. 반대로, 본 명세서에서 기술된 실시예들을 실시하는데 있어서, 도 1에 도시된 모든 구성요소 및 디바이스가 제공될 필요는 없다. 위에서 참조된 디바이스 및 서브시스템은 도 1에 도시된 것과는 다른 방식으로 상호접속될 수도 있다. 제어 시스템(110)은 임의의 수의 소프트웨어, 펌웨어 및/또는 하드웨어 구성을 또한 이용할 수 있다. 예를 들어, 본 명세서에 개시된 예시적인 실시예는 컴퓨터 판독가능 매체 상의 컴퓨터 프로그램(컴퓨터 소프트웨어, 소프트웨어 애플리케이션, 컴퓨터 판독가능 인스트럭션, 또는 컴퓨터 제어 로직 이라고도 지칭됨)으로서 인코딩될 수 있다.
컴퓨터 프로그램을 포함하는 컴퓨터 판독가능 매체는 제어 시스템(110) 내로 로딩될 수 있다. 그 다음, 컴퓨터 판독가능 매체 상에 저장된 컴퓨터 프로그램의 전부 또는 일부가 시스템 메모리(116) 및/또는 저장 디바이스(132 및 133)의 다양한 부분들에 저장될 수 있다. 프로세서(114)에 의해 실행될 때, 제어 시스템 내로 로딩된 컴퓨터 프로그램은 프로세서(114)로 하여금 본 명세서에서 기술 및/또는 예시된 예시적인 실시예의 기능을 수행하게 하고/하거나 그러한 기능을 수행하기 위한 수단이 되도록 할 수 있다. 추가적으로 또는 대안적으로, 본 명세서에 기술 및/또는 예시된 예시적인 실시예는 펌웨어 및/또는 하드웨어로 구현될 수 있다.
자동 테스팅 동안 디바이스 결함의 근본 원인을 식별하기 위한 트래픽 캡쳐 및 디버깅 툴
도 2는 DUT가 제어된 환경 챔버(10) 또는 “오븐” 내에 위치될 수 있는 전형적인 테스팅 환경을 도시한다. DUT는 테스트 헤드(20)의 테스터 슬라이스에 접속된다. 많은 DUT가 단일 테스터 슬라이스(40)에 접속될 수 있다. 테스터 슬라이스는 테스트 계획에 따라 DUT에 대한 테스트를 수행하는 테스트 회로를 포함한다. 테스트 헤드(20)마다 많은 테스터 슬라이스가 존재할 수 있다. DUT는 오븐(10) 내로 삽입될 때 트레이(30) 내에 위치된다. 전형적인 환경 챔버에서, 복수의 테스터 슬라이스는, 복수의 DUT에 대해 동일한 테스트 계획을 실행하는 락 스텝(lock step)으로 동작한다. 더욱이, 테스트 헤드는 전형적으로, 테스트 헤드에 직접 접속되고, 이러한 형태로, 테스트 헤드(20)의 모든 슬라이스를 제어하는 단일 제어기 컴퓨터 시스템(예를 들면, 테스터 제어 시스템(110))에 의해 제어된다. 제어기 컴퓨터는 전형적으로, DUT에 대해 단일의 테스트 계획을 실행하는 단일 사용자에 의해 동작된다. 이하에 더 기술되는 바와 같이, 각각의 테스터 슬라이스는 본 발명의 트래픽 캡쳐 및 디버깅 모듈이 프로그래밍될 수 있는 FPGA를 포함한다. 예를 들어, FPGA는 FPGA의 상태 및 FPGA와 임의의 접속된 DUT 사이에 교환되는 데이터와 관련되는 정보를 수집하는 로직 및 버퍼로 프로그래밍될 수 있다.
도 3은 테스터 슬라이스, 및 테스터 슬라이스와 시스템 제어기 및 DUT와의 상호접속의 예시적인 실시예를 도시하는 상세 개략 블록도이다.
도 3을 참조하면, 각각의 테스터 슬라이스는 사이트 모듈을 포함한다. 사이트 모듈은, 일 실시예에서, 테스터 슬라이스(340A-340N) 상에 기계적으로 구성될 수 있고, 각각의 테스터 슬라이스는 적어도 하나의 사이트 모듈을 포함한다. 특정한 전형적인 실시예에서, 각각의 테스터 슬라이스는 2개의 사이트 모듈 및 2개의 디바이스 전력 공급기 보드를 포함한다. 다른 실시예에서, 테스터 슬라이스는 보다 많거나 적은 사이트 모듈 및/또는 전력 공급기 보드를 포함할 수 있다. 도 3의 테스터 슬라이스(340A)는, 예를 들어, 사이트 모듈(310A 및 310B) 및 디바이스 전력 공급기 보드(332A 및 332B)를 포함한다. 그러나, 테스터 슬라이스 상에 구성될 수 있는 디바이스 전력 공급기 보드 또는 사이트 모듈의 수에는 제한이 없다. 테스터 슬라이스(340)는 네트워크 스위치(302)를 통해 시스템 제어기(301)에 접속된다. 네트워크 스위치(302)는 32비트 폭의 버스에 의해 사이트 모듈들 각각에 접속될 수 있다.
일 실시예에서, 시스템 제어기(301)는 테스트 프로그램을 로딩하고, ATE(300)에 접속된 DUT에 대한 테스트를 실행하기 위해 ATE의 사용자에 대한 사용자 인터페이스를 제공하는 컴퓨터 시스템, 예를 들면, PC(personal computer)일 수 있다. 어드반테스트 스타일러스 오퍼레이팅 시스템(Advantest Stylus Operating System)은 디바이스 테스팅 동안에 통상적으로 이용되는 테스트 소프트웨어의 일례이다. 그것은 사용자에게 테스트를 구성 및 제어하도록 하는 그래픽 사용자 인터페이스를 제공한다. 또한, 그것은 테스트 흐름을 제어하고, 테스트 프로그램의 상황(status)을 제어하고, 어떤 테스트 프로그램이 실행중인지를 결정하고, 테스트 결과 및 테스트 흐름과 관련된 다른 데이터를 로그(log)하는 기능을 포함할 수 있다. 일 실시예에서, 시스템 제어기는 512개의 DUT에 접속되어 그것을 제어할 수 있다.
일 실시예에서, 시스템 제어기(301)는 이더넷 스위치와 같은 네트워크 스위치를 통해 사이트 모듈 보드(310A-310B)에 접속될 수 있다. 다른 실시예에서, 네트워크 스위치는 예컨대, 파이버 채널(Fibre Channel), 802.11 또는 ATM과 같은 다른 프로토콜과 호환될 수 있다.
디바이스 전력 공급기 보드(332A-332B) 각각은 사이트 모듈(310A-310B) 중 하나로부터 제어될 수 있다. 테스터 프로세서(304) 상에서 실행되는 소프트웨어는 디바이스 전력 공급기를 특정 사이트 모듈에 할당하도록 구성될 수 있다. 일 실시예에서, 사이트 모듈(310A-310B) 및 디바이스 전력 공급기(332A-332B)는 고속 직렬 프로토콜(high speed serial protocol), 예를 들면, PCIe(Peripheral Component Interconnect Express), SATA(Serial AT Attachment) 또는 SAS(Serial Attached SCSI)를 이용하여 서로 통신하도록 구성된다.
일 실시예에서, 각각의 사이트 모듈은 도 3에 도시된 바와 같이 2개의 FPGA로 구성된다. 도 3의 실시예에서의 FPGA(316 및 318) 각각은 테스터 프로세서(304)에 의해 제어된다. 테스터 프로세서(304)는 도 3에서 시스템 버스(330 및 332)에 의해 나타낸 바와 같이 PCIe와 같은 8 레인 고속 직렬 프로토콜 인터페이스를 이용하여 FPGA 각각과 통신할 수 있다. 다른 실시예에서, 테스터 프로세서(304)는 또한, 다른 고속 직렬 프로토콜들, 예를 들면, SATA 또는 SAS를 이용하여 FPGA와 통신할 수 있다.
FPGA(316 및 318)는 메모리 모듈(308 및 304)에 각각 접속된다. 메모리 모듈은 FPGA 디바이스 및 테스터 프로세서(304) 모두와 연결되고, FPGA 디바이스 및 테스터 프로세서(304) 모두에 의해 제어될 수 있다.
FPGA(316 및 318)는 버스(352 및 354)를 통해 로드 보드(load board)(380) 상의 DUT(372A-372M)에 각각 접속될 수 있다. 로드 보드(380)는 라인(352 및 354) 상의 DUT와 통신하는데 이용된 프로토콜과는 관계없는(agnostic) 사이트 모듈 단부에서의 범용 고속 접속을 허용하는 물리적인 하니스(physical harness)이다. 그러나, DUT 단부에서, 로드 보드는 DUT에 의해 이용되고 있는 프로토콜에 특정적인 커넥터를 갖도록 설계될 필요가 있다.
도 3은 단지 테스터 슬라이스의 예시적인 실시예를 도시하는 것임을 유의해야 한다. 더욱이, 본 발명의 실시예는 도 3에 도시된 타입의 테스터 슬라이스로만 제한되지 않음을 유의해야 한다. 본 발명의 실시예는 많은 다른 타입의 테스터 슬라이스 및 프리미티브(primitive)를 포함할 수 있다. 그러나, 각각의 테스터 슬라이스는 본 발명의 트래픽 캡쳐 및 디버그 모듈이 테스터 슬라이스의 구성에 상관없이 프로그래밍될 수 있는 FPGA를 포함할 것이다.
본 발명의 일 실시예에서, DUT(372A-372M)는 테스팅을 위해 열 챔버(thermal chamber)(390) 내에 위치되는 로드 보드(380) 상에 로딩된다. DUT(372A-372M) 및 로드 보드(380)는 디바이스 전력 공급기(332A-332B)로부터 전력을 공급받는다.
각각의 FPGA에 접속될 수 있는 DUT의 수는 FPGA에서의 트랜시버의 수 및 각각의 DUT에 의해 요구된 I/O 레인의 수에 의존한다. 일 실시예에서, FPGA(316 및 318) 각각은 32 고속 트랜시버를 포함할 수 있고, 버스(352 및 354) 각각은 32 비트 폭일 수 있지만, 응용에 따라 보다 많거나 적은 것이 구현될 수 있다. 각각의 DUT가 8개의 I/O 레인을 필요로 한다면, 예를 들어, 그러한 시스템에서 단지 4개의 DUT가 각각의 FPGA에 접속될 수 있다.
테스터 프로세서(304)가 버스(312)를 통해 시스템 제어기(301)에 접속되어, 시스템 제어기(301)와 통신할 수 있다. 일 실시예에서, 테스터 프로세서(304)는 분리된 전용 버스(예를 들면, 330 및 332 각각)를 통해 FPGA 디바이스(316 및 318) 각각과 통신한다. 일 실시예에서, 테스터 프로세서(304)는 FPGA 디바이스에 할당된 최소의 처리 기능으로 FPGA를 통해 투명하게 DUT(372A-372N)의 테스팅을 제어할 수 있다. 이러한 실시예에서, 테스터 프로세서에 의해 생성된 모든 코맨드 및 데이터가 버스를 통해 FPGA 디바이스로 통신될 필요가 있기 때문에, 버스(330 및 332)의 트래픽 용량이 빠르게 고갈될 수 있다. 다른 실시예에서, 테스터 프로세서(304)는 DUT의 테스팅을 제어하기 위한 기능을 FPGA 디바이스에게 할당함으로써 처리 부하를 공유할 수 있다. 이들 실시예에서, FPGA 디바이스가 그 자신의 코맨드 및 데이터를 생성할 수 있기 때문에, 버스(330 및 332)를 통한 트래픽이 감소된다.
일 실시예에서, FPGA 디바이스(예를 들면, 316 및 318) 각각은 그 자신의 전용 메모리 블록(예를 들면, 308 및 304)에 접속된다. 이들 메모리 블록은, 다른 것들 중에서, DUT에 기록되는 테스트 패턴 데이터를 저장하는데 이용될 수 있다. 일 실시예에서, FPGA 디바이스 각각은 통신 프로토콜 엔진 및 하드웨어 가속기의 구현을 포함하는 기능들을 수행하기 위한 기능 모듈을 갖는 둘 이상의 예시된 FPGA 테스터 블록(도시되지 않음)을 포함할 수 있다.
더욱이, 시스템에서의 DUT(372A-372M) 각각은 "DUT 마다의 테스터(tester per DUT)" 구성에서의 전용의 예시된 FPGA 테스터 블록에 접속될 수 있고, 여기서 각각의 DUT는 자신의 예시된 테스터 블록을 얻는다. 이것은 각각의 DUT에 대한 분리된 테스트 실행을 허용한다. 그러한 구성에서의 하드웨어 자원은 최소의 하드웨어 공유로 개별적인 DUT를 지원하게 하는 방식으로 설계된다. 또한, 이러한 구성은 많은 DUT가 병렬로 테스트되도록 허용하며, 여기서 각각의 DUT는 FPGA 내의 그 자신의 전용 FPGA 테스터 블록에 접속될 수 있고, 상이한 테스트 프로그램을 실행할 수 있다.
도 3에 도시된 본 발명의 실시예의 아키텍쳐는 몇 가지의 이점을 갖는다. 첫째, 통신 프로토콜 모듈이 FPGA 디바이스 내의 예시된 FPGA 테스터 블록 상에 직접 프로그래밍될 수 있기 때문에, 프로토콜 특정적 버스 어댑터 소켓 및 카드에 대한 필요성을 제거한다. 예시된 테스터 블록은 DUT가 지원하는 임의의 프로토콜에서 DUT와 통신하도록 구성될 수 있다. 따라서, 상이한 프로토콜 지원을 갖는 DUT들이 테스트될 필요가 있는 경우, DUT들은 동일한 시스템에 접속될 수 있고, FPGA는 관련된 프로토콜에 대한 지원으로 재프로그래밍될 수 있다. 그 결과, 하나의 ATE 바디가, 많은 상이한 타입의 프로토콜을 지원하는 DUT를 테스트하도록 쉽게 구성될 수 있다.
일 실시예에서, 어떠한 종류의 하드웨어 상호작용 없이도, 시스템 제어기(301) 상의 캐시로부터의 간단한 비트스트림 다운로드를 통해, 새로운 프로토콜이 다운로딩되고 FPGA 상에 직접 설치될 수 있다. FPGA는 전형적으로, DUT에 대한 하나 이상의 프로토콜 기반 인터페이스의 기능을 제공하도록 프로그래밍되고, DUT와 인터페이스하도록 프로그래밍되는 구성가능한 인터페이스 코어(또는 IP 코어)를 포함할 것이다. 예를 들어, ATE 장치에서의 FPGA(316 및 318)는 처음에 PCIe 디바이스를 테스트하기 위해 PCIe 프로토콜로 구성될 수 있고, 후속하여 SATA 디바이스를 테스트하기 위해 소프트웨어 다운로드를 통해 재구성될 수 있는 인터페이스 코어를 포함할 것이다. 또한, 새로운 프로토콜이 릴리스되는 경우, FPGA는 시스템에서의 모든 하드웨어 버스 어댑터 카드들을 물리적으로 스위칭해야 하는 것 대신에, 비트스트림 다운로드를 통해 해당 프로토콜로 쉽게 구성될 수 있다. 마지막으로, 비표준 프로토콜이 구현될 필요가 있는 경우, FPGA는 그럼에도 불구하고 그러한 프로토콜을 구현하기 위해 구성될 수 있다.
다른 실시예에서, FPGA는 하나보다 많은 통신 프로토콜을 실행하도록 구성될 수 있고, 여기서 이들 프로토콜은 또한, 시스템 제어기(301)로부터 다운로드되고, 소프트웨어를 통해 구성될 수 있다. 즉, 각각의 FPGA는 커스텀 펌웨어 및 소프트웨어 이미지를 구현하여, 단일 칩에서의 하나 이상의 PC 기반 테스터의 기능을 구현한다. 요구되는 전기적 시그널링 및 프로토콜 기반 시그널링이 FPGA에서의 온칩(on-chip) IP 코어에 의해 제공된다. 전술한 바와 같이, 각각의 FPGA는 사전 입증된 인터페이스 또는 IP 코어로 프로그래밍된다. 이것은 주어진 인터페이스 표준에 따른 규정 준수(compliance) 및 호환성을 보장한다. FPGA의 프로그래밍가능한 본질은 SSD, HDD 및 다른 프로토콜 기반 저장 디바이스로부터의 스토리지 테스팅 애플리케이션에 대한 융통성, 비용, 병렬화 및 업그레이드가능성을 최적화하는데 이용된다.
예컨대, FPGA(316) 내의 예시된 FPGA 테스터 블록은 PCIe 프로토콜을 실행하도록 구성될 수 있고, 동일한 FPGA(316) 내의 다른 예시된 FPGA 테스터 블록은 SATA 프로토콜을 실행하도록 구성될 수 있다. 이것은 테스터 하드웨어가 상이한 프로토콜들을 지원하는 DUT들을 동시에 테스트하도록 허용한다. 이제, FPGA(316)는 PCIe 프로토콜 및 SATA 프로토콜 둘다를 지원하는 DUT를 테스트하도록 접속될 수 있다. 대안적으로, 그것은 하나의 DUT는 PCIe 프로토콜을 지원하고, 다른 DUT는 SATA 프로토콜을 지원하는 2개의 상이한 DUT를 테스트하도록 접속될 수 있으며, 여기서, FPGA 내의 각각의 예시된 기능 모듈은 그것이 접속되는 개개의 DUT를 테스트하는 프로토콜로 구성된다.
일 실시예에서, FPGA에서의 인터페이스 또는 IP 코어가 제3자 벤더로부터 얻어질 수 있지만, 몇몇 커스텀화(customization)가 본 명세서에서 기술된 실시예와 호환될 것을 요구할 수 있다. 일 실시예에서, 인터페이스 코어는 2개의 기능을 제공하는데, 즉, 1) 저장 코맨드를 물리적 채널을 통한 송신을 위해 표준 프로토콜 내로 랩핑(wrap)하고; 2) 전기 신호 생성기 및 수신기 라는 기능이다.
도 4는 본 발명의 실시예에 따른, 본 발명의 트래픽 캡쳐 모듈이 자동 테스팅과 관련되는 진단 정보를 수집하는 방법을 도시하는 상위 레벨 블록도이다.
도 4에 도시된 바와 같이, 각각의 테스터(420)(또는 테스터 슬라이스)는 적어도 하나의 DUT(410)와 통신하는 적어도 하나의 FPGA(430)를 포함한다. 도 3에 도시된 바와 같이, 전형적으로 각각의 FPGA는 다수의 DUT와 통신할 것이다.
본 발명의 실시예는 트래픽 캡쳐 로직 모듈을 FPGA(예를 들면, 450A, 450B,..., 450N, 451A,..., 451M 및 452A)에 추가하여, 시간에 걸친 (FPGA(430)를 포함하는) 테스터(420)의 상태와 같은 정보 및 시간에 걸쳐 테스터(420)와 DUT 사이에 교환되는 데이터를 수집한다. 트래픽 캡쳐 로직 모듈은 완전히 프로그래밍가능할 수 있고, 기능들의 범위를 수행하도록 프로그래밍될 수 있다. 트래픽 캡쳐 모듈을 이용하는 것은, 테스터가 테스터 펌웨어 자체 내의 모듈 및 버퍼 내의 디바이스 결함과 관련되는 정보를 유익하게 수집하도록 허용한다. 본 명세서에서의 발명은 FPGA로 제한되지 않으며, 본 발명의 캡쳐 모듈은 다른 타입의 프로그래밍가능 로직 디바이스 상에 마찬가지로 프로그래밍될 수 있음을 유의해야 한다.
현재, 디버그 툴은 수집된 데이터의 보다 용이한 해석을 위해 테스팅 분야에서 개발중에 있다. 툴은 대부분 소프트웨어 기반이며, 문맥 관련 방식에서 수집된 데이터를 조직화하는 쪽으로 설계되어, 전문가가 보다 쉽게 문제를 식별하도록 허용한다. 그러나, 이들 방안은 엔지니어가 테스팅 로그 및 파일을 수작업으로 검토할 것을 요구하기 때문에, 여전히, 상당히 노동 집약적이다.
본 발명의 실시예는 바람직하게, 예를 들면, FPGA 내의 하드웨어의 로직 모듈 내에 분석 능력을 부가한다. 예를 들어, 캡쳐 로직 모듈 및 버퍼는 디바이스 결함 전조(precursor)를 모니터링하도록 프로그래밍될 수 있다. 결함 전조는 잠재적으로 결함이 있는 DUT에 관한 표시를 제공한다. 사전에, 엔지니어는 임박한 디바이스 결함에 관한 정보를 결정하기 위해 수 개의 로그를 검토해야 할 것이다. 본 발명의 실시예는 바람직하게, 펌웨어 내의 잠재적 디바이스 결함을 식별하고 그것에 관해 엔지니어에게 알리는 능력을 형성한다. 트래픽 캡쳐 모듈은 디버그 데이터를 실시간으로 분석한다. 더욱이, 트래픽 캡쳐 모듈은 의심스러운 상태를 식별하고, 이후에 검사를 위한 개인 또는 분석을 위한 소프트웨어에 대한 로그에 그것을 플래깅(flag)한다.
일 실시예에서, 본 발명의 트래픽 캡쳐 및 디버그 툴은, 바람직하게 디바이스 결함의 원인, 예를 들면, 근본 원인을 식별하는 것을 함께 돕도록 작용하는 FPGA 로직(펌웨어) 및 소프트웨어 기반 툴들의 모음을 포함한다. FPGA 상에 프로그래밍된 로직 모듈은, (1) 테스터와 개개의 DUT 사이에 교환된 트래픽 또는 트래픽의 프록시(proxy); (2) 테스터 또는 개개의 DUT를 구성하는데 이용된 구성 코맨드; 및 (3) 테스터와의 상태를 모니터링 및 캡쳐한다. 더욱이, 테스팅 프로세스 동안, 가끔 에러 또는 예측하지 못한 동작이 FPGA 내에서 발생될 수 있고, 그것은 캡쳐 모듈에 의해 캡쳐될 수 있다. 추가적으로, 캡쳐 모듈 내의 로직이 또한, 결함 전조를 검사하고, 로그됨에 따라 그것을 플래깅한다. 소프트웨어(440) 내에 포함된 자동 소프트웨어 기반 디버깅 툴은 캡쳐 모듈(예를 들면, 450A-450N, 451A-451M, 등)로부터 캡쳐 결과를 추출하고, 데이터를 구성하고, 근본 원인을 디스플레이할 수 있다.
전형적인 테스트 구성에서, FPGA(430)는 미리 결정된 패턴을 DUT(410)에 기록하고, DUT(410)로부터 그 패턴을 다시 판독하고, 그 둘을 비교하여, DUT가 적절하게 기능하고 있는지를 결정할 것이다. 도 3을 참조하여 언급한 바와 같이, 각각의 FPGA는 상이한 프로토콜, 예를 들면, PCIe 프로토콜을 실행하도록 구성될 수 있고, 하나 이상의 접속된 DUT를 테스트하기 위한 코맨드 및 데이터를 생성하도록 더 구성될 수 있다.
본 발명의 캡쳐 모듈은 일탈(aberration)을 검사하기 위해 캡쳐 및 모니터링될 DUT와 FPGA 사이에서의 데이터 및 코맨드의 교환을 허용한다. FPGA(430)는 하나 또는 다수의 DUT와 동시에 통신할 수 있다. 따라서, 각각의 FPGA는 제1 단(stage)(예를 들면, 450A-450N)에서 다수의 캡쳐 모듈을 포함할 수 있고, 캡쳐 모듈 각각은 개별적인 DUT, 예를 들면, DUT(496A), DUT(496B),..., DUT(496N)와 통신하도록 구성된다. DUT들로부터 수집된 정보는, 그것이 소프트웨어(440)에 통신될 때까지, 하나 이상의 단을 통해 업스트림으로 흐를 수 있다.
예를 들어, 도 4에 도시된 FPGA는 3개의 단을 포함한다. 제1 단(예를 들면, 450A-450N)에서, 데이터가 DUT로부터 캡쳐 모듈로 통신된다. 후속하여, 예시적인 캡쳐 모듈(451A-451M)을 포함하는 제2 단을 통해 데이터가 흐른다. 여기로부터, 데이터는, 소프트웨어에 통신되기 전에, 캡쳐 모듈(452A)을 포함하는 최종 단을 통해 통과한다. 본 발명의 실시예는 특정한 수의 단 또는 특정한 수의 캡쳐 모듈로 제한되지 않음을 유의해야 한다. FPGA는 하나 이상의 단을 포함할 수 있고, 수행될 테스트 및 FPGA의 복잡도에 따라, 각각의 단은 하나 이상의 캡쳐 모듈을 포함한다. 그러나, 전형적으로, DUT로부터 캡쳐된 데이터는 캡쳐 모듈 및 버퍼의 다수의 단을 이용하여 소프트웨어(440)에게 업스트림으로 통신될 것이다.
FPGA 내의 각각의 단에서의 캡쳐 모듈은 전형적으로, 다른 단들에서의 캡쳐 모듈들과는 상이한 구성을 가질 것이다. 예를 들어, 도 4에 도시된 FPGA의 제1 단(예를 들면, 450A-450N)에서의 캡쳐 모듈은 DUT와 직접 통신하여 DUT로부터 데이터를 수집하도록 구성될 것이다. 제2 단(예를 들면, 451A-451M)에서의 캡쳐 모듈은 DUT로부터 수집된 데이터를 소프트웨어 블록(440)으로 라우팅하기 때문에, 스위치와 유사한 속성을 갖도록 구성된다. 마지막으로, FPGA(495)의 제3 단에서의 캡쳐 모듈은 DUT로부터 수집된 정보를 소프트웨어 모듈(440)로 전송하고, 또한, 소프트웨어(440)로부터 DUT로 데이터 및 코맨드를 다운스트림으로 전송하도록 구성된다. FPGA 전체를 통해 캡쳐 모듈들을 분포시키는 것은, FPGA에 의한 임의의 에러 또는 예측하지 못한 동작이 쉽게 캡쳐되고 분석되도록 허용한다.
일 실시예에서, 캡쳐 셀을 이용하여 DUT(496A-496N)와 소프트웨어(440) 사이에 정보를 운반할 수 있다. 예컨대, 소프트웨어(440)는 캡쳐 모듈들의 체인을 통해 코맨드 및 데이터를 DUT로 다운스트림으로 송신할 수 있다. 더욱이, DUT는 캡쳐 모듈들의 체인을 통해 응답을 소프트웨어(440)로 업스트림으로 송신할 수 있다. 캡쳐 모듈은 통신의 임의의 단계 동안 발생될 수 있는 임의의 에러 상태를 식별 및 플래깅하기 위해 프로그래밍가능하고, 필요한 로직을 갖는다. 예를 들어, 정보를 업스트림으로 송신하는 동안, 캡쳐 모듈(451M)은 에러 상태를 만날 수 있다. 캡쳐 모듈(451M)은 에러 상태가, 수신한 정보를 제공하였던 DUT와 관련되는지 또는 에러가, 캡쳐 모듈(451M) 내로 프로그래밍된 스위치와 관련되는지의 여부를 결정하기 위한 로직 회로를 포함할 수 있다.
대안적으로, 캡쳐 모듈(451M)은 접속된 DUT(예를 들면, 469N)로부터 수신된 데이터를 분석하고, 디바이스 결함 전조를 식별하도록 프로그래밍될 수 있다. 즉, 캡쳐 모듈(451M)은 DUT로부터 수집된 데이터를 이용하여, DUT가 임박하게 결함이 발생될 것임을 나타내도록 프로그래밍될 수 있다. 그 다음, 캡쳐 모듈(451M)은 에러 상태 또는 잠재적인 에러 상태를 플래깅하고, 에러와 관련되는 정보를 소프트웨어(440)에게 전달하여, 사용자가 알림을 받도록 할 수 있다.
일 실시예에서, 캡쳐 모듈은 또한, 로직 회로를 포함하고, 캡쳐된 정보를 분석 및 에러의 근본 원인을 식별하도록 프로그래밍될 수 있다. 예를 들어, 캡쳐 모듈은 수집된 정보에 대해 실행되는 규칙 검사기(rule checker)로 프로그래밍될 수 있다. 즉, 규칙 검사기는 캡쳐된 정보에 대해 규칙들의 세트를 실행시킴으로써, 캡쳐된 모든 결합 관련 정보를 통해 분석하여 결함의 몇몇 가능한 원인을 식별할 수 있다.
일 실시예에서, FPGA 내로 프로그래밍된 몇 가지 상이한 타입의 캡쳐 로직 모듈이 존재할 수 있으며, 여기서, 각각의 캡쳐 모듈은 상이한 목적을 제공하도록 프로그래밍된다.
예를 들어, DUT가 PCIe 디바이스인 경우, 캡쳐 모듈들 중 하나 이상이 TLP(Transaction Layer Packet) 캡쳐 모듈을 포함할 수 있다. 트랜잭션 계층 패킷은 PCIe 프로토콜을 이용하여 호스트와 클라이언트 사이에서 (또는 테스터와 DUT 사이에서) 교환되고, FPGA에서의 캡쳐 모듈은, 예를 들면, 추가의 검사를 위해서 및 결함 관련 정보를 수집하기 위해 이들 TLP를 캡쳐할 수 있다.
다른 타입의 캡쳐 모듈이 LTSSM(Link Training Status State Machine) 캡쳐 모듈로서 프로그래밍될 수 있다. LTSSM 캡쳐 모듈은 LTSSM 이벤트를 로그하는 FPGA 로직을 포함한다. LTSSM은 PCIe 프로토콜에서의 물리 및 링크 계층 상태들이 하나의 엔드 포인트로부터 다른 엔드 포인트로 통신하기 위해 겪게 되는 상태 머신을 정의한다. 이들 상태는 FPGA 내의 캡쳐 모듈 로직을 이용하여 캡쳐 및 분석될 수 있다. 예를 들어, 캡쳐 모듈은 FPGA의 IP 코어가 PCIe 프로토콜의 실행시에 전이하는 상이한 상태들을 식별 및 캡쳐할 수 있다. 예상되는 상태로의 전이에 결함이 있거나 또는 특정 상태를 처리하는 동안에 결함이 발생되는 경우, 캡쳐 모듈은 정보를 캡쳐하고, 추가의 분석을 위해 그것을 소프트웨어(440)에게 송신할 것이다. 대안적으로, 일 실시예에서, 캡쳐 모듈은 예를 들면, 규칙 검사기를 이용하여 에러 상태를 분석하고, 에러의 근본 원인을 결정하기 위해 추가의 로직 회로를 포함할 수 있다. 그 다음, 진단 정보는 사용자에 대한 전달을 위해 소프트웨어(440)로 송신될 수 있다.
다른 타입의 캡쳐 모듈은 NAK 캡쳐 모듈을 포함할 수 있다. NAK는 부정적인 확인응답(negative acknowledgement) 또는 확인응답되지 않은 것에 대한 약자(abbreviation)이다. 그것은 데이터가 최소의 에러로 수신되는 것을 보장하기 위해 디지털 통신에서 이용된 신호이다. 한 가지 타입의 캡쳐 모듈은 NAK 이벤트를 로그하는 로직을 포함한다.
일 실시예에서, 캡쳐 모듈은 액티비티 캡쳐 모듈(Activity Capture module)을 포함할 수 있다. 액티비티 캡쳐 모듈은 액티비티 검출 이벤트를 로그하는 FPGA 로직을 포함한다. 인커밍(incoming) 또는 아웃고잉(outgoing) 라인들에 대해 검출된 임의의 액티비티가 존재한다면, 액티비티 검출 캡쳐 모듈은 사용자에게 제공하기 위해 그러한 이벤트를 로그할 것이다.
일 실시예에서, 캡쳐 모듈은 균등화 캡쳐 모듈(Equalization Capture module)을 포함할 수 있다. 균등화 캡쳐 모듈은 균등화 이벤트를 로그한다. 균등화는 통신된 데이터의 무결성이 유지될 수 있도록 송신기 및 수신기 상에서의 신호들을 조절함으로써 PCIe 프로토콜에 대해 수행될 수 있다. 캡쳐 모듈은 PCIe IP 코어를 모니터링하여, 균등화가 진행되는 방식을 결정할 것이다. 즉, 캡쳐 모듈은 어떤 설정이 요청되고, 균등화의 목적을 위해 이용되는지, 및 그것이 수용되는지를 결정하기 위해 IP 코어를 모니터링할 것이다. 의심스러운 액티비티가 존재하거나 또는 임의의 위법한 값이 설정된다면, 그러한 액티비티는 캡쳐되고, 플래깅되고, 소프트웨어 모듈(440)을 통해 사용자에게 보고될 수 있다.
일 실시예에서, 캡쳐 모듈은 완료 캡쳐 모듈(Completion Capture module)을 포함할 수 있다. 완료 캡쳐 모듈은 판독 요청과 판독의 완료 사이의 대기 시간(latency)을 로그하도록 설계된다.
일 실시예에서, 캡쳐 모듈은 개선된 AER(Advanced Error Reporting) 캡쳐 모듈을 포함할 수 있다. 이러한 캡쳐 모듈은 AER 이벤트의 발생의 수를 보고하는 로직을 포함한다. AER은 PCIe 프로토콜의 특징이며, 따라서, 이것은 PCIe 프로토콜을 실행하는 FPGA에서 프로그래밍가능한 탭쳐 모듈의 타입일 것이다.
일 실시예에서, 캡쳐 모듈은 레지스터 액세스 캡쳐 모듈(Register Access Capture module)을 포함할 수 있다. 레지스터 액세스 캡쳐 모듈은 제어 및 상태 레지스터들의 판독/기록 액세스를 로그하는 FPGA 로직을 포함한다.
일 실시예에서, 캡쳐 모듈은 트래픽 필터링 캡쳐 모듈(Traffic Filtering Capture module)을 포함할 수 있다. 트래픽 필터링 캡쳐 모듈은 TLP 캡쳐 모듈이 수집할 트래픽의 양을 선택적으로 감소시킨다. FPGA 내의 버퍼 공간은 제한되기 때문에, 트래픽 필터링 캡쳐 모듈은 TLP 캡쳐 모듈과 함께 이용되어, 진단 목적을 위해 사용자에 대해 가장 관심이 있을 패킷들의 서브세트를 필터링 또는 선택적으로 선택할 수 있다.
일 실시예에서, 캡쳐 모듈은 트래픽 트리거링 캡쳐 모듈(Traffic Triggering Capture module)을 포함할 수 있다. 트래픽 트리거링 캡쳐 모듈은 검출된 이벤트에 기초하여 캡쳐를 중지하는 FPGA 로직을 포함한다. 즉, 사용자가 특정 상태를 검출한 이후에 트래픽 캡쳐를 중지하고자 원했다면, 트래픽 트리거링 캡쳐 모듈이 FPGA 상으로 프로그래밍될 수 있다.
일 실시예에서, 캡쳐 모듈은 개선된 데이터 로깅 캡쳐 모듈(Enhanced Data Logging Capture module)을 포함할 수 있다. 이러한 캡쳐 모듈은 예상된 데이터와 수신된 데이터를 비교하고, 결과를 소프트웨어 블록(440)으로 송신함으로써 결과를 사용자에게 디스플레이하는 FPGA 로직을 포함한다.
다른 실시예에서, 캡쳐 모듈은 LTSSM 규칙 검사 모듈을 포함할 수 있다. PCIe 디바이스에서의 이러한 타입의 캡쳐 모듈은 LTSSM 상태 전이가 정상인지를 결정하기 위해 FPGA 로직으로 프로그래밍된다. LTSSM 규칙 검사 능력은 또한, 하드웨어 모듈보다는 소프트웨어를 이용하여 규칙 검사를 수행하는 것이 보다 효율적인 경우에, (예를 들면, 소프트웨어(440) 내의) 포스트-프로세싱(post-processing) 소프트웨어 내로 프로그래밍될 수 있다.
도 5는 본 발명의 실시예에 따른, 본 발명의 트래픽 캡쳐 모듈이 프로그래밍되는 방법을 도시하는 블록도이다. 도 5에 도시된 캡쳐 블록(550)은 예시적인 것임을 유의해야 한다. 그 기능에 따라 다른 타입의 캡쳐 모듈들이 상이하게 프로그래밍되거나 또는 구성될 수 있다.
전형적인 캡쳐 모듈, 예를 들면, 캡쳐 모듈(550)은 하나 이상의 입력을 포함할 수 있다. 예를 들어, 입력들(모니터 1(555A) 내지 모니터 N(555N)) 각각은 캡쳐 블록이 모니터링하도록 프로그래밍되는 데이터 트래픽, 상태 또는 상황과 관련된 별개의 입력이다.
캡쳐 블록의 획득 로직(520)은 트래픽, 상태 또는 상황에 관한 정보를 선택 및 캡쳐하고, (프로그래밍에 기초하여) 그것을 원하는 순서로 포맷팅함으로써, 그것이 캡쳐 메모리(530)에 저장될 수 있도록 한다. 획득 로직 블록(520)은 또한, 원하는 데이터를 선택적으로 캡쳐할 수 있다. 즉, 획득 로직 블록은 모니터 신호(555A-555N)를 통해 입력된 데이터의 서브세트만을 수집하도록 프로그래밍될 수 있다. 얼마나 많은 인커밍 데이터가 캡쳐되어야 하는지를 지정하는 특정한 구성 비트가 획득 블록 로직 내로 프로그래밍될 수 있고, 예를 들어, 특정한 경우, 인커밍 패킷의 헤더만이 캡쳐될 필요가 있다.
일 실시예에서, 캡쳐 모듈은 특정 타입의 데이터, 예를 들면, 특정 비트 구성을 갖는 데이터 패킷만을 캡쳐할 수 있다. 획득 로직(520)은 원하는 데이터 패킷만을 선택적으로 캡쳐하고 나머지는 무시하도록 선택적으로 프로그래밍될 수 있다. 일 실시예에서, 획득 로직 블록(520)보다 선행하며 인커밍 데이터를 선택적으로 필터링하는 사전 필터링(pre-filtering) 모듈(도시되지 않음)이 캡쳐 블록에 추가될 수 있다.
그 결과, 획득 로직 블록(520)은 수집된 데이터의 포맷에 대한 액세스를 갖는다. 더욱이, 획득 로직 블록(520)은 예를 들면, LTSSM 이벤트에 대한 상태 추적을 또한 수행할 수 있다. 전술한 바와 같이, LTSSM은 하나의 엔드 포인트로부터 다른 엔드 포인트로 통신하기 위해 PCIe 프로토콜에서의 물리 및 링크 계층 상태들이 겪게 되는 상태 머신을 정의한다.
획득 로직 블록(520)에 의해 획득된 정보는 캡쳐 메모리(530)로 전송될 수 있고, 메모리(530)에 저장된 각각의 엔트리(570)는 어드레스(571)와 함께 동반된다. 전술한 바와 같이, 획득 로직 블록(520)은 모니터링된 정보의 포맷에 대한 액세스를 가지며, 이것을 이용하여 메모리(530) 내에 저장될 엔트리들을 생성할 수 있다. 전형적으로, 획득 로직(520)은 정보를 저장하기 위한 메모리(530) 내의 어드레스(571)를 결정할 것이다. 일 실시예에서, 각각의 클록 사이클 동안에 개개의 정보가 캡쳐되고, 메모리(530) 내로의 엔트리가 각각의 클록 사이클에 대해 생성된다. 예를 들어, TLP 캡쳐 블록은 각각의 클록 사이클에 TLP 패킷을 캡쳐하고, 각각의 TLP 패킷에 대해 메모리 모듈에서의 새로운 엔트리를 생성할 수 있다. 한편, 각각의 TLP 패킷은 256 비트를 포함할 수 있기 때문에, 각각의 TLP 패킷은 캡쳐 메모리(530)에서의 다수의 엔트리들에 걸쳐서 저장될 수 있다.
다른 실시예에서, 특정 타입의 데이터가 캡쳐를 위한 다수의 클록 사이클을 취할 수 있다. 따라서, 특정 이베트에 관한 모든 데이터가 수집되었을 때, 그러한 타입의 데이터에 대한 엔트리가 메모리(530)에 생성된다.
일 실시예에서, 획득 로직 블록(520)은 모니터로부터의 데이터를 포맷하여, 메모리(530)에 저장될 엔트리 및 어드레스를 생성하는 단순한 상태 머신을 포함할 수 있다. 상태 머신은 다음 엔트리에 대한 어드레스를 더 증가시킨다. 또한, 상태 머신은 캡쳐 모듈의 타입에 따라 추가적인 상태를 가질 수 있다. 예를 들어, 트래픽 트리거링 캡쳐 블록은 이벤트의 트리거링과 관련된 추가적인 상태를 가질 수 있다.
일 실시예에서, 메모리(530)는 획득 로직 모듈(520)로부터 수신된 엔트리 및 동반되는 어드레스를 저장하기 위한 순환 버퍼를 포함할 수 있다. 엔트리의 수 및 그것의 빈도는 캡쳐 블록의 타입에 의존한다. 예를 들어, TLP 캡쳐와 같은 캡쳐 모듈은 모든 트랜잭션 계층 패킷에 대해 메모리(530)에 엔트리를 저장할 필요가 있을 수 있다. 한편, 상태를 모니터링하는 캡쳐 블록은 상태 변화가 검출될 때에만 엔트리를 생성할 수 있다. 전형적으로, 타임스탬프는 각각의 엔트리가 캡쳐 메모리(530)에 저장될 때에 각각의 엔트리와 관련된다. 이것은 데이터가 쉽게 저장되도록 허용한다. 이것은 FPGA에서의 다양한 캡쳐 모듈로부터의 데이터가 소프트웨어(505)로 전송된 후에 특히 편리하다. 타임스탬프된 데이터는 타임스탬프를 이용하여 저장될 수 있고, 그것은 엔지니어가 결과를 시간 순서대로 보고, 임의의 문제들을 진단하는 것을 용이하게 한다. 데이터 및 타임스탬프 이외에, 일부의 경우, 메타데이터가 이벤트에 관한 추가적인 세부사항을 포함하는 엔트리와 함께 저장될 수도 있다. 예를 들어, 캡쳐 모듈이 상태 변화 이벤트와 관련되는 정보를 저장한다면, 상태 변화 이벤트의 타입에 관한 메타데이터가 각각의 엔트리와 함께 메모리 모듈(530)에 저장될 수 있다.
일 실시예에서, 각각의 캡쳐 모듈은 수집된 정보를, 전송 인터페이스(540)를 이용하여 테스터 소프트웨어(505)에게 통신한다. 전형적으로, 각각의 캡쳐 모듈은 캡쳐된 데이터를 소프트웨어(505)에게 통신하기 위해 전송 인터페이스 블록을 포함할 것이다. 전송 인터페이스 블록(540)은 어드레스 및 데이터 라인들(572 및 573)을 각각 이용하여 캡쳐 메모리(530)에 액세스할 수 있다. 상태 신호(들)(574)은 정보가 저장되는 메모리(530)에서의 위치에 관한 정보 및 데이터의 포맷에 관한 임의의 추가 정보를 전송 인터페이스에게 제공한다. 제어 신호(들)(575)은 전송 인터페이스 블록(540)이 소프트웨어(505)에 대한 데이터 흐름을 제어하고, 소프트웨어(505)에 대한 데이터 흐름을 제어하는 것에 관한 임의의 다른 선호 사항(preference)을 설정하도록 허용한다.
캡쳐 모듈이 단지 상태 정보만을 캡쳐하는 일 실시예에서, 캡쳐 메모리(530) 대신에, 버퍼가 전형적으로, 상태 정보를 저장하기 위한 레지스터만을 포함할 것이다.
일 실시예에서, 캡쳐 모듈은 이벤트들 사이의 시간 래그(time lag)를 결정하도록 프로그래밍될 수 있다. 예를 들어, 캡쳐 모듈은 판독 요청과 판독 요청의 완료 사이의 대기 시간을 로그하는 완료 캡쳐 모듈일 수 있다. 따라서, (예를 들면, 모니터 1(555A)을 이용하여) 모니터링되는 신호들 중 하나는 판독 요청일 것이며, 캡쳐 모듈에 의해 (예를 들면, 모니터 N(555N)을 이용하여) 모니터링되는 다른 신호는 판독 요청의 완료에 응답하여 송신된 완료 패킷일 것이다. 캡쳐 모듈은 판독 요청과 완료 사이의 시간 래그를 모니터링하기 위해 시간스탬프를 이용하거나, 또는 완료가 전혀 없었는지의 여부를 결정할 수 있다. 캡쳐 모듈의 획득 로직(520)은 전형적으로, 사양(specification), 예를 들면, 전형적인 판독 요청 시간 및 초과할 경우 판독 요청 결함이 플래깅될 필요가 있는 최대 시간에 관한 PCIe 사양으로부터의 정보로 프로그래밍될 필요가 있을 것이다. 캡쳐 모듈은 판독 요청 시간에 관한 정보 또는 캡쳐 메모리(530)에서의 임의의 결함 정보를 레코딩하고, 그것을 소프트웨어(505)를 통해 사용자에게 보고할 수 있다.
일 실시예에서, 사용자는 얼마나 많은, 그리고 어떤 타입의 캡쳐 모듈이 특정 FPGA 내로 프로그래밍되어야 하는지에 대한 제어를 갖는다. FPGA는 쉽게 재프로그래밍될 수 있기 때문에, 사용자는 고정된 구성으로 제한될 필요가 없다. 예를 들어, 사용자는 FPGA 상에서 에뮬레이팅되는 프로토콜의 타입에 기초하여 또는 FPGA가 그 안에서 이용되는 설계의 타입에 기초하여, 상이한 수 및 타입의 캡쳐 모듈을 선택할 수 있다. 임의의 특정 FPGA에 추가될 캡쳐 모듈의 수 및 타입은, 설계자가 FPGA 내로 프로그래밍될 비트 파일(bit-file)을 형성할 때, 코맨드 라인 인터페이스에서 지정될 수 있다. 즉, FPGA를 프로그래밍할 때의 특정한 형성 옵션은, 사용자가 설계 내에 포함하기 위한 캡쳐 모듈의 수 및 타입을 쉽게 선택하도록 허용한다.
도 6은 본 발명의 일 실시예에 따른, 디바이스 결함에 대한 근본 원인을 결정하기 위해 자동 디바이스 테스팅의 과정 동안의 중요 정보를 캡쳐하기 위한 예시적인 컴퓨터 구현된 프로세스의 흐름도를 도시한다.
단계(601)에서, 특정 테스트에 대해 캡쳐가 인에이블링된다. 이것은 전형적으로, 테스트를 인테이블링 및 시작하기 위한 다양한 구성을 설정하는 것을 포함하는 트래픽 캡쳐 설정을 포함한다. 예를 들어, 사용자는 FPGA를 프로그래밍하고, FPGA 내에 포함하기 위한 캡쳐 모듈의 타입 및 수를 결정해야 한다.
단계(602)에서, 테스트가 시작된다. 단계(603)에서, 결함이 검출되면, 단계(605)에서 테스트가 중지된다. 후속하여, 단계(606)에서 캡쳐가 중지된다. 만약, 결함이 검출되지 않는다면, 테스트는 그것이 단계(604)에서 종료될 때까지, 그 과정을 실행하도록 허용된다. 후속하여, 단계(606)에서 캡쳐가 중지된다.
그 후, 단계(607)에서 테스터 소프트웨어를 이용하여, 캡쳐된 결과가 검색 및 저장된다. 예를 들어, 캡쳐된 결과는 소프트웨어(505) 내에 저장 및 다운로딩될 수 있다.
데이터가 수집되면, 단계(608)에서, 그것은 예를 들면, 규칙 검사기를 이용하여, 수작업으로 또는 자동으로 분석될 수 있다.
단계(609)에서, 테스트와 관련된 로그가 생성된다. 단계(612)에서, 더 이상 처리할 데이터가 없고, 테스트가 완료된다면, 단계(620)에서 테스트는 종료된다. 그러나, 처리할 데이터가 더 있다면, 단계(610)에서 포스트-프로세스 분석(post-process analysis)이 데이터에 대해 실행된다. 일 실시예에서, 포스트-프로세스 분석은 전형적으로, "A LOG POST PROCESSOR FOR IDENTIFYING FOOR CAUSES OF DEVICE FAILURE DURING AUTOMATED TESTING" 이라는 명칭으로 2018년 3월 8일에 출원된 관련 미국 특허 출원 제15/916,126호에서 설명된 바와 같이 디바이스 결함의 근본 원인을 결정하기 위해 로그를 분석하는 것을 포함한다. 그러나, 데이터에 대해 수행된 다른 타입의 포스트-프로세싱이 마찬가지로 존재할 수 있다. 예를 들어, 캡쳐 모듈 메모리(530)에 저장된 시간스탬프를 갖는 추가적인 메타데이터와 더불어 데이터가 사용자에 의해 쉽게 인식될 수 있는 포맷으로 존재하지 않을 수 있다. 단계(609)에서의 포스트-프로세싱은 캡쳐 모듈로부터 검색된 정보를 사용자가 쉽게 이해하고 이용할 수 있는 포맷으로 변환할 수 있다.
단계(611)에서, 테스트에 관한 보고가 생성된다. 예를 들어, 보고는 디바이스 결함의 근본 원인을 식별하거나 또는 사용자에게 임박하여 결함이 발생될 수 있는 임의의 디바이스에 관해 알려줄 수 있다.
도 7은 본 발명의 일 실시예에 따른, 데이터 트래픽을 모니터링 및 문제점들을 진단하기 위한 자동 디바이스 테스팅 동안 캡쳐 모듈을 이용하기 위한 예시적인 컴퓨터 구현된 프로세스의 흐름도를 도시한다.
단계(702)에서, 복수의 캡쳐 모듈이 프로그래밍가능 로직 디바이스, 예를 들면, FPGA 내로 프로그래밍되어, FPGA에 대한 테스트와 관련된 데이터 트래픽을 모니터링한다. FPGA, 예를 들면, FPGA(495)가 테스트될 복수의 DUT, 예를 들면, DUT(496A-496N)에 접속된다. 더욱이, FPGA는 시스템 제어기, 예를 들면, 테스트들을 조정하기 위한 테스터 소프트웨어 애플리케이션 프로그램을 실행하는 시스템 제어기(301)에 또한 접속된다. 전술한 바와 같이, 사용자는 FPGA를 프로그래밍하기 위한 비트 파일을 다운로딩하기 전에, 로직 디바이스 내로 프로그래밍하기 위한 캡쳐 모듈의 타입 및 수를 선택할 수 있다.
단계(704)에서, 캡쳐 모듈을 이용하여 FPGA에서의 데이터 트래픽이 모니터링된다. 캡쳐 모듈은 켭쳐 및 모니터링하기 위한 관련 데이터를 결정하는 획득 로직 회로(520)을 포함한다.
단계(706)에서, 모니터링과 관련된 결과가 복수의 캡쳐 모듈 각각 내의 개개의 메모리에 저장된다.
마지막으로, 단계(708)에서, 결과는 시스템 제어기 상에서 실행되는 테스터 소프트웨어 애플리케이션 프로그램에게 송신된다.
전술한 설명은, 설명을 위한 목적으로, 특정 실시예를 참조하여 기술되었다. 그러나, 위에서의 예시적인 설명은 독점적인 것이거나 또는 본 발명을 개시된 정확한 형태로 제한하도록 의도되지 않는다. 위에서의 기술 내용의 관점에서 많은 수정 및 변경이 가능하다. 실시예들은 본 발명의 원리 및 그 실제 응용을 가장 잘 설명함으로써, 본 기술 분야의 다른 당업자들이 본 발명 및 다양한 수정을 갖는 다양한 실시예를 고려되는 특정한 용도에 적합한 것으로서 가장 잘 활용할 수 있게 하도록 선택되고 기술되었다.

Claims (20)

  1. 자동 테스트 장비(automated test equipment: ATE)를 이용하여 결함의 원인을 진단하기 위한 방법으로서,
    복수의 캡쳐 모듈을 이용하여 상기 자동 테스트 장비에서의 DUT(device under test)를 테스팅하는 것과 관련된 데이터 트래픽을 모니터링하는 단계 ― 상기 복수의 캡쳐 모듈은 프로그래밍가능 로직 디바이스 내에 통합되고, 상기 프로그래밍가능 로직 디바이스는 시스템 제어기에 의해 제어되고 상기 DUT를 테스트하기 위한 코맨드 및 데이터를 생성하도록 동작가능하고, 상기 복수의 캡쳐 모듈은 모니터링될 상기 데이터 트래픽을 선택적으로 캡쳐하도록 프로그래밍가능 및 동작가능하고, 상기 데이터 트래픽은 상기 DUT와 상기 프로그래밍가능 로직 디바이스 사이의 트래픽의 흐름을 포함함 ― 와,
    상기 모니터링과 관련된 결과를 상기 복수의 캡쳐 모듈 각각과 관련된 개개의 메모리에 저장하는 단계와,
    요청시에 상기 결과를 상기 시스템 제어기 상에서 실행되는 애플리케이션 프로그램에게 송신하는 단계를 포함하는
    방법.
  2. 제1항에 있어서,
    상기 프로그래밍가능 로직 디바이스는 FPGA(Field Programmable Gate Array)인
    방법.
  3. 제1항에 있어서,
    상기 데이터 트래픽은 상기 DUT와 상기 시스템 제어기 사이의 트래픽의 흐름을 더 포함하고, 상기 자동 테스트 장비를 구성하는 데 이용된 구성 코맨드를 더 포함하는
    방법.
  4. 제1항에 있어서,
    상기 데이터 트래픽은 상기 DUT 상에서 실행될 테스트를 구성 및 실행하기 위해 상기 프로그래밍가능 로직 디바이스 상에 프로그래밍된 상태 머신이 전이할 상태를 더 포함하는
    방법.
  5. 제1항에 있어서,
    상기 프로그래밍가능 로직 디바이스는 상기 DUT의 테스팅에서 실행될 프로토콜을 에뮬레이팅하도록 구성되는
    방법.
  6. 제5항에 있어서,
    상기 프로토콜은 PCIe(Peripheral Component Interconnect Express), SATA(Serial AT Attachment) 또는 SAS(Serial Attached SCSI)로 구성되는 그룹으로부터 선택되는
    방법.
  7. 제1항에 있어서,
    상기 복수의 캡쳐 모듈은 하나 이상의 단(stage)을 이용하여 상기 프로그래밍가능 로직 디바이스 상으로 프로그래밍되고, 상기 복수의 캡쳐 모듈의 각각의 단은 별개의 기능을 수행하는
    방법.
  8. 제7항에 있어서,
    상기 복수의 캡쳐 모듈의 제1 단은 상기 DUT와 통신하여, 상기 DUT로부터 테스트 관련 정보를 직접 캡쳐하는
    방법.
  9. 제8항에 있어서,
    상기 복수의 캡쳐 모듈의 단들 중 적어도 하나는 하나 이상의 캡쳐 모듈로부터의 모니터링과 관련된 결과를 캡쳐하고 상기 송신을 수행하도록 동작가능한
    방법.
  10. 제8항에 있어서,
    상기 복수의 캡쳐 모듈의 단들 중 적어도 하나는 테스트 관련 트래픽을 상기 제1 단으로부터 후속 단으로 라우팅하도록 동작가능한
    방법.
  11. 제1항에 있어서,
    상기 모니터링하는 단계는,
    상기 DUT와 상기 시스템 제어기 사이의 트래픽의 흐름을 분석하는 단계와,
    상기 DUT와 관련된 에러 상태를 플래깅(flagging)하는 단계를 더 포함하는
    방법.
  12. 제11항에 있어서,
    상기 플래깅하는 단계는 상기 DUT와 관련된 임박한 결함 상태를 플래깅하는 단계를 더 포함하는
    방법.
  13. 자동 테스트 장비(automated test equipment: ATE)를 이용하여 결함의 원인을 진단하기 위한 장치로서,
    시스템 제어기를 포함하는 컴퓨터 시스템 ― 상기 시스템 제어기는 테스터 프로세서 및 프로그래밍가능 로직 디바이스를 포함하는 사이트 모듈 보드에 통신가능하게 연결되고, 상기 시스템 제어기는 DUT(device under test)에 대한 테스트를 수행하기 위한 인스트럭션을 상기 테스터 프로세서 및 상기 프로그래밍가능 로직 디바이스에게 송신하도록 동작가능함 ― 과,
    상기 DUT에 통신가능하게 연결되고, 상기 DUT에 대한 테스트를 실행하기 위한 코맨드 및 데이터를 생성하도록 동작가능한 상기 프로그래밍가능 로직 디바이스를 포함하되,
    상기 프로그래밍가능 로직 디바이스는 상기 프로그래밍가능 로직 디바이스 상에 프로그래밍된 복수의 프로그래밍가능 캡쳐 모듈을 포함하고,
    상기 복수의 프로그래밍가능 캡쳐 모듈은,
    상기 DUT를 테스트하는 것과 관련된 데이터 트래픽을 모니터링하고,
    모니터링될 상기 데이터 트래픽을 선택적으로 캡쳐하고 ― 상기 데이터 트래픽은 상기 DUT와 상기 프로그래밍가능 로직 디바이스 사이의 트래픽의 흐름을 포함함 ―,
    상기 데이터 트래픽을 모니터링하는 것과 관련된 결과를 상기 복수의 캡쳐 모듈 각각과 관련된 개개의 메모리에 저장하고,
    요청시에 상기 결과를 상기 시스템 제어기 상에서 실행되는 테스터 애플리케이션 프로그램에 송신하도록 동작가능한
    장치.
  14. 제13항에 있어서,
    상기 프로그래밍가능 로직 디바이스는 FPGA(Field Programmable Gate Array)인
    장치.
  15. 제13항에 있어서,
    상기 데이터 트래픽은 상기 DUT와 상기 시스템 제어기 사이의 트래픽의 흐름을 더 포함하고, 상기 자동 테스트 장비를 구성하는 데 이용된 구성 코맨드를 더 포함하는
    장치.
  16. 제13항에 있어서,
    상기 데이터 트래픽은 상기 DUT 상에서 실행될 테스트를 구성 및 실행하기 위해 상기 프로그래밍가능 로직 디바이스 상에 프로그래밍된 상태 머신이 전이할 상태를 더 포함하는
    장치.
  17. 제13항에 있어서,
    상기 프로그래밍가능 로직 디바이스는 상기 DUT의 테스팅에서 실행될 프로토콜을 에뮬레이팅하도록 구성되는
    장치.
  18. 제17항에 있어서,
    상기 프로토콜은 PCIe(Peripheral Component Interconnect Express), SATA(Serial AT Attachment) 또는 SAS(Serial Attached SCSI)로 구성되는 그룹으로부터 선택되는
    장치.
  19. 테스터로서,
    복수의 DUT를 테스트하기 위한 테스트 프로그램을 제어하기 위한 시스템 제어기와,
    상기 복수의 DUT와 인터페이스하고 상기 복수의 DUT를 테스트하도록 동작가능한 복수의 모듈 - 상기 복수의 모듈은 상기 시스템 제어기에 연결되고, 각각의 모듈은 사이트 모듈 보드를 포함함 - 을 포함하되,
    각각의 사이트 모듈 보드는,
    상기 시스템 제어기와 통신하도록 연결되어, 상기 테스트 프로그램에 따라 상기 시스템 제어기로부터 인스트럭션 및 데이터를 수신하는 테스터 프로세서와,
    상기 테스터 프로세서에 연결된 복수의 프로그래밍가능 로직 디바이스를 포함하고,
    각각의 프로그래밍가능 로직 디바이스는 개개의 DUT에 대한 적용을 위한 테스트 데이터를 생성하도록 동작가능하고, 또한 상기 개개의 DUT에 의해 생성된 테스트 데이터를 수신 및 비교하도록 동작가능하고, 또한 상기 개개의 DUT와 호환가능한 통신 프로토콜에서 상기 개개의 DUT와 통신하도록 프로그래밍되도록 동작가능하고,
    상기 프로그래밍가능 로직 디바이스 각각은 복수의 캡쳐 모듈을 포함하고, 상기 복수의 캡쳐 모듈은 상기 프로그래밍가능 로직 디바이스 상에서 프로그래밍되고,
    상기 복수의 캡쳐 모듈은,
    상기 개개의 DUT를 테스트하는 것과 관련된 데이터 트래픽을 모니터링하고,
    모니터링될 상기 데이터 트래픽을 선택적으로 캡쳐하고 ― 상기 데이터 트래픽은 상기 개개의 DUT와 상기 시스템 제어기 사이의 트래픽의 흐름을 포함함 ―,
    상기 데이터 트래픽을 모니터링하는 것과 관련된 결과를 상기 복수의 캡쳐 모듈 각각과 관련된 개개의 메모리에 저장하고,
    요청시에 상기 결과를 상기 시스템 제어기 상에서 실행되는 테스터 애플리케이션 프로그램에게 송신하도록 동작가능한
    테스터.
  20. 제19항에 있어서,
    상기 프로그래밍가능 로직 디바이스는 FPGA(Field Programmable Gate Array)인
    테스터.
KR1020190056869A 2018-05-16 2019-05-15 자동 테스팅 동안 디바이스 결함의 근본 원인을 식별하기 위한 트래픽 캡쳐 및 디버깅 툴 KR20190131445A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/981,634 US10929260B2 (en) 2018-05-16 2018-05-16 Traffic capture and debugging tools for identifying root causes of device failure during automated testing
US15/981,634 2018-05-16

Publications (1)

Publication Number Publication Date
KR20190131445A true KR20190131445A (ko) 2019-11-26

Family

ID=68532577

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190056869A KR20190131445A (ko) 2018-05-16 2019-05-15 자동 테스팅 동안 디바이스 결함의 근본 원인을 식별하기 위한 트래픽 캡쳐 및 디버깅 툴

Country Status (3)

Country Link
US (1) US10929260B2 (ko)
KR (1) KR20190131445A (ko)
CN (1) CN110502374A (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210111967A1 (en) * 2018-05-16 2021-04-15 Advantest Corporation Graphical user interface for traffic capture and debugging tool
US20210173010A1 (en) * 2018-05-16 2021-06-10 Advantest Corporation Diagnostic tool for traffic capture with known signature database
US10948540B2 (en) * 2018-07-27 2021-03-16 Advantest Corporation Integrated protocol analyzer configured within automated test equipment (ate) hardware
US10794955B2 (en) * 2018-10-16 2020-10-06 Optimal Plus Ltd Methods and systems for testing a tester
IT201900019992A1 (it) * 2019-10-29 2021-04-29 Nplust S R L Sistema per la caratterizzazione di memorie non volatili
US11828787B2 (en) * 2020-02-28 2023-11-28 Advantest Corporation Eye diagram capture test during production
TWI773140B (zh) * 2020-03-05 2022-08-01 日商愛德萬測試股份有限公司 用於流量捕獲及除錯工具之圖形使用者介面
TWI810523B (zh) * 2020-03-12 2023-08-01 日商愛德萬測試股份有限公司 自動測試裝備系統及設備、以及用於測試受測裝置的方法
EP3882771A1 (en) * 2020-03-16 2021-09-22 Leica Microsystems CMS GmbH Control system and method for operating a system
US11899550B2 (en) 2020-03-31 2024-02-13 Advantest Corporation Enhanced auxiliary memory mapped interface test systems and methods
US11650893B2 (en) * 2020-03-31 2023-05-16 Advantest Corporation Multiple name space test systems and methods
CN111538539B (zh) * 2020-04-23 2022-07-22 苏州浪潮智能科技有限公司 存储系统启动方法、装置及计算机可读存储介质
US11836059B1 (en) 2020-12-14 2023-12-05 Sanblaze Technology, Inc. System and method for testing non-volatile memory express storage devices
US11349727B1 (en) * 2021-05-11 2022-05-31 At&T Intellectual Property I, L.P. Service level agreement management service
CN113778053A (zh) * 2021-09-08 2021-12-10 摩拜(北京)信息技术有限公司 一种电机控制器的测试装置和系统
US11921598B2 (en) * 2021-10-13 2024-03-05 Teradyne, Inc. Predicting which tests will produce failing results for a set of devices under test based on patterns of an initial set of devices under test
US11669381B1 (en) 2021-11-15 2023-06-06 International Business Machines Corporation Real-time error debugging

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173440B1 (en) 1998-05-27 2001-01-09 Mcdonnell Douglas Corporation Method and apparatus for debugging, verifying and validating computer software
US6449741B1 (en) 1998-10-30 2002-09-10 Ltx Corporation Single platform electronic tester
JP3977373B2 (ja) 2004-12-08 2007-09-19 ザイオソフト株式会社 通信端末
US7571151B1 (en) 2005-12-15 2009-08-04 Gneiss Software, Inc. Data analysis tool for analyzing data stored in multiple text files
US20070263649A1 (en) 2006-05-12 2007-11-15 Genti Cuni Network diagnostic systems and methods for capturing network messages
US7596729B2 (en) 2006-06-30 2009-09-29 Micron Technology, Inc. Memory device testing system and method using compressed fail data
US7764695B2 (en) 2006-09-25 2010-07-27 Oyadomari Randy I Arm and rollback in a multi-chassis system
US8195978B2 (en) 2008-05-16 2012-06-05 Fusion-IO. Inc. Apparatus, system, and method for detecting and replacing failed data storage
US8166340B2 (en) * 2008-06-24 2012-04-24 Litepoint Corporation Apparatus and method for testing a communication circuit
US7885277B2 (en) 2008-12-09 2011-02-08 At&T Intellectual Property I, L.P. Methods and apparatus to analyze autonomous system peering policies
US9219956B2 (en) 2008-12-23 2015-12-22 Keyssa, Inc. Contactless audio adapter, and methods
CN101924603B (zh) 2009-06-09 2014-08-20 华为技术有限公司 数据传输速率的自适应调整方法、装置及系统
CN103890763B (zh) 2011-10-26 2017-09-12 国际商业机器公司 信息处理装置、数据存取方法以及计算机可读存储介质
US9495267B2 (en) 2012-07-13 2016-11-15 Spirent Communications, Inc. Method and device for quasi-proxy assisted manual device testing
US9164821B2 (en) 2012-12-14 2015-10-20 International Business Machines Corporation Performing diagnostic tracing of an executing application to identify suspicious pointer values
US10161993B2 (en) * 2013-02-21 2018-12-25 Advantest Corporation Tester with acceleration on memory and acceleration for automatic pattern generation within a FPGA block
US20140237292A1 (en) * 2013-02-21 2014-08-21 Advantest Corporation Gui implementations on central controller computer system for supporting protocol independent device testing
US9310427B2 (en) * 2013-07-24 2016-04-12 Advantest Corporation High speed tester communication interface between test slice and trays
KR101537759B1 (ko) 2013-09-30 2015-07-22 국방과학연구소 지상무인체계 시뮬레이터 및 그 운용방법
US9251915B2 (en) * 2013-11-11 2016-02-02 Advantest Corporation Seamless fail analysis with memory efficient storage of fail lists
US9958502B2 (en) 2014-08-12 2018-05-01 Globalfoundries Singapore Pte. Ltd. Defect isolation methods and systems
WO2016145405A1 (en) * 2015-03-11 2016-09-15 Protocol Insight, Llc Intelligent packet analyzer circuits, systems, and methods
US10587491B1 (en) * 2016-12-27 2020-03-10 Amazon Technologies, Inc. Testing computer networks in real time
US10379158B2 (en) 2017-02-09 2019-08-13 Advantest Corporation Real-time capture of traffic upon failure for protocol debug
EP3518441B1 (en) 2018-01-25 2023-03-22 Rohde & Schwarz GmbH & Co. KG Test troubleshooting system and method
US10955461B2 (en) 2018-05-16 2021-03-23 Advantest Corporation Smart and efficient protocol logic analyzer configured within automated test equipment (ATE) hardware

Also Published As

Publication number Publication date
US10929260B2 (en) 2021-02-23
US20190354453A1 (en) 2019-11-21
CN110502374A (zh) 2019-11-26

Similar Documents

Publication Publication Date Title
US10929260B2 (en) Traffic capture and debugging tools for identifying root causes of device failure during automated testing
US10955461B2 (en) Smart and efficient protocol logic analyzer configured within automated test equipment (ATE) hardware
CN110050441B (zh) 在故障情况下实时捕获流量以进行协议调试
US10948540B2 (en) Integrated protocol analyzer configured within automated test equipment (ate) hardware
US11009550B2 (en) Test architecture with an FPGA based test board to simulate a DUT or end-point
US10976361B2 (en) Automated test equipment (ATE) support framework for solid state device (SSD) odd sector sizes and protection modes
US9810729B2 (en) Tester with acceleration for packet building within a FPGA block
US20210111967A1 (en) Graphical user interface for traffic capture and debugging tool
US20210173010A1 (en) Diagnostic tool for traffic capture with known signature database
US20140236527A1 (en) Cloud based infrastructure for supporting protocol reconfigurations in protocol independent device testing systems
US20140236524A1 (en) Tester with acceleration on memory and acceleration for automatic pattern generation within a fpga block
KR20150119869A (ko) 프로토콜 독립적 디바이스 테스팅을 지원하기 위한 중앙 컨트롤러 컴퓨터 시스템 상에서의 gui 구현
US8996928B2 (en) Devices for indicating a physical layer error
US11828787B2 (en) Eye diagram capture test during production
US20190278645A1 (en) Log post-processor for identifying root causes of device failure during automated testing
CN117076337B (zh) 一种数据传输方法、装置、电子设备及可读存储介质
US10970442B1 (en) Method of debugging hardware and firmware of data storage
TWI773140B (zh) 用於流量捕獲及除錯工具之圖形使用者介面
US7185248B2 (en) Failure analysis system and failure analysis method of logic LSI
US10348605B2 (en) Embedding analyzer functionality in storage devices
US11430536B2 (en) Software-focused solution for arbitrary all-data odd sector size support
CN117806943A (zh) 测试方法、装置及存储介质
JP2012058830A (ja) シリアル通信カード試験装置

Legal Events

Date Code Title Description
A201 Request for examination