KR20050113273A - 시험 에뮬레이트 장치, 시험 모듈 에뮬레이트 장치, 및이들을 기록한 기록 매체 - Google Patents

시험 에뮬레이트 장치, 시험 모듈 에뮬레이트 장치, 및이들을 기록한 기록 매체 Download PDF

Info

Publication number
KR20050113273A
KR20050113273A KR1020057018755A KR20057018755A KR20050113273A KR 20050113273 A KR20050113273 A KR 20050113273A KR 1020057018755 A KR1020057018755 A KR 1020057018755A KR 20057018755 A KR20057018755 A KR 20057018755A KR 20050113273 A KR20050113273 A KR 20050113273A
Authority
KR
South Korea
Prior art keywords
test
emulation
module
test signal
timing
Prior art date
Application number
KR1020057018755A
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
Priority claimed from US10/403,817 external-priority patent/US7290192B2/en
Priority claimed from US10/404,002 external-priority patent/US7460988B2/en
Priority claimed from PCT/JP2004/001649 external-priority patent/WO2004072670A1/en
Application filed by 주식회사 아도반테스토 filed Critical 주식회사 아도반테스토
Publication of KR20050113273A publication Critical patent/KR20050113273A/ko

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/319Tester hardware, i.e. output processing circuits
    • G01R31/31903Tester hardware, i.e. output processing circuits tester configuration
    • G01R31/31908Tester set-up, e.g. configuring the tester to the device under test [DUT], down loading test patterns
    • G01R31/3191Calibration
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3183Generation of test inputs, e.g. test vectors, patterns or sequences
    • 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
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3183Generation of test inputs, e.g. test vectors, patterns or sequences
    • G01R31/318307Generation of test inputs, e.g. test vectors, patterns or sequences computer-aided, e.g. automatic test program generator [ATPG], program translations, test program debugging
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3183Generation of test inputs, e.g. test vectors, patterns or sequences
    • G01R31/318342Generation of test inputs, e.g. test vectors, patterns or sequences by preliminary fault modelling, e.g. analysis, simulation
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/319Tester hardware, i.e. output processing circuits
    • G01R31/31903Tester hardware, i.e. output processing circuits tester configuration
    • G01R31/31907Modular tester, e.g. controlling and coordinating instruments in a bus based architecture
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/319Tester hardware, i.e. output processing circuits
    • G01R31/31917Stimuli generation or application of test patterns to the device under test [DUT]
    • G01R31/31922Timing generation or clock distribution

Landscapes

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

Abstract

시험 에뮬레이션 장치는 서로 다른 사이클 주파수에 기초하여 시험 신호를 생성하는 시험 모듈을 에뮬레이트하는 시험 모듈 에뮬레이션부, 시험 모듈 에뮬레이션부의 사이클 시간에 대응하는 시험 신호를 의사적으로 생성해야 하는 시험 신호 생성 타이밍을 생성하는 동기 에뮬레이션부, 동기 에뮬레이션부가 생성한 시험 신호 생성 타이밍을, 시각 순으로 정렬하고 순차 출력하는 타이밍 정렬부, 및 타이밍 정렬부가 출력한 하나의 시험 신호 생성 타이밍에 대응하는 시험 모듈 에뮬레이션부에, 당해 하나의 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호를 의사적으로 생성시키는 스케쥴부를 포함한다.

Description

시험 에뮬레이트 장치, 시험 모듈 에뮬레이트 장치, 및 이들을 기록한 기록 매체{TEST EMULATION DEVICE, TEST MODULE EMULATION DEVICE, AND RECORDING MEDIUM RECORDED WITH PROGRAMS FOR THE DEVICES}
문헌의 참조에 의한 편입이 인정되는 지정국에 관하여는, 다음의 출원에 기재된 내용을 참조에 의하여 본 출원에 편입하고, 본 출원의 기재의 일부로 한다.
미국 특허 출원 10/404,002 출원일 2003년 3월 31일
미국 특허 출원 10/403,817 출원일 2003년 3월 31일
국제 특허 출원 PCT/JP2004/001649 출원일 2004년 2월 16일
국제 특허 출원 PCT/JP2004/001648 출원일 2004년 2월 16일
본 발명은 시험 에뮬레이트 장치, 시험 모듈 에뮬레이스 장치, 및 이들의 프로그램을 기록한 기록 매체에 관한 것이다. 특히, 본 발명은, 피시험 디바이스에 시험 신호를 각각 공급하는, 교환 가능한 복수의 시험 모듈을 포함하는 시험 장치를 에뮬레이트하고, 피시험 디바이스와 시험 모듈 등의 실물을 이용하지 않으며 시험 환경을 검증할 수 있는 시험 에뮬레이트 장치, 시험 모듈 에뮬레이트 장치, 및 이들의 프로그램을 기록한 기록 매체에 관한 것이다.
종래, 피시험 디바이스와 시험 장치 등의 실물을 이용하지 않고 시험 환경을검증하는수단으로서, 일본 특허 공개 평10-320229호, 일본 특허 공개 2000-267881호, 일본 특허 공개 2001-51025호, 일본 특허 공개 2001-134457호, 일본 특허 공개 2002-333469호에 나타낸 기술이 개시되어 있다.
일본 특허 공개 10-320229호는, 반도체 시험 장치의 각 하드웨어 유닛의 기능을 에뮬레이트하는 각 에뮬레이터 유닛과, DUT의 기능을 에뮬레이트하는 디바이스 에뮬레이터와, 테스트 프로그램에 기초하여, 각 에뮬레이터 유닛으로부터 테스트 프로그램의 실행에 필요한 데이터를 수집하는 수단과, 수집한 데이터에 기초하여 디바이스 에뮬레이터에 시험 신호를 발생시키고, 디바이스 에뮬레이터로부터의 결과 신호를 비교하여 결과를 격납하는 디바이스 테스트 에뮬레이터를 포함하는 에뮬레이터를 개시한다.
일본 특허 공개 2000-267881호는, DUT의 내부 저항에 의존하여 변화하는 전압치, 전류치를 적확하게 시뮬레이트하는 반도체 시뮬레이트 장치를 개시한다.
일본 특허 공개 2001-51025호는, 반도체 시험 장치의 동작을 에뮬레이트하는 테스터 에뮬레이트 수단과, 하드웨어기술 언어에 기초하여 DUT를 시뮬레이트하는 하드웨어 기술 언어 시뮬레이트 수단과, DUT의 시뮬레이트 결과에 기초하여 반도체 시험용 프로그램의 디버그를 수행하는 디버그 수단을 포함하는 반도체 시험용 프로그램 디버그 장치를 개시한다.
일본 특허 공개 2001-134457호는, 반도체 시험 장치의 동작을 에뮬레이트할 때에, 각 핀에 대응한 파형 데이터를 고속으로 작성할 수 있는 반도체 시험용 프로그램 디버그 장치를 개시한다.
일본 특허 공개 2002-333469호는, 아날로그 출력 단자를 포함하는 반도체 디바이스용으로 작성된 반도체 시험용 프로그램의 검증을 수행할 수 있는 반도체 시험용 프로그램 디버그 장치를 개시한다.
상기에 나타낸 시험 장치의 에뮬레이트 장치는, 주로 시험 장치 공급자에 의하여 독자적으로 개발된 아키텍쳐에 의한 시험 장치를 전제로 한다. 한편, 장래의 시험 장치에 있어서는, 시험 장치가 개방형 아키텍쳐에 의하여 실현되고, 다양한 공급자에 의하여 개발된 모듈을 조합시켜 시험 장치를 구성하는 방식이 기대되며, 다양한 모듈을 혼재하여 사용하는 시험 장치를 적절히 에뮬레이트할 수 있는 에뮬레이트 장치를 제공하는 것이 바람직하다.
여기서, 본 발명은, 이러한 과제를 해결하는 것을 그 목적으로 한다.
도 1은, 본 발명의 실시 형태에 관한 시험 장치 10의 구성을 도시한다.
도 2는, 본 발명의 실시 형태에 관한 시험 에뮬레이트 장치 190의 기능 구성을 도시한다.
도 3은, 본 발명의 실시 형태에 관한 컴퓨터 20의 하드웨어 구성의 일 예를 도시한다.
도 4는, 본 발명의 실시 형태에 관한 시험 모듈 에뮬레이트부 270의 기능 구성을 도시한다.
도 5는, 본 발명의 실시 형태에 관한 클래스 계층 구조 500의 일 예를 도시한다.
도 6은, 본 발명의 실시 형태에 관한 시험 에뮬레이트 장치 190의 시험 신호 생성 처리 흐름을 도시한다.
도 7은, 본 발명의 실시 형태에 관한 시험 에뮬레이트 장치 190에 의하여 의사적으로 생성된 시험 신호의 일 예를 도시한다.
도 8은, 본 발명의 실시 형태에 의한 소프트웨어 아키텍쳐를 도시하고 있다.
도 9는, 본 발명의 실시 형태에 의한 테스트 클래스의 사용을 도시하고 있다.
도 10은, 본 발명의 실시 형태에 의한, 테스터 시스템과 다른 공급자가 제공하는 모듈 자원과의 상호 작용을 도시하는 통일 모델링 언어(UML) 다이어그램이다.
도 11은, 사이트 컨트롤러에 의하여 보유되고 있을 때의 사용자의 테스트를 관리하기 위한 사이트 컨트롤러 객체의 일 실시 형태를 도시하고 있다.
도 12는, 도 11에 도시되어 있는 사이트 컨트롤러 객체를 표현하고 있는 시스템 컨트롤러측의 객체의 대리의 일 실시 형태를 도시하고 있다.
도 13은, 본 발명의 실시 형태에 의한 테스트 환경을 도시하고 있다.
도 14는, 본 발명의 실시 형태에 관한 시뮬레이션 구성 파일의 일 예를 도시하는 제1도이다.
도 15는, 본 발명의 실시 형태에 관한 시뮬레이션 구성 파일의 일 예를 도시하는 제2도이다.
도 16은, 본 발명의 실시 형태에 관한 오프라인 구성 파일의 일 예를 도시하는 제1도이다.
도 17은, 본 발명의 실시 형태에 관한 오프라인 구성 파일의 일 예를 도시하는 제2도이다.
도 18은, 본 발명의 실시 형태에 관한 클래스 계층 구조 5200의 일 예를 도시한다.
도 19는, 본 발명의 실시 형태에 관한 채널 객체의 사용 다이어그램을 도시한다.
도 20은, 본 발명의 실시 형태에 관한 이벤트 객체의 사양 다이어그램을 도시한다.
도 21은, 본 발명의 실시 형태에 관한 디지털 모듈의 기본 클래스의 일 예를 도시한다.
도 22는, 본 발명의 실시 형태에 관한 디지털 드라이버 모듈의 클래스 선언의 일 예를 도시한다.
도 23은, 본 발명의 실시 형태에 관한 디지털 드라이버 모듈의 handleEvent 메소드의 일 예를 도시한다.
도 24는, 본 발명의 실시 형태에 관한 디지털 스트로브 모듈의 클래스 선언을 도시한다.
도 25는, 본 발명의 실시 형태에 관한 디지털 스트로브 모듈의 handleEvent 메소드의 일 예를 도시한다.
도 26은, 본 발명의 실시 형태에 관한 DUT 모델의 클래스 정의의 일 예를 도시한다.
도 27은, 본 발명의 실시 형태에 관한 DUT 모델의 run 메소드의 일 예를 도시한다.
도 28은, 실제 환경 6000 및 에뮬레이트 환경 6050에 있어서의 시스템 버스 억세스 라이브러리 6014의 위치 지정을 도시한다.
이러한 목적을 달성하기 위하여, 본 발명의 제1의 형태에 의하면, 시험 신호를 피시험 디바이스에 각각 공급하는 복수의 시험 모듈을 포함하는 시험 장치를 에뮬레이트하는 시험 에뮬레이트 장치에 있어서, 서로 다른 사이클 주기에 기초한 시험 신호를 생성하는 상기 복수의 시험 모듈을 에뮬레이트하는 복수의 시험 모듈 에뮬레이트부와, 상기 피시험 디바이스의 시험을 제어하는 제어 장치를 에뮬레이트하는 제어 에뮬레이트부와, 상기 제어 에뮬레이트부로부터의 지시에 기초하여, 상기 복수의 시험 모듈 에뮬레이트부의 각각이, 당해 시험 모듈 에뮬레이트부의 사이클 시간에 대응하는 시험 신호를 의사적으로 생성해야 하는 시험 신호 생성 타이밍을 생성하는 동기 에뮬레이트부와, 상기 동기 에뮬레이트부가 생성한 복수의 상기 시험 신호 생성 타이밍을, 시각 순으로 정렬하고 순차 출력하는 타이밍 정렬부와, 상기 타이밍 정렬부가 출력한 하나의 상기 시험 신호 생성 타이밍에 대응하는 상기 시험 모듈 에뮬레이트부에, 당해 하나의 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호를 의사적으로 생성시키는 스케쥴부를 포함하는 시험 에뮬레이트 장치를 제공한다.
의사적으로 생성된 상기 시험 신호에 기초하여 피시험 디바이스의 동작을 시뮬레이트하는 피시험 디바이스 시뮬레이트부를 더 포함해도 좋다.
상기 동기 에뮬레이트부는, 복수의 상기 시험 모듈 에뮬레이트부의 각각이, 상기 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호의 생성에 있어서 의사적으로 발생하는, 상기 제어 장치에 대한 인터럽트를 수집하는 인터럽트 수집 타이밍을 더 생성하고, 상기 타이밍 정렬부는, 상기 복수의 시험 신호 생성 타이밍 및 복수의 상기 인터럽트 수집 타이밍을 시각 순으로 정렬하여 순차 출력하고, 상기 스케쥴부는, 타이밍 정렬부가 하나의 상기 인터럽트 수집 타이밍을 출력한 경우에, 당해 인터럽트 수집 타이밍에 대응하는 상기 시험 모듈 에뮬레이트부에, 당해 인터럽트 수집 타이밍의 직전에 당해 시험 모듈 에뮬레이트부가 시험 신호를 생성한 사이클 시간에 있어서 의사적으로 발생한 상기 인터럽트를 상기 제어 에뮬레이트부에 대해 통지시켜도 좋다.
상기 복수의 시험 모듈 에뮬레이트부의 각각은, 상기 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호의 생성에 있어서, 당해 사이클 시간 중의 시험 신호의 변화 타이밍을 생성하고, 당해 시험 에뮬레이트 장치는, 상기 복수의 시험 모듈 에뮬레이트부에 의해 생성된 복수의 상기 변화 타이밍을 취득하고, 상기 복수의 변화 타이밍을 기초로, 시험 신호를 시각 순으로 순차 의사적으로 변화시키는 피시험 디바이스 접속부를 더 포함해도 좋다.
상기 피시험 디바이스 접속부는, 상기 복수의 시험 모듈 에뮬레이트부로부터 취득한 복수의 상기 변화 타이밍을 상기 타이밍 정렬부에 공급하고, 상기 타이밍 정렬부는, 상기 복수의 변화 타이밍, 상기 복수의 시험 신호 생성 타이밍 및 복수의 상기 인터럽트 수집 타이밍을 시각 순으로 정렬해서 순차 출력하고, 상기 스케쥴부는, 상기 타이밍 정렬부가 하나의 상기 변화 타이밍을 출력한 경우, 상기 피시험 디바이스 접속부에, 당해 변화 타이밍에 시험 신호를 의사적으로 변화시켜도 좋다.
상기 복수의 시험 모듈 에뮬레이트부의 각각은, 상기 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호의 생성에 있어서, 당해 사이클 시간이 종료하는 사이클 종료 타이밍을 상기 동기 에뮬레이트부에 통지하고, 상기 동기 에뮬레이트부는, 상기 복수의 시험 모듈 에뮬레이트부의 각각으로부터 통지된 상기 사이클 종료 타이밍에 기초해서, 당해 시험 모듈 에뮬레이트부가 다음의 사이클 시간에 대응하는 시험 신호를 의사적으로 생성해야하는 상기 시험 신호 생성 타이밍을 생성해도 좋다.
다음의 사이클 시간에 대응하는 상기 시험 신호 생성 타이밍을 상기 타이밍 정렬부가 출력한 경우, 상기 스케쥴부는, 당해 시험 신호 생성 타이밍의 직전의 사이클 시간에서의 시험 신호의 생성에 있어서, 당해 시험 신호 생성 타이밍에 대응하는 상기 시험 모듈 에뮬레이트부가 의사적으로 발생한 인터럽트를 상기 제어 에뮬레이트부에 대해 통지시켜도 좋다.
상기 복수의 시험 모듈 에뮬레이트부의 각각은, 당해 시험 모듈 에뮬레이트부에 대응하는 시험 모듈 에뮬레이트 프로그램을 컴퓨터에서 동작시킴으로써 실현되고, 상기 시험 모듈 에뮬레이트 프로그램은, 상기 시험 모듈이 상기 제어 장치로부터 수신하는 복수의 명령의 각각에 대응하여 설치되고, 당해 명령에 대응하는 상기 시험 모듈의 동작을 에뮬레이트하는 복수의 하드웨어 에뮬레이트 함수와, 상기 스케쥴부가, 상기 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호를 생성시키기 위해 이용하는 제어 함수를 포함해도 좋다.
본 발명의 제2의 형태에 의하면, 컴퓨터를, 시험 신호를 피시험 디바이스에 각각 공급하는 복수의 시험 모듈을 포함하는 시험 장치를 에뮬레이트하는 시험 에뮬레이트 장치로서 기능시키는 프로그램을 기록한 기록 매체에 있어서, 상기 프로그램은, 상기 컴퓨터를, 서로 다른 사이클 주기에 기초한 시험 신호를 생성하는 상기 복수의 시험 모듈을 에뮬레이트하는 복수의 시험 모듈 에뮬레이트부와, 상기 피시험 디바이스의 시험을 제어하는 제어 장치를 에뮬레이트하는 제어 에뮬레이트부와, 상기 제어 에뮬레이트부로부터의 지시에 기초하여, 상기 복수의 시험 모듈 에뮬레이트부의 각각이, 당해 시험 모듈 에뮬레이트부의 사이클 시간에 대응하는 시험 신호를 의사적으로 생성해야 하는 시험 신호 생성 타이밍을 생성하는 동기 에뮬레이트부와, 상기 동기 에뮬레이트부가 생성한 복수의 상기 시험 신호 생성 타이밍을, 시각 순으로 정렬하고 순차 출력하는 타이밍 정렬부와, 상기 타이밍 정렬부가 출력한 하나의 상기 시험 신호 생성 타이밍에 대응하는 상기 시험 모듈 에뮬레이트부에, 당해 하나의 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호를 의사적으로 생성시키는 스케쥴부로서 기능시키는 기록 매체를 제공한다.
본 발명의 제3의 형태에 의하면, 서로 다른 사이클 주기에 기초한 시험 신호를 피시험 디바이스에 각각 공급하는 복수의 시험 모듈을 포함하는 시험 장치를 에뮬레이트하는 시험 에뮬레이트 장치에서, 하나의 상기 시험 모듈을 에뮬레이트하는 시험 모듈 에뮬레이트 장치에 있어서, 상기 시험 에뮬레이트 장치는, 상기 피시험 디바이스의 시험을 제어하는 제어 장치를 에뮬레이트하는 제어 에뮬레이트부와, 상기 제어 에뮬레이트부로부터의 지시에 기초하여, 상기 복수의 시험 모듈의 각각이, 당해 시험 모듈의 사이클 시간에 대응하는 시험 신호를 의사적으로 생성해야 하는 시험 신호 생성 타이밍을 생성하는 동기 에뮬레이트부와, 상기 동기 에뮬레이트부가 생성한 복수의 상기 시험 신호 생성 타이밍을, 시각 순으로 정렬하고 순차 출력하는 타이밍 정렬부와, 상기 타이밍 정렬부가 출력한 하나의 상기 시험 신호 생성 타이밍에 대응하는 당해 시험 모듈 에뮬레이트 장치에, 당해 하나의 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호를 의사적으로 생성시킬 것을 지시하는 스케쥴부를 포함하고, 상기 시험 모듈 에뮬레이트 장치는, 상기 스케쥴부로부터의 지시에 기초해, 상기 하나의 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호를 의사적으로 생성하는 패턴 발생기 에뮬레이트부를 포함하는 시험 모듈 에뮬레이트 장치를 제공한다.
상기 하나의 시험 신호 생성 타이밍에 대응하는 사이클이 종료하는 사이클 종료 타이밍을 동기 에뮬레이트부에 통지하고, 상기 동기 에뮬레이트부에 상기 사이클 종료 타이밍에 기초해서 당해 시험 모듈 에뮬레이트 장치가 다음의 시험 신호를 의사적으로 생성해야하는 상기 시험 신호 생성 타이밍을 더 생성시키는 시험 모듈 인터페이스 에뮬레이트부를 더 포함해도 좋다.
본 발명의 제4의 형태에 의하면, 서로 다른 사이클 주기에 기초한 시험 신호를 피시험 디바이스에 각각 공급하는 복수의 시험 모듈을 포함하는 시험 장치를 에뮬레이트하는 시험 에뮬레이트 장치에서, 컴퓨터를, 하나의 상기 시험 모듈을 에뮬레이트하는 시험 모듈 에뮬레이트 장치로서 기능시키는 프로그램을 기록한 기록 매체에 있어서, 상기 시험 에뮬레이트 장치는, 상기 피시험 디바이스의 시험을 제어하는 제어 장치를 에뮬레이트하는 제어 에뮬레이트부와, 상기 제어 에뮬레이트부로부터의 지시에 기초하여, 상기 복수의 시험 모듈 에뮬레이트부의 각각이, 당해 시험 모듈의 사이클 시간에 대응하는 시험 신호를 의사적으로 생성해야 하는 시험 신호 생성 타이밍을 생성하는 동기 에뮬레이트부와, 상기 동기 에뮬레이트부가 생성한 복수의 상기 시험 신호 생성 타이밍을, 시각 순으로 정렬하고 순차 출력하는 타이밍 정렬부와, 상기 타이밍 정렬부가 출력한 하나의 상기 시험 신호 생성 타이밍에 대응하는 당해 시험 모듈 에뮬레이트 장치에, 당해 하나의 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호를 의사적으로 생성시킬 것을 지시하는 스케쥴부를 포함하고, 상기 프로그램은, 상기 컴퓨터를, 상기 스케쥴부로부터의 지시에 기초해, 상기 하나의 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호를 의사적으로 생성하는 패턴 발생기 에뮬레이트부로서 기능시키는 기록 매체를 제공한다.
본 발명의 제5의 형태에 의하면, 시험 신호를 피시험 디바이스에 공급하는 시험 모듈을 포함하는 시험 장치에 있어서, 상기 피시험 디바이스의 시험을 제어하는 제어 장치와, 사이클 주기에 기초해 시험 신호를 생성하는 시험 모듈과, 상기 시험 모듈을 에뮬레이트하는 시험 모듈 에뮬레이트부를 포함하고, 상기 제어 장치는, 상기 피시험 디바이스의 실제 시험 또는 의사적 시험의 어느 쪽을 수행할 것인가의 지시를 입력하고, 상기 피시험 디바이스의 실제 시험을 수행하는 지시를 받은 경우에, 상기 피시험 디바이스의 시험을 수행하는 시험 프로그램을 상기 시험 모듈에 공급하고, 상기 시험 모듈에 의해 상기 피시험 디바이스의 시험을 수행시키고, 상기 피시험 디바이스의 의사적 시험을 수행하는 지시를 받은 경우에, 상기 시험 프로그램을 상기 시험 모듈 에뮬레이트부에 공급하고, 상기 시험 모듈 에뮬레이트부에 의해 상기 피시험 디바이스의 시험을 시뮬레이트시키는 시험 장치를 제공한다.
상기 제어 장치는, 당해 제어 장치와 상기 시험 모듈과의 사이의 통신 처리를 수행하는 통신 소프트웨어를 실행하고, 상기 통신 소프트웨어는, 상기 제어 장치와 협동하여, 당해 통신 소프트웨어를 초기화하는 호출에 포함되는 상기 지시에 기초하여, 상기 시험 프로그램을 상기 시험 모듈 및 상기 시험 모듈 에뮬레이트부의 어느 쪽에 공급하는가를 판단해도 좋다.
본 발명의 제6의 형태에 의하면, 시험 신호를 피시험 디바이스에 공급하는 복수의 시험 모듈을 포함하는 시험 장치를 에뮬레이트하는 시험 에뮬레이트 장치에 있어서, 사이클 주기에 기초한 시험 신호를 생성하는 상기 복수의 시험 모듈을 에뮬레이트하는 복수의 시험 모듈 에뮬레이트부와, 상기 피시험 디바이스의 시험을 제어하는 제어 장치를 에뮬레이트하는 제어 에뮬레이트부와, 상기 복수의 시험 모듈 에뮬레이트부의 각각이, 사이클 시간에 대응하는 시험 신호를 의사적으로 생성해야 하는 시험 신호 생성 타이밍을 스케쥴링하는 스케쥴부를 포함하고, 상기 시험 모듈 에뮬레이트부는, 함수 호출에 의하여 상기 시험 신호 생성 타이밍의 통지를 받고, 당해 시험 신호 생성 타이밍에 대응하는 사이클 시간 중에 있어서의 시험 신호의 전압의 변화를, 출력 채널을 에뮬레이트하는 출력 채널 객체의 전압 설정 메소드를 복수회 호출함으로써 출력하고, 당해 사이클 시간에 대응하는 시험 신호의 전압의 변화의 출력을 종료한 후에, 당해 사이클 시간에 대응하는 시험 신호의 전압의 변화의 출력을 종료했다는 것을, 출력 채널 객체의 종료 메소드를 호출함으로써 통지하는 시험 에뮬레이트 장치를 제공한다.
상기 스케쥴부는, 상기 복수의 시험 모듈 에뮬레이트부의 각각으로부터 통지된 상기 종료 메소드에 기초하여, 전체의 상기 시험 모듈 에뮬레이트부가 시험 신호의 전압의 변화의 출력을 종료한 기간을 산출하고, 상기 기간 내에 있어서의 상기 시험 신호를 취득하여, 당해 시험 신호에 기초하여 피시험 디바이스의 상기 기간 내에 있어서의 동작을 시뮬레이트하는 피시험 디바이스 시뮬레이트부를 더 포함해도 좋다.
상기 출력 채널 객체는, 상기 종료 메소드의 호출을 받은 후에, 당해 종료 메소드에 의하여 통지된, 이미 시험 신호의 전압의 변화의 출력을 종료한 기간 내의 전압의 변화를 금지해도 좋다.
또한, 상기의 발명의 개요는, 본 발명의 필요한 특징의 전부를 열거한 것은 아니며, 이들의 특징군의 서브 콤비네이션도 또한 발명이 될 수 있다.
이하, 도면을 참조하여 본 발명의 실시의 형태의 일 예를 설명한다.
도 1은, 본 발명의 실시 형태에 관한 시험 장치 10의 구성을 도시한다. 시험 장치 10은, 시험 신호를 생성하여 DUT 100(Device Under Test: 피시험 디바이스)에 공급하고, DUT 100이 시험 신호에 기초하여 동작한 결과 출력하는 결과 신호가 기대치와 일치하는가 아닌가에 기초하여 DUT 100의 양부를 판단한다. 본 실시 형태에 관한 시험 장치 10은, 개방형 아키텍쳐에 의하여 실현되며, DUT 100에 시험 신호를 공급하는 시험 모듈 170 등으로서, 개방형 아키텍쳐에 기초한 각종의 모듈을 사용할 수 있다. 그리고, 시험 장치 10은, DUT 100의 실제 시험을 에뮬레이트하는 시험 에뮬레이트 장치 190을 포함하며, 시험 에뮬레이트 장치 190에 의하여 실제 시험에 사용되는 시험 모듈 170 등의 변경에 대응하여 적절히 구성을 변경하고, DUT 100의 실제 시험을 적절히 에뮬레이트하는 에뮬레이트 환경을 제공할 수 있다.
시험 장치 10은, 시스템 제어 장치 110과, 통신 네트워크 120과, 사이트 제어 장치 130a~c와, 버스 스위치 140과, 동기 모듈 150a~b와, 동기 접속 모듈 160a~b와, 시험 모듈 170a~b와, 로드 보드 180과, 시험 에뮬레이트 장치 190을 포함하며, DUT 100a~b에 접속된다.
시스템 제어 장치 110은, 시험 장치 10이 DUT 100a~b의 시험에 사용되는 시험 제어 프로그램, 시험 프로그램, 및 시험 데이터 등을 외부의 네트워크 등을 거쳐 수신하고 격납한다. 통신 네트워크 120은, 시스템 제어 장치 110, 사이트 제어 장치 130a~c, 및 시험 에뮬레이트 장치 190을 접속하고, 이들 사이의 통신을 중계한다.
사이트 제어 장치 130a~c는, 본 발명에 관한 제어 장치의 일예이며, DUT 100의 시험을 제어한다. 여기서, 복수의 사이트 제어 장치 130은, 각각 하나의 DUT 100의 시험을 제어한다. 예를 들어, 도 1에 있어서는, 사이트 제어 장치 130a는 DUT 100a의 시험을 제어하고, 사이트 제어 장치 130b는 DUT 100b의 시험을 제어한다. 이 대신에, 복수의 사이트 제어 장치 130은, 각각 복수의 DUT 100의 시험을 제어하여도 좋다.
보다 구체적으로는, 사이트 제어 장치 130은, 통신 네트워크 120을 거쳐 시스템 제어 장치 110으로부터 시험 제어 프로그램을 취득하여 실행한다. 다음으로, 사이트 제어 장치 130은, 시험 제어 프로그램에 기초하여, 당해 DUT 100의 시험에 사용되는 시험 프로그램 및 시험 데이터를 시스템 제어 장치 110으로부터 취득하고, 버스 스위치 140을 거쳐 당해 DUT 100의 시험에 사용되는 동기 모듈 150 및 하나 또는 복수의 시험 모듈 170 등의 모듈에 격납한다. 다음으로, 사이트 제어 장치 130은, 시험 프로그램 및 시험 데이터에 기초한 시험의 개시를 버스 스위치 140을 거쳐 동기 모듈 150에 지시한다. 그리고, 사이트 제어 장치 130은, 시험이 종료되었다는 것을 지시하는 인터럽트 등을 예를 들어 동기 모듈 150으로부터 수신하고, 시험 결과에 기초하여 다음의 시험을 각 모듈에 수행시킨다.
버스 스위치 140은, 복수의 사이트 제어 장치 130의 각각을, 당해 사이트 제어 장치 130이 제어하는 동기 모듈 150 및 하나 또는 복수의 시험 모듈 170에 접속하고, 이들 사이의 통신을 중계한다. 여기서, 예정된 하나의 사이트 제어 장치 130은, 시험 장치 10의 사용자와 시험 제어 프로그램 등의 지시에 기초하여, 복수의 사이트 제어 장치 130의 각각을, 당해 사이트 제어 장치 130이 DUT 100의 시험에 이용되는 동기 모듈 150 및 하나 이상의 시험 모듈 170에 접속시켜야 할 버스 스위치 140을 설정하여도 좋다. 예를 들어, 도 1에 있어서는, 사이트 제어 장치 130a는, 동기 모듈 150a 및 복수의 시험 모듈 170에 접속되도록 설정되어, 이들을 이용하여 DUT 100a의 시험을 수행한다. 또한, 사이트 제어 장치 130b는, 동기 모듈 150b 및 복수의 시험 모듈 170b에 접속되도록 설정되어, 이들을 이용하여 DUT 100b의 시험을 수행한다.
여기서, 사이트 제어 장치 130b가 동기 모듈 150b, 동기 접속 모듈 160b, 및 하나 또는 복수의 시험 모듈 170b를 이용하여 DUT 100b를 시험하기 위한 구성 및 동작은, 사이트 제어 장치 130a가 동기 모듈 150a, 동기 접속 모듈 160a, 및 하나 또는 복수의 시험 모듈 170a를 이용하여 DUT 100a를 시험하기 위한 구성 및 동작과 대체로 동일하므로, 이하 상위점을 제외하고는, 사이트 제어 장치 130a가 DUT 100a를 시험하기 위한 구성 및 동작을 중심으로 설명한다.
동기 모듈 150a는, 사이트 제어 장치 130a의 지시에 기초하여, DUT 100a의 시험에 사용되는 복수의 시험 모듈 17a가 시험 신호를 생성하여야 할 시험 신호 생성 타이밍을 생성한다. 또한, 동기 모듈 150a는, 동기 접속 모듈 160a를 거쳐 하나 또는 복수의 시험 모듈 170a로부터 시험 결과를 수신하고, 시험 결과의 양부에 대응한 시험 프로그램의 시퀀스를 하나 또는 복수의 시험 모듈 170a에 실행시킨다.
동기 접속 모듈 160a는, 동기 모듈 150a가 생성한 시험 신호 생성 타이밍을, 당해 시험 신호 생성 타이밍에 대응하여 동작시켜야 할 시험 모듈170a에 통지하고, 하나 또는 복수의 시험 모듈 170a의 각각을 지정한 타이밍으로 동작시킨다. 또한, 동기 접속 모듈 160a는, 하나 또는 복수의 시험 모듈 170a로부터 시험 결과를 수신하고, 동기 모듈 150a에 송신한다.
복수의 시험 모듈 170a는, DUT 100a가 갖는 복수의 단자의 일부씩에 각각 접속되며, 사이트 제어 장치 130a에 의하여 격납된 시험 프로그램 및 시험 데이터에 기초하여 DUT 100a의 시험을 수행한다. DUT 100a의 시험에 있어서, 시험 모듈 170a는, 시험 프로그램에 의하여 정해진 시퀀스에 기초하여 시험 데이터로부터 시험 신호를 생성하고, 당해 시험 모듈 170a에 접속된 DUT 100a의 단자에 시험 신호를 공급한다. 다음에, 시험 모듈 170a는, DUT 100a가 시험 신호에 기초하여 동작한 결과 출력하는 결과 신호를 취득하고, 기대치와 비교한다. 그리고, 시험 모듈 170a는, 결과 신호와 기대치의 비교 결과를, 시험 결과로서 동기 접속 모듈 160a에 송신한다. 여기서, 복수의 시험 모듈 170a는, 시험 프로그램 및 시험 데이터에 기초하여, 시험 신호의 사이클 동기를 동적으로 변화시키기 때문에, 서로 다른 사이클 동기에 기초하여 시험 신호를 생성한다.
또한, 시험 모듈 170a는, 시험 프로그램의 처리가 완료된 경우와, 시험 프로그램의 실행 중에 이상이 발생한 경우 등에 있어서, 사이트 제어 장치 130a에 대하여 인터럽트를 발생시킨다. 이 인터럽트는, 버스 스위치 140을 거쳐 당해 시험 모듈 170a에 대응하는 사이트 제어 장치 130a에 통지되고, 사이트 제어 장치 130a가 갖는 프로세서에 의하여 인터럽트 처리가 수행된다.
로드 보드 180은, 복수의 DUT 100을 적재하고, 복수의 시험 모듈 170을 대응하는 DUT 100의 단자에 접속한다.
시험 에뮬레이트 장치 190은, 시스템 제어 장치 110에 격납된 시험 제어 프로그램, 시험 프로그램, 및 시험 데이터에 기초하여 시험 장치 10을 에뮬레이트하고, DUT 100의 시뮬레이션 모델을 이용하여 DUT 100의 시험을 의사적으로 수행한다. 본 실시 형태에 있어서, 시험 에뮬레이트 장치 190은, 하나의 사이트 제어 장치 130과, 당해 사이트 제어 장치 130에 의하여 제어되는 동기 모듈 150, 동기 접속 모듈 160, 및 하나 또는 복수의 시험 모듈 170과, 당해 사이트 제어 장치 130에 의한 시험 대상이 된 DUT 100의 동작을 의사적으로 수행한다. 시험 에뮬레이트 장치 190을 사용함으로써, 시험 장치 10의 사용자는, DUT 100, 동기 모듈 150, 동기 접속 모듈 160, 및/또는 시험 모듈 170 등의 실물을 준비하지 않은 단계에서, 시험 제어 프로그램, 시험 프로그램, 및/또는 시험 데이터의 검증을 개시할 수 있다. 또한, 시험 에뮬레이트 장치 190을 복수 준비함으로써, 복수의 사용자의 각각이 보다 고가인 실제 시험 환경을 점유하지 않고, 시험 제어 프로그램, 시험 프로그램, 및/또는 시험 데이터를 개발할 수 있다.
이상에 있어서, 시험 장치 10은, 개방형 아키텍쳐에 의하여 실현되며, 개방형 아키텍쳐 규격을 만족시키는 각종의 모듈을 사용할 수 있다. 그리고, 시험 장치 10은, 동기 모듈 150, 동기 접속 모듈 160, 및 시험 모듈 170 등의 모듈을, 버스 스위치 140이 갖는 임의의 접속 슬롯에 삽입하여 사용할 수 있다. 이때, 시험 장치 10의 사용자 등은, 예를 들어, 사이트 제어 장치 130a를 거쳐 버스 스위치 140의 접속 형태를 변경하고, DUT 100의 시험에 사용되는 복수의 모듈을, 당해 DUT 100의 시험을 제어하는 사이트 제어 장치 130에 접속시킬 수 있다. 이에 의하여, 시험 장치 10의 사용자는, 복수의 DUT 100의 각각의 단자수, 단자의 배치, 단자의 종류, 또는 시험의 종류 등에 따라 적절한 모듈을 선택하고, 시험 장치 10에 실장할 수 있다.
또한, 이상에 대신하여, 동기 접속 모듈 160a 및 동기 접속 모듈 160b는, 시험 장치 10에 사용되는 전체의 시험 모듈 170에 공통하여 설치된 하나의 동기 접속부에 의하여 실현되어도 좋다. 이 경우에 있어서, 시험 장치 10의 사용자 등은, 버스 스위치 140의 접속 형태의 변경과 함께 동기 접속부와 시험 모듈 170의 접속 형태를 변경함으로써, 복수의 DUT 100의 특성에 따라 적절한 모듈을 선택할 수 있다.
도 2는, 본 발명의 실시 형태에 관한 시험 에뮬레이트 장치 190의 기능 구성을 도시한다. 시험 에뮬레이트 장치 190은, 사이트 제어 에뮬레이트부 230과, 버스 스위치 에뮬레이트부 240과, 동기 모듈 에뮬레이트부 250과, 동기 접속 모듈 에뮬레이트부 260과, 하나 또는 복수의 시험 모듈 에뮬레이트부 270과, DUT 접속부 280과, DUT 시뮬레이트부 200과, 스케쥴 제어부 275를 포함한다. 이하, 시험 에뮬레이트 장치 190이, 사이트 제어 장치 130a에 의한 DUT 100a의 시험을 에뮬레이트하는 경우를 예로 들어 설명을 수행한다.
사이트 제어 에뮬레이트부 230은, 도 1에 도시된 사이트 제어 장치 130a를 에뮬레이트한다. 즉, 사이트 제어 에뮬레이트부 230은, 통신 네트워크 120을 거쳐 시스템 제어 장치 110으로부터 시험 제어 프로그램을 취득하여 실행한다. 다음으로, 사이트 제어 에뮬레이트부 230은, 시험 제어 프로그램에 기초하여 DUT 100a의 시험에 사용되는 시험 프로그램 및 시험 데이터를 시스템 제어 장치 100으로부터 취득하고, 버스 스위치 에뮬레이트부 240을 거쳐 동기 모듈 에뮬레이트부 250 및 하나 또는 복수의 시험 모듈 에뮬레이트부 270 등의 모듈 에뮬레이트부에 격납한다.
여기서, 사이트 제어 에뮬레이트부 230은, 사이트 제어 장치 130a가 동기 모듈 150a 및 하나 또는 복수의 시험 모듈 170a에 대하여 발행하는, 당해 모듈 내의 기억 영역에의 독출 억세스, 기입 억세스 등의 명령을 버스 스위치 에뮬레이트부 240에 대하여 의사적으로 발행한다. 사이트 제어 에뮬레이트부 230은, 시험 프로그램 및 시험 데이터의 기입 억세스를 버스 스위치 에뮬레이트부 240에 대하여 의사적으로 발행함으로써, 버스 스위치 에뮬레이트부 240을 거쳐 동기 모듈 에뮬레이트부 250 및 하나 또는 복수의 시험 모듈 에뮬레이트부 270 등에 시험 프로그램 및 시험 데이터를 격납하여도 좋다.
또한, 사이트 제어 에뮬레이트부 230은, 동기 모듈 에뮬레이트부 250 및 시험 모듈 에뮬레이트부 270이 의사적으로 발행한 인터럽트를 버스 스위치 에뮬레이트부 240을 거쳐 수신하고, 사이트 제어 장치 130a의 인터럽트 처리를 의사적으로 실행한다.
버스 스위치 에뮬레이트부 240은, 도 1에 도시된 버스 스위치 140을 에뮬레이트하고, 사이트 제어 에뮬레이트부 230과, 동기 모듈 에뮬레이트부 250 및 하나 또는 복수의 시험 모듈 에뮬레이트부 270의 사이의 통신을 중계한다.
동기 모듈 에뮬레이트부 250은, 도 1에 도시된 동기 모듈 150을 에뮬레이트하고, 사이트 제어 에뮬레이트부 230으로부터의 지시에 기초하여 복수의 시험 모듈 에뮬레이트부 270의 각각이, 당해 시험 모듈 에뮬레이트부 270의 사이클 시간에 대응하는 시험 신호를 의사적으로 생성하여야 할 시험 신호 생성 타이밍을 생성한다. 다음으로, 동기 모듈 에뮬레이트부 250은, 시험 신호를 생성한 당해 시험 모듈 에뮬레이트부 270으로부터 사이클 시간의 종료 타이밍인 사이클 종료 타이밍을 수신한다. 그리고, 동기 모듈 에뮬레이트부 250은, 사이클 종료 타이밍에 기초하여, 당해 시험 모듈 에뮬레이트부 270이 다음에 시험 신호를 생성하여야 할 시험 신호 생성 타이밍, 당해 시험 모듈 에뮬레이트부 270으로부터 시험 결과를 수집하는 시험 결과 수집 타이밍, 당해 시험 모듈 에뮬레이트부 270에 사이클 시간의 처리를 종료시키는 사이클 종료 처리 타이밍, 및 당해 시험 모듈 에뮬레이트부 270으로부터 사이트 제어 에뮬레이트부 230에 대한 인터럽트를 수집하는 인터럽트 수집 타이밍을 생성한다. 여기서, 시험 모듈 에뮬레이트부 270으로부터 사이트 제어 에뮬레이트부 230에 대한 인터럽트는, 복수의 시험 모듈 에뮬레이트부 270의 각각이, 시험 신호 생성 타이밍에 대응하는 사이클 시간에 있어서의 시험 신호의 생성에 있어서 의사적으로 사이트 제어 장치 130a에 대하여 발생시킨 인터럽트이다.
동기 접속 모듈 에뮬레이트부 260은, 도 1에 도시된 동기 접속 모듈 160을 에뮬레이트하고, 동기 모듈 에뮬레이트부 250이 의사적으로 생성한 시험 신호 생성 타이밍, 및 동기 모듈 에뮬레이트부 250이 에뮬레이션을 위하여 생성한 시험 결과 수집 타이밍, 사이클 종료 처리 타이밍, 및 인터럽트 수집 타이밍을 스케쥴 제어부 275에 통지한다. 또한, 동기 접속 모듈 에뮬레이트부 260은, 하나 또는 복수의 시험 모듈 에뮬레이트부 270으로부터 시험 결과를 수신하고, 동기 모듈 에뮬레이트부 250에 송신한다.
시험 모듈 에뮬레이트부 270은, 시험 신호 생성의 지시를 받은 동기 모듈 에뮬레이트부 250으로부터 사이클 개시의 지시를 받아, 사이트 제어 에뮬레이트부 230에 의하여 격납된 시험 프로그램 및 시험 데이터에 기초하여, 당해 시험 신호 생성 타이밍에 대응하는 사이클 시간에 있어서의 시험 신호를 의사적으로 생성한다. 보다 구체적으로는, 시험 모듈 에뮬레이트부 270은, 시험 신호 생성 타이밍에 대응하는 사이클 시간에 있어서의 시험 신호의 생성에 있어서, 당해 사이클 시간 중에 있어서의 시험 신호의 변화 타이밍을 의사적으로 생성한다. 여기서, 시험 모듈 에뮬레이트부 270은, 시험 신호의 변화 타이밍으로서, 당해 시험 모듈 에뮬레이트부 270에 대응하는 시험 모듈 170의 사양에 의하여 정해진 개수의 변화 타이밍을, 하나의 사이클 시간에 대응하여 생성하여도 좋다. 또한, 시험 모듈 에뮬레이트부 270은, DUT 시뮬레이트부 200이 시험 신호에 기초하여 의사적으로 동작한 결과 출력하는 출력 신호를 취득하고, 시험 프로그램 및 시험 데이터에 기초하여 정해진 기대치와 비교한다. 그리고, 시험 모듈 에뮬레이트부 270은, 결과 신호와 기대치의 비교 결과를, 시험 결과로서 동기 접속 모듈 에뮬레이트부 260을 거쳐 동기 모듈 에뮬레이트부 250에 송신한다.
또한, 시험 모듈 에뮬레이트부 270은, 스케쥴부 277로부터 인터럽트 발생의 지시를 받아, 인터럽트 발생의 지시를 받기 전에 최후로 시험 신호를 생성한 사이클 시간중에 있어서 의사적으로 발생시킨 인터럽트를, 버스 스위치 에뮬레이트부 240을 거쳐 사이트 제어 에뮬레이트부 230에 통지한다.
DUT 접속부 280은, 복수의 시험 모듈 에뮬레이트부 270에 의하여 생성된 복수의 변화 타이밍을 취득하고, 복수의 변화 타이밍에 기초하여, 시험 신호를 시각순으로 의사적으로 변화시킨다.
DUT 시뮬레이트부 200은, 예를 들어, Verilog-HDL과 VHDL 등의 하드웨어 기술 언어에 의하여 기술된 DUT 100의 동작을, DUT 접속부 280으로부터 취득한 시험 신호에 기초하여 시뮬레이트한다. 그리고, DUT 시뮬레이트부 200은, DUT 100이 시험 신호에 기초하여 동작한 결과 출력하는 결과 신호를 시뮬레이션에 의하여 생성하고, DUT 접속부 280을 거쳐 시험 모듈 에뮬레이트부 270에 공급한다.
스케쥴 제어부 275는, 동기 모듈 에뮬레이트부 250, 동기 접속 모듈 에뮬레이트부 260, 복수의 시험 모듈 에뮬레이트부 270, 및 DUT 접속부 280에 의한 DUT 100의 의사적 시험에 있어서, 이들 복수의 모듈 에뮬레이트부가 생성하는 각종 타이밍에 기초하여, 각각의 모듈 에뮬레이트부를 동작시키는 스케쥴을 제어한다. 스케쥴 제어부 275는, 타이밍 정렬부 276과, 스케쥴부 277을 포함한다.
타이밍 정렬부 276은, 동기 모듈 에뮬레이트부 250이 생성한 복수의 시험 신호 생성 타이밍, 복수의 인터럽트 수집 타이밍, 복수의 사이클 종료 처리 타이밍, 및 복수의 시험 결과 수집 타이밍과, 하나 또는 복수의 시험 모듈 에뮬레이트부 270에 의하여 생성되고, DUT 접속부 280에 의하여 공급된 복수의 변화 타이밍을, 시각순으로 정렬하여 순차 스케쥴부 277에 출력한다. 스케쥴부 277은, 타이밍 정렬부 276이 순차 출력하는 각각의 타이밍을, 당해 타이밍에 대응하는 모듈 에뮬레이트부와 DUT 접속부 280에 통지하고, 모듈 에뮬레이트부 또는 DUT 접속부 280에 당해 타이밍에 대응하는 동작을 수행시킨다. 이하에, 타이밍 정렬부 276이 출력한 타이밍의 종류에 따른 스케쥴부 277의 동작을 설명한다.
(1) 타이밍 정렬부 276이 시험 신호 생성 타이밍을 출력한 경우
스케쥴부 277은, 당해 시험 신호 타이밍을 동기 모듈 에뮬레이트부 250에 통지하고, 당해 시험 신호 생성 타이밍에 대응하는 시험 모듈 에뮬레이트부 270에 의한 시험 신호의 생성을 동기 모듈 에뮬레이트부 250을 거쳐 지시한다. 이에 의하여, 스케쥴부 277은, 동기 모듈 에뮬레이트부 250을 거쳐, 당해 시험 신호 생성 타이밍에 대응하는 시험 모듈 에뮬레이트부 270에, 당해 시험 신호 생성 타이밍에 대응하는 사이클 시간에 있어서의 시험 신호를 의사적으로 생성시킨다.
(2) 타이밍 정렬부 276이 인터럽트 수집 타이밍을 출력한 경우
스케쥴부 277은, 당해 인터럽트 수집 타이밍에 대응하여 지정된 시험 모듈 에뮬레이트부 270에 인터럽트의 발생을 지시한다. 이에 의하여, 스케쥴부 277은, 당해 시험 모듈 에뮬레이트부 270에, 당해 인터럽트 수집 타이밍의 직전에 시험 신호를 생성한 사이클 시간에 있어서 의사적으로 발생시킨 인터럽트를 버스 스위치 에뮬레이트부 240을 거쳐 사이트 제어 에뮬레이트부 230에 대하여 통지시킨다.
(3) 타이밍 정렬부 276이 사이클 종료 처리 타이밍을 출력한 경우
스케줄부 277은, 당해 사이클 종료 처리 타이밍에 대응하는 시험 모듈 에뮬레이트부 270에, 사이클 종료 타이밍이 도달했다는 것을 통지한다.
(4) 타이밍 정렬부 276이 시험 결과 수집 타이밍을 출력한 경우
스케쥴부 277은, 당해 시험 결과 수집 타이밍에 대응하는 시험 모듈 에뮬레이트부 270에, 시험 결과 수집 타이밍이 도달했다는 것을 통지한다. 이것을 받아서, 당해 시험 모듈 에뮬레이트부 270은, 당해 사이클 시간에 있어서의 결과 신호와 기대치의 비교 결과를 동기 접속 모듈 에뮬레이트부 260을 거쳐 동기 모듈 에뮬레이트부 250에 통지한다.
(5) 타이밍 정렬부 276이 변화 타이밍을 출력한 경우
DUT 접속부 280은, 복수의 시험 모듈 에뮬레이트부 270으로부터 취득한 복수의 변화 타이밍을 타이밍 정렬부 276에 공급한다. 이것을 받아서 타이밍 정렬부 276은, 복수의 변화 타이밍과, 다른 각종 타이밍을 모아 시각순으로 정렬한다.
타이밍 정렬부 276이 변화 타이밍을 출력하면, 스케쥴부 277은, 당해 변화 타이밍에 시험 신호를 의사적으로 변화시켜야 할, DUT 접속부 280에 변화 타이밍이 도달하였다는 것을 통지한다. 이것을 받아서, DUT 접속부 280은, 당해 변화 타이밍에 시험 신호를 의사적으로 변화시킨다.
여기서, 시험 모듈 에뮬레이트부 270은, 결과 신호를 취득하여야 할 타이밍인 결과 신호 취득 타이밍을 스케쥴 제어부 275에 통지하고, 다른 각종 타이밍과 함께 타이밍 정렬부 276에 의하여 시각순으로 정렬시켜도 좋다. 이 경우, 스케쥴부 277은, 타이밍 정렬부 276이 결과 신호 취득 타이밍을 출력한 경우에, DUT 접속부 280으로, 당해 결과 신호 취득 타이밍에 있어서, 당해 결과 신호를 취득하여야 할 시험 모듈 에뮬레이트부 270에 결과 신호를 공급시켜도 좋다.
또한, DUT 접속부 280은, 복수의 시험 모듈 에뮬레이트부 270에 의하여 생성된 복수의 변화 타이밍을 취득하고, 시각순으로 정렬하지 않고 DUT 시뮬레이트부 200에 공급하여도 좋다. 이 경우, DUT 시뮬레이트부 200은, 공급된 복수의 변화 타이밍을 시각순으로 정렬하고, 정렬된 복수의 변화 타이밍에 기초하여 DUT 100의 시뮬레이션을 수행하여도 좋다.
이상에 개시된 시험 에뮬레이트 장치 190에 의하면, 동기 모듈 에뮬레이트부250, 동기 접속 모듈 에뮬레이트부 260, 및 하나 또는 복수의 시험 모듈 에뮬레이트부 270을, 시험 장치 10의 실제 기기에 있어서의 동기 모듈 150, 동기 접속 모듈 160, 및 하나 또는 복수의 시험 모듈 170에 각각 대응하여 설치됨으로써, 이들 모듈 에뮬레이트부를 다른 모듈 에뮬레이트부에 용이하게 치환할 수 있다. 이에 의하여, 예를 들어, 시험 장치 10의 실제 기기에 있어서 하나의 모듈을 다른 모듈로 변경한 경우에, 시험 에뮬레이트 장치 190에 있어서 당해 하나의 모듈에 대응하는 모듈 에뮬레이트부를, 다른 모듈에 대응하는 모듈 에뮬레이트부로 치환하고, 시험 장치 10의 실제 기기와 대체로 동일한 시험 환경을 시험 에뮬레이트 장치 190 상에서 제공할 수 있다.
또한, 이상에 대신하여, 사이트 제어 에뮬레이트부 230, 버스 스위치 에뮬레이트부 240, 동기 모듈 에뮬레이트부 250, 시험 모듈 에뮬레이트부 270, 스케쥴 제어부 275, DUT 접속부 280, 및 DUT 시뮬레이트부 200은, 사이트 제어 장치 130 등의 한 대의 컴퓨터에 의하여 실현되어도 좋고, 복수의 컴퓨터에 의하여 분산 시스템에 의하여 실현되어도 좋다.
도 3은, 본 발명의 실시 형태에 관한 시험 에뮬레이트 장치 19의 하드웨어 구성의 일 예를 도시한다. 본 실시 형태에 관한 시험 에뮬레이트 장치 190은, CPU 300, ROM 310, RAM 320, 통신 인터페이스 330, 하드 디스크 드라이브 340, 플렉시블 디스크 드라이브 350, 및 CD-ROM 드라이브 360을 포함하는 컴퓨터 20에 의하여 실현된다.
CPU 300은, ROM 310 및 RAM 320에 격납된 프로그램에 기초하여 동작하며, 각부의 제어를 수행한다. ROM 310은, 컴퓨터 20의 기동시에 CPU 300이 실행하는 부트 프로그램과, 컴퓨터 20의 하드웨어에 의존하는 프로그램 등을 격납한다. RAM 320은, CPU 300이 실행하는 프로그램 및 CPU 300이사용하는 데이터 등을 격납한다. 통신 인터페이스 330은, 통신 네트워크를 거쳐 다른 장치와 통신한다. 하드 디스크 드라이브 340은, 컴퓨터 20이 사용하는 프로그램 및 데이터를 격납하고, RAM 320을 거쳐 CPU 300에 공급한다. 플렉시블 디스크 드라이브 350은, 플렉시블 디스크 390으로부터 프로그램 또는 데이터를 독출하고, RAM 320에 제공한다. CD-ROM 드라이브 360은, CD-ROM 395로부터 프로그램 또는 데이터를 독출하고, RAM 320에 제공한다.
RAM 320을 거쳐 CPU 300에 제공된 프로그램은, 플렉시블 디스크 390, CD-Rom 395, 또는 IC 카드 등의 기록 매체에 격납되어 이용자에 의하여 제공된다. 프로그램은, 기록 매체로부터 독출되어, RAM 320을 거쳐 컴퓨터 20에 설치(install)되고, 컴퓨터 20에서 실행된다.
컴퓨터 20에 설치되어 실행되며, 컴퓨터 20을 시험 에뮬레이트 장치 190으로서 기능시키는 프로그램 모듈은, DUT 시뮬레이트 모듈과, 사이트 제어 에뮬레이트 모듈과, 버스 스위치 에뮬레이트 모듈과, 동기 모듈 에뮬레이트 모듈과, 동기 접속 모듈 에뮬레이트 모듈과, 시험 모듈 에뮬레이트 모듈과, 스케쥴 제어 모듈과, 타이밍 정렬 모듈과, 스케쥴 모듈과, DUT 접속 모듈을 포함한다. 이들의 프로그램 또는 모듈은, 컴퓨터 20을, DUT 시뮬레이트부 200, 사이트 제어 에뮬레이트부 230, 버스 스위치 에뮬레이트부 240, 동기 모듈 에뮬레이트부 250, 동기 접속 모듈 에뮬레이트부 260, 시험 모듈 에뮬레이트부 270, 스케쥴 제어부 275, 타이밍 정렬부 276, 스케쥴부 277, 및 DUT 접속부 280으로서 각각 기능시킨다.
이상 개시된 프로그램 또는 모듈은, 외부의 기억 매체에 격납되어도 좋다. 기록 매체로서는, 플렉시블 디스크 390, CD-ROM 395 이외에, DVD와 PD 등의 광학 기록 매체, MD 등의 광자기 기록 매체, 테이브 매체, IC 카드 등의 반도체 메모리 등을 사용할 수 있다. 또한, 전용 통신 네트워크와 인터넷에 접속된 서버 시스템에 설치된 하드 디스크 또는 RAM 등의 기억 장치를 기록 매체로서 사용하고, 통신 네트워크를 거쳐 외부의 네트워크로부터 프로그램을 컴퓨터 20에 접속하여도 좋다.
도 4는, 본 발명의 실시 형태에 관한 시험 모듈 에뮬레이트부 270의 기능 구성을 도시한다. 도 4에 있어서, 시험 모듈 에뮬레이트부 270은, 당해 시험 모듈 에뮬레이트부 270에 대응하는 시험 모듈 에뮬레이트 프로그램 또는 시험 모듈 에뮬레이트 모듈을 컴퓨터 20으로 동작시킴으로써 실현된다.
시험 모듈 에뮬레이트부 270은, 시험 모듈 170이 사이트 제어 장치 130으로부터 버스 스위치 140을 거쳐 수신한 복수의 명령의 각각에 대응하여 설치된 복수의 하드웨어 에뮬레이트 함수와, 시험 모듈 에뮬레이트부 270에 각종 타이밍을 통지할 목적으로 호출된 제어 함수를 포함하며, 버스 스위치 에뮬레이트부 240 및 스케쥴 제어부 275로부터 이들의 함수에 대한 호출을 받아 동작한다. 여기서, 제어 함수는, 스케쥴 제어부 275가, 시험 신호 생성 타이밍에 대응하는 사이클 시간에 있어서의 시험 신호를 의사적으로 생성시키기 위하여, 또한 인터럽트 수집 타이밍의 직전에 시험 모듈 에뮬레이트부 270이 시험 신호를 생성한 사이클 시간에 있어서 의사적으로 발생시킨 인터럽트를 사이트 제어 에뮬레이트부 230에 대하여 통지시키기 위하여, 등에 사용된다.
시험 모듈 에뮬레이트부 270은, 시험 모듈 IF 에뮬레이트부 400(시험 모듈 인터페이스 에뮬레이트부)과, 패턴 발생기 에뮬레이트부 430과, 파형정형기 에뮬레이트부 440과, 핀 제어 에뮬레이트부 450과, 파라미터 측정 에뮬레이트부 460을 포함한다.
시험 모듈 IF 에뮬레이트부 400, 버스 스위치 에뮬레이트부 240으로부터 하드웨어 에뮬레이트 함수의 호출을 받은 경우, 및 스케쥴 제어부 275로부터 제어 함수의 호출을 받은 경우에 기동되며, 이들의 함수 호출에 대응하는 시험 모듈 에뮬레이트부 270의 동작을 제어한다. 시험 모듈 IF 에뮬레이트부 400은, 머신 워드 DB 420과, 제어 함수 처리부 410을 포함한다.
머신 워드 DB 420은, 시험 모듈 170에 설치된 기억 영역에 격납된 기억 영역을 에뮬레이트하고, 하드웨어 에뮬레이트 함수의 호출에 의하여 사이트 제어 에뮬레이트부 230으로부터 버스 스위치 에뮬레이트부 240을 거쳐 명령을 의사적으로 받은 경우에, 당해 명령에 대응하여 머신 워드 DB 420내의 기억 영역을 억세스한다.
보다 구체적으로는, 본 실시 형태에 관한 시험 모듈 IF 에뮬레이트부 400은, 독출 억세스와 기입 억세스 등의 복수의 명령에 대응하는 시험 모듈 에뮬레이트부 270의 동작을 각각 에뮬레이트하는 복수의 하드웨어 에뮬레이트 함수를 실장한다. 버스 스위치 에뮬레이트부 240을 거쳐 사이트 제어 에뮬레이트부 230으로부터 독출 억세스를 수취하면, 시험 모듈 IF 에뮬레이트부 400은, 당해 독출 억세스의 대상이 된 기억 영역에 대응하는 머신 워드 DB 420 내의 데이터를 버스 스위치 에뮬레이트부 240을 거쳐 사이트 제어 에뮬레이트부 230에 회신한다. 또한, 기입 억세스를 수취하면, 머신 워드 DB 420은, 당해 기입 억세스의 대상이 된 기억 영역에 대응하는 머신 워드 DB 420 내의 기억 영역에, 기입 대상의 데이터를 격납한다. 예를 들면, 머신 워드 DB 420은, 버스 스위치 에뮬레이트부 240을 거쳐 사이트 제어 에뮬레이트부 230으로부터 시험 프로그램 또는 시험 데이터의 기입 억세스를 수취하면, 당해 기입 억세스에 대응하는 머신 워드 DB 420 내의 기억 영역에 이들의 시험 프로그램 또는 시험 데이터를 격납한다.
제어 함수 처리부 410은, 스케쥴 제어부 275로부터 제어 함수의 호출을 받은 경우에, 당해 제어 함수에 대응하여 패턴 발생기 에뮬레이트부 430, 파형정형기 에뮬레이트부 440, 핀 제어 에뮬레이트부 450, 및 파라미터 측정 에뮬레이트부 460을 동작시키고, 당해 제어 함수의 지시에 대응하는 시험 모듈 170의 동작을 에뮬레이트한다. 보다 구체적으로는, 스케쥴 제어부 275가 제어 함수를 사용하여 시험 신호 생성 타이밍에 대응하는 사이클 시간에 있어서의 시험 신호의 생성을 지시하면, 제어 함수 처리부 410은, 머신 워드 DB 420에 격납된 시험 프로그램 및 시험 데이터 중에서, 당해 사이클 시간 중에 시험 모듈 에뮬레이트부 270이 처리하여야 할 프로그램 부분 및 데이터 부분을 독출하고, 이들의 프로그램 부분 및 데이터 부분에 대응하는 처리를 패턴 발생기 에뮬레이트부 430, 파형정형기 에뮬레이트부 440, 핀 제어 에뮬레이트부 450, 및 파라미터 측정 에뮬레이트부 460에 수행시킨다.
패턴 발생기 에뮬레이트부 430은, 시험 모듈 170이 갖는 패턴 발생기를 에뮬레이트한다. 즉, 패턴 발생기 에뮬레이트부 430은, 머신 워드 DB 420에 격납된 시험 프로그램 및 시험 데이터를, 예를 들어 함수 호출에 의하여 제어 함수 처리부 410으로부터 수신하여 격납한다. 그리고, 어느 사이클 시간에 있어서 시험 신호를 생성하여야 할 것을 지시하는 지시를, 스케쥴 제어부 275로부터 제어 함수 처리부 410을 거쳐 예를 들어 함수 호출에 의하여 수취하고, 당해 사이클 시간 중에 발생하여야 할 시험 신호를 의사적으로 생성한다.
또한, 패턴 발생기 에뮬레이트부 430은, DUT 시뮬레이트부 200이 시험 신호에 기초하여 동작한 결과 의사적으로 출력하는 결과 신호를 DUT 접속부 280 및 파형정형기 에뮬레이트부 440을 거쳐 취득하고, 기대치와 비교를 수행한다.
파형정형기 에뮬레이트부 440은, 시험 모듈 170이 갖는 파형정형기를 에뮬레이트한다. 즉, 파형정형기 에뮬레이트부 440은, 패턴 발생기 에뮬레이트부 430으로부터 시험 신호를 받아, 시험 신호의 파형을 의사적으로 정형하고, DUT 접속부 280으로 출력한다.
핀 제어 에뮬레이트부 450은, 시험 모듈 170이 갖는 핀 제어부를 에뮬레이트한다. 즉, 핀 제어 에뮬레이트부 450은, 시험 프로그램에 기초하여, 파형정형기 에뮬레이트부 440 및/또는 파라미터 측정 에뮬레이트부 460이 시험 신호를 의사적으로 출력하는 각 단자에, 동작 전압 등의 파라미터를 설정한다.
파라미터 측정 에뮬레이트부 460은, 시험 모듈 170이 갖는 파라미터 측정부를 에뮬레이트한다. 즉, 예를 들면, 파라미터 측정 에뮬레이트부 460은, 함수 호출에 의하여 직류 시험(DC 파라메트릭 시험)의 지시를, 스케쥴 제어부 275로부터 제어 함수 처리부 410을 거쳐 수취하고, 직류 시험에 있어서 당해 사이클 시간 중에 발생하여야 할 시험 신호를 의사적으로 생성한다. 또한, 파라미터 측정 에뮬레이트부 460은, DUT 시뮬레이트부 200이 직류 시험에 있어서 시험 신호에 기초하여 동작한 결과 의사적으로 출력하는 출력 신호를 취득한다.
또한, 제어 함수 처리부 410은, 시험 신호 생성 타이밍에 대응하는 사이클 시간에 있어서의 시험 신호를 시험 모듈 에뮬레이트부 270이 생성한 경우, 당해 시험 신호 생성 타이밍에 대응하는 사이클이 종료하는 사이클 종료 타이밍을 동기 모듈 에뮬레이트부 250에 통지한다.
이상에 있어서, 제어 함수 처리부 410은, 시험 신호 생성 타이밍에 대응하는 사이클 시간에 있어서의 시험 신호의 생성에 있어서, 당해 사이클이 종료하는 사이클 종료 타이밍을 스케쥴 제어부 275를 거쳐 동기 모듈 에뮬레이트부 250에 통지하여도 좋다. 이에 의하여, 제어 함수 처리부 410은, 동기 모듈 에뮬레이트부 250에 당해 사이클 종료 타이밍에 기초하여 시험 모듈 에뮬레이트부 270이 다음에 시험 신호를 의사적으로 생성하여야 할 시험 신호 생성 타이밍을 더욱 생성할 수 있다.
또한, 제어 함수 처리부 410은, 스케쥴 제어부 275로부터 인터럽트 발생의 지스를 받은 경우, 예를 들어 함수 호출에 의하여 인터럽트 발생의 지시를 패턴 발생기 에뮬레이트부 430, 파형정형기 에뮬레이트부 440, 및 핀 제어 에뮬레이트부 450에 송신한다. 인터럽트 발생의 지시를 받은 패턴 발생기 에뮬레이트부 430, 파형정형기 에뮬레이트부 440, 및 핀 제어 에뮬레이트부 450은, 시험 모듈 에뮬레이트부 270이 시험 신호를 생성한 각 사이클 시간 중에서, 당해 인터럽트 수집 타이밍의 직전의 사이클 시간에 있어서 의사적으로 발생시킨 인터럽트를 제어 함수 처리부 410에 통지한다. 제어 함수 처리부 410은, 인터럽트 통지를 받으면, 예를 들어 버스 스위치 에뮬레이트부 240이 갖는 인터럽트 통지용 하드웨어 에뮬레이트 함수를 호출함으로써, 버스 스위치 에뮬레이트부 240을 거쳐 사이트 제어 에뮬레이트부 230에 인터럽트를 통지한다.
도 5는, 본 발명의 실시 형태에 관한 클래스 계층 구조 500의 일 예를 도시한다. 본 실시 형태에 있어서, 동기 모듈 에뮬레이트부 250, 동기 접속 모듈 에뮬레이트부 260, 및 시험 모듈 에뮬레이트부 270 등의 모듈 에뮬레이트부를 실현하는 모듈 에뮬레이트 프로그램은, 시험 장치 10의 개방형 아키텍쳐를 의사적으로 실현하기 위하여 정해진 모듈 에뮬레이트 프로그램의 프레임워크인 클래스 함수를 사용하여 작성된다.
시뮬레이션 컴포넌트 클래스 510은, 모듈 에뮬레이트 프로그램이 포함하여야 할 복수의 메소드 함수의 파라미터와 반환값 등의 호출 규칙을, 가상 메소드 함수에 의하여 정의하는 클래스이다. 시뮬레이션 컴포넌트 클래스 510은, 복수의 가상 하드웨어 에뮬레이트 함수 512와, 복수의 가상 제어 함수 514를 포함한다.
여기서, read()는, 사이트 제어 에뮬레이트부 230이 독출 억세스 명령을 의사적으로 발행하는 경우에 호출되는, 독출 억세스에 대응하는 모듈의 동작을 에뮬레이트하는 메소드 함수이다. write()는, 사이트 제어 에뮬레이트부 230이 기입 억세스 명령을 의사적으로 발행하는 경우에 호출되는, 기입 억세스에 대응하는 모듈의 동작을 에뮬레이트하는 메소드 함수이다. setBaseAddress()는, 시험 모듈 10이 갖는 기억 영역의 베이스 어드레스를 설정할 때에 사이트 제어 장치 130이 발행하는 베이스 어드레스 설정 명령을, 사이트 제어 에뮬레이트부 230이 의사적으로 발행하는 경우에 호출되는 메소드 함수이다.
registerEvent()는, 동기 모듈 에뮬레이트부 250으로부터의 통지를 받은 동기 접속 모듈 에뮬레이트부 260, 시험 모듈 에뮬레이트부 270, 및 DUT 접속부 280이, 인터럽트 수집 타이밍, 변화 타이밍, 및 결과 신호 취득 타이밍 등을 타이밍 정렬부 276에 통지하고 등록하는 경우에 호출되는 메소드 함수이다. handleEvent()는, 시험 신호 생성 타이밍, 인터럽트 수집 타이밍, 변화 타이밍, 및 결과 신호 취득 타이밍에 도달하였을 때 등에, 동기 모듈 에뮬레이트부 250, 동기 접속 모듈 에뮬레이트부 260, 시험 모듈 에뮬레이트부 270, 및 DUT 접속부 280에 이들의 타이밍에 대응하는 처리를 수행시키기 위하여 스케쥴 제어부 275에 의하여 호출되는 메소드 함수이다. raiseEvent()는, 동기 모듈 에뮬레이트부 250, 동기 접속 모듈 에뮬레이트부 260, 시험 모듈 에뮬레이트부 270, 및 DUT 접속부 280이, 타이밍에 관계 없이 비동기로 처리하여야 할 이벤트를 스케쥴 제어부 275에 통지하는 경우에 호출되는 메소드 함수이다.
A사 모듈 클래스 250 및 B사 모듈 클래스 530은, 시뮬레이션 컴포넌트 클래스 510으로부터 파생된 클래스이며, 예를 들어 모듈을 제공하는 제조 업자 등에 의하여 제공되는, 당해 제조업자의 모듈이 공통하여 포함하는 공통 기능을 에뮬레이트하는 모듈 에뮬레이트 프로그램이다. A사 모듈 클래스 520 및 B사 모듈 클래스 530은, 각각 복수의 실제 하드웨어 에뮬레이트 함수 522와, 복수의 실제 제어 함수 524를 포함한다. 복수의 실제 하드웨어 에뮬레이트 함수 522 및 복수의 실제 제어 함수 524의 각각은, 복수의 가상 하드웨어 에뮬레이트 함수 512 및 복수의 가상 제어 함수 514의 각각에 대응하여 기술되며, 가상 메소드 함수에 대응하는 실제 메소드 함수(비가상 메소드 함수)의 처리 내용을 기술한 모듈 에뮬레이트 프로그램이다.
A사 모듈 클래스 520 및 B사 모듈 클래스 530은, 추가적으로 파생된 클래스를 가져도 좋다. 예를 들어, 도 5에 있어서, B사 모듈 클래스 530은, 디지털 시험 모듈 클래스 540, 전원 모듈 클래스 560, 및 동기 모듈 클래스 590으로 더욱 파생된다.
디지털 시험 모듈 클래스 540은, DUT 100의 기능 시험을 수행하는 시험 모듈 170을 에뮬레이트하는 시험 모듈 에뮬레이트 프로그램의 클래스이다. 디지털 시험 모듈 클래스 540은, 250MHz로 동작하여 DUT 100의 기능 시험을 수행하는 시험 모듈 170을 에뮬레이트하는 250MHz 디지털 시험 모듈 클래스 550으로 더욱 파생된다. 전원 모듈 클래스 560은, DUT 100에 전원을 공급하는 모듈을 에뮬레이트하는 모듈 에뮬레이트 프로그램의 클래스이다. 전원 모듈 클래스 560은, DUT 100에 고전압 전원을 공급하는 모듈을 에뮬레이트하는 고전압 전원 모듈 클래스 570과, DUT 100에 저전압 전원을 공급하는 모듈을 에뮬레이트하는 저전압 전원 모듈 클래스 580으로 더욱 파생된다. 동기 모듈 클래스 590은, 동기 모듈 150을 에뮬레이트하는 모듈 에뮬레이트 프로그램의 클래스이다.
250MHz 디지털 시험 모듈 클래스 550, 고전압 전원 모듈 클래스 570, 저전압 전원 모듈 클래스 580, 및 동기 모듈 클래스 590의 각각은, B사 모듈 클래스 530에 포함된 handleEvent()를 치환하여(오버라이드하여) 사용되는, 각각의 모듈의 독자 기능을 에뮬레이트하는 실제 메소드 함수 handleEvent()를 포함한다.
시험 에뮬레이트 장치 190이 갖는 동기 모듈 에뮬레이트부 250, 동기 접속 모듈 에뮬레이트부 260, 및 하나 또는 복수의 시험 모듈 에뮬레이트부 270 등은, 클래스 계층 구조 500에 포함되는 모듈 에뮬레이트 프로그램의 클래스의 어느 것인가의 인스턴스로서 실현되어도 좋다.
이상에 개시된 바와 같이, 시험 에뮬레이트 장치 190이 갖는 동기 모듈 에뮬레이트부 250, 동기 접속 모듈 에뮬레이트부 260, 및 시험 모듈 에뮬레이트부 270 등의 모듈 에뮬레이트부는, 예를 들어 클래스 계층 구조 500에 포함된 어느 것인가의 클래스에 대응하는 모듈 에뮬레이트 프로그램에 의하여 실현된다. 시험 에뮬레이트 장치 190의 사용자는, 예를 들어 시험 장치 10의 실제 기기에 실장되어야 할 모듈의 조합에 대응하는 클래스의 조합으로부터 모듈 에뮬레이트 프로그램의 인스턴스를 생성함으로써, 시험 장치 10의 실제 기기와 대체로 동일한 시험 환경을 시험 에뮬레이트 장치 190 상에 구축할 수 있다. 또한, 새로운 모듈에 대응하는 새로운 클래스를 작성하는 경우에 있어서도, 새로운 클래스를 어느 것인가의 클래스의 파생 클래스로서 작성함으로써, 모듈 에뮬레이트 프로그램의 작성 작업량을 감소시킬 수 있다.
도 6은, 본 발명의 실시 형태에 관한 시험 에뮬레이트 장치 190의 시험 신호 생성 처리 흐름을, 하나의 시험 모듈 에뮬레이트부 270에 의하여 시험을 수행하는 경우에 관하여 도시한다.
시험 프로그램 및 시험 데이터가 동기 모듈 에뮬레이트부 250, 동기 접속 모듈 에뮬레이트부 260, 및 하나 또는 복수의 시험 모듈 에뮬레이트부 270에 격납된 상태에서, 사이트 제어 에뮬레이트부 230이 시험의 개시를 동기 모듈 에뮬레이트부 250에 지시하면, 시험 에뮬레이트 장치 190은 이하에 개시된 수순으로 의사적으로 시험을 수행한다.
먼저, 스케쥴 제어부 275(도면중 SCHED) 중의 스케쥴부 277은, 타이밍 정렬부 276이 시험 신호 생성 타이밍을 출력한 경우에, 동기 모듈 에뮬레이트부 256(도면중 SYNC)의 handleEvent() 함수를 호출하고, 시험 신호 생성 타이밍에 도달했다는 것을 통지한다(S600). 이들에 의하여, 스케쥴 제어부 275는, 동기 모듈 에뮬레이트부 250을 거쳐, 시험 신호 생성 타이밍에 대응하는 시험 모듈 에뮬레이트부 270에, 당해 시험 신호 생성 타이밍에 대응하는 사이클 시간에 있어서의 시험 신호를 의사적으로 생성시킨다. 여기서, 스케쥴 제어부 275는, 대응하는 시험 모듈 에뮬레이트부 270의 시험 신호 생성 타이밍에 도달했다는 것을 지시하는 이벤트 식별자를 handleEvent() 함수의 파라미터에 포함함으로써, 시험 신호 생성 타이밍을 동기 모듈 에뮬레이트부 250에 통지하여도 좋다.
다음으로, 동기 모듈 에뮬레이트부 250은, 당해 시험 신호 생성 타이밍에 있어서 시험 신호를 의사적으로 생성하여야 할 시험 모듈 에뮬레이트부 270(도면중의 TM)에 대하여, 사이클 시간의 처리를 개시하고 시험 신호를 생성시키는 지시인 사이클 개시를 통지한다(S605). 여기서, 동기 모듈 에뮬레이트부 250은, 사이클 개시를 지시하는 이벤트 식별자를 raiseEvent() 함수의 파라미터에 포함하여 스케쥴 제어부 275를 호출함으로써, 타이밍 정렬부 276이 시각순으로 정렬한 타이밍과 비동기로 스케쥴 제어부 275를 거쳐 시험 모듈 에뮬레이트부 270에 사이클 개시를 통지하여도 좋다.
다음으로, 시험 모듈 에뮬레이트부 270은, 사이클 개시의 통지를 받아, 대응하는 사이클 시간에 있어서의 시험 신호를 의사적으로 발생시킨다(S610). 즉, S600에 있어서 스케쥴 제어부 275가 시험 신호 생성 타이밍에 대응하는 사이클 시간에 있어서의 시험 신호를 의사적으로 발생시켜야 할 동기 모듈 에뮬레이트부 250에 시험 신호 생성 타이밍을 통지하고, 이 통지를 받은 동기 모듈 에뮬레이트부 250이 스케쥴 제어부 275를 거쳐 시험 모듈 에뮬레이트부 270에 사이클 개시를 통지함으로써, 시험 모듈 에뮬레이트부 270은, 당해 사이클 시간에 있어서의 시험 신호를 의사적으로 발생시킨다. 여기서, 시험 모듈 에뮬레이트부 270은, 당해 사이클 시간에 있어서의 시험 신호의 생성에 있어서, 당해 사이클 시간중에 있어서의 시험 신호의 변화 타이밍을 의사적으로 생성한다.
다음으로, DUT 접속부 280(도면중의 LB)는, 시험 모듈 에뮬레이트부 270으로부터 시험 신호의 변화 타이밍을 받아서, 변화 타이밍을 타이밍 정렬부 276에 통지하고 등록한다(S615).
다음으로, 시험 모듈 에뮬레이트부 270은, 당해 사이클을 종료한 타이밍을 동기 모듈 에뮬레이트부 250에 통지한다(S620). 여기서, 시험 모듈 에뮬레이트부 270은, 시험 프로그램 및 시험 데이터에 의한 지정에 기초하여, 각 사이클 시간을 동적으로 변경하면서 패턴 발생기 에뮬레이트부 430에 의하여 시험 신호를 생성한다. 이 때문에, 시험 모듈 에뮬레이트부 270에 있어서의 시험 모듈 IF 에뮬레이트부 400 내의 제어 함수 처리부 410은, 각 사이클의 종료 타이밍을 패턴 발생기 에뮬레이트부 430으로부터 취득하여 동기 모듈 에뮬레이트부 250에 통지하고, 동기 모듈 에뮬레이트부 250이 다음의 시험 신호 생성 타이밍을 올바르게 생성할 수 있도록 한다.
다음으로, 동기 모듈 에뮬레이트부 250은, S620에 있어서 시험 모듈 에뮬레이트부 270으로부터 통지된 사이클 종료 타이밍에 기초하여, 시험 모듈 에뮬레이트부 270이 다음의 사이클 시간에 대응하는 시험 신호를 의사적으로 생성하여야 할 시험 신호 생성 타이밍을 생성하고, 타이밍 정렬부 276에 통지하여 등록한다(S625). 또한, 동기 모듈 에뮬레이트부 250은, 시험 모듈 에뮬레이트부 270으로부터 시험 결과를 수집하는 시험 결과 수집 타이밍, 시험 모듈 에뮬레이트부 270의 당해 사이클 시간을 종료시킨 사이클 종료 처리 타이밍, 당해 사이클 시간에 있어서의 시험 신호의 생성에 있어서 시험 모듈 에뮬레이트부 270이 의사적으로 발생시킨 인터럽트를 수집하는 인터럽트 수집 타이밍을 더욱 생성하고, 타이밍 정렬부 276에 통지하여 등록한다(S625). 여기서, 동기 모듈 에뮬레이트부 250은, 스케쥴 제어부 275의 registerEvent() 함수를 호출함으로써, 이들의 타이밍을 타이밍 정렬부 276에 등록하여도 좋다.
또한, 동기 모듈 에뮬레이트부 250은, 시험 모듈 에뮬레이트부 270으로부터 수신한 사이클 종료 타이밍과 대체로 동일한 타이밍을, 당해 시험 모듈 에뮬레이트부 270에 있어서의 다음의 시험 신호 생성 타이밍, 시험 결과 수집 타이밍, 사이클 종료 처리 타이밍, 및 인터럽트 수집 타이밍으로서 생성하여도 좋다.
다음으로, 타이밍 정렬부 276이 S615에 있어서 등록된 변화 타이밍을 출력하면, 스케쥴부 277은 당해 변화 타이밍에 시험 신호를 의사적으로 변화시켜야 할, DUT 접속부 280에 변화 타이밍이 도달한 것을 통지한다(S630).
다음으로, 스케쥴부 277로부터 변화 타이밍의 통지를 받으면, DUT 접속부 280은, 당해 변화 타이밍에 시험 신호를 의사적으로 변화시킴으로써 시험 신호를 생성하고, DUT 시뮬레이트부 200에 공급한다(S635). DUT 시뮬레이트부 200은, DUT 접속부 280으로부터 취득한 시험 신호에 기초하여 DUT 100의 동작을 시뮬레이트한다. 그리고, DUT 시뮬레이트부 200은, DUT 100이 시험 신호에 기초하여 동작한 결과 출력하는 결과 신호를 의사적으로 생성하고, DUT 접속부 280을 거쳐 시험 모듈 에뮬레이트부 270에 공급한다. 시험 모듈 에뮬레이트부 270은, 결과 신호와 기대치를 비교하고, 비교 결과를 얻는다.
다음으로, 타이밍 정렬부 276이 S625에 있어서 등록된 시험 결과 수집 타이밍을 출력하면, 스케쥴부 277은, DUT 시뮬레이트부 200으로부터 시험 모듈 에뮬레이트부 270에 공급된 결과 신호에 기초하여 결과의 양부를 수집하여야 할, 시험 모듈 에뮬레이트부 270에 시험 결과 수집 타이밍이 도달하였음을 통지한다(S640). 시험 결과 수집 타이밍의 통지를 받으면, 시험 모듈 에뮬레이트부 270은, 당해 사이클 시간에 있어서의 결과 신호와 기대치의 비교 결과를, 동기 접속 모듈 에뮬레이트부 260을 거쳐 동기 모듈 에뮬레이트부 250에 통지한다. 동기 모듈 에뮬레이트부 250은, 각 시험 모듈 에뮬레이트부 270으로부터 수집한 비교 결과에 기초하여 시험 결과의 양부(통과 또는 실패)를 판정하고, 시험 결과의 양부를 각 시험 모듈 에뮬레이트부 270에 송신함으로써 통지한다(S645). 복수의 시험 모듈 에뮬레이트부 270에 공급된 시험 프로그램 및 시험 데이터는, 이 시험 결과의 양부에 기초하여, 당해 사이클 시간 이후에 수행될 시험의 시퀀스를 변경하도록 기술되어도 좋다.
다음으로, 타이밍 정렬부 276이 S625에 있어서 등록된 사이클 종료 처리 타이밍을 출력하면, 스케쥴부 277은, 시험 모듈 에뮬레이트부 270에 사이클을 종료시키는 타이밍이 도달하였음을 통지한다(S650).
다음으로, 타이밍 정렬부 276이 S625에 있어서 등록된 인터럽트 수집 타이밍을 출력하면, 스케쥴부 277은, 시험 모듈 에뮬레이트부 270에 인터럽트 수집 타이밍이 도달하였음을 통지한다(S655). 인터럽트 수집 타이밍의 통지를 받으면, 시험 모듈 에뮬레이트부 270은, 당해 인터럽트 수집 타이밍의 직전에 시험 모듈 에뮬레이트부 270이 시험 신호를 생성한 사이클 시간에 있어서 의사적으로 발생시킨 인터럽트를 버스 스위치 에뮬레이트부 240을 거쳐 사이트 제어 에뮬레이트부 230에 대하여 의사적으로 통지한다.
시험 에뮬레이트 장치 190은, 상기의 S600으로부터 S655에서 개시된 처리를 시험이 종료될 때까지 반복한다(S660).
또한, 복수의 시험 모듈 에뮬레이트부 270에 의하여 시험을 수행하는 경우, 스케쥴 제어부 275는, 이들 복수의 시험 모듈 에뮬레이트부 270의 각각이 동작하여야 할 타이밍을 시각순으로 정렬하고, 스케쥴한다. 이 때문에, 복수의 시험 모듈 에뮬레이트부 270에 있어서의 S600, S630, S640, S650, 및 S655는, 시각순으로 정렬된 순서로 실행된다.
도 7은, 본 발명의 실시 형태에 관한 시험 에뮬레이트 장치 190에 의하여 의사적으로 생성된 시험 신호의 일 예를 도시한다. 본 도면에 있어서, 시험 에뮬레이트 장치 190은, 시험 모듈 에뮬레이트부 270으로서, 시험 모듈 A를 에뮬레이트하는 시험 모듈 에뮬레이트부 270a와, 시험 모듈 B를 에뮬레이트하는 시험 모듈 에뮬레이트부 270b를 포함한다.
먼저, 시각 t1 이전에 있어서, 타이밍 정렬부 276은, 시험 모듈 에뮬레이트부 270a의 시험 신호 생성 타이밍 t1과, 시험 모듈 에뮬레이트부 270b의 시험 신호 생성 타이밍 t2를 등록시켜 놓고, 이들을 시각순으로 정렬하여 출력한 결과, 먼저 시험 신호 생성 타이밍 t1을 출력한다. 이것을 받아서, 스케쥴부 277은, 시각 t1으로 진행함과 함께, 시험 신호 생성 타이밍 t1에 도달한 것을 동기 모듈 에뮬레이트부 250에 통지한다.
시험 신호 생성 타이밍 t1의 통지를 받으면, 동기 모듈 에뮬레이트부 250은, 동기 접속 모듈 에뮬레이트부 260 및 시험 모듈 에뮬레이트부 270을 거쳐, 시험 신호 생성 타이밍 t1에 대응하는 시험 모듈 에뮬레이트부 270a에 사이클 개시를 통지한다. 이것을 받아서, 시험 모듈 에뮬레이트부 270a는, 도면 중의 사이클 1로 도시된 사이클 시간에 있어서의 시험 신호를 의사적으로 발생시킨다. 여기서, 시험 모듈 에뮬레이트부 270a는, 당해 사이클 시간 중의 변화 타이밍 t4에 있어서 시험 신호가 H 레벨로 변화하는 것을, DUT 접속부 280에 통지한다. 이것을 받아서, DUT 접속부 280은, 변화 타이밍 t4를 타이밍 정렬부 276에 등록한다.
다음으로, 시험 모듈 에뮬레이트부 270a는, 사이클 1에 있어서의 시험 신호의 생성을 마치면, 사이클 1의 사이클 종료 타이밍 t6를 동기 모듈 에뮬레이트부 250에 통지한다. 이것을 받아서, 동기 모듈 에뮬레이트부 250은, 사이클 종료 타이밍 t6에 기초하여, 다음의 시험 신호 생성 타이밍 t6, 시험 결과 수집 타이밍 t6-Δ, 사이클 종료 처리 타이밍 t6-Δ, 및 인터럽트 수집 타이밍 t6-Δ를 생성하고, 타이밍 정렬부 276에 등록한다. 여기서, t6-Δ는, 다음의 시험 신호 생성 타이밍 t6의 미소 시간 이전을 나타낸다.
다음으로, 타이밍 정렬부 276은, 등록된 타이밍을 시각순으로 정렬하고, 시험 신호 생성 타이밍 t2를 출력한다. 이것을 받아서, 스케쥴부 277은, 시각 t2로 진행함과 함께, 시험 신호 생성 타이밍 t2에 도달하였음을 동기 모듈 에뮬레이트부 250에 통지한다.
시험 신호 생성 타이밍 t2의 통지를 받으면, 동기 모듈 에뮬레이트부 250은, 시험 신호 생성 타이밍 t2에 대응하는 시험 모듈 에뮬레이트부 270b에, 스케쥴 제어부 275를 거쳐 사이클 개시를 통지한다. 이것을 받아서, 시험 모듈 에뮬레이트부 270b는, 시험 모듈 에뮬레이트부 270b의 사이클 1에 있어서의 시험 신호를 의사적으로 발생시킨다. 이 결과, 시험 모듈 에뮬레이트부 270b는, 시험 신호의 변화 타이밍 t3 및 t5를 생성하고, DUT 접속부 280은 이들의 변화 타이밍을 타이밍 정렬부 276에 등록한다.
다음으로, 시험 모듈 에뮬레이트부 270b는, 사이클 1에 있어서의 시험 신호의 생성을 종료하면, 사이클 1의 사이클 종료 타이밍 t7을 동기 모듈 에뮬레이트부 250에 통지한다. 이것을 받아서, 동기 모듈 에뮬레이트부 250은, 사이클 종료 타이밍 t7에 기초하여, 다음의 시험 신호 생성 타이밍 t7, 시험 결과 수집 타이밍 t7-Δ, 사이클 종료 처리 타이밍 t7-Δ, 및 인터럽트 수집 타이밍 t7-Δ을 생성하고, 타이밍 정렬부 276에 등록한다.
다음으로, 타이밍 정렬부 276은, 등록된 타이밍을 시각순으로 정렬하고, 변화 타이밍 t3, t4, t5를 순차적으로 출력한다. 이들 변화 타이밍의 각각을 받아서, 스케쥴부 277은, 변화 타이밍을 DUT 접속부 280에 통지한다. 이 결과, DUT 접속부 280은, 당해 변화 타이밍에 시험 신호를 의사적으로 변화시키고, DUT 시뮬레이트부 200에 공급한다.
다음으로, 타이밍 정렬부 276은, 시험 결과 수집 타이밍 t6-Δ를 출력한다. 이것을 받아서, 스케쥴부 277은, 시각을 t6-Δ로 진행함과 함께, 시험 모듈 에뮬레이트부 270a에 시험 결과 수집 타이밍 t6-Δ를 통지한다. 이 결과, 시험 모듈 에뮬레이트부 270a 및 동기 모듈 에뮬레이트부 250의 사이에 시험 결과의 수집 및 송신을 수행한다.
다음으로, 타이밍 정렬부 276은, 사이클 종료 처리 타이밍 t6-Δ을 출력한다. 이것을 받아서, 스케쥴부 277은, 시험 모듈 에뮬레이트부 270a에 사이클 1의 종료를 통지한다.
다음으로, 타이밍 정렬부 276은, 인터럽트 수집 타이밍 t6-Δ을 출력한다. 이것을 받아서, 스케쥴부 277은, 시험 모듈 에뮬레이트부 270a에 인터럽트 수집 타이밍 t6-Δ을 통지한다. 이 결과, 시험 모듈 에뮬레이트부 270a는, 사이클 1에 있어서 의사적으로 발생시킨 인터럽트를 사이트 제어 에뮬레이트부 230에 대하여 통지한다.
다음으로, 타이밍 정렬부 276은, 시험 신호 생성 타이밍 t6를 출력한다. 이것을 받아서, 스케쥴부 277은, 시각 t6로 진행함과 함께, 시험 신호 생성 타이밍 t6에 도달하였음을 동기 모듈 에뮬레이트부 250에 통지한다. 이후 시험 에뮬레이트 장치 190은, 시각 t1과 마찬가지로, 변화 타이밍 t8, 결과 신호를 취득하여야 할 타이밍을 지시하는 결과 신호 취득 타이밍 t11, 다음의 시험 신호 생성 타이밍 t12, 시험 결과 수집 타이밍 t12-Δ, 사이클 종료 처리 타이밍 t12-Δ, 및 인터럽트 수집 타이밍 t12의 생성 및 타이밍 정렬부 276에의 등록을 수행한다.
다음으로, 타이밍 정렬부 276은, 등록된 타이밍을 시각순으로 정렬하고, 시험 신호 생성 타이밍 t7을 출력한다. 이것을 받아서, 스케쥴부 277은, 시각을 t7으로 진행함과 함께, 시험 신호 생성 타이밍 t7에 도달하였음을 동기 모듈 에뮬레이트부 250에 통지한다. 이후 시험 에뮬레이트 장치 190은, 시각 t2와 마찬가지로, 변화 타이밍 t9 및 t10, 다음의 시험 신호 생성 타이밍 t13, 시험 결과 수집 타이밍 t13-Δ, 사이클 종료 처리 타이밍 t13-Δ, 및 인터럽트 수집 타이밍 t13의 생성 및 타이밍 정렬부 276에의 등록을 수행한다.
이상에서 개시된 바와 같이, 본 실시 형태에 관한 시험 에뮬레이트 장치 190에 의하면, 시험 신호 생성 타이밍, 시험 신호의 변화 타이밍, 시험 결과 수집 타이밍, 결과 신호 취득 타이밍, 및 인터럽트 수집 타이밍 등의 각종 타이밍을 스케쥴 제어부 275에 의하여 시각순으로 정렬하여 스케쥴링한다. 이 때문에, 시험 에뮬레이트 장치 190은, 서로 다른 사이클 주기에 기초하여 복수의 시험 모듈 170이 실장된 경우에 있어서의 시험 장치 10의 동작을 적절히 에뮬레이트할 수 있다.
또한, 본 실시 형태에 있어서, 동기 접속 모듈 에뮬레이트부 260은, 시험 모듈 170으로부터 사이클 종료 타이밍을 받은 경우에, 시험 결과 수집 타이밍, 사이클 종료 처리 타이밍, 및 인터럽트 수집 타이밍을 타이밍 정렬부 276에 등록하지만, 이에 대신하여, 이하의 방법을 사용하여도 좋다.
도 6의 S625에 있어서, 동기 모듈 에뮬레이트부 250은, 사이클 종료 타이밍에 기초하여, 시험 모듈 에뮬레이트부 270이 다음의 사이클 시간에 대응하는 시험 신호를 의사적으로 생성하여야 할 시험 신호 생성 타이밍을 생성하고, 타이밍 정렬부 276에 통지하여 등록한다. 한편, 이 시점에 있어서, 동기 모듈 에뮬레이트부 250은, 시험 결과 수집 타이밍, 사이클 종료 처리 타이밍, 및 인터럽트 수집 타이밍을 생성하지 않고, 타이밍 정렬부 276에 대하여 등록하지 않는다.
이 결과, 시험 에뮬레이트 장치 190은, 도 6의 S630 및 S635의 처리 후에, S640, S650 및 S655를 수행하지 않고서, S600으로 처리를 진행한다. 그리고, S600에 있어서 다음의 사이클 시간에 대응하는 시험 신호 생성 타이밍을 타이밍 정렬부 276이 출력한 경우에, 스케쥴부 277은, 당해 시험 신호 생성 타이밍에 도달한 것을 동기 모듈 에뮬레이트부 250에 통지한다. 이것을 받아서, 동기 모듈 에뮬레이트부 250은, 다음의 사이클 시간의 시험 신호 생성 전에, 시험 결과의 수집, 사이클 종료의 통지, 및 인터럽트의 수집을 당해 시험 신호 생성 타이밍에 대응하는 시험 모듈 에뮬레이트부 270에 지시한다.
이상의 처리에 의하여 스케쥴 제어부 275는, 다음의 사이클 시간의 시험 신호 생성 전에, S640, S645, S650 및 S655에서 개시된 처리를 동기 모듈 에뮬레이트부 250, 동기 접속 모듈 에뮬레이트부 260, 및 시험 모듈 에뮬레이트부 270 등에 수행시킨다. 보다 구체적으로는, 스케쥴 제어부 275는, 당해 시험 신호 생성 타이밍의 직전의 사이클 시간에 있어서의 시험 신호의 생성에 있어서, 시험 모듈 에뮬레이트부 270에 공급된 결과 신호에 기초하여 시험 결과의 양부를 동기 모듈 에뮬레이트부 250 및 동기 접속 모듈 에뮬레이트부 260에 의하여 수집 및 송신시키고, 당해 시험 모듈 에뮬레이트부 270이 의사적으로 발생시킨 인터럽트를 사이트 제어 에뮬레이트부 230에 대하여 통지시킨다.
이상 발명의 실시의 형태를 설명하였으나, 본 출원에 관한 발명의 기술적 범위는 상기의 실시 형태에 한정되는 것은 아니다. 상기 실시의 형태에 여러 가지의 변경을 가하여, 청구의 범위에 기재된 발명을 실시할 수 있다. 그러하 발명이 본 출원에 관한 발명의 기술적 범위에 속한다는 것도 또한 청구의 범위의 기재로부터 명백하다.
예를 들어, 이상에 개시된 시험 장치 10은, 동기 모듈 150, 동기 접속 모듈 160, 및 시험 모듈 170 등에 의한 DUT 100의 실제 시험과, 동기 모듈 에뮬레이트부 250, 동기 접속 모듈 에뮬레이트부 260, 시험 모듈 에뮬레이트부 270, 및 DUT 시뮬레이트부 200 등에 의한 DUT 100의 의사적 시험을, 동일한 시험 제어 프로그램 및/또는 시험 프로그램에 의하여 실행 가능한 시험 장치 10을 사용자에게 제공함과 함께, 사용자에 의하여 실제 시험 및 의사적 시험을 변경 가능하도록 하여도 좋다.
즉, 사이트 제어 장치 130은, DUT 100의 실제 시험 또는 의사적 시험의 어느 것인가를 수행할 것인가의 지시를, 예를 들어, 시험 개시 명령의 옵션 등에 의하여 입력한다. 그리고, 시스템 제어 장치 110 또는 사이트 제어 장치 130은, DUT 100의 실제 시험을 수행하는 지시를 받은 경우에, DUT 100의 시험을 수행하는 시험 프로그램을 버스 스위치 140을 거쳐 하나 또는 복수의 시험 모듈 170에 공급하여, 이들의 시험 모듈 170에 의하여 DUT 100의 시험을 수행시킨다. 한편, 사이트 제어 장치 130은, DUT 100의 의사적 시험을 수행하는 지시를 받은 경우에, 시험 프로그램을 시험 에뮬레이트 장치 190 또는 사이트 제어 장치 130 등에 소프트웨어에 의하여 실현된 시험 모듈 에뮬레이트부 270에 공급하여, 시험 모듈 에뮬레이트부 270 등에 의하여 DUT 100의 시험을 시뮬레이트시킨다.
이상에 있어서, 사이트 제어 장치 130은, 당해 제어 장치와 시험 모듈 170과의 사이의 통신 처리를 수행하는 통신 소프트웨어(통신 라이브러리)를 실행시키고, 당해 통신 소프트웨어를 통하여 실제 시험 환경 및 의사적 시험 환경을 억세스 가능하게 하여도 좋다. 이 경우, 사이트 제어 장치 130 상에서 실행되는 시험 제어 프로그램은, 당해 통신 소프트웨어에 의하여 제공되는 동일한 억세스 함수(read/write 함수 등)을 사용하여, 동기 모듈 150, 동기 접속 모듈 160, 및 시험 모듈 170 등을 억세스하여 실제 시험을 수행하고, 또한 동기 모듈 에뮬레이트부 250, 동기 접속 모듈 에뮬레이트부 260, 및 시험 모듈 에뮬레이트부 270 등을 억세스하여 의사적 시험을 수행할 수 있다.
여기서, 상기의 통신 소프트웨어는, 사이트 제어 장치 130과 협동하여, 당해 통신 소프트웨어를 초기화하는 호출에 포함되는, 실제 시험 환경 및 의사적 시험 환경을 선택하는 지시에 기초하여, 시험 프로그램을 시험 모듈 170 등 및 시험 모듈 에뮬레이트부 270 등의 어느 것인가에 공급하는가를 판단하여도 좋다. 이러한 실장의 일 예를, 보충설명 C.2.4.3에 개시한다.
또한, 예를 들어, 이상에 개시된 시험 모듈 에뮬레이트부 270은, 다음에 도시된 구성을 채택하여도 좋다. 먼저, 각 시험 모듈 에뮬레이트부 270은, 스케쥴 제어부 275 내의 스케쥴부 277에 의하여 스케쥴링된 시험 신호 생성 타이밍의 통지를, 함수 호출에 의하여 받는다. 그리고, 각 시험 모듈 에뮬레이트부 270은, 당해 시험 신호 생성 타이밍에 대응하는 사이클 시간 중에 있어서의 시험 신호의 전압의 변화를, 출력 채널을 에뮬레이트하는 출력 채널 객체의 전압 설정 메소드(set 메소드)를 복수회 호출함으로써 출력한다. 그리고, 시험 모듈 에뮬레이트부 270은, 당해 사이클 시간에 대응하는 시험 신호의 전압의 변화의 출력을 종료한 후에, 당해 사이클 시간에 대응하는 시험 신호의 전압의 변화의 출력을 종료했다는 것을, 출력 채널 객체의 종료 메소드(end 메소드)를 출력함으로써 스케쥴부 277 등에 통지한다. 이러한 실장의 일 예를 보충 설명 B.3.3 등에서 개시한다.
그리고, 스케쥴부 277은, 복수의 시험 모듈 에뮬레이트부 270의 각각으로부터 통지된 종료 메소드에 기초하여, 전체의 시험 모듈 에뮬레이트부 270이 시험 신호의 전압의 변화의 출력이 종료된 기간을 산출하고, 이 기간 내에 있어서의 DUT 100의 동작의 시뮬레이션을 DUT 시뮬레이트부 200에 요구한다. 이것을 받아서, DUT 접속부 280은, 이 기간내에 있어서의 시험 신호를 취득하여, 당해 시험 신호에 기초하여 피시험 디바이스의 이 기간내에 있어서의 동작을 시뮬레이트한다.
이상에 있어서, 출력 채널 객체는, 종료 메소드의 호출을 받은 후에, 당해 종료 메소드에 의하여 통지된, 이미 시험 신호의 전압의 변화의 출력을 종료한 기간내의 전압의 변화를 금지한다. 이에 의하여, 이미 시뮬레이션을 종료한 기간의 시뮬레이션 결과가 부정합(不整合)으로 되는 것을 방지할 수 있다. 이러한 실장의 일 예를 보충 설명 B.3.4 등에서 개시한다.
이하에, 본 실시 형테에 관한 시험 장치 10 및 시험 에뮬레이트 장치 190을 실현하기 위한 각종 구체예, 사양예를 보충 설명한다.
(보충 설명 A) 소프트웨어 아키텍쳐의 구체예
도 8은, 본 발명의 일 실시 형태에 의한 소프트웨어 아키텍쳐 2200을 도시하고 있다. 소프트웨어 아키텍쳐 2200은, 관련된 하드웨어 시스템의 요소 110과, 130과, 150, 160 및 170에 대응하여, 시스템 컨트롤러 2200과, 적어도 하나의 사이트 컨트롤러 2240과, 적어도 하나의 모듈 2260을 위한 요소를 포함하고 있는 분산 운영 체계를 나타내고 있다. 모듈 2260에 추가하여, 아키텍쳐 2200은, 소프트웨어에서의 모듈 에뮬레이션을 위한 대응하는 SW(소프트웨어) 모듈 에뮬레이션 2280을 포함하고 있다.
예시적인 선택으로서, 이 플랫폼용의 개발 환경은 마이크로 소프트의 윈도우즈에 기초하고 있어도 좋다. 이 아키텍쳐의 사용은, 프로그램 및 지원의 이식성에 있어서 부차적인 이점(예를 들어 필드 서비스 엔지니어는 고도의 진단을 수행하기 위한 테스터 운영 체계를 동작시키는 랩탑 컴퓨터를 접속할 수 있을 것이다)를 갖는다. 그러나, 대규모의 계산 집약형 동작(테스트 패턴의 컴파일 등)에 있어서는, 관련된 소프트웨어는, 독립하여 동작하여 분산된 플랫폼을 횡단하여 작업 스케쥴링을 가능하게 할 수 있는 독립된 구성 요소로 될 수 있다. 따라서, 일괄 작업에 관련된 소프트웨어는, 복수의 플랫폼 타입 위에서 동작할 수 있다.
예시적인 선택으로서, ANSI/ISO 표준의 C++을 소프트웨어용 네이티브 언어로 할 수 있다. 당연한 것이지만, 제3자가 자신의 선택과 다른 언어를 시스템에 모아둘 수 있는, (명목상의 C++ 인터페이스상의 레이어를 제공하기 위한) 사용 가능한 복수의 선택 사항이 있다.
도 8은, 명목상의 소스에 의한 조직화(또는 서브시스템으로서의 집합적인 전개)에 따라, 테스터 운영 체계 인터페이스 2290, 사용자 컴포넌트 2292(예를 들어, 테스트 목적을 위하여 사용자에 의하여 공급된다), 시스템 컴포넌트 2294(예를 들어, 기본적인 접속성 및 통신을 위한 소프트웨어 인프라로서 제공된다), 모듈 개발 컴포넌트 2296(예를 들어, 모듈 개발자에 의하여 제공된다), 및 외부 컴포넌트 2298(예를 들어, 모듈 개발자 이외의 외부 소스에 의하여 제공된다)를 포함하는 요소를 음영으로 도시하고 있다.
소스 기반의 구성의 관점으로부터 테스터 운영 체계(TOS) 인터페이스 2290은, 시스템 컨트롤러 사이트 컨트롤러 인터페이스 2222, 프레임워크 클래스 2224, 사이트 컨트롤러 모듈 인터페이스 2245, 프레임워크 클래스 2246, 소정의 모듈 레벨 인터페이스 2247, 백플레인 통신 라이브러리 2249, 섀시 슬롯 IF(인터페이스) 2262, 로드 보드 하드웨어 IF 2264, 백플레인 시뮬레이션 IF 2283, 로드 보드 시뮬레이션 IF 2285, DUT 시뮬레이션 IF 2287, DUT의 Verilog 모델용의 Verilog PLI(프로그래밍 언어 인터페이스) 2288, 및 DUT의 C/C++ 모델용 C/C++ 언어 지원 2289를 포함하고 있다.
사용자 컴포넌트 2292는, 사용자 테스트 계획 2242, 사용자 테스트 클래스 2243, 하드웨어 로드 보드 2265, DUT 2266, DUT Verilog 모델 2293, 및 DUT C/C++ 모델 2291을 포함하고 있다.
시스템 컴포넌트 2294는, 시스템 도구 2226, 통신 라이브러리 2230, 테스트 클래스 2244, 백플레인 드라이버 2250, 버스 스위치 140을 포함하는 HW 백플레인 2261, 시뮬레이션 프레임워크 2281, 백플레인 에뮬레이션 2282 및 로드 보드 시뮬레이션 2286을 포함하고 있다.
모델 전개 컴포넌트 2296은, 모듈 명령 구현 2248, 모듈 하드웨어 2263 및 모듈 에뮬레이션 2284를 포함하고 있다.
외부 컴포넌트 2298은 외부 도구 2225를 포함하고 있다.
도 1에 도시된 시스템 제어 장치 110 상에서 동작하는 소프트웨어인 시스템 컨트롤러 2220은, 사이트 컨트롤러에 대한 인터페이스 2222, 프레임워크 클래스 2224, 시스템 도구 2226, 외부 도구 2225 및 통신 라이브러리 2230을 포함하고 있다. 시스템 컨트롤러 소프트웨어는, 사용자에 대한 상호 작용의 주요한 점이다. 이것은, 본 실시 형태의 사이트 컨트롤러에의 게이트웨이와, 동일한 양수인에 의한 미국 출원 제 60/449,622호에 기술된 멀티사이트/DUT 환경에 있어서의 사이트 컨트롤러의 동기화를 제공한다. 사용자 애플리케이션 및 도구는, 그래픽 사용자 인터페이스(GUI) 기반이거나 그 이외의 것이며, 시스템 컨트롤러 상에서 동작한다. 시스템 컨트롤러는, 테스트 계획, 테스트 패턴 및 테스트 파라미터 파일을 포함하는 모든 테스트 계획 관련 정보의 수집고로서도 기능한다. 테스트 파라미터 파일은, 발명의 일 실시 형태의 객체 지향적 환경에 있어서의 테스트 클래스용의 파라미터화된 데이터를 포함하고 있다.
제3 개발자는, 표준적인 시스템 도구 2226에 추가하여(또는 그 대신에) 도구를 제공할 수 있다. 시스템 컨트롤러 2220 상의 표준적인 인터페이스 2222는, 도구가 테스터 및 테스트 객체에 억세스하기 위하여 사용되는 인터페이스를 가지고 있다. 도구(애플리케이션) 2225, 2226은, 테스트 및 테스터 객체의 상호적인 일괄 제어를 가능하게 한다. 이 도구는, (예를 들어 SECS.TSEM 등의 사용을 통하여) 자동화 능력을 제공하기 위한 애플리케이션을 포함하고 있다.
시스템 컨트롤러 2220 상에 있는 통신 라이브러리 2230은, 사용자 애플리케이션 및 테스트 프로그램에 투명한 형으로 사이트 컨트롤러 2240과 통신하는 메카니즘을 제공한다.
인터페이스 2222는, 시스템 컨트롤러 2220과 관련된 메모리에 상주하며, 시스템 컨트롤러 상에서 실행되는 프레임워크 객체에 대한 개방형 인터페이스를 제공한다. 사이트 컨트롤러 기반의 모듈 소프트웨어가 패턴 데이터에 억세스, 취득할 수 있게하는 인터페이스가 포함된다. 또한, 애플리케이션 및 도구가 테스터 및 테스트 객체에 억세스하기 위하여 사용되는 인터페이스, 또한 스크립트 엔진을 통하여 테스터 및 테스트 컴포넌트에 억세스하여 조작할 수 있는 능력을 제공하는 스크립트 인터페이스도 포함된다. 이것에 의하여, 인터액티브한, 일괄 및 원격 애플리케이션을 위한 공통의 메카니즘이 각각의 기능을 수행할 수 있게 된다.
시스템 컨트롤러 2220에 관련되어 있는 프레임워크 클래스 2224는, 이들의 상술한 객체와 상호간에 작용하는 메카니즘을 제공하며, 이것은 표준적인 인터페이스의 레퍼런스 구현을 제공한다. 예를 들어, 본 실시 형태의 사이트 컨트롤러 2240은 기능 테스트 객체를 제공한다. 시스템 컨트롤러 프레임워크 클래스는, 이 기능 테스트 객체의 원격 시스템 컨트롤러 기반의 대리로서, 대응하는 기능 테스트 프록시를 제공하여도 좋다. 따라서, 표준적인 기능 테스트 인터페이스는, 시스템 컨트롤러 2220 상의 도구에 대하여 이용 가능하게 된다. 시스템, 모듈 개발 컴포턴트 및 인터페이스 컴포넌트 2294, 2296 및 2290은 각각, 시스템 컨트롤러와 사이트 컨트롤러의 사이에 분산된 운영 체계로 고려되어도 좋다. 프레임워크 클래스는, 호스트 시스템 컨트롤러에 관련된 운영 체계 인터페이스를 실질적으로 제공한다. 이들은 또한, 사이트 컨트롤러에 대한 게이트웨이를 제공하는 소프트웨어 요소도 구성하며, 멀티사이트/DUT 환경에 있어서의 사이트 컨트롤러의 동기를 제공한다. 따라서, 이 레이어는, 커뮤니케이션 레이어를 직접 취급할 필요없이 사이트 컨트롤러를 조작하고, 거기에 억세스하는 것에 적합하게 되어 있는 발명의 일 실시 형태에 있어서의 객체 모델을 제공한다.
도 1에 도시된 사이트 제어 장치 130 상에서 동작하는 소프트웨어인 사이트 컨트롤러 2240은, 사용자 테스트 계획 2242, 사용자 테스트 클래스 2243, 표준 테스트 클래스 2244, 표준 인터페이스 2245, 사이트 컨트롤러 프레임워크 클래스 2246, 모듈 하이 레벨 명령 인터페이스(예를 들면, 소정의 모듈 레벨의 인터페이스) 2247, 모듈 명령 구현 2248, 백플레인 통신 라이브러리 2249, 및 백플레인 드라이버 2250의 호스트가 된다. 바람직하게는, 테스트 기기의 대부분을 사이트 컨트롤러 2104/2240이 다루고, 그에 의하여 테스트 사이트 2110의 독립된 동작이 가능하다.
테스트 계획 2242는 사용자에 의하여 기재된다. 이 계획은 C++과 같은 표준적인 컴퓨터 언어로 직접 기술되어도 좋으며, 실행 가능한 테스트 프로그램으로 컴파일 가능한 C++ 코드를 생성하도록 더욱 높은 레벨의 테스트 프로그램 언어로 기술되어도 좋다.
이 테스트 계획은, 프레임워크 클래스 2246 및/또는, 사이트 컨트롤러 2244를 이용하여 테스트 객체를 만들어내고, 표준 인터페이스 2245를 이용하여 하드웨어를 구성하고, 테스트 계획의 흐름을 정의한다. 또한, 테스트 계획의 실행 중에 필요한 추가적인 로직도 제공한다. 테스트 계획은 몇 개의 기본적인 서비스를 지원하고, 디버그 서비스(예를 들면, 중단점(breakpoint)) 등의 그 아래에 있는 객체의 서비스에 대한 인터페이스와, 그 아래에 있는 프레임워크 및 표준 클래스로의 억세스를 제공한다.
사이트 컨트롤러에 관련된 프레임워크 클래스 2246은, 공통의 테스트 관련 동작을 구현하는 클래스 및 방법의 셋트이다. 사이트 컨트롤러 레벨 프레임워크는, 예를 들면, 전력 공급 및 핀 일렉트로닉스의 순번 붙임, 레벨 및 타이밍 조건의 설정, 측정값 취득, 테스트 흐름 제어를 위한 클래스를 포함한다. 프레임워크 객체는 표준 인터페이스를 구현함으로써 동작해도 좋다. 예를 들면, 테스터 핀 프레임워크 클래스의 구현은, 테스트 클래스가 하드웨어 모듈 핀과 상호 작용하기 위해 이용하게 될 범용의 테스터 핀 인터페이스를 구현하도록 통일된다.
어떤 프레임워크 객체는, 모듈과 통신하기 위해 모듈 레벨 인터페이스 2247의 도움을 빌려 동작하도록 구현되어도 좋다. 사이트 컨트롤러 프레임워크 클래스는, 실질적으로 각 사이트 컨트롤러를 지원하는 로컬 운영 체계로서 기능한다.
일반적으로, 프로그램 코드의 90% 이상은 장치 테스트용 데이터이고, 나머지 10%의 코드가 테스트 방법을 실현한다. 장치 테스트 데이터는 DUT 의존 데이터(예를 들면 전력 공급 조건, 신호 전압 조건, 타이밍 조건 등)이다. 테스트 코드는 지정된 장치 조건을 ATE 하드웨어 상에 로드하는 방법으로 이루어지고, 또한 사용자가 지정한 목적(데이터 로깅(data logging) 등)을 실현하는데 필요한 방법으로부터도 구성된다. 발명의 일 실시 형태의 프레임워크는, 하드웨어 의존성의 테스트와, 사용자가 DUT 테스트 프로그램의 태스크를 수행하는 것을 가능하게 하는 테스터 객체 모듈을 제공한다.
테스트 코드의 재이용성을 높이기 위해, 이러한 코드는 장치 특유의 데이터(예를 들면 핀의 명칭, 활성화 데이터 등), 또는 장치 테스트에 특유한 데이터(예를 들면 DC 유닛의 조건, 측정 핀, 타겟 핀의 수, 패턴 파일의 명칭, 패턴 프로그램의 어드레스) 중 어느 것에 대해서도 독립되어도 좋다. 만약 테스트용 코드를 이러한 타입의 데이터와 함께 컴파일하면 테스트 코드의 재이용성은 낮아진다. 따라서, 본 발명의 일 실시 형태에 의하면, 어떠한 장치 특유의 데이터 또는 장치 테스트에 특유한 데이터도, 코드 실행 기간 중에 입력으로서 외부로부터 테스트 코드로 입력되어도 좋다.
발명의 일 실시 형태에 있어서는, 표준 테스트 인터페이스의 구현인 테스트 클래스는, 여기서는 ITEST로 기재되고, 특정 타입의 테스트에 관하여 테스트 데이터와 코드의 분리(따라서 코드의 재이용성)를 실현한다. 이러한 테스트 클래스는 장치 특유 및/또는 장치 테스트 특유의 데이터에 대해서만 상이한 서로 다른 테스트 클래스의 "템플릿"으로 간주해도 좋다. 테스트 클래스는 테스트 계획 파일에 있어서 지정된다. 각 테스트 클레스는, 전형적으로는, 구체적인 타입의 장치 테스트 또는 장치 테스트용 셋업을 구현한다. 예를 들면, 발명의 일 실시 형태는, DUT에 관한 전체의 기능 테스트의 기본이 되는 클래스로서, ITest 인터페이스의 구체적인 구현, 예를 들면, FunctionalTest를 제공한다. 이는, 테스트 조건의 설정, 패턴의 실행 및, 실패한 스트로브의 존재에 기초한 테스트 상황의 판정이라는 기본적인 기능을 제공한다. 다른 타입의 구현은, 여기서는 ACParametricTest 및 DCParametricTest로서 표기되는 AC 및 DC 테스트 클래스를 포함해도 좋다.
전체의 테스트 타입은 몇 개의 가상적인 방법의 디폴트의 구현(예를 들면, init(), preExec() 및 postExec())을 제공해도 좋다. 이러한 방법은 디폴트의 동작을 넘어 테스트 특유의 파라미터를 설정하기 위한 테스트 엔지니어의 엔트리 포인트가 된다. 그렇지만, 커스텀 테스트 클래스도 테스트 계획에서 이용할 수 있다.
테스트 클래스는, 그 테스트의 특정의 경우에 관한 객체를 지정하는데 이용되는 파라미터를 제공함으로써, 사용자가 클래스의 동작을 구성하는 것을 가능하게 한다. 예를 들면, 기능 테스트는 실행해야 할 패턴 리스트와 테스트용의 레벨 및 타이밍 조건을 지정하기 위해, 파라미터 Plist 및 TestCondition을 채용해도 좋다. (테스트 계획 기술 파일에 있어서 서로 다른 "테스트" 블록의 사용을 통해) 이러한 파라미터에 있어서 서로 다른 값을 지정함으로써, 사용자는 기능 테스트의 다른 예를 만들어내는 것이 가능하다. 도 9는, 어떻게 단일의 테스트 클래스로부터 다른 테스트 예가 도출되는가를 도시하고 있다. 템플릿 라이브러리는 일반적인 알고리즘 및 데이터 구조의 범용 라이브러리로서 채용되어도 좋다. 이 라이브러리는 테스터의 사용자에게 보여도 좋고, 사용자는 예를 들면, 사용자 정의의 테스트 클래스를 만들어 내도록 테스트 클래스의 구현을 고쳐도 좋다.
사용자에 의해 전개되는 테스트 클래스에 관하여, 시스템의 일 실시 형태는, 이러한 테스트 클래스를 전체의 테스트 클래스가 단일의 테스트 인터페이스, 예를 들면, ITest로부터 얻을 수 있는 프레임워크에 통합하는 것을 지원하고, 그 결과, 그 프레임워크는 시스템 클래스의 표준적인 셋트와 같은 방식으로 이들을 처리할 수 있다. 사용자는, 추가의 편리함을 살리기 위해서는 자신들의 테스트 프로그램에 있어서 커스텀 코드를 이용하지 않으면 안 된다는 이해 하에, 자신들의 테스트 클래스에 추가의 기능을 자유로이 추가할 수 있다.
도 1에 도시된 사이트 제어 장치 130, 동기 모듈 150, 동기 접속 모듈 160, 및 시험 모듈 170을 포함하여 구성되는 각 테스트 사이트는, 하나 이상의 DUT 100의 테스트 전용의 것이고, 시험 모듈 170 등의 테스트 모듈의 구성 가능한 집합체를 통해 기능한다. 각 테스트 모듈은 특정의 테스트 태스크를 수행하는 주체이다. 예를 들면, 테스트 모듈은, DUT의 전원, 핀 카드, 아날로그 카드 등일 수 있다. 모듈에 의한 접근 방식은 높은 유연성과 구성 가능성을 제공한다.
모듈 명령 구현 클래스 2248은, 모듈 하드웨어 공급자에 의해 제공되어도 좋고, 공급자에 의해 선택된 명령 실행 방법에 따라 하드웨어 모듈에 관한 모듈 레벨 인터페이스를 구현하거나, 또는 표준적인 인터페이스의 모듈 특유의 구현을 제공한다. 이러한 클래스의 외부의 외부 인터페이스는 소정의 모듈 레벨 인터페이스 요건 및 백플레인 통신 라이브러리 요건에 따라 규정된다. 또한 이 레이어는, 표준적인 셋트의 테스트 명령의 확장도 제공하고, 그에 의해 방법(기능) 및 데이터 요소의 추가가 가능하게 된다.
백플레인 통신 라이브러리 2249는, 백플레인으로의 표준적인 통신을 위한 인터페이스를 제공하고, 그에 따라 테스트 사이트에 접속된 모듈과의 통신에 필요한 기능을 제공한다. 이에 따라, 공급자에 특유한 모듈 소프트웨어가 대응하는 하드웨어 모듈과의 통신에 백플레인 드라이버 2250을 이용하는 것이 가능하다. 백플레인 통신 프로토콜은 패킷 베이스의 포맷이다.
테스터 핀 객체는, 물리적인 테스터 채널을 나타내고, 여기서는 ITesterPin으로 지시되는 테스터 핀 인터페이스로부터 얻어진다. 발명의 일 실시 형태에 의한 소프트웨어 개발 키트(SDK)는, TesterPin으로 불린 적도 있는 ITesterPin의 디폴트의 구현을 제공하고, 이는 소정의 모듈 레벨 인터페이스 IChannel에 관해서 구현된다. 공급자는, IChannel에 관하여 그들의 모듈의 기능을 구현하는 것이 가능하다면 TesterPin을 자유롭게 사용할 수 있지만, 그렇지 않다면, 그들의 모듈과 함께 동작하는 ITesterPin의 구현을 제공하지 않으면 안 된다.
본 실시 형태의 테스터 시스템에 의해 제공되는 표준적인 모듈 인터페이스는, 여기서는 IModule로 표기되고, 이것은 일반적으로, 공급자의 하드웨어 모듈을 나타낸다. 공급자에 의해 공급되는, 시스템용의 모듈 특유의 소프트웨어는 동적 링크 라이브러리(DLL)와 같은 실행 가능한 형태로 제공되어도 좋다. 공급자로부터의 각 모듈 타입용의 소프트웨어는, 단일의 DLL로 캡슐화되어도 좋다. 이러한 소프트웨어 모듈의 각각은, 모듈 소프트웨어 전개를 위한 API를 구비하고, 모듈 인터페이스 명령용의 공급자에 특유한 구현을 제공하는 것을 담당하고 있다.
모듈 인터페이스 명령에는 2개의 국면이 있다. 이들은 첫 번째로, 사용자가 시스템에 있어서 특정의 하드웨어 모듈과 (간접적으로) 통신하기 위한 인터페이스로서 기능하고, 두 번째로, 제3자 개발자가 그들 자신의 모듈을 사이트 컨트롤러 레벨의 프레임워크에 통합하기 위해 활용할 수 있는 인터페이스를 제공한다. 따라서, 프레임워크에 의해 제공되는 모듈 인터페이스 명령은 2개의 타입으로 나뉘어진다.
첫 번째는, 가장 의심할 여지가 없는 것이지만, 프레임워크 인터페이스를 통해서 사용자에게 드러나는 "명령"이다. 따라서, 예를 들면, 테스터 핀 인터페이스(ITesterPin)은, 레벨 및 타이밍의 값을 취득, 설정하기 위한 방법을 제공하고, 한편으로 전원 인터페이스(IPowerSupply)는 전력을 올리거나 내리는 방법을 제공한다.
또한, 프레임워크는, 모듈과의 통신에 사용될 수 있는, 소정의 모듈 레벨 인터페이스의 특별한 카테고리를 제공한다. 이들은, 공급자의 모듈과의 통신을 위하여 프레임워크 클래스에 의하여 사용되는 인터페이스(즉, 프레임워크 인터페이스의 "표준적인" 구현)이다.
그러나, 제2의 국면, 모듈 레벨 인터페이스의 사용은, 임의적이다. 그것을 사용하는 경우의 이점은, 공급자는, 모듈 레벨 인터페이스를 구현함으로써, 그들의 하드웨어에 대하여 보내진 구체적인 메시지의 내용을 주시하면서, ITesterPin 및 IPowerSupply와 같은 클래스의 구현을 활용할 수 있게 된다는 것이다. 그러나, 만약 이들의 인터페이스가 공급자에게 부적절하다면, 그들은 프레임워크 인터페이스의 그들의 커스텀 구현(예를 들어 ITesterPin, IPowerSupply 등의 공급자 구현)을 제공할 것을 선택하여도 좋다. 그렇게 하면 이들은, 그들의 하드웨어에 대하여 적절한 커스텀 기능을 제공할 것이다.
따라서, 모듈에 특유한 공급자 소프트웨어의 통합은, 두 개의 서로 다른 수단, 즉 관련된 프레임워크 클래스 및 인터페이스의 커스텀 구현, 또는 모듈 레벨 인터페이스의 특별한 카테고리의 커스텀 구현을 통하여 실현될 수 있다.
다음으로, 양쪽의 방법의 예시적인 응용을 도 10의 도움을 빌려 설명한다. 도 10은, 발명의 일 실시 형태에 의한, 테스터 시스템과 다른 공급자에 의하여 공급되는 모듈과의 상호 작용을 도시하는 유니버설 모델링 언어(UML) 다이어그램이다.
새로운 디지털 모듈의 공급자인 제3자 A(TPA)는, 그 하드웨어 모듈과 통신하기 위한 소프트웨어 모듈을 제공한다. 이 소프트웨어 모듈은, 표준적인 인터페이스 IModule을 구현한다. 이 모듈 객체를 TPAPinModule이라고 부르기로 한다. 공급자 TPA는, 그 모듈에 있어서, 관련된 소정의 모듈 레벨 인터페이스, 이 경우에는 IChannel을 구현함으로써, 여기서는 TesterPin으로서 표시된, ITesterPin 인터페이스의 표준적인 시스템 구현을 이용할 수 있다. 이것은, TesterPin이 모듈과 통신하기 위하여 IChannel과 같은 표준적인 소정의 모듈 레벨 인터페이스를 사용한다고 하는 사실에 의하여 가능하게 된다. 따라서, TPAPinModule은, TesterPin 객체를 단순히 만들어 내어 드러내게 함으로써 핀을 제공한다.
여기서, IChannel 인터페이스는 자신들의 하드웨어와 함께는 훌륭하게 동작하지 않는다고 판단하는, 서로 다른 공급자인 제3자 B(TPB)를 생각해 보자. 따라서, TPB는 그들 자신의 IModule 구현(TPBPinModule)만이 아니라, ITesterPin 인터페이스의 구현 TPBTesterPin도 제공할 필요가 있게 된다.
이 접근법은, 제3 개발자가 어떻게 하여 자신들의 하드웨어를 전개할 것인가의 선택 및 소프트웨어의 지원에 있어서, 커다란 유연성을 제3 개발자에게 부여한다. 그들은 IModule 인터페이스를 구현할 것을 추구하면서, 모듈 레벨 인터페이스를 구현할 것인가, 적합하다는 것을 안다면 TesterPin과 같은 객체를 구현할 것인가를 선택할 수 있다.
실제로, 공급자는 ITesterPin 인터페이스에 있어서는 지원되지 않는 확장을 제공하기 위하여 TesterPin을 구현하는 것을 선택하여도 좋다. 프레임워크는 사용자에게, 특정의 인터페이스를 꺼내기 위한 메카니즘 또는 객체에의 구현 포인터를 제공한다. 이것은, 사용자 코드가 ITesterPin 포인터를 가지고 있는 경우에, 프레임워크는 각각이 필요한 때에 소위 TPBTesterPin 객체를 포인트하고 있는가 아닌가를 판단할 수 있다는 것을 의미하고 있다. (이 특징은 표준적인 C++ 실행 시간 타입 식별(RTTI)을 거쳐 제공되어도 좋다는 점을 유의할 것.) 환언하면, 테스트 계획이 ITesterPin 클래스의 공급자의 테스터 핀의 구현을 직접 호출하고, 이것이 모듈에 특유한 정보(예를 들면, 특정의 DUT 자극을 주도록 설정되어야 할 레지스터의 어드레스)를 내장하고 있다.
정리하면, 프레임워크 코드가 항상 ITesterPin 구현을 사용하고 있는 동안, 사용자는 필요한 때에 모듈 공급자에 의하여 제공되는 구체적인 특징 및 확장을 자유롭게 사용할 수 있다. 환언하면, 모듈 공급자는, 예를 들어, 클래스의 표준적인 시스템 구현에 방법(기능)을 부가할 수 있다. 사용자에 대한 트레이드 오프는, 구체적인 공급자의 확장을 활용하는 것이 다른 공급자의 모듈에 대한 테스트 코드의 유용성을 저하시킨다는 것이다.
모듈 레벨에서는, 시험 장치 10은, 명목상 두 개의 동작 모드를 가지고 있다. 동작의 온라인 모드에서는, 버스 스위치 140, 동기 모듈 150, 동기 접속 모듈 160, 시험 모듈 170, 로드 보드 180 및 DUT 100을 포함하여 구성된 모듈 엘리먼트 2260(예를 들면, 하드웨어 엘리먼트)가 사용되며, 동작의 오프라인 모드에서는, 버스 스위치 에뮬레이트부 240, 동기 모듈 에뮬레이트부 250, 동기 접속 모듈 에뮬레이트부 260, 시험 모듈 에뮬레이트부 270, 스케쥴 제어부 275, DUT 접속부 280, 및 DUT 시뮬레이트부 200을 포함하여 구성된 소프트웨어에 있어서의 모듈 에뮬레이션 2280이 사용된다.
동작의 온라인 모드에 있어서, 모듈 엘리먼트 2260은, 도 1에 도시된 버스 스위치 140을 포함하는 HW(하드웨어) 백플레인 2261과, 섀시 슬롯 IF(인터페이스) 2262와, 동기 모듈 150, 동기 접속 모듈 160, 및 시험 모듈 170 등을 포함하는 모듈 하드웨어 2263과, 로드 보드 하드웨어 IF 2264와, 로드 보드 180에 대응하는 하드웨어 로드 보드 2265와, 도 10에 도시된 DUT 100에 대응하는 DUT 2266을 가지고 있다.
동작의 오프라인 모드에 있어서는, 소프트웨어에서의 모듈 에뮬레이션 2280은, 도 2에 도시된 스케쥴 제어부 275를 포함하는 시뮬레이션 프레임워크 2281과, 버스 스위치 에뮬레이트부 240을 포함하는 백플레인 에뮬레이션 2282와, 백플레인 시뮬레이tusIF 2283과, 동기 모듈 에뮬레이트부 250, 동기 접속 모듈 에뮬레이트부 260, 및 시험 모듈 에뮬레이트부 270 등을 포함하는 모듈 에뮬레이션 2284와, 로드 보드 시뮬레이션 IF 2285와, DUT 접속부 280을 포함하는 로드 보드 시뮬레이션 2286과, DUT 시뮬레이션 IF 2287을 포함하고 있다. 두개의 모델을 DUT 시뮬레이션에 관하여 개시한다. Verilog를 사용하는 모델은, Verilog PLI(프로그램 언어 인터페이스) 2288과, DUT Verilog 모델 2293을 가지고 있다. C/C++을 사용하고 있는 모델은, C/C++ 언어 지원 2289와 DUT C/C++ 모델 2291을 가지고 있다. 시뮬레이션은, PC 등의 어떠한 컴퓨터 상에서도 수행될 수 있다는 것에 유의하여야 한다.
온라인 모드에서는, 모듈 공급자는, 디지털 테스터 채널, DUT 전원, 또는 DC 측정 유닛이라고 하는, 테스트를 지원하기 위한 물리적인 하드웨어 컴포넌트를 제공한다. 모듈은, 섀시 슬롯 IF 2262를 통하여 HW 백플레인 2261에 인터페이스 접속된다.
오프라인에서의 작업에 관하여는, 시스템 컨트롤러와 등가인 것을 움직이는 PC 기반 또는 다른 환경이, 부가적으로, 사이트 컨트롤러 레벨의 프레임워크와, 소프트 웨어의 보다 낮은 레이어의 실행 시간 환경을 제공함과 함께 하드웨어를 에뮬레이트하기 위한 전체의 임무를 담당한다.
백플레인 에뮬레이션 2282는, 물리적인 백플레인 2261을 위한 소프트웨어에 의한 대리를 제공한다. 이것은, 백플레인 시뮬레이션 인터페이스 2283을 통하여 (공급자가 공급하는) 모듈 에뮬레이션 소프트웨어 2284와 통신한다.
모듈 에뮬레이션 소프트웨어 2284는, 바람직하게는 모듈 공급자에 의하여 제공되며, 전형적으로는 모듈 2263의 특정 공급자 구현과 밀접하게 묶여 있다. 따라서, 모듈 에뮬레이션 소프트웨어는, 전형적으로는, 서로 다른 공급자에 의하여 공급되는 모듈 사이에서 상세에서 차이가 있다. 이 경우, 모듈 시뮬레이션에 의하여, 공급자는, 소프트웨어 모델(예를 들면, 모듈 에뮬레이션 소프트웨어 2284)를 통하여 하드웨어의 기능을 드러내고, 시뮬레이트된 로드 보드 2286에 대하여 활성화 신호를 보내며, DUT 시뮬레이션 IF 2287을 거쳐 DUT 모델링 소프트웨어 2291, 2293에 접속되어 있는, 시뮬레이트된 로드 보드 2286으로부터의 DUT 응답 신호를 수치하여 처리할 수 있게 된다. 모듈의 단순한 기능 시뮬레이션을 제공하여 모듈 펌 웨어의 에뮬레이션을 우회하는 것이 유리하다고 공급자가 생각하는 경우도 있다. 모듈 에뮬레이션 소프트웨어는, 시뮬레이트 된 모듈 활성화 신호에 대한 시뮬레이트 된 DUT의 응답을, 기지의 양호한 DUT 응답과 비교한다. 이 비교에 기초하여, 소프트웨어는, 그 모듈에 의하여 실행되고 있는 테스트가 원하는 대로 DUT를 테스트한다는 목표에 적합한가를 판단하고, 사용자가 온라인의 실제의 테스터 상의 IC(실제의 DUT) 상에서 그것을 사용하기에 앞서, 모듈의 디버그를 수행하는 것을 돕는다.
로드 보드 시뮬레이션 인터페이스 2285는, 모듈 에뮬레이션 레이어 및 시뮬레이트된 로드 보드 2286으로의, 및 이들로부터의 신호를 위한 경로로서 기능한다. 로드 보드 시뮬레이션 컴포넌트 2286은, 디바이스 소켓 매핑과 DUT 시뮬레이션 IF 2287으로의, 및 그로부터의 신호 전달을 지원한다.
DUT 시뮬레이션은, 네이티브 코드(즉, C/C++) 시뮬레이션 2291, 또는 대상인 DUT 모델 2293의 기능 모델에 대한 Verilog 프로그래밍 언어 인터페이스(PLI)이어도 좋다. 이 모델은, DUT 시뮬레이션 인터페이스 2287을 통하여, 시뮬레이트된 로드 보드와 인터페이스 접속한다.
이들의 레이어 전체의 제어는, 시뮬레이션 프레임워크 2281에 의하여 제공된다는 것을 유의하여야 한다. 시뮬레이션 프레임워크는, 기지의 활성화 신호에 대한 시뮬레이트 된 DUT 응답을 측정한다. 시스템 에뮬레이션의 방법은, 미국 특허 출원 제10/403,817호에 개시되어 있다.
통신 및 제어
통신 및 제어는, 관련된 소프트웨어 객체의 관리를 통하여 실현된다. 바람직하게는, 통신의 메카니즘은, 시스템 컨트롤러 상의 객체 모델의 뒤에 숨어 있다. 이 객체 모델은, 사이트 컨트롤러 상에서 보이는 클래스 및 객체에 대하여 프록시를 제공하고, 그에 의하여, 애플리케이션의 개발(예를 들어 IC 장치의 테스트)를 위한 편리한 프로그래밍 모델을 제공한다. 이에 의하여, 애플리케이션의 개발자(예를 들어, ATE 시스템의 사용자)는, 애플리케이션과 사이트/시스템 컨트롤러와의 사이의 통신의 구체적인 정보에 관련된 불필요한 상세를 피할 수 있다.
도 11은, 사이트 제어장치 130 내의 사이트 컨트롤러 소프트웨어 2240에 유지되고 있을 때의 사이트 컨트롤러 객체의 구체적인 실시 형태를 도시하고 있다. 사이트 컨트롤러 객체는, CmdDispatcher 2602, FunctionalTestMsgHandler 2604 및 FunctionalTest 2606을 가지고 있다. 인터페이스는, IMsgHandler 2608 및 ITest 2610을 가지고 있다.
바람직하게는, 사이트 컨트롤러 2240은, 애플리케이션이 억세스를 위하여 필요한 기능 클래스의 전체를 포함하고 있다. 이들의 클래스는, 예를 들어, 테스트, 모듈, 핀 등을 포함한다. 사용자의 테스트 및 소프트웨어 도구는 전형적으로는 서로 다른 컴퓨터 상에서 존재하므로, 메시지는, 시스템 컨트롤러 상의 도구로부터 사이트 컨트롤러 상의 서버에 보내진다. 이 서버는, 명령 발송 객체에 관한 방법을 필요로 한다.
명령 발송 객체(CmdDispatcher) 2602는, IMsgHandler 인터페이스 2608을 구현하는 메시지 핸들러 객체의 맵을 보유한다. 도 11은, IMsgHandler의 구체적인 구현 FunctionalTestMsgHandler 2604를 도시하고 있다. CmdDispatcher 객체 2602에 의하여 수신된 메시지는 통신하여야 할 객체의 식별자를 포함하고 있다. 이 식별자는, 내부의 맵에 있어서 보이며, 구체적인 구현, 이 경우에는 도시되어 있는 FunctionalTestMsgHandler 객체 2604로 귀착된다.
본 예에서는, IMsgHandler 2608은, 단일의 방법 handleMessage()로 이루어진다. 이 방법은, 바람직하게는 단일의 구현 클래스로서 구현된다. 도시된 경우에 있어서는, FunctionalTestMsgHandler 2604는, 들어 오는 메시지의 정확한 성질에 따라 6개의 방법 중 하나에 메시지를 보낸다. 들어 오는 메시지의 헤더는, 메시지 핸들러가 어떻게 메시지를 해석하고, 어디로 메시지를 보낼까를 결정할 수 있게 하는 메시지 ID를 포함하고 있다.
시스템 제어장치 110에 있어서의 대응하는 통신 환경은, 시스템 컨트롤러 소프트웨어 2220의 도구 2225, 2226 섹션에 관련된다. 도 12는, 시스템 컨트롤러 소프트웨어 2220에 있어서 시스템 제어장치 110 상에 보유된 도구 객체(또는 시스템 컨트롤러 객체)의 일 실시 형태를, 도 11에 도시된 사이트 컨트롤러 객체와 대응되도록 도시하고 있다. 도구 객체는, 객체 CmdDispatcher 2702, FunctionalTestMsgHandler 2704 및 FunctionalTestProxy 2706을 포함하고 있다. 인터페이스는 IMsgHandler 2708, ITestClient 2710, 및 IDispatch 2712를 포함하고 있다. 또한, 유틸리티 애플리케이션 2714도 포함하고 있다.
이 예에 관하여, 클래스 CmdDispatcher 2702, IMsgHandler 2708, 및 FunctionalTestMsgHandler 2704는, 도 11에 도시된 것과 같다. 그러나, FunctionalTest 2606(또는 다른 임의의 사이트 컨트롤러 클래스)의 인스턴스화는 사용되지 않는다. 대신에, 도구 객체는, 사이트 제어장치 130상의 각 객체와 통신하기 위한 프록시 클래스를 가지고 있다. 따라서, 예를 들어, 도구 객체는 FunctionalTest 2606을 대신하여 클래스 FunctionalTestProxy 2706을 포함하고 있다. 유사하게, 도구 객체에 있어서의 ITestClient 2710은, 사이트 컨트롤러 객체에 있어서의 ITest 2610과 동일하지는 않다. 일반적으로, 사이트 제어장치 130 상에서 동작하는 애플리케이션은, 사이트 제어장치 130 상에 설치되어 있는 것, 그것과 같은 인터페이스를 사용하지 않는다. 이 경우, ITest 2610의 세 개의 방법(즉, preExec(), execute() 및 postExec())는 ITestClient 2710에 있어서의 단일의 방법(즉, runTest())으로 치환된다. 또한, ITestClient 2710은, 바람직하게는 이중 인터페이스, 즉 IDispatch 712를 이어받은 것이며, 마이크로소프트 컴포넌트 객체 모델(COM)로서 구현된다. 그것은, 그 인터페이스를 구현하는 객체에의 스크립트 엔진의 억세스를 가능하게 하는 인터페이스를 제공한다. 이에 의하여, 시스템을 마이크로소프트 윈도우즈 플랫폼 상에서 기술할 수 있게 된다.
도 11~12에 도시된 실시 형태의 동작의 일예로서,(예를 들어, 도구 섹션 2226, 2228 중의 하나에 있어서) 시스템 제어장치 110 상에서 동작하는 애플리케이션은, 테스트 계획 2242가 하나 이상의 FunctionalTest 객체 2606을 가지고 있도록 하는 사이트 제어장치 130과 통신하여도 좋다. 사이트 제어장치 130 상에서의 테스트 계획 2242의 초기화 중에, 대응하는 테스트 계획 객체는 사이트 제어장치 130 상에서 로드되고, TestPlanMessageHandler 객체를 구성하며, 그것을 CmdDispatcher 객체 2602와 함께 등록한다. 이것이 메시지 핸들러에 독자의 ID를 할당한다. 유사한 동작은, 테스트 계획 2242를 구성하는 다른 TestPlan 객체에서도 일어난다.
시스템 제어장치 110 상의 (예를 들어 도구 2226, 2228에 있어서의) 애플리케이션은, 통신 라이브러리 2230을 초기화하고, 통신 채널을 거쳐 사이트 제어장치 130에 접속하고, TestPlan 객체를 위한 ID를 취득한다. 이 초기화중에, 프록시 객체는, 그것이 테스트를 몇 개 포함하고 있는가와, 그들의 타입 및 ID를 결정한다. 그것은 타입마다(이 경우에는 하나뿐인 타입) 적절한 DLL을 로드하고, 그들에 관한 프록시 객체를 구성하고, 그들을 ID 값을 사용하여 초기화한다.
TestProxy 객체도 초기화한다. 이것을 하기 위하여, 그들은, 그들의 명칭을(그들의 ID 값을 사용하여) 취득하기 위한 적절한 메시지를 구성하여, 사이트 제어장치 130의 통신 서버에 송신한다. 통신 서버는, 메시지를 CmdDispatcher 2602에 넘겨준다. 이 객체는, 그 내부 맵에 있어서 수신처 ID를 조사하여, FunctionalTestMsgHandler 2604의 handleMessage() 방법에 메시지를 보낸다. 예를 들어, 만약 메시지가 테스트명 취득의 요구라면, 이들의 객체는 각각의 테스트명을 취득하고, 적절한 명칭별로 애플리케이션의 TestProxy 객체에 응답한다.
초기화가 완료되면, 애플리케이션은, TestPlan 객체에의 원격 억세스와, 그것을 통하여 양방의 Test 객체로의 원격 억세스를 갖는다. 사용자는 여기서, 예를 들어, 애플리케이션 상의 "테스트 계획 기동"의 단추를 누른다. 그 결과, 애플리케이션은 TestPlanProxy 객체 상의 RunTestPlan() 방법을 호출한다. 이 방법은, TestPlan 객체의 수신처 ID에서 RunTestPlan 메시지를 구성하며, RPC 프록시 상에서 sendMessage() 기능을 호출한다. 이 기능이 사이트 컨트롤러에 메시지를 송신한다.
사이트 제어장치 130 상의 통신 서버는, CmdDispatcher 객체 2602 상의 handleMessage() 방법을 호출하고, TestPlan 객체의 ID를 그것에 넘겨준다. CmdDispatcher 객체2602는 그 내부 맵에서 이 ID를 조사하여, TestPlan 객체용 메시지 핸들러를 발견하여, 이 객체 상의 handleMessage() 방법을 호출하고, 이것이 TestPlan 객체상의 RunTestPlan() 방법을 호출한다. 유사한 방법으로, 애플리케이션은 명칭과 Test 객체의 최근의 동작 상황을 취득할 수 있다.
통신 라이브러리를 이용하는 방법
통신 라이브러리 2230을 이용하는 예를 이하에서 설명한다.
통신 라이브러리 2230은 바람직하게는 정적인 라이브러리이다. 애플리케이션은, CommLibrary.h 파일을 통하여 이 통신 라이브러리를 사용할 수 있다. 통신 라이브러리 클래스를 엑스포트할 필요가 있는 애플리케이션은, 상기 인클루드 파일을 포함함에 더하여, 정의된 프리프로세서 정의 COMMLIBRARY_EXPORTS, COMMLIBRARY_FORCE_LINKAGE를 가지고 있지 않으면 안된다. 통신 라이브러리를 임포트하는 애플리케이션은, 프리프로세서 정의를 아무 것도 정의할 필요가 없다. 통신 라이브러리가 서버로서 사용될 때에는, 애플리케이션은, CcmdDispatcher의 다음의 정적인 함수를 호출하지 않으면 안된다:InitializeServer(unsigned logn portNo).
이 portNo는, 서버가 요구를 기다리지 않으면 안되는 포트 번호이다. 서버에 대응하는 명령 디스패쳐는, 정적인 함수 getServerCmdDispatcher를 CcmdDispatcher 클래스 상에서 호출함으로써 독출된다.
통신 라이브러리가 클라이언트로서 사용될 때에는, 애플리케이션은 CcmdDispatcher의 정적인 함수 "InitializeClient(const OFCString serverAddress, unsigned long serverPortNo, CcmdDispatcher **pCmdDispatcher, OFCString serverID)"를 호출하지 않으면 안된다.
이 serverAddress 및 ServerPortNo는, 클라이언트가 접속하지 않으면 안되는 것이다. 이 함수는, 클라이언트용의 명령 디스패쳐 포인터 및 그것이 접속하는 서버 ID를 초기화한다. 또한, 이후의 시점에서, 클라이언트는, 정적인 함수 getClientCmdDispatcher를 호출함으로써 서버 ID에 대응하는 명령 디스패쳐를 만들어 낼 수 있다.
통신 라이브러리가 컴파일될 때에는, 파일 ClientInterface.idl 및 ServerInterface.idl 상에서는 빌드는 배제된다. 바람직한 실시 형태는, 이들의 인터페이스 정의 파일에 관하여 이미 생성된 스터브 및 프록시 파일을 적용하여 프록시 및 스터브 구현 파일을 같은 라이브러리에 링크한다. 따라서, 서버 및 클라이언트는, 같은 어드레스 공간 내에서 인스턴스화 된다. 인터페이스 정의 파일 및 스터브 파일에 있어서의 이하의 변경은, 바람직하게는, 통신 라이브러리를 서버 및 클라이언트로서 같은 어드레스 공간내에서 동작시키기 위하여 수행된다.
인터페이스 정의 파일에 있어서의 변경
이하의 명칭 공간의 선언은, 바람직하게는, 인터페이스 정의 파일의 각각에 있어서 부가된다. 이것은, 프록시 구현 기능과 인터페이스 기능의 자기 자신의 구현과의 명칭의 충돌을 피하기 위한 것이다. 이하의 명칭 공간의 선언은, serverInterface.idl에 있어서 부가된다.
스터브 구현 파일에 있어서의 함수는, 인터페이스에 있어서 선언된 기능을 위한 자기 자신의 구현 함수를 호출하도록 변경된다. 즉, 자기 자신은, 인터페이스에 있어서 선언된 기능의 각각에 대응하는 서로 다른 명칭의 함수를 가지게 된다.
함수 호출에 있어서의 경합을 피하기 위하여, 구현 함수의 명칭을 "COMM_" 열로 시작하는 명칭으로 하는 것이 바람직하다. 그렇게하면, 스터브 함수에 있어서의 코드는, "functionalName" 대신에 "COMM_functionalName"을 호출하도록 변경된다.
이 방법이 동작하기 위하여는, 존재하는 전체의 기능 클래스는, 대응하는 메시지 핸들러 객체 및 프록시 클래스를 가지고 있지 않으면 안된다. 전체의 메시지 핸들러 객체는, 통신 라이브러리에 의하여 제공된 IMsgHandler 클래스로부터 얻지 않으면 안된다. IMsgHandler 클래스는 추상적인 클래스이다. 메시지 핸들러의 구현기의 임무는, handleMessage, setObject, handleError의 정의를 제공하는 것이 바람직하다. 전체의 메시지 타입은, 하나로 시작하지 않으면 안된다(영은 handleError를 위하여 남겨 놓는다). 기능 클래스는 바람직하게는, 그 멤버가 가변이 되도록 대응하는 메시지 핸들러를 갖는다. 기능 클래스의 구성자(constructor)에 있어서, 기능 클래스는, 그 메시지 핸들러에 의하여 제공되는 함수를 호출함으로써, 메시지 핸들러와 함께 자신을 등록시킨다. 다음으로 메시지 핸들러 객체는, addMsgHandler 함수를 명령 디스패쳐 상에 파라미터로서의 메시지 핸들러와 함께 호출함으로써, 명령 디스패쳐와 함께 등록하지 않으면 안된다. addMsgHandler 함수는, 메시지 핸들러 및 기능 클래스에 ID를 할당한다. 기능 클래스의 해체자(destructor)는, 파라미터로서의 기능 클래스 식별자를 보냄으로써, 명령 디스패쳐 상에 removeMsgHandler 함수를 호출하지 않으면 안된다. 또한, 프록시 클래스도, 기능 클래스에 관하여 설명된 바와 같이, 같은 등록 절차에 따르지 않으면 안된다.
시스템 구성과 테스트
도 13은, 본 발명의 일 실시 형태에 의한 명목상의 테스트 시퀀스 2800을 도시하고 있다. 테스트 시퀀스 2800은, 테스트 환경 2804에 있어서의 모듈 설치 2815를 포함하며, 이것은 테스트 준비 2806을 시스템 테스트 2808을 포함하고 있다. 처음 새로운 모듈(하드웨어 또는 소프트웨어 또는 이들의 조합) 2810이 (공급자의 품질 관리에 기초하고 있을지도 모르는 몇 개의 외부 절차에 의하여) 인증 2812 된다. 설치 2815는 우선, 오프라인 시뮬레이션 2809를 위한 하드웨어 모듈 에뮬레이션의 설정, 테스트 프로그램 개발 2814를 위한 모듈 자원 파일 및 인터페이스의 설정, 또한, 패턴 컴파일 2816을 위한 모듈 특유의 패턴 컴파일러의 설정을 포함하는 테스트 준비 2806을 필요로 한다. 다음으로 시스템 테스트 2080이, 교정(較正) 2817, 진단 2818 및 구성 2820으로부터의 입력을 이용하여 실행된다. 그리고 새로운 모듈에 대해, (1) 인터페이스 제어, (2) 동기, 순서 지정 및 재현성, (3) 에러/경고 대응, (4) 멀티사이트 제어, 및 (5) 멀티 인스톨먼트 모듈 제어를 포함하는 시스템 테스트 2808이 수행된다.
(보충설명 B) DUT 100의 시스템 소프트웨어의 프레임워크의 사양 예
B. 1 개요
본 사양은, 시험 에뮬레이트 장치 190, 또는 시스템 제어 당치 110 및 사이트 제어 장치 130의 분산 시스템에 의한 에뮬레이트 환경(오프라인 환경)을 중심으로 해서, DUT 100의 시스템 소프트웨어의 사용자 및 개발자 전용의 프레임워크를 지시한다.
B. 2 사용자의 사양
본 장은, 시험 장치 10의 시스템 소프트웨어의 사용자 전용의 프레임워크를 설명한다.
B. 2. 1 SimTester
"SimTester(시뮬레이션된 시험 장치)"는, 컴퓨터 20을 도 2에 도시된 시험 에뮬레이트 장치 190으로서 기능시키는 애플리케이션 프로그램이다. SimTester는 각 모듈 및 DUT의 DLL을 로드하고, 시스템 소프트웨어로부터의 명령에 응답히여 시험 장치를 에뮬레이트한다. 여기서, 시스템 소프트웨어는, 시뮬레이트하는 패턴을 로드하고 실행하는 실행 시간 소프트웨어이다.
SimTester는, 기동되면, 시뮬레이션 구성 파일을 독출한다. 그 결과, 시험 에뮬레이트 장치 190을 동기 모듈레이트부 250, 동기 접속 모듈레이트부 260, 및/또는 시험 모듈 에뮬레이트부 270으로서 기능시키는 전체 모듈 에뮬레이션 DLL이 로드된다. DLL이 로드되면, SimTester는, 시스템 제어 장치 110으로부터의 접속을 기다린다. 시스템 제어 장치 110은, 테스트 계획을 로드하면 SimTester에 접속한다. 테스트 계획은, 오프라인 구성 파일을 포함한다. 시스템 제어 장치 110이 테스트 계획의 데이터를 실제로 로드하기 전에, 오프라인 구성 파일을 SimTester에 넘겨주고, 초기화를 완료할 수 있도록 한다. 오프라인 구성 파일의 로드에 성공하면, SimTester는 DUT 모델을 로드하고, DUT 접속부 280 및 DUT 시뮬레이트부 200으로서 시험 모듈 에뮬레이트부 270 등의 모듈 에뮬레이터에 접속시킨다. 이 시점에서, 시뮬레이션은 패턴의 독출 및 실행의 준비가 가능하게 된다.
테스트 계획이 언로드되면, SimTester는 DUT 모델을 언로드하는 신호를 받고, 새로운 오프라인 구성 파일의 접수를 기다린다.
B. 2. 2 구성 파일
SimTester는, 2개의 구성 파일을 사용한다. 제1의 파일은, 시뮬레이션 구성 파일이다. 본 파일은, 시뮬레이션 중에 어떠한 모듈이 사용 가능하게 될까를 특정한다. 제2의 파일은, 오프라인 구성 파일이다. 이 파일은, 어느 DUT 모델이 로드되고, 어떻게 시험 장치에 접속될까를 특정한다.
B. 2. 2. 1 시뮬레이션 구성 파일
도 14 내지 15는, 시뮬레이션 구성 파일의 일 예이다. 시뮬레이션 구성 파일은, 계층적으로 블록화되어 있다.
글로벌 섹션 5010은, 전체적인 설정을 행한다. InitialVoltage 파라미터는, 시뮬레이션 개시 시에 있어서의 전체 배선의 전압의 초기값을 설정한다. 이 값은 드라이브되어 있지 않은 배선의 전압 레벨의 지정에도 이용된다.
RecoveryRate 파라미터는, 옵션의 파라미터이고, 2개의 아날로그 신호가 대향하여 드라이브된 경우에 이용된다. 보다 구체적으로는, 당해 파라미터는, 2개의 아날로그 신호에 의해 배선이 드라이브된 경우에, 일정한 전압 레벨이 될 때까지 요구되는 시간을 결정하기 위해 사용되는, 시간 당의 전압 변화량을 지시한다.
모듈 에뮬레이션 섹션 5020은, 모듈 DLL을 지정하고, 당해 모듈 DLL의 설정을 행한다.
Waveform 섹션은, 각 모듈에 있어서 사용되는 파형 모델을 선언한다. 파형 모델은 DUT의 단자에 접속되는 채널 마다에 Step(스텝 파형), Slew(슬류 파형), 및 Analog (아날로그) 등을 지정한다.
Port 섹션은, 시험 에뮬레이트 장치 190을 동기 모듈 에뮬레이트부 250, 동기 접속 모듈 에뮬레이트부 260, 및/또는 시험 모듈 에뮬레이트부 270 등으로서 기능시키는 모듈 에뮬레이터의 인스턴스를 선언한다.
LogicalPort 파라미터는, 실제 기계에 있어서의 어떤 채널의 불량에 의해 당해 채널에 삽입되어 있던 모듈을 다른 채널에 바꿔 넣은 경우에, 모듈 에뮬레이터 상에서 당해 바꿔 넣음을 기술하기 위해 설치된다.
모듈 에뮬레이션 섹션 5020에 있어서의 Params 섹션은, 모듈 DLL로 넘겨주어야 할 파라미터를 기술한다.
B. 2. 2. 2 오프라인 구성 파일
도 16 및 17은, 오프라인 구성 파일의 일 예이다.
글로벌 섹션 5110은, 전체적인 설정을 행한다. RegSelect 파라미터는, 패턴의 경로 추적 시에 추적해야 하는 레지스터를 선택하는 파일을 지정한다.
DUT 모델 섹션 5120은, DUT 모델이 되는 DLL 파일의 지정과, 각종 설정을 행한다.
Waveform 파라미터는, 각 DUT의 단자 마다에, 파형 모델을 설정한다. DUT 블록은 주로 Params 블록과, PinConnections 블록을 포함한다.
Params 블록은, 모듈 DLL에 넘겨주어야 할 파라미터를 기술한다. PinConnections 블록은, 시험 장치의 자원과 DUT의 단자와의 접속을 지정한다. 즉 예를 들면, "L3.11 10 1.0ms"는, 논리 포트 3의 11번째의 자원은 DUT의 단자 10에 접속되고, 배선 지연이 1.0ns인 것을 도시한다. 여기서, 논리 포트는, 예를 들면 모듈이 실장되는 포트이고, 자원은 당해 모듈 내에 설치된 채널 대응 논리 등이다.
B. 3 개발자 전용의 사양
시험 장치의 모듈과 DUT 모델은, 도 5에 도시된 모듈 에뮬레이트 프로그램의 프레임워크를 이용하고, 예를 들면 C++ 언어의 클래스 함수로부터 파생하는 것으로써 작성된다. 이 파생에 수반하여, 기본 클래스 중의 몇 개의 가상 함수를 실장할 필요가 있다. 또한, 이 프레임워크는 시험 장치의 모듈과 DUT 모델 사이의 I/O의 실현을 용이하게 하는 함수를 포함한다. 그리고, 이 프레임워크에 따름으로써, 얻어진 DLL을 시험 에뮬레이트 장치 190 상에서 다른 컴포넌트에 접속하고 에뮬레이션을 행할 수 있다.
B. 3. 1 오프라인 프레임워크 클래스의 구조
도 18은, 도 5에 도시된 클래스 계층 구조를 보다 상세하게 기술한 클래스 계층 구조 5200이다. ThirdPartyModule 클래스와 ThirdPartyDUT 클래스 내의 각 메소드는 가상 메소드이고, 본 모델의 행동을 정의하기 위해 실제 메소드의 실장을 요구한다. SimComponent 기본 클래스 내의 createDomain, registerDomain, releaseDomain, getDomain, registerEvent, 및 raiseEvent 메소드는, 시험 에뮬레이트 장치 190을 스케쥴 제어부 275 등으로서 기능시키는, DUT 100의 소프트웨어 시뮬레이션 엔진을 억세스하는 서비스를 제공한다.
도 19는, 당해 프레임워크에 있어서 인터페이스로서 이용되는 채널 객체의 사용 다이어그램을 도시한다. 시험 장치의 모듈 및 DUT 모델은, SimChannel 객체의 배열을 포함한다. SimChannel 객체의 각 인터페이스는, 당해 모델의 I/O 채널에 대응한다. I/O 채널은, SimChannelID 객체를 이용해 식별된다. SimChannel 클래스는, 모듈과 DUT 모델이, 출력 채널로 출력해야 할 전압의 타이밍을 기입하고, 입력 채널로부터 특정의 타이밍에서 전압을 독출하는데 이용된다. 입력 채널로부터 어떤 시간 윈도우의 사이에 입력된 신호의 엣지를 스캔하는 경우, SimChannel::getWaveformIter 메소드를 호출하고, SimWaveformIter의 인스턴스를 얻을 수 있다. 그리고, SimWaveformIter 객체는, 호출 측의 루틴에, 유한한 시간 윈도우 전체의 엣지에 있어서 반복 처리를 수행하는 것을 가능하게 한다.
도 20은, 당해 프레임워크에 있어서 인터페이스로서 이용되는 이벤트 객체의 사용 다이어그램을 도시한다. 이벤트는, 당해 프레임워크와 제3자 모델과의 사이에 있어서의 통신에 이용된다. 이벤트는, SimEvent 클래스에 의해 캡슐화되어 있다. SimEvent의 인스턴스는, SimEventMgr 클래스에 의해 생성된다. 일반적으로는, 하나의 모델은 SimEventMgr의 하나의 인스턴스를 갖는다. 그러나, 만약 하나의 모델이 다른 모듈에 특별한 이벤트를 송신하는 경우, 복수의 SimEventMgr 인스턴스가 필요하게 된다.
B. 3. 2 시험 장치의 모듈의 실장
본 절에서는, 단순한 디지털 드라이버 모듈 및 디지털 스트로브 모듈을 예로서, 모듈의 실장 방법을 설명한다.
도 21은, 시험 장치의 모듈의 일 예로서, 단순한 디지털 모듈의 기본 클래스를 도시한다. 디지털 드라이버 모듈 및 디지털 스트로브 모듈의 클래스는, 기본 클래스의 파생 클래스로서 생성한다.
개발자는, 당해 기본 클래스에 기초해서, 기본 클래스의 구성자(constructor), 채널 객체를 리턴하는 getChannel 메소드, 모듈의 메모리 어드레스 공간을 설정하는 setBaseAddress 메소드, 버스 스위치 140의 슬롯 번호를 설정하는 setBusNumber 메소드, 인터럽트의 금지/허가를 설정하는 lockInterrupt/unlockInterrupt 메소드, 및 모듈의 메모리 어드레스 공간을 억세스하는 read/write 메소드 등을 실장한다.
B. 3. 2. 1 로컬 이벤트
오프라인의 시뮬레이션은, 이벤트 반응으로 수행된다. 즉, 각 모듈은 이벤트를 등록한다. 그리고, 이벤트가 발생하면 이벤트를 등록한 모듈의 handleEvent 메소드가 호출된다.
이벤트는, SimEvent 클래스에 의해 정의되고, 동기 이벤트 및 비동기 이벤트로 분류된다. 비동기 이벤트는, 동시에 시스템 이벤트 및 로컬 비동기 이벤트로 분류된다. 시스템 이벤트는, 예를 들면, 시스템 인터럽트, 및 패턴 생성의 종료 등이다.
B. 3. 2. 1. 1 로컬 비동기 이벤트
로컬 비동기 이벤트는 모듈 간의 통신에 이용된다. 이 이벤트에는, 시간은 관련되지 않는다. 비동기 이벤트의 수신을 요구하는 경우, 모듈은 오버로드된, 시간의 인수를 가지지 않는 registerEvent 메소드에 의해 이벤트를 등록한다. 비동기 이벤트를 발생하는 경우, 모듈은 raiseEvent 메소드를 호출한다. 비동기 이벤트를 수신하는 모듈은, 오버로드된 시간의 인수를 갖지 않는 handleEvent 메소드 내에 있어서 이벤트 처리를 행한다.
B. 3. 2. 1. 2 로컬 동기 이벤트
로컬 동기 이벤트(동기 이벤트)는, 모듈이 읽기 이벤트 또는 쓰기 이벤트, 즉 신호의 스트로브 또는 드라이브를 스케쥴링하기 위해 이용된다. 동기 이벤트는, 모듈이 특정의 타이밍에서 통지를 받기 위해 이용되고, 모듈 간의 통신에는 이용되지 않는다.
B. 3. 3 단순한 디지털 드라이버 모듈
도 22는, 단순한 디지털 드라이버 모듈의 클래스 선언을 도시한다. 개발자는, 당해 클래스의 구성자, 공급자/모듈의 정보를 리턴하는 getModuleIDs 메소드, 및 드라이버 모듈을 초기화하는 initEvents 메소드 등을 실장한다.
도 23은, 디지털 드라이버 모듈의 handleEvent 메소드의 일 예이다. 디지털 드라이버 모듈은, 현재의 사이클에 있어서, 전체의 채널에 엣지(edge)를 기입한다. 이러한 기입은, SimChannel 객체의 배열인 m_channels의 각 요소에 있어서의 set 메소드에 의해 수행된다. SimChannel 객체는, set 메소드 외에, off 메소드 및 end 메소드를 갖는다. off 메소드는 신호의 드라이브를 중지한다. end 메소드는, 당해 채널이 소정의, 즉 예를 들면 사이클 기간의 신호의 생성을 종료한 것을 프레임워크에 통지한다. 이러한 통지를 받으면, 채널의 반대측의 컴포넌트, 즉 예를 들면 DUT 접속부 280에 대해 채널의 독출을 지시하는 신호가 통지된다. 그 결과, 생성된 신호가 당해 컴포넌트에 의해 독출된다. 일반적으로는, 사용자는, 복수의 set 메소드에 의해 소정의 기간의 전압을 특정한 후, 당해 기간의 최후에 end 메소드를 1회 호출함으로써, 당해 기간의 신호를 생성해 전달하게 할 수 있다. 또한, set 메소드 및 end 메소드의 관계에 있어서는, B. 3. 5에서 상세히 설명한다.
B. 3. 4 단순한 디지털 스트로브 모듈
도 24는, 단순한 디지털 스트로브 모듈의 클래스 선언을 도시한다. 개발자는, 디지털 드라이버 모듈과 마찬가지로, 구성자, getModuleID 메소드, initEvents 메소드 등을 실장한다. 여기서, 디지털 스트로브 모듈에 있어서는, DUT의 출력값 및 기대치의 비교 결과를 패일 메모리에 격납하기 위해, read 및 write 메소드를 변경한다.
도 25는, 디지털 스트로브 모듈의 handleEvent 메소드의 일 예이다. 디지털 스트로브 모듈은, SimChannel의 read 메소드를 이용해서, 특정의 타이밍에 있어서의 당해 채널의 전압을 독출한다. 그리고, 사이클 기간의 처리를 종료한 후, SimEventMrg 객체에 다음 사이클의 종료 타이밍을 통지하고 이벤트의 발생을 요구하는 동시에, registerEvent 메소드에 의해 당해 이벤트를 등록한다.
B. 3. 5 DUT 모델의 실장
DUT 모델은, 이벤트 반응형이 아닌 점을 제외하고, 시험 장치의 모듈과 같은 순서에 의해 작성할 수 있다. 따라서, DUT 모델의 기본 클래스 SimComponentStepped는, initEvents 메소드, handleEvent 메소드, 및 버스 I/O 메소드를 실장 가능하게 한다. 패턴 실행 중에 있어서의 DUT 모델의 행동을 정의하기 위해, 함수 run을 실장할 필요가 있다.
도 26은, 시험 장치에 의해 구동된 8개의 배선이, 시험 장치에 다시 입력되는 DUT 모델의 클래스 정의를 도시한다. 개발자는, 당해 클래스에 기초하여, 구성자, getChannel 메소드, 및 run 메소드등을 실장한다.
도 27은, 본 DUT 모델의 run 메소드의 일 예를 도시한다. run 메소드는, 개시 시각 및 종료 시각의 2개의 인수를 갖는다. 이들 인수에 의해, DUT 모델은, 입력 단자로부터의 입력에 기초해서 내부 상태를 개시 시각으로부터 종료 시각까지 진행하고, DUT의 내부 상태의 변화의 결과에 기초해 데이터를 출력한다. 입력은, SimChannel 객체를 통해 수행되고, 출력은, SimChannel 객체에 대해 보내진다. 여기서, 출력은 종료 시각의 후에 정리해서 수행된다.
run 메소드는, 입력 단자를 스캔하고, DUT의 내부 상태를 갱신하고, DUT의 출력 채널에 데이터를 출력하는 단계를 포함한다. 여기서, 실행의 시간 윈도우 외에 출력 신호의 하강 엣지(fall edge)가 존재하는 경우에도, 하강 엣지를 출력 채널에 set 메소드에 의해 기입할 필요가 있다. 그리고, end 메소드가 호출되는 때에는, 출력 신호는 하강한 상태이어야 한다. 이에 의해, 출력 신호의 값이 변화하지 않기 때문에, 당해 채널의 반대측의 컴포넌트는, 종료 시각 까지의 채널의 전압치를 바르게 독출할 수 있다. 이를 보장하기 위해, 프레임워크는 최후의 end 메소드의 호출 후에, 당해 end 메소드보다 앞선 시각에 있어서의 채널로의 기입을 금지한다.
B. 3. 6 오프라인의 DLL 인터페이스
다음으로, 당해 프레임워크에 기초한 모듈 및 DUT 모델의 DLL을 구축하고, 이러한 모델의 인터페이스를 생성하는 함수, 및 처리의 종료 후에 클린업하는 함수를 보내기(esport)한다. 이에 의해, 시험 장치의 모듈을 에뮬레이트하는 DLL 및 DUT를 에뮬레이트하는 DLL을 생성할 수 있다.
(보충 설명 C) 시스템 버스 억세스 라이브러리의 사양 예
C. 1 개요
도 28은, 실환경 6000 및 에뮬레이트 환경 6050에 있어서의 시스템 버스 억세스 라이브러리 6014의 위치 지정을 도시합니다. DUT 100의 실환경 6000 및 시험 에뮬레이트 장치 190에 의한 에뮬레이트 환경 6050에 있어서 공통으로 이용됩니다.
도 28A는, 실환경 6000(온라인 환경)에 있어서의 시스템 버스 억세스 라이브러리 6014의 위치 지정을 도시합니다. 소프트웨어 6010은, 도 1에 도시된 사이트 제어 장치 130 상에서 동작하는 소프트웨어입니다. 소프트웨어 6010은, 시험 장치 10의 시험을 제어하는 프로그램으로부터 HLC(High Level Command)를 수취하고 해석해 하드웨어 6030으로의 억세스 명령을 생성하는 HLC 처리부 6012와, 억세스 명령에 기초해 통신 처리를 수행하는 통신 라이브러리 및 통신 라이브러리의 지시에 기초해 시스템 버스(본 예에 있어서는 PCI 버스)를 억세스하는 버스 억세스 라이브러리를 포함하는 시스템 버스 억세스 라이브러리 6014와, 시스템 버스 억세스 라이브러리 6014의 지시에 기초해 시스템 버스를 제어하는 PCI 버스 드라이버 6016을 포함합니다.
하드웨어 6030은, 도 1에 도시된 사이트 제어 장치 130이 갖는 버스 IF 6032와, 버스 스위치 140과, 동기 모듈 150, 동기 접속 모듈 160 및/또는 시험 모듈 170 등을 포함합니다. 사이트 제어 장치 130의 버스 슬롯에 접속된 버스 IF 6032는, PCI 버스 드라이버 6016에 의해 발행된 억세스를 버스 스위치 140을 거쳐 동기 모듈 150 및/또는 시험 모듈 170 등의 모듈로 송신하고, 당해 억세스의 처리를 수행하게 합니다.
도 28B는, 에뮬레이트 환경 6050(오프라인 환경)에 있어서의 시스템 버스 억세스 라이브러리 6014의 위치 지정을 도시합니다. 오프라인 프로세스 6060은, 도 1에 도시된 사이트 제어 장치 130 또는 시험 에뮬레이트 장치 190 상에서 동작하는 소프트웨어이고, 시험 에뮬레이트 장치 190을 사이트 제어 에뮬레이트부 230으로서 기능시킵니다. 오프라인 프로세스 6060은, 소프트웨어 6010에 있어서 하드웨어 6030을 제어하는 대신에 시험 장치 에뮬레이트 프로세스 6080을 제어하도록 변경된 프로세스입니다. 오프라인 프로세스 6060은, 소프트웨어 6010과 실질적으로 같은 HLC 처리부 6012 및 시스템 버스 억세스 라이브러리 6014를 이용하고, 소프트웨어 6010의 사용자에 대해 소프트웨어 6010과 공통의 사용자 레벨 인터페이스를 제공합니다.
시험 장치 에뮬레이트 프로세스 6080은, 시험 장치 10을 에뮬레이트하는 프로세스이고, 버스 스위치 140을 에뮬레이트하는 시스템 버스 에뮬레이터 6084와, 동기 모듈 150, 동기 접속 모듈 160, 및/또는 시험 모듈 170을 에뮬레이트하는 모듈 에뮬레이터 6086을 포함합니다. 시스템 버스 에뮬레이터 6084는, 시험 에뮬레이터 장치 190을 버스 스위치 에뮬레이트부 240으로서 기능시킵니다. 모듈 에뮬레이터 6086은, 시험 에뮬레이트 장치 190을 동기 모듈 에뮬레이트부 250, 동기 접속 모듈 에뮬레이트부 260 및/또는 시험 모듈 에뮬레이트부 270으로서 기능시킵니다. 이하, 명기하지 않는 한, "모듈"은 온라인 환경에 있어서의 동기 모듈 150, 동기 접속 모듈 160, 및 시험 모듈 170과, 오프라인 환경에 있어서의 동기 모듈 에뮬레이트부 250, 동기 접속 모듈 에뮬레이트부 260, 및 시험 모듈 에뮬레이트부 270의 총칭으로서 사용합니다.
C. 2 모듈 제어 범용 함수
본 장에서는, 사이트 제어 장치 130 상에서 동작하고 동기 모듈 150, 동기 접속 모듈 160, 및/또는 시험 모듈 170을 제어하는 모듈 드라이버에서 이용할 수 있는 범용적인 기능을 설명합니다. 모듈 드라이버 내에서는, 당 라이브러리를 이용해서 각종 모듈 내의 레지스터와 메모리를 억세스하고, 디바이스 측정에 필요한 데이터를 읽기/쓰기합니다. 본 장에서 설명하는 중요한 기능은 다음과 같습니다.
1. 프로그램 I/O를 이용한 버스 억세스
2. DMA 기능을 이용한 버스 억세스
3. 인터럽트 처리
4. 라이브러리/시스템 버스의 제어
C. 2. 1 프로그램 IO를 이용한 버스 억세스
시스템 버스의 억세스는, 버스 상에 접속된 각 모듈의 레지스터로 MW(머신 워드(Machine Word))를 직접 기입하는 방식과, 각 모듈로 HLC(High Level Command)를 전송하는 방식의 두 종류가 있습니다. 어느 경우에도, Address와 Data가 시스템 버스 상을 흐릅니다. 각 모듈 측에서 Address에 의해 HLC로 인식된 경우, 각 모듈 측에서 그 HLC에 대응한 처리를 실행합니다. 사이트 CPU(사이트 제어 장치 130)으로부터 각 모듈로의 데이터 기입은, 사이트 CPU에 접속되어 있는 각 모듈로 같은 데이터가 일제히 송출되고, 각 모듈 측에서 해당하는 데이터를 거둬 들입니다.
시스템 버스와 각 모듈 내에는 FIFO가 배치되어 있고, 사이트 CPU로부터 각 모듈로 데이터를 전송한 경우, 각 모듈의 쓰기 동작의 종료를 기다리지 않고 CPU의 쓰기 동작을 종료합니다(posted write). 데이터가 실제로 레지스터에 격납될 때 까지의 시간은, CPU로부터 타겟인 레지스터 사이에 존재하는 FIFO의 빈 상태에 의해 영향을 받습니다. 전체의 모듈에 대해 데이터가 확실히 도달했다는 것을 보장하는 경우는, FIFO의 플래시 대기 기능을 이용해 주십시오. 각 모듈 내의 레지스터의 읽기를 이용해서 FIFO를 플래시하는 경우는, 읽기 대상의 모듈의 FIFO만 플래시된 것을 보장할 수 있습니다.
오프라인의 시스템 버스 에뮬레이터 6084에는 FIFO는 없습니다. 그 때문에 FIFO를 갖지 않는 모듈 에뮬레이터 6086에 대해 PIO의 쓰기를 실행한 경우, 모듈 에뮬레이터 6086의 레지스터에 데이터를 격납한 후 함수로부터 돌아옵니다.
또한, 온라인과 같이 FIFO를 갖는 모듈 에뮬레이터 6086에 데이터를 기입하면, 모듈 에뮬레이터 6086의 FIFO에 데이터를 격납한 후, 바로 쓰기 처리를 종료합니다.
C. 2. 1. 1 프로그램 I/O를 이용한 쓰기
모듈의 레지스터에 대해 데이터를 기입합니다. 사이트 CPU는, 기입한 데이터가 모듈에 도달하기 전에 쓰기 동작을 종료합니다(posted write).
ㆍ명칭: BCL_GBI_write
ㆍ형식: int BCL_GBI_write(unsigned int address, unsigned int data);
ㆍ인수: address (머신 워드의 어드레스), data (기입할 데이터)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 2. 1. 2 프로그램 I/O를 이용한 읽기
모듈의 레지스터의 데이터를 독출합니다. 사이트 CPU는, 데이터가 독출될 때까지 대기합니다. 또한, CPU로부터 타겟인 레지스터 사이에 존재하는 FIFO 내의 데이터가 플래시될 때까지 대상 레지스터의 읽기는 대기됩니다.
ㆍ명칭: BCL_GBI_read
ㆍ형식: int BCL_GBI_read(unsigned int address, unsigned int*data);
ㆍ인수: address (머신 워드의 어드레스), data (데이터를 읽어 들이는 변수로의 포인터)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 2. 1. 3 프로그램 I/O를 이용한 블록 쓰기
모듈 레지스터에 대해 정리한 데이터를 기입합니다. 데이터의 포맷은 어드레스와 데이터를 쌍으로 지정합니다. 시스템 버스는 쓰기 사이클을 지정된 횟수 분 실행합니다.
복수의 임의 어드레스에 대해 데이터를 기입하는 경우는, 매회 BCL_GBI_write() 함수로 기입하는 것 보다도 고속으로 실행할 수 있습니다. 이는, 함수 호출이 1회에 그치는 점과 복수 회의 배타 처리가 수행되지 않기 때문입니다.
ㆍ명칭: BCL_GBI_writeBlock
ㆍ형식: int BCL_GBI_writeBlock(unsigned int*address, unsigned int*data, unsigned int number);
ㆍ인수: address (어드레스가 격납되어 있는 배열로의 포인터), data (데이터가 격납되어 있는 배열로의 포인터), number (기입할 데이터의 수)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 2. 1. 4 프로그램 I/O를 이용한 블록 읽기
모듈의 레지스터의 데이터를 정리한 단위로 독출합니다. 레지스터의 어드레스는 불연속인 값으로 지정이 가능합니다. 시스템 버스는 읽기 사이클을 지정된 횟수 분 실행합니다.
복수의 임의 어드레스로부터 데이터를 기입하는 경우는, 매회 BCL_GBI_read() 함수로 읽어 들이는 것보다도 고속으로 실행할 수 있습니다. 이는, 함수 호출이 1회에 그치는 점과 복수 회의 배타 처리가 수행되지 않기 때문입니다.
ㆍ명칭: BCL_GBI_readBlock
ㆍ형식: int BCL_GBI_readBlock(unsigned int*address, unsigned int*data, unsigned int number);
ㆍ인수: address (어드레스가 격납되어 있는 배열로의 포인터), data (데이터를 읽어들이는 배열로의 포인터), number (기입할 데이터의 수)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 2. 1. 5 프로그램 I/O를 이용한 연속 블록 쓰기
모듈의 등간격 어드레스에 배치된 레지스터에 대해 데이터 열을 기입합니다. 지정된 개시 어드레스부터 데이터 열을 기입하고, 데이터를 기입할 때마다 어드레스로 오프셋 값이 가산됩니다. 오프셋 값은 0부터 0x3ffffff까지 지정할 수 있습니다. 시스템 버스는 쓰기 사이클을 지정된 횟수 분 실행합니다.
복수의 고정 오프셋 어드레스에 대해 데이터를 기입하는 경우는, BCL_GBI_writeBlock() 함수로 기입하는 것보다도 고속으로 실행할 수 있습니다. 이는, 어드레스의 가산이 하드웨어에서 수행됨으로써, PCI 버스 상을 흐르는 패킷 스가 적어지기 때문입니다.
ㆍ명칭: BCL_GBI_writeSeq
ㆍ형식: int BCL_GBI_writeSeq(unsigned int address, unsigned int*data, unsigned int number, unsigned int offset);
ㆍ인수: address (머신 워드의 어드레스), data (데이터가 격납되어 있는 배열로의 포인터), number (기입할 데이터의 수), offset (데이터 전송마다 어드레스에 가산될 오프셋 값)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 2. 1. 6 프로그램 I/O를 이용한 연속 블록 읽기
모듈의 등간격 어드레스에 배치된 레지스터로부터 데이터 열을 읽어 들입니다. 지정된 개시 어드레스부터 데이터 열을 독출하고, 데이터를 독출할 때마다 어드레스로 오프셋 값이 가산됩니다. 오프셋 값은 0부터 0x3ffffff까지 지정할 수 있습니다. 시스템 버스는 읽기 사이클을 지정된 횟수 분 실행합니다.
복수의 고정 오프셋 어드레스에 대해 데이터를 읽어 들이는 경우는, BCL_GBI_readBlock() 함수로 읽어 들이는 것보다도 고속으로 실행할 수 있습니다. 이는, 어드레스의 가산이 하드웨어에서 수행됨으로써, PCI 버스 상을 흐르는 패킷 스가 적어지기 때문입니다.
ㆍ명칭: BCL_GBI_readSeq
ㆍ형식: int BCL_GBI_readSeq(unsigned int address, unsigned int*data, unsigned int number, unsigned int offset);
ㆍ인수: address (머신 워드의 어드레스), data (데이터를 읽어 들이기 위한 배열로의 포인터), number (읽어들일 데이터의 수), offset (데이터 전송마다 어드레스에 가산될 오프셋 값)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 2. 2 DMA 기능을 이용한 버스 억세스
DMA를 이용한 데이터 전송에는, 이하의 동기/비동기 쓰기/읽기의 4종류의 함수를 준비하고 있습니다. 또한, 각각에 관해서, 버스트(burst) DMA/싱글 DMA를 선택할 수 있습니다.
(1) 동기/비동기 DMA
동기 DMA의 경우, 함수는 DMA의 종료를 기다려 함수를 종료합니다. 함수는 DMA의 종료를 기다려 함수는 종료하지만, 전송 데이터는 시스템 버스 IF와 모듈 내의 FIFO에 남아있는 경우가 있습니다.
비동기 DMA의 경우, 함수는 DMA의 종료를 기다리지 않고 함수를 종료합니다. 이 때문에, 데이터 영역의 라이프 사이클을 DMA가 종료할 때까지 이용자측에서 보장할 필요가 있습니다. 또한, 비동기 DMA의 전송이 종료되지 않은 중에, DMA를 이용하는 함수가 더 실행된 경우, 전의 DMA 전송이 종료할 때까지 함수는 대기됩니다. 비동기 DMA 처리의 완료를 기다리기 위한 식별 정보로서, 전송 ID가 마련되어 있습니다. 이 전송 ID는, 32 비트의 부호없는 데이터이고, 32 비트를 넘는 횟수의 DMA 전송이 있는 경우는, 0으로 돌아가 재이용됩니다.
(2) 버스트/싱글 DMA
버스트 DMA 전송은, 시스템 버스 상을 버스트 전용의 패킷으로 데이터를 전송합니다. 이러한 전송은, 하나의 어드레스와 N개(최대 64)의 데이터를 한 조의 패킷으로해서, 지정된 데이터가 종료할 때까지 패킷을 반복 전송합니다. 이 때문에 고속 전송이 가능합니다.
또한, DMA 전송 시에 각종 모듈 측의 어드레스의 증가치를 지정할 수 있습니다. 이 증가치는, 2조째 이후의 패킷 전송시에, 패킷의 선두 어드레스의 산출에 이용합니다. 즉, (패킷의 어드레스)=((지정한 증가치)*(전회의 패킷 중의 데이터의 개수))+(전회의 패킷의 선두 어드레스)가 됩니다.
또한, 버스트 전송이 가능한 레지스터는, 모듈에 의존하기 때문에, 이용 가능한 레지스터인가 아닌가의 확인이 필요합니다.
싱글 DMA 전송은, 시스템 버스 상을 프로그램 IO와 같이 어드레스와 데이터가 셋트로 전송됩니다. 이 때문에, 전송 속도가 버스트 DMA 보다 낮지만, 어느 레지스터에 대응해도 전송이 가능합니다. DMA 전송시, 시스템 버스 측의 어드레스의 증가치를 지정할 수 있습니다. 이 증가치는, 어드레스를 발생할 때마다 어드레스에 증가치가 가산됩니다.
오프라인의 경우, 버스트 전송을 지정해도 내부적으로는 싱글 전송으로서 취급하는 사양도 취할 수 있습니다. 이 경우, 버스트 전송을 지원하지 않는 레지스터로의 전송도 가능합니다. 그러나, 온라인에서의 이용을 고려하면, 하드웨어에서 버스트 전송을 지원하지 않는 레지스터에 대한 이용은 피해 주십시오. 또한, 오프라인의 동기/비동기 DMA는 온라인과 같습니다.
C. 2. 2. 1 DMA 기능을 이용한 동기 쓰기
사이트 CPU의 메모리 상에 배치한 데이터를 DMA를 이용해 각 모듈로 전송합니다. 이 함수는, 동기 쓰기에서 버스트/싱글의 지정이 가능합니다.
ㆍ명칭: BCL_GBI_writeSyncDMA
ㆍ형식: int BCL_GBI_writeSyncDMA(unsigned int address, unsigned int*data, unsigned int number, unsigned int offset, unsigned int mode);
ㆍ인수: address (머신 워드의 어드레스), data (데이터가 격납되어 있는 배열로의 포인터), number (기입할 데이터의 수), offset (데이터 전송마다 어드레스에 가산될 오프셋 값), mode (버스트/싱글의 동작 모드)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 2. 2. 2 DMA 기능을 이용한 동기 읽기
모듈 내의 레지스터로부터 DMA를 이용하여 데이터를 사이트 CPU의 메모리 상으로 독출합니다. 이 함수는, 동기 읽기에서 버스트/싱글의 지정이 가능합니다.
ㆍ명칭: BCL_GBI_readSyncDMA
ㆍ형식: int BCL_GBI_readSyncDMA(unsigned int address, unsigned int*data, unsigned int number, unsigned int offset, unsigned int mode);
ㆍ인수: address (머신 워드의 어드레스), data (데이터를읽어들이기 위한 배열로의 포인터), number (읽어들일 데이터의 수), offset (데이터 전송마다 어드레스에 가산될 오프셋 값), mode (버스트/싱글의 동작 모드)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 2. 2. 3 DMA 기능을 이용한 비동기 쓰기
사이트 CPU의 메모리 상에 배치한 데이터를 DMA를 이용해 각종 모듈로 전송합니다. 이 함수는, 비동기 쓰기에서 버스트/싱글의 지정이 가능합니다.
ㆍ명칭: BCL_GBI_writeAsyncDMA
ㆍ형식: int BCL_GBI_writeAsyncDMA(unsigned int address, unsigned int*data, unsigned int number, unsigned int offset, unsigned int mode, int*transferID);
ㆍ인수: address (머신 워드의 어드레스), data (데이터가 격납되어 있는 배열로의 포인터), number (기입할 데이터의 수), offset (데이터 전송마다 어드레스에 가산될 오프셋 값), mode (버스트/싱글의 동작 모드), transferID (전송 종료 대기 ID의 포인터)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 2. 2. 4 DMA 기능을 이용한 비동기 읽기
모듈 내의 레지스터로부터 DMA를 이용해 데이터를 사이트 CPU의 메모리 상으로 독출합니다. 이 함수는, 비동기 읽기에서 버스트/싱글의 지정이 가능합니다.
ㆍ명칭: BCL_GBI_readAsyncDMA
ㆍ형식: int BCL_GBI_readAsyncDMA(unsigned int address, unsigned int*data, unsigned int number, unsigned int offset, unsigned int mode);
ㆍ인수: address (머신 워드의 어드레스), data (데이터를 읽어 들이기 위한 배열로의 포인터), number (읽어들일 데이터의 수), offset (데이터 전송마다 어드레스에 가산될 오프셋 값), mode (버스트/싱글의 동작 모드), transferID (전송 종료 대기 ID의 포인터)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 2. 2. 5 비동기 DMA 전송의 종료 대기
DMA를 이용한 비동기 전송의 전송 종료를 기다립니다. 이 함수는, DMA가 종료한 경우 또는 지정한 시간이 경과한 경우, 함수를 종료합니다. 시간의 지정 범위는, 분해능이 1ms의 32 비트 부호있는 타이머를 사용하기 때문에, 0~(INT_MAX/1000)이 됩니다. 이 범위 외의 지정을 행한 경우에는, BCL_GBI_INFINITE를 지정한 것과 같이 취급하게 됩니다.
또한, transferID를 잘못된 값으로 지정한 경우는, 바로 BCL_GBI_OK를 리턴하고, 이 함수를 종료합니다.
ㆍ명칭: BCL_GBI_waitDMA
ㆍ형식: int BCL_GBI_waitDMA(unsigned int transferID, double timeOut);
ㆍ인수: transferID (비동기 모드 전송 시에 리턴된 전송 종료 대기 ID), timeOut (대기 시간. BCL_GBI_INFINITE: DMA가 종료할 때까지 대기)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (DMA가 에러), BCL_GBI_TIMEOUT (타임아웃)
C. 2. 2. 6 비동기 DMA 전송의 상태
비동기 DMA 전송의 현재의 상태를 통지합니다. 잘못된 transferID를 지정한 경우, DMA의 종료와 같은 상태를 통지합니다.
ㆍ명칭: BCL_GBI_getConditionDMA
ㆍ형식: int BCL_GBI_getConditionDMA(unsigned int transferID);
ㆍ인수: transferID (비동기 모드 전송 시에 리턴된 전송 종료 대기 ID)
ㆍ반환값: BCL_GBI_OK (DMA가 정상 종료), BCL_GBI_ERROR (DMA가 에러), BCL_GBI_BUSY (DMA 실행 중)
C. 2. 3 인터럽트 처리
시스템 버스 억세스 라이브러리에서는, 인터럽트의 기본적인 조작을 수행하기 위한 기능을 제공합니다. 시스템 억세스 라이브러리를 이용해서 조작할 수 있는 인터럽트에는 다음의 4종류가 있습니다.
1. Bus 에러 인터럽트 (온라인만)
최대 65개의 인터럽트 핸들러를 등록하는 것이 가능합니다.
2. Bus 타임아웃 인터럽트
최대 65개의 인터럽트 핸들러를 등록하는 것이 가능합니다.
3. Sync 에러 인터럽트(온라인만)
최대 65개의 인터럽트 핸들러를 등록하는 것이 가능합니다.
4. 각종 모듈로부터 발생하는 인터럽트.
각 버스 번호에서 최대 2개의 인터럽트 핸들러를 등록하는 것이 가능합니다.
상기 인터럽트는, 동시에 인터럽트 전용 쓰레드에서 실행됩니다.
시스템 버스 I/F가 발생하는, Bus 에러, Bus 타임아웃, Sync 에러의 인터럽트는, 인터럽트 전용 쓰레드의 내부에서 인터럽트를 디스에이블로 하고, 그 후, 각각 등록되어 있는 대상의 인터럽트 핸들러를 순차 실행합니다. 대상이 되는 인터럽트 핸들러의 실행 종료 후, 인터럽트 전용 쓰레드는 인터럽트의 요인을 삭제하고, 내부에서 인터럽트를 인에이블로 합니다.
또한, 인터럽트의 접수는 인터럽트 쓰레드 내에서의 인에이블/디스에이블과는 별도로 당 라이브러리의 함수에서 인에이블/디스에이블의 제어가 가능합니다. 각종 모듈에서 발생하는 인터럽트는, 인터럽트 전용 쓰레드가 내부에서 인터럽트를 디스에이블로 하고, 당해 모듈에 대해 인터럽트의 잠금을 실행합니다. 그 후, 인터럽트를 발생한 버스 번호에 대응하는 인터럽트 핸들러를 순차 실행합니다. 대상이 되는 인터럽트 핸들러의 실행 종료 후, 인터럽트 전용 쓰레드는 당해 모듈에 대해 인터럽트의 요인을 삭제합니다. 그 후 인터럽트의 잠금을 해제하고, 내부에서 인터럽트를 인에이블로 합니다.
또한, 인터럽트의 접수는 인터럽트 쓰레드 내에서의 인에이블/디스에이블과는 별도로 당 라이브러리의 함수에서 인에이블/디스에이블의 제어가 가능합니다. 인터럽트의 금지/허가는, 시스템 버스 I/F 보드 상과, 각종 모듈 상에서, 각각 제어가 가능합니다.
시스템 버스 I/F 보드 측에서의 금지/허가는, 단순히 모듈로부터의 인터럽트를 인에이블/디스에이블하고 있습니다. 모듈 측에서의 인터럽트의 잠금/잠금 해제는 모듈 측의 인터럽트의 발생원에서 인터럽트의 발생을 제어합니다. 잠금 중은, 모듈 내에서 새로운 인터럽트의 발생을 금지하고, 동시에 인터럽트 함수의 상태의 변화도 금지되어 있습니다. 잠금 해제 후, 모듈 측에서의 인터럽트의 발생이 가능하게 됩니다.
C. 2. 3. 1 모듈 인터럽트 핸들러의 등록
모듈로부터 인터럽트가 발생한 때의 인터럽트 핸들러 함수를 등록합니다. 등록된 함수는 인터럽트가 발생한 경우, 인터럽트 핸들러 전용의 쓰레드에서 실행됩니다. 인터럽트 핸들러는, 버스 번호와 함께 등록되고, 인터럽트를 올린 모듈의 버스 번호와 등록되어 있는 버스 번호가 같은 인터럽트 핸들러를 기동합니다.
또한, 인터럽트 핸들러에 대해, 등록시에 설정한 값을 동시에 리턴합니다. 인터럽트 핸들러는, 각 버스 번호마다 2개 등록할 수 있습니다. 버스 번호는 1 부터 64까지 지정 가능합니다. 등록에 성공하면 반환값에 키 번호가 리턴됩니다. 이 키 번호를 사용해서 등록을 수행하면, 그 키 번호의 인터럽트 핸들러의 재등록 및, 삭제가 가능하게 됩니다. 키 번호를 0으로 해서 등록하면, 비어있는 키 번호에 인터럽트 핸들러가 설정됩니다. 비어있는 키 번호가 없는 경우는, 에러가 되고 반환값으로 -1이 리턴됩니다. 인터럽트 핸들러의 실행은, 2개 등록되어 있는 경우, 이른 키 번호부터 순차 실행됩니다.
인터럽트 핸들러의 삭제는, 콜백(callback) 함수의 어드레스를 BCL_GBI_IGNORE_MODULE_HANDLER로서 등록합니다. 인터럽트 쓰레드는, BCL_GBI_IGNORE_MODULE_HANDLER의 인터럽트 핸들러는 실행하지 않습니다. 각 버스 번호 마다의 2개의 인터럽트 핸들러가 양쪽 모두 BCL_GBI_IGNORE_MODULE_HANDLER가 된 경우는, 그 버스 번호의 인터럽트 핸들러는 초기 상태로 돌아갑니다. (억세스 라이브러리 내의 표준 인터럽트 핸들러가 설정됩니다.)
ㆍ명칭: BCL_GBI_addInterrupHandler
ㆍ형식: int BCL_GBI_addInterrupHandler(unsigned int BusNo, int KeyNo, BCL_GBI_IGNORE_MODULE_HANDLER handler, unsigned int arg);
ㆍ콜백 함수: void InterrupRoutine(unsigned int BusNo, unsigned int Factor, unsigned int arg);
ㆍ인수: BusNo (버스 번호), KeyNo (키 번호), handler (콜백 함수의 어드레스), arg (인터럽트 핸들러로 넘겨주는 값), Factor (인터럽트 요인 (각 모듈에 의존))
ㆍ반환값: 인터럽트 핸들러가 등록된 키 번호 (-1의 경우, 등록에 실패[정확하지 않은 버스 번호 또는 키 번호])
C. 2. 3. 2 버스 에러 인터럽트 핸들러의 등록
시스템 버스에서 에러가 발생한 경우의 에러 처리 함수를 등록합니다. 시스템 버스에서 에러가 발생한 경우, 인터럽트 쓰레드는 등록되어 있는 함수를 실행합니다. 또한, 시스템 버스 에러가 발생한 경우, 인터럽트 쓰레드에서 인터럽트를 삭제합니다. 인터럽트 핸들러 내에서의 삭제는 필요하지 않습니다.
Bus 에러의 인터럽트 핸들러는 65개까지 등록이 가능합니다. 등록에 성공하면 반환값으로 키 번호가 리턴됩니다. 이 키 번호를 사용해서 등록하면, 그 키 번호의 인터럽트 핸들러의 재등록 및, 삭제가 가능해 집니다. 키 번호를 0으로 해서 등록하면, 비어있는 키 번호에 인터럽트 핸들러가 설정됩니다. 비어있는 키 번호가 없는 경우는 에러가 되고, 반환값으로 -1이 리턴됩니다. 인터럽트 핸들러의 삭제는, 콜백 함수의 어드레스를 BCL_GBI_IGNORE_BUSERROR_HANDLER로서 등록합니다.
인터럽트 쓰레드는, BCL_GBI_IGNORE_BUSERROR_HANDLER의 인터럽트 핸들러는 실행하지 않습니다. 65개의 인터럽트 핸들러가 전체 BCL_GBI_IGNORE_BUSERROR_HANDLER가 된 경우는, 초기 상태로 돌아갑니다. (억세스 라이브러리 내의 표준 인터럽트 핸들러가 설정됩니다.) Bus 에러는 시스템 버스 상의 통신 에러와 하드웨어의 고장 등이 원인이 되어 발생합니다.
또한, 오프라인에서는 Bus에서 에러가 발생하는 요인이 없기 때문에, 본 함수에서 등록된 핸들러는 동작하지 않습니다.
ㆍ명칭: BCL_GBI_addBusErrorInterrupHandler
ㆍ형식: int BCL_GBI_addBusErrorInterrupHandler(int KeyNo, BCL_GBI_BUSERROR_HANDLER handler, unsigned int arg);
ㆍ콜백 함수: void BusErrorInterrupRoutine(unsigned int arg);
ㆍ인수: KeyNo (키 번호), handler (콜백 함수의 어드레스), arg (인터럽트 핸들러로 넘겨주는 값)
ㆍ반환값: 인터럽트 핸들러가 등록된 키 번호 (-1의 경우, 등록에 실패[정확하지 않은 버스 번호 또는 키 번호])
C. 2. 3. 3 버스 타임아웃 인터럽트 핸들러의 등록
시스템 버스에서 타임아웃이 발생한 경우의 에러 처리 함수를 등록합니다. 시스템 버스에서 타임아웃이 발생한 경우, 인터럽트 쓰레드는 등록되어 있는 함수를 실행합니다. 또한, 시스템 버스에서 타임아웃이 발생한 경우, 인터럽트 쓰레드에서 인터럽트를 삭제합니다.
인터럽트 핸들러 내에서의 삭제는 필요하지 않습니다. Bus 타임아웃의 인터럽트 핸들러는 65개까지 등록이 가능합니다. 등록에 성공하면 반환값으로 키 번호가 리턴됩니다. 이 키 번호를 사용해서 등록하면, 그 키 번호의 인터럽트 핸들러의 재등록 및, 삭제가 가능해 집니다. 키 번호를 0으로 해서 등록하면, 비어있는 키 번호에 인터럽트 핸들러가 설정됩니다. 비어있는 키 번호가 없는 경우는 에러가 되고, 반환값으로 -1이 리턴됩니다. 인터럽트 핸들러의 삭제는, 콜백 함수의 어드레스를 BCL_GBI_IGNORE_TIMEOUT_HANDLER로서 등록합니다.
인터럽트 쓰레드는, BCL_GBI_IGNORE_TIMEOUT_HANDLER의 인터럽트 핸들러는 실행하지 않습니다. 65개의 인터럽트 핸들러가 전체 BCL_GBI_IGNORE_TIMEOUT_HANDLER가 된 경우는, 초기 상태로 돌아갑니다. (억세스 라이브러리 내의 표준 인터럽트 핸들러가 설정됩니다.) Bus 타임아웃은 케이블이 탈락된 상태에서의 읽기 시와 수신처가 없는 경우의 읽기 시에 발생합니다. 또한, 하드웨어의 고장 등도 그 원인이 됩니다.
ㆍ명칭: BCL_GBI_addTimeoutInterrupHandler
ㆍ형식: int BCL_GBI_addTimeoutInterrupHandler(int KeyNo, BCL_GBI_TIMEOUT_HANDLER handler, unsigned int arg);
ㆍ콜백 함수: void TimeoutInterrupRoutine(unsigned int address, unsigned int Factor, unsigned int arg);
ㆍ인수: KeyNo (키 번호), handler (콜백 함수의 어드레스), address (타임아웃이 발생한 머신 워드의 어드레스), Factor (타임아웃이 발생한 요인 [BCL_GBI_FACTOR_MODULE: 모듈의 읽기, BCL_GBI_FACTOR_CONFIG: 구성의 읽기, BCL_GBI_FACTOR_WRITE: 전체의 쓰기]), arg (인터럽트 핸들러로 넘겨주는 값)
ㆍ반환값: 인터럽트 핸들러가 등록된 키 번호 (-1의 경우, 등록에 실패[정확하지 않은 버스 번호 또는 키 번호])
C. 2. 3. 4 Sync 에러 인터럽트 핸들러의 등록
시스템 버스에서 Sync 에러가 발생한 경우의 에러 처리 함수를 등록합니다. 시스템 버스에서 Sync 에러가 발생한 경우, 인터럽트 쓰레드는, 등록되어 있는 함수를 실행합니다. 또한, 시스템 버스에서 Sync 에러가 발생한 경우, 인터럽트 쓰레드에서 인터럽트를 삭제합니다. 인터럽트 핸들러 내에서의 삭제는 필요하지 않습니다.
Sync 에러의 인터럽트 핸들러는 65개까지 등록이 가능합니다. 등록에 성공하면 반환값으로 키 번호가 리턴됩니다. 이 키 번호를 사용해서 등록하면, 그 키 번호의 인터럽트 핸들러의 재등록 및, 삭제가 가능해 집니다. 키 번호를 0으로 해서 등록하면, 비어있는 키 번호에 인터럽트 핸들러가 설정됩니다. 비어있는 키 번호가 없는 경우는 에러가 되고, 반환값으로 -1이 리턴됩니다.
인터럽트 핸들러의 삭제는, 콜백 함수의 어드레스를 BCL_GBI_IGNORE_SYNCERROR_HANDLER로서 등록합니다. 인터럽트 쓰레드는, BCL_GBI_IGNORE_SYNCERROR_HANDLER의 인터럽트 핸들러는 실행하지 않습니다. 65개의 인터럽트 핸들러가 전체 BCL_GBI_IGNORE_SYNCERROR_HANDLER가 된 경우는, 초기 상태로 돌아갑니다. (억세스 라이브러리 내의 표준 인터럽트 핸들러가 설정됩니다.) Sync 에러는 소프트웨어 설정의 잘못과 하드웨어의 설계 불량에 의해 발생합니다. 또한, 하드웨어의 고장 등도 그 원인이 됩니다.
오프라인에서는 Bus에서 Sync 에러가 발생하는 원인이 없기 때문에, 본 함수에서 등록된 핸들러는 동작하지 않습니다.
ㆍ명칭: BCL_GBI_addSyncErrorInterrupHandler
ㆍ형식: int BCL_GBI_addSyncErrorInterrupHandler(int KeyNo, BCL_GBI_SYNCERROR_HANDLER handler, unsigned int arg);
ㆍ콜백 함수: void SyncErrorInterrupRoutine(unsigned int arg);
ㆍ인수: KeyNo (키 번호), handler (콜백 함수의 어드레스), arg (인터럽트 핸들러로 넘겨주는 값)
ㆍ반환값: 인터럽트 핸들러가 등록된 키 번호 (-1의 경우, 등록에 실패[정확하지 않은 버스 번호 또는 키 번호])
C. 2. 4 라이브러리/시스템 버스의 제어
C. 2. 4. 1 FIFO의 플래시 대기
사이트 CPU에 접속되어 있는 시스템 버스와 접속되어 있는 전체 모듈의 FIFO 플레시를 기다립니다. FIFO는, 시스템 버스 I/F 보드 내와 모듈 내에 존재합니다. 이 함수를 종료한 때, 이 함수의 실행에 들어가기 직전의 FIFO 내에 존재하는 데이터가 전체 모듈에 쓰여진 것을 의미합니다. 이 함수의 실행 중, CPU는 PCI 버스에 대해 읽기 사이클을 발행하기 위해, FIFO가 플래시 될 때까지 버스를 하드적으로 잠그고 있습니다. 이 때문에 DMA 전송과 인터럽트의 접수에 지연이 생기는 경우가 있습니다. 또한, 이 함수의 실행에 의해 타임아웃이 발생하는 경우가 있습니다.
오프라인의 경우는, 시스템 버스 에뮬레이터의 FIFO는 존재하지 않습니다. 또한, 모듈 내의 FIFO의 존재는 공급자에 의존적입니다.
ㆍ명칭: BCL_GBI_waitFlushFIFO
ㆍ형식: int BCL_GBI_waitFlushFIFO(void);
ㆍ인수: 없음
ㆍ반환값: BCL_GBI_OK (플래시 종료), BCL_GBI_ERROR (에러)
C. 2. 4. 2 모듈의 리셋
사이트 CPU에 접속되어 있는 모듈에 대해, 리셋을 행합니다. 이 함수 내에서는, 다음의 처리를 실행합니다.
1. 시스템 버스로 버스 리셋 패킷의 송출.
2. 시스템 버스로 인터럽트의 삭제용 패킷의 송출.
3. 시스템 버스로 인터럽트의 잠금 해제 패킷의 송출.
또한, 리셋의 동작과 걸리는 시간에 관해서는, 각 모듈에 의존합니다.
ㆍ명칭: BCL_GBI_resetModule
ㆍ형식: int BCL_GBI_resetModule(void);
ㆍ인수: 없음
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 2. 4. 3 라이브러리의 초기화
시스템 버스 억세스 라이브러리의 초기화를 행합니다. 시스템 버스 억세스 라이브러리를 이용하는 경우, 초기에 이 초기화 처리를 실행할 필요가 있습니다. 또한, 이 함수 내에서는 다음의 처리를 실행합니다.
1. 억세스 라이브러리의 변수의 초기화
2. 인터럽트 핸들러를 실행하기 위한 쓰레드를 기동.
또한, 시스템 버스 I/F 상의 함수에서 시스템 버스 에뮬레이터와의 프로세스 간 통신을 준비합니다. 시스템 버스 에뮬레이터와 30초 이내에 접속이 확립되지 않으면 타임아웃이 됩니다.
ㆍ명칭: BCL_GBI_init
ㆍ형식: int BCL_GBI_init(unsigned int siteNo, int mode);
ㆍ인수: siteNo (사이트 번호 [1~8]), 모드(온라인/오프라인의 지정. BCL_GBI_ONLINE: 온라인, BCL_GBI_OFFLINE: 오프라인)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (사이트 번호가 규정 외), BCL_GBI_TIMEOUT (오프라인에 있어서 30초 이내에 시스템 버스 에뮬레이터와 접속할 수 없음)
C. 2. 4. 4 라이브러리의 개방
시스템 버스 억세스 라이브러리의 사용 종료의 처리를 행합니다.
ㆍ명칭: BCL_GBI_finish
ㆍ형식: int BCL_GBI_finish(unsigned int siteNo);
ㆍ인수: siteNo (사이트 번호 [1~8])
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (사이트 번호가 규정 외)
C. 2. 4. 5 온라인/오프라인의 식별 (BCL_GBI_isOnline)
현재 동작 중인 시스템 버스 억세스 라이브러리가 온라인에서 동작 중인지, 오프라인에서 동작 중인지를 식별합니다.
ㆍ명칭:
ㆍ형식: int BCL_GBI_isOnline(void);
ㆍ인수: 없음
ㆍ반환값: BCL_GBI_ONLINE (온라인), BCL_GBI_OFFLINE (오프라인)
C. 2. 4. 6 GBSC와의 통신 가능 여부의 확인
시스템 버스 I/F와 GBSC (시스템 제어 장치 110)와의 통신이 가능한지의 확인을 행한다. 이렇게 해서, GBSC의 전원이 들어가 있는 것을 확인할 수 있습니다.
ㆍ형식: int BCL_GBI_getConnected(unsigned int*connect);
ㆍ인수: connect (통신 가능 여부의 결과를 격납하는 변수로의 포인터)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 2. 4. 7 상세 에러 정보의 취득
시스템 버스 억세스 라이브러리가 BCL_GBI_ERROR를 리턴했을 때의 상세 에러 정보를 리턴합니다.
ㆍ명칭: BCL_GBI_getLastError
ㆍ형식: unsigned int BCL_GBI_getLastError(void);
ㆍ인수: 없음
ㆍ반환값: 부호가 없는 32 비트 에러 정보를 반환합니다.
bit31 : 에러 코드의 종류를 특정하는 값
0: 윈도우의 에러 코드 (System Error Codes를 참조)
1: 억세스 라이브러리 고유의 에러 코드
bit30-24 : 에러가 발생한 함수 내의 장소를 특정하는 값 (내부 정보)
bit23-16 : 에러가 발생한 억세스 라이브러리 함수를 특정하는 값
bit15-0 : 에러 코드
bit31이 0일 때: getLastError()의 하위 16bit의 값
bit31이 1일 때: 억세스 라이브러리의 내부 에러 값
C. 2. 4. 8 상세 에러 정보 이력의 취득
현재까지 시용된 시스템 버스 억세스 라이브러리가 BCL_GBI_ERROR를 리턴한 때의 상세 에러 정보를 최대로 과거 16회분까지 리턴합니다.
ㆍ형식: unsigned int BCL_GBI_getPreviousError(unsigned int*error, unsigned int size);
ㆍ명칭: BCL_GBI_getPreviousErrors
ㆍ인수: error (에러 정보를 격납하는 배열 변수의 포인터. 에러 정보의 포맷은 BCL_GBI_getLastError()와 같음), size (에러 정보를 격납하는 배열 변수의 크기)
ㆍ반환값: 격납된 에러 정보의 수를 반환합니다.
C. 3 타이머 함수
본 장에서는, 시스템 버스 I/F 보드 상의 타이머 하드웨어를 이용하기 위한 함수에 관하여 설명한다. 시스템 버스 I/F 보드 상에 실장된 하드웨어의 타이머의 분해능(分解能)은 1[us]입니다.
C. 3. 1 경과 시간의 독출
C. 3. 1. 1 시간의 독출
시스템 버스 억세스 라이브러리의 초기화가 실행되고 나서의 경과 시간을 초[s]로 독출합니다.
<제약 사항>
분해능은 1[us]이지만, double형으로 변환해서 독출하기 때문에, double의 유효 자리수*1[us] 이상의 값이 독출된 경우, 1[us]의 분해능을 얻을 수 없는 경우가 있습니다. double의 유효 자리수는 10진의 15자리이고, 이론상, 시스템 버스 억세스 라이브러리를 초기화하고 나서 약 31년 경과한 경우, 1[us]의 분해능을 얻을 수 없게 됩니다.
하드웨어의 카운터는 64 비트로 동작하기 때문에, 시스템 버스 억세스 라이브러리를 초기화하고나서 이론상 약 58만년후에 다시 0이 됩니다. 프로그램상, 일정한 간격으로 독출을 행한 경우의 차이(경과 시간)는, CPU의 부하 상태, PCI 버스의 부하 상태 및 FIFO의 상태에 따라 일정한 값이 되지 않는 경우가 있습니다.
<오프라인>
오프라인에서는, 오프라인 프로세스가 동작하는 사이트 CPU가 기동하고 나서의 경과 시간을 초[s]로 독출합니다.
ㆍ명칭: BCL_TMR_readTime
ㆍ형식: int BCL_TMR_readTime(double *time);
ㆍ인수: time (시스템 버스 억세스 라이브러리가 초기화되고 나서의 경과 시간[s])
ㆍ반환값: BCL_TMR_OK (정상 종료)
C. 3. 1. 2 타이머 카운터의 독출
시스템 버스 억세스 라이브러리의 초기화가 실행되고 나서의 경과 시간을 카운터 값으로 독출합니다. 카운터 값은 1[us] 경과할 때마다 1이 가산됩니다.
<제약 사항>
하드웨어의 카운터는 64비트로 동작하기 때문에, 시스템 버스 억세스 라이브러리를 초기화하고나서 이론상 약 58만년 후에 다시 0이 됩니다. 또한, 프로그램상 일정한 간격으로 독출을 행한 경우의 차이(경과 시간)는, CPU의 부하 상태, PCI 버스의 부하 상태 및 FIFO의 상태에 따라 일정한 값이 되지 않는 경우가 있습니다.
오프라인에서는, 오프라인 프로세스가 동작하는 사이트 CPU가 기동하고 나서의 경과 시간을 초[s]로 독출합니다.
ㆍ명칭: BCL_TMR_readCount
ㆍ형식: int BCL_TMR_readTime(unsigned_int64*count);
ㆍ인수: count (시스템 버스 억세스 라이브러리가 초기화되고 나서의 카운트 값[1[us]/1카운트])
ㆍ반환값: BCL_TMR_OK (정상 종료)
C. 3. 2 시간 대기 관련 함수
C. 3. 2. 1 시간 대기
지정된 시간의 경과 후, 함수는 돌아옵니다. 대기 시간(time)으로 1[us] 미만의 값을 지정한 경우, 함수는 즉시 되돌아옵니다. CPU의 부하 상태에 따라 지정된 시간 보다 경과 시간이 길게 지나고 나서 돌아오는 경우가 있습니다.
오프라인에서는, 1[ms] 미만은 절사한 값으로 시간 대기를 실행합니다. 예를 들어, 대기 시간으로 1[ms] 미만의 값을 지정한 경우, 함수가 즉시 돌아옵니다. 또한, 최대 대기 시간은, 4294967.296[s](약 49일)입니다.
ㆍ명칭: BCL_TMR_wait
ㆍ형식: int BCL_TMR_wait(double time);
ㆍ인수: time (대기 시간을 초 단위[s]로 지정)
ㆍ반환값: BCL_TMR_OK (정상 종료), BCL_TMR_ERROR (대기가 취소됨)
C. 3. 2. 2 시간 대기 함수의 취소
현재 실행 중인 전체의 BCL_TMR_wait 함수의 실행을 취소합니다. 복수의 쓰레드(thread)로 동작하고 있는 경우, 전체의 BCL_TMR_wait 함수에 관하여 실행이 취소됩니다.
ㆍ명칭: BCL_TMR_cancel
ㆍ형식: int BCL_TMR_cancel(void);
ㆍ인수: 없음
ㆍ반환값: BCL_TMR_OK (정상 종료)
C. 4 구성(configuration)/진단 전용 함수
본 장에서는 하드웨어의 구성 및 하드웨어 진단에 이용되는 함수를 설명합니다. 하드웨어의 구성 및 하드웨어 진단 이외에 이용한 경우, 각종 모듈로의 데이터 전송과 인터럽트(interrupt)의 처리가 바르게 처리될 수 없게 됩니다. 시스템 버스 I/F 보드, 버스 스위치, 각종 모듈 등 하드웨어 구조를 숙지한 후, 하드웨어의 구성 및 하드웨어 진단 함수 내에서 이용해 주십시오.
당 라이브러리에서는 실행시에 실행 시간 에러가 되지 않지만, 버스 구성 함수 및 하드웨어 진단 함수 이외에서 이용한 경우, 당 라이브러리 및 시스템 버스 I/F 보드의 디바이스 드라이브의 인터럽트에 관한 동작은 보장되지 않습니다.
C. 4. 1 구성 제어(특수 함수)
본 절에서 설명하는 함수는 시스템 버스 I/F 및 각종 모듈의 구성에서 이용하는 함수입니다. 부주의하게 조작하면 각종 모듈로의 데이터 전송을 할 수 없게 되므로, 하드웨어와 소프트웨어의 구조를 숙지한 후, 이용해 주십시오.
C. 4. 1. 1 버스 구성 쓰기(bus configuration write)
시스템 버스 I/F 및 각종 모듈의 구성 레지스터에 대해 데이터를 기입합니다. 또한, 구성 데이터가 시스템 버스 I/F 및 각종 모듈에 격납된 후, 이 함수를 종료합니다.
ㆍ명칭: BCL_GBI_writeBusConfig
ㆍ형식: int BCL_GBI_writeBusConfig(unsigned int address, unsigned int config);
ㆍ인수: address (구성 데이터의 어드레스), config (기입할 구성 데이터)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 4. 1. 2 버스 구성 읽기(bus configuration read)
시스템 버스 I/F 및 각종 모듈의 구성 레지스터로부터 데이터를 독출합니다.
ㆍ명칭: BCL_GBI_writeBusConfig
ㆍ형식: int BCL_GBI_readBusConfig(unsigned int address, unsigned int *config);
ㆍ인수: address (구성 데이터의 어드레스), config (구성 데이터를 격납하는 변수로의 포인터)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 4. 1. 3 버스 스위치 구성의 설정 종료
온라인에서는, 아무 것도 실행되지 않습니다.
오프라인에서는, 버스 스위치의 구성 쓰기를 완료한 때, 당 함수를 실행함으로써 오프라인의 버스의 접속이 절환됩니다.
ㆍ명칭: BCL_GBI_decideBusMatrix
ㆍ형식: int BCL_GBI_decideBusMatrix(void);
ㆍ인수: 없음
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 4. 2 인터럽트 제어(특수 함수)
본 절에서 설명하는 함수는, 버스 구성 및 하드웨어 진단에 이용하는 함수이다. 시스템 버스 I/F 보드 상의 인터럽트를 직접 제어하기 때문에, 부주의하게 조작하면 시스템 버스 I/F 보드의 디바이스 드라이버와 당 라이브러리가 인터럽트의 처리를 바르게 실행할 수 없게 됩니다.
C. 4. 2. 1 Bus/IF 보드 인터럽트 인에이블(Bus/IF board interrupt enable)
각종 인터럽트 신호를 시스템 버스 I/F 보드 상에서 인에이블(enable)로 합니다. 인터럽트 신호에는, 각종 모듈로부터의 인터럽트, 버스 에러, 버스 타임아웃, Sync 에러의 4종류가 있습니다. 이러한 신호는 아래에서 정의된 비트 정보로서 설정할 수 있습니다. 복수의 인터럽트 신호를 지정하는 경우는, 논리합으로서 설정합니다. 이 함수는 시스템 버스 I/F 상에서 인터럽트가 인에이블로 된 것을 확인 후, 종료합니다.
ㆍ명칭: BCL_GBI_interruptEnable
ㆍ형식: int BCL_GBI_interruptEnable(unsigned int status);
ㆍ인수: status (인터럽트 신호의 지정. BCL_GBI_INT_MODULE: 모듈로부터의 인터럽트, BCL_GBI_INT_BUSERROR : Bus 에러, BCL_GBI_INT_TIMEOUT: Bus 타임아웃, BCL_GBI_INT_SYNCERROR : Sync 에러)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 4. 2. 2 버스 I/F 보드 인터럽트 디스에이블(Bus/IF board interrupt disable)
각종 인터럽트 신호를 시스템 버스 I/F 보드 상에서 디스에이블(disable)로 합니다. 인터럽트 신호에는, 각종 모듈로부터의 인터럽트, 버스 에러, 버스 타임아웃, Sync 에러의 4종류가 있습니다. 이러한 신호는 아래에서 정의된 비트 정보로서 설정할 수 있습니다. 복수의 인터럽트 신호를 지정하는 경우는, 논리합으로서 설정합니다. 이 함수는 시스템 버스 I/F 상에서 인터럽트가 디스에이블로 된 것을 확인 후, 종료합니다.
ㆍ명칭: BCL_GBI_interruptDisable
ㆍ형식: int BCL_GBI_interruptDisable(unsigned int status);
ㆍ인수: status (인터럽트 신호의 지정. BCL_GBI_INT_MODULE: 모듈로부터의 인터럽트, BCL_GBI_INT_BUSERROR : Bus 에러, BCL_GBI_INT_TIMEOUT: Bus 타임아웃, BCL_GBI_INT_SYNCERROR : Sync 에러)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 4. 2. 3 버스 I/F 보드 인터럽트 읽기
각종 인터럽트 신호를 시스템 버스 I/F 보드 상에서 읽습니다. 인터럽트 신호에는 각종 모듈로부터의 인터럽트, 버스 에러, 버스 타임아웃, Sync 에러의 4종류가 있습니다. 이러한 신호는 아래에서 정의된 비트 정보로서 읽혀집니다.
ㆍ명칭: BCL_GBI_interruptRead
ㆍ형식: int BCL_GBI_interruptRead(unsigned int*status);
ㆍ인수: status (인터럽트 신호를 읽어 들이는 변수로의 포인터. BCL_GBI_INT_MODULE: 모듈로부터의 인터럽트, BCL_GBI_INT_BUSERROR : Bus 에러, BCL_GBI_INT_TIMEOUT: Bus 타임아웃, BCL_GBI_INT_SYNCERROR : Sync 에러)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 4. 2. 4 버스 I/F 보드 인터럽트 삭제(clear)
각종 인터럽트 신호를 시스템 버스 I/F 보드 상에서 삭제합니다. 인터럽트 신호에는 각종 모듈로부터의 인터럽트, 버스 에러, 버스 타임아웃, Sync 에러의 4종류가 있습니다. 이러한 신호는 아래에서 정의된 비트 정보로서 설정할 수 있습니다. 복수의 인터럽트 신호를 지정하는 경우는, 논리합으로서 설정합니다.
모듈로부터의 인터럽트(BCL_GBI_INT_MODULE)만이 지정된 경우는, 이 함수가 실행되기 직전의 각 모듈의 FIFO를 플래시한 후, 시스템 버스 I/F 상의 인터럽트를 삭제하고, 시스템 버스 I/F 상에서 인터럽트가 삭제된 것을 확인한 후, 종료합니다.
ㆍ명칭: BCL_GBI_interruptClear
ㆍ형식: int BCL_GBI_interruptClear(unsigned int status);
ㆍ인수: status (인터럽트 신호의 지정. BCL_GBI_INT_MODULE: 모듈로부터의 인터럽트, BCL_GBI_INT_BUSERROR : Bus 에러, BCL_GBI_INT_TIMEOUT: Bus 타임아웃, BCL_GBI_INT_SYNCERROR : Sync 에러)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 4. 2. 5 Sync하는 모듈 수의 설정
사이트 CPU에 접속되어 있는 시스템 버스와 접속되어 있는 전체 모듈의 수를 시스템 버스 I/F 보드 상에 설정합니다. 이러한 설정을 행함으로써, FIFO를 Sync하는 모듈의 수가 결정됩니다.
오프라인의 경우는, 시스템 버스 에뮬레이터의 FIFO는 존재하지 않습니다. 또한, 모듈 내의 FIFO의 존재는 공급자에 의존합니다.
ㆍ명칭: BCL_GBI_setSyncCount
ㆍ형식: int BCL_GBI_setSyncCount(unsigned int number);
ㆍ인수: number (Sync하는 모듈의 수)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 4. 2. 6 인터럽트의 설정 상태의 제공(serve)
시스템 버스 I/F 보드 상의 인터럽트 신호의 설정 상태(인에이블/디스에이블) 및, 모듈로부터의 인터럽트 발생의 설정 상태(잠금(lock)/잠금 해제(unlock))를 제공합니다. 이 함수는 진단 등에서 인터럽트 조작을 수행하기 전에, 현재의 설정 상태를 제공할 목적으로 사용됩니다. 제공된 내용은 BCL_GBI_restoreInterruptCondition() 함수로 복구됩니다. 이 함수가 2회 이상 실행된 경우는, 이전에 제공된 설정 상태는 취소되고, 최후에 제공된 설정 상태만 유효하게 됩니다.
오프라인에서는 무효인 기능때문에, 본 함수 내에서는 아무 것도 수행하지 않습니다.
ㆍ명칭: BCL_GBI_saveInterruptCondition
ㆍ형식: int BCL_GBI_saveInterruptCondition(Void);
ㆍ인수: 없음
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 4. 2. 7 인터럽트의 설정 상태의 복구
BCL_GBI_saveInterruptCondition() 함수에 의해 제공된 시스템 버스 I/F 보드 상의 인터럽트 신호의 설정 상태(인에이블/디스에이블) 및 각종 모듈로부터의 인터럽트 발생의 설정 상태(잠금/잠금 해제)를 복구합니다. 이 함수는 진단 등에서 인터럽트 조작을 행한 후에, 조작 전의 설정 상태로 돌아갈 목적으로 사용됩니다. BCL_GBI_saveInterruptCondition() 함수에 의한 제공이 수행되지 않고 본 함수가 실행된 경우는, 에러를 리턴합니다. 이러한 함수가 2회 이상 실행되어도 에러는 되지 않고, 항상 최후에 제공된 설정 상태가 복구됩니다.
오프라인에서는 무효인 기능때문에, 본 함수 내에서는 아무 것도 수행하지 않습니다.
ㆍ명칭: BCL_GBI_restoreInterruptCondition
ㆍ형식: int BCL_GBI_restoreInterruptCondition(Void);
ㆍ인수: 없음
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 4. 2. 8 모듈 인터럽트 요인의 독출
각종 모듈로부터 인터럽트가 발생한 경우의 요인과 그 요인수를 독출합니다. 인터럽트의 요인은 최대 256개(4바이트/요인) 있습니다. 이 중 발생한 인터럽트의 요인수 분(分)만큼 요인을 리턴합니다. 요인의 독출용 버퍼는, 최대 요인수 분의 인터럽트가 발생한 경우를 고려해서 최대 요인수(unsigned int 형으로 256개) 확보할 필요가 있습니다.
오프라인에서는 무효인 기능때문에, 본 함수 내에서는 아무 것도 수행하지 않습니다.
ㆍ명칭: BCL_GBI_readInterruptFactor
ㆍ형식: int BCL_GBI_readInterruptFactor(Unsigned int*Factor, int*number);
ㆍ인수: Factor(인터럽트 요인을 읽어들이는 배열로의 포인터), number(인터럽트 요인수를 격납하는 포인터)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 5 비공개 함수
비공개 함수입니다.
C. 5. 1. 1 비동기 DMA 전송의 취소(비공개)
실행 중의 비동기 DMA 전송을 취소합니다. 동기 DMA는 취소할 수 없습니다. 또한, 잘못된 transfer ID를 지정한 경우, DMA의 취소는 실행되지 않고, 정상 종료의 상태가 돌아옵니다.
ㆍ명칭: BCL_GBI_cancelDMA
ㆍ형식: int BCL_GBI_cancelDMA(Unsigned int transferID);
ㆍ인수: transferID(비동기 모드 전송 시에 리턴된 전송 종료 대기 ID)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 5. 1. 2 PCI 베이스 어드레스의 취득(비공개)
시스템 버스 I/F 보드에서 사용하는 PCI 버스의 어드레스를 취득합니다. 이 함수는, 시스템 버스 I/F 보드의 진단 등에서 사용됩니다. 이 어드레스는, 취득한 프로세스에서만 사용 가능합니다. 취득한 어드레스가 NULL인 경우는, 본 라이브러리의 초기 설정이 수행되지 않습니다. BCL_GBI_init 함수에 의해 라이브러리의 초기화를 수행하고 나서 사용해 주십시오.
오프라인에서는 무효인 기능때문에, 본 함수 내에서는 아무 것도 수행하지 않습니다.
ㆍ명칭: BCL_GBI_exportPciBaseAddress
ㆍ형식: PULONG BCL_GBI_exportPciBaseAddress(void);
ㆍ인수: 없음
ㆍ반환값: NULL (에러), NULL 이외 (시스템 버스 I/F의 PCI 베이스 어드레스)
C. 5. 1. 3 모듈 인터럽트 잠금(비공개)
모듈로부터의 인터럽트의 발생을 발생원에서 금지합니다. 인터럽트의 잠금을 설정하면 이후 신규로 인터럽트의 발생을 모듈 측에서 금지합니다. 또한, 이 함수는 각 모듈에 잠금이 격납된 후 종료합니다.
ㆍ명칭: BCL_GBI_interruptLock
ㆍ형식: int BCL_GBI_interruptLock(void);
ㆍ인수: 없음
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 5. 1. 4 모듈 인터럽트 잠금 해제(비공개)
모듈로부터의 인터럽트의 발생을 발생원에서 허가합니다. 이 함수를 실행하면, 잠금 중에 발생을 기다리고 있던 인터럽트와 잠금 해제 이후의 인터럽트의 발생이 각종 모듈 측에서 허가로 됩니다.
ㆍ명칭: BCL_GBI_interruptUnlock
ㆍ형식: int BCL_GBI_interruptUnlock(void);
ㆍ인수: 없음
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 5. 1. 5 상세 에러 정보의 출력(비공개)
시스템 버스 억세스 라이브러리가 BCL_GBI_ERROR를 리턴한 때의 상세 에러 정보를 표준 출력 스트림으로 출력합니다.
ㆍ명칭: BCL_GBI_printLastError
ㆍ형식:void BCL_GBI_printLastError(void);
ㆍ인수: 없음
ㆍ반환값: 없음
C. 5. 1. 6 상세 에러 정보 이력의 출력(비공개)
현재까지 사용된 시스템 버스 억세스 라이브러리가 BCL_GBI_Error를 리턴한 때의 상세 에러 정보를 최대로 과거 16회 분까지 표준 출력 스트림으로 출력합니다.
ㆍ명칭: BCL_GBI_printPreviousErrors
ㆍ형식:void BCL_GBI_printPreviousErrors(void);
ㆍ인수: 없음
ㆍ반환값: 없음
C. 5. 1. 7 디버그ㆍ모드의 제어(비공개)
억세스 라이브러리에 실장된 디버그ㆍ모드의 제어를 행합니다.
ㆍ명칭: BCL_GBI_verbose
ㆍ형식:void BCL_GBI_verbose(int val);
ㆍ인수: val (디버그ㆍ모드의 지정)
ㆍ반환값: 없음
C. 5. 1. 8 경로 추적 기능의 인에이블(비공개)
시스템 버스 억세스 라이브러리의 경로 추적 기능을 인에이블로 합니다. 경로 추적 기능을 인에이블로 하면, 버스 억세스와 함수의 경로 추적이 유효로 됩니다. 버스 억세스의 경로 추적에서는, 억세스한 어드레스와 데이터 및, 읽기/쓰기의 식별이 표준 출력 스트림에 표시됩니다. 또한, 경로 추적을 실행하는 함수는, 임의의 함수를 등록하고 치환하는 것도 가능합니다.
버스 억세스의 경로 추적을 수행하는 억세스 라이브러리의 함수는 다음과 같습니다.
BCL_GBI_write
BCL_GBI_read
BCL_GBI_writeBlock
BCL_GBI_readBlock
BCL_GBI_writeSeq
BCL_GBI_readSeq
BCL_GBI_writeSyncDMA
BCL_GBI_readSyncDMA
BCL_GBI_writeAsyncDMA
BCL_GBI_readAsyncDMA
BCL_GBI_writeConfig
BCL_GBI_readConfig
함수의 경로 추적을 수행하는 억세스 라이브러리의 함수는 다음과 같습니다.
BCL_GBI_waitFlushFIFO
BCL_GBI_waitDMA
BCL_GBI_cancelDMA
BCL_GBI_conditionDMA
BCL_GBI_syncCount
BCL_GBI_resetModule
ㆍ명칭: BCL_GBI_ioTraceEnable
ㆍ형식: int BCL_GBI_ioTraceEnable(void);
ㆍ인수: 없음
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 5. 1. 9 경로 추적 기능의 디스에이블(비공개)
시스템 버스 억세스 라이브러리의 경로 추적 기능을 디스에이블로 합니다. 경로 추적 기능을 디스에이블로 하면, 버스 억세스와 함수의 경로 추적이 무효로 됩니다.
ㆍ명칭: BCL_GBI_ioTraceDisable
ㆍ형식: int BCL_GBI_ioTraceDisable(void);
ㆍ인수: 없음
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 5. 1. 10 경로 추적 기능의 어드레스 필터 지정(비공개)
버스 억세스의 기능 추적 기능에 관한 어드레스 필터의 지정을 행합니다. 필터의 지정 방법은 모드에 따라서 단일 지정 또는, 연속 지정이 가능합니다. 지정가능한 조합은 최대로 16 정도의 지정이 가능합니다. 어드레스 기능이 인에이블로 된 경우는, 이러한 조합 중 어느 것인가에 해당하는 어드레스만 추적 대상이 됩니다.
ㆍ명칭: BCL_GBI_ioTraceAddress
ㆍ형식: int BCL_GBI_ioTraceAddress(int mode, ...);
int BCL_GBI_ioTraceAddress(0);
int BCL_GBI_ioTraceAddress(1, addr);
int BCL_GBI_ioTraceAddress(2, start_addr, stop_addr);
ㆍ인수: mode (필터ㆍ모드의 지정. 0: 필터 지정의 해제, 1: 단일 어드레스 지정, 2: 연속 어드레스 지정), addr(단일 어드레스 지정 시의 대상 어드레스), start_addr (연속 어드레스 지정 시의 개시 어드레스), stop_addr (연속 어드레스 지정 시의 종료 어드레스)
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 5. 1. 11 어드레스 기능의 설정 정보 출력(비공개)
현재 설정되어 있는 어드레스 기능에 관한 설정 정보를 표준 출력 스트림으로 출력합니다. 경로 추적의 인에이블/디스에이블 상태와 어드레스 필터의 설정 상태를 확인할 수 있습니다.
ㆍ명칭: BCL_GBI_ioTraceShow
ㆍ형식: int BCL_GBI_ioTraceShow(void);
ㆍ인수: 없음
ㆍ반환값: 없음
C. 5. 1. 12 어드레스 기능의 간이 도움(help) 정보 출력(비공개)
어드레스 기능에 관한 간이 도움 정보를 표준 출력 스트림으로 출력합니다.
ㆍ명칭: BCL_GBI_ioTraceHelp
ㆍ형식: int BCL_GBI_ioTraceHelp(void);
ㆍ인수: 없음
ㆍ반환값: 없음
C. 5. 1. 13 경로 추적 함수의 등록(비공개)
경로 추적 기능을 실행하는 디폴트의 경로 추적 함수를 임의의 경로 추적 함수로 치환합니다. 경로 추적 기능이 인에이블로 되어 있으면, 직후의 경로 추적 대상의 억세스 라이브러리 함수로부터 등록된 함수가 실행됩니다. 등록할 수 있는 함수는 1개이고, 이미 등록되어 있는 경우는, 덧쓰기로 등록됩니다. 디폴트의 경로 추적 함수로 돌아가는 경우는, BCL_GBI_ioTraceResetHandler 함수를 실행합니다.
경로 추적이 수행되는 억세스 라이브러리의 함수는 다음과 같습니다.
BCL_GBI_write
BCL_GBI_read
BCL_GBI_writeBlock
BCL_GBI_readBlock
BCL_GBI_writeSeq
BCL_GBI_readSeq
BCL_GBI_writeSyncDMA
BCL_GBI_readSyncDMA
BCL_GBI_writeAsyncDMA
BCL_GBI_readAsyncDMA
BCL_GBI_writeConfig
BCL_GBI_readConfig
BCL_GBI_waitFlushFIFO
BCL_GBI_waitDMA
BCL_GBI_cancelDMA
BCL_GBI_conditionDMA
BCL_GBI_syncCount
BCL_GBI_resetModule
ㆍ명칭: BCL_GBI_ioTraceHandler
ㆍ형식: void BCL_GBI_ioTraceHandler(BCL_GBI_TRACE_HANDLER handler, void*arg);
ㆍ인수: handler (콜백 함수의 어드레스), arg (어드레스 핸들러로 건네주는 값)
ㆍ반환값: 없음
ㆍ반환값: BCL_GBI_OK (정상 종료), BCL_GBI_ERROR (에러)
C. 5. 1. 14 디폴트의 경로 추적 함수의 등록(비공개)
BCL_GBI_ioTraceHandler 함수에 의해 치환된 임의의 경로 추적 함수를 디폴트의 어드레스 함수로 되돌립니다.
ㆍ명칭: BCL_GBI_ioTraceResetHandler
ㆍ형식: void BCL_GBI_ioTraceResetHandler(void);
ㆍ인수: 없음
ㆍ반환값: 없음
C. 5. 1. 15 디폴트의 경로 추적 함수의 실행(비공개)
BCL_GBI_ioTraceHandler 함수에 의해 등록된 임의의 경로 추적 함수로부터 디폴트의 경로 추적 함수를 실행합니다.
ㆍ명칭: BCL_GBI_ioTraceExecuteDefaultHandler
ㆍ형식: void BCL_GBI_ioTraceExecuteDefaultHandler(int cmd, unsigned int address, unsigned int data, void*arg);
ㆍ인수: cmd (경로 추적 대상이 되는 함수), address (경로 추적 대상의 어드레스), data (경로 추적 대상의 데이터), arg (경로 추적 핸들러로 인도된 인수)
ㆍ반환값: 없음
이상의 설명으로부터 명백한 바와 같이, 본 발명에 의하면, 다양한 모듈을 혼재해 사용하는 시험 장치를 적절히 에뮬레이트할 수 있는 시험 에뮬레이트 장치, 시험 모듈 에뮬레이트 장치, 및 이러한 프로그램을 기록한 기록 매체를 실현할 수 있습니다.

Claims (17)

  1. 시험 신호를 피시험 디바이스에 각각 공급하는 복수의 시험 모듈을 포함하는 시험 장치를 에뮬레이트하는 시험 에뮬레이트 장치에 있어서,
    서로 다른 사이클 주기에 기초한 시험 신호를 생성하는 상기 복수의 시험 모듈을 에뮬레이트하는 복수의 시험 모듈 에뮬레이트부와,
    상기 피시험 디바이스의 시험을 제어하는 제어 장치를 에뮬레이트하는 제어 에뮬레이트부와,
    상기 제어 에뮬레이트부로부터의 지시에 기초하여, 상기 복수의 시험 모듈 에뮬레이트부의 각각이, 당해 시험 모듈 에뮬레이트부의 사이클 시간에 대응하는 시험 신호를 의사적으로 생성해야 하는 시험 신호 생성 타이밍을 생성하는 동기 에뮬레이트부와,
    상기 동기 에뮬레이트부가 생성한 복수의 상기 시험 신호 생성 타이밍을, 시각 순으로 정렬하고 순차 출력하는 타이밍 정렬부와,
    상기 타이밍 정렬부가 출력한 하나의 상기 시험 신호 생성 타이밍에 대응하는 상기 시험 모듈 에뮬레이트부에, 당해 하나의 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호를 의사적으로 생성시키는 스케쥴부를 포함하는 시험 에뮬레이트 장치.
  2. 제1항에 있어서,
    의사적으로 생성된 상기 시험 신호에 기초하여 피시험 디바이스의 동작을 시뮬레이트하는 피시험 디바이스 시뮬레이트부를 더 포함하는 시험 에뮬레이트 장치.
  3. 제1항에 있어서,
    상기 동기 에뮬레이트부는, 복수의 상기 시험 모듈 에뮬레이트부의 각각이, 상기 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호의 생성에 있어서 의사적으로 발생하는, 상기 제어 장치에 대한 인터럽트를 수집하는 인터럽트 수집 타이밍을 더 생성하고,
    상기 타이밍 정렬부는, 상기 복수의 시험 신호 생성 타이밍 및 복수의 상기 인터럽트 수집 타이밍을 시각 순으로 정렬하여 순차 출력하고,
    상기 스케쥴부는, 타이밍 정렬부가 하나의 상기 인터럽트 수집 타이밍을 출력한 경우에, 당해 인터럽트 수집 타이밍에 대응하는 상기 시험 모듈 에뮬레이트부에, 당해 인터럽트 수집 타이밍의 직전에 당해 시험 모듈 에뮬레이트부가 시험 신호를 생성한 사이클 시간에 있어서 의사적으로 발생한 상기 인터럽트를 상기 제어 에뮬레이트부에 대해 통지시키는 시험 에뮬레이트 장치.
  4. 제1항에 있어서,
    상기 복수의 시험 모듈 에뮬레이트부의 각각은, 상기 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호의 생성에 있어서, 당해 사이클 시간 중의 시험 신호의 변화 타이밍을 생성하고,
    당해 시험 에뮬레이트 장치는, 상기 복수의 시험 모듈 에뮬레이트부에 의해 생성된 복수의 상기 변화 타이밍을 취득하고, 상기 복수의 변화 타이밍을 기초로, 시험 신호를 시각 순으로 순차 의사적으로 변화시키는 피시험 디바이스 접속부를 더 포함하는 시험 에뮬레이트 장치.
  5. 제4항에 있어서,
    상기 피시험 디바이스 접속부는, 상기 복수의 시험 모듈 에뮬레이트부로부터 취득한 복수의 상기 변화 타이밍을 상기 타이밍 정렬부에 공급하고,
    상기 타이밍 정렬부는, 상기 복수의 변화 타이밍, 상기 복수의 시험 신호 생성 타이밍 및 복수의 상기 인터럽트 수집 타이밍을 시각 순으로 정렬해서 순차 출력하고,
    상기 스케쥴부는, 상기 타이밍 정렬부가 하나의 상기 변화 타이밍을 출력한 경우, 상기 피시험 디바이스 접속부에, 당해 변화 타이밍에 시험 신호를 의사적으로 변화시키는 시험 에뮬레이트 장치.
  6. 제1항에 있어서,
    상기 복수의 시험 모듈 에뮬레이트부의 각각은, 상기 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호의 생성에 있어서, 당해 사이클 시간이 종료하는 사이클 종료 타이밍을 상기 동기 에뮬레이트부에 통지하고,
    상기 동기 에뮬레이트부는, 상기 복수의 시험 모듈 에뮬레이트부의 각각으로부터 통지된 상기 사이클 종료 타이밍에 기초해서, 당해 시험 모듈 에뮬레이트부가 다음의 사이클 시간에 대응하는 시험 신호를 의사적으로 생성해야하는 상기 시험 신호 생성 타이밍을 생성하는 시험 에뮬레이트 장치.
  7. 제6항에 있어서,
    다음의 사이클 시간에 대응하는 상기 시험 신호 생성 타이밍을 상기 타이밍 정렬부가 출력한 경우, 상기 스케쥴부는, 당해 시험 신호 생성 타이밍의 직전의 사이클 시간에서의 시험 신호의 생성에 있어서, 당해 시험 신호 생성 타이밍에 대응하는 상기 시험 모듈 에뮬레이트부가 의사적으로 발생한 인터럽트를 상기 제어 에뮬레이트부에 대해 통지시키는 시험 에뮬레이트 장치.
  8. 제1항에 있어서,
    상기 복수의 시험 모듈 에뮬레이트부의 각각은, 당해 시험 모듈 에뮬레이트부에 대응하는 시험 모듈 에뮬레이트 프로그램을 컴퓨터에서 동작시킴으로써 실현되고,
    상기 시험 모듈 에뮬레이트 프로그램은,
    상기 시험 모듈이 상기 제어 장치로부터 수신하는 복수의 명령의 각각에 대응하여 설치되고, 당해 명령에 대응하는 상기 시험 모듈의 동작을 에뮬레이트하는 복수의 하드웨어 에뮬레이트 함수와,
    상기 스케쥴부가, 상기 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호를 생성시키기 위해 이용하는 제어 함수를 포함하는 시험 에뮬레이트 장치.
  9. 컴퓨터를, 시험 신호를 피시험 디바이스에 각각 공급하는 복수의 시험 모듈을 포함하는 시험 장치를 에뮬레이트하는 시험 에뮬레이트 장치로서 기능시키는 프로그램을 기록한 기록 매체에 있어서,
    상기 프로그램은, 상기 컴퓨터를,
    서로 다른 사이클 주기에 기초한 시험 신호를 생성하는 상기 복수의 시험 모듈을 에뮬레이트하는 복수의 시험 모듈 에뮬레이트부와,
    상기 피시험 디바이스의 시험을 제어하는 제어 장치를 에뮬레이트하는 제어 에뮬레이트부와,
    상기 제어 에뮬레이트부로부터의 지시에 기초하여, 상기 복수의 시험 모듈 에뮬레이트부의 각각이, 당해 시험 모듈 에뮬레이트부의 사이클 시간에 대응하는 시험 신호를 의사적으로 생성해야 하는 시험 신호 생성 타이밍을 생성하는 동기 에뮬레이트부와,
    상기 동기 에뮬레이트부가 생성한 복수의 상기 시험 신호 생성 타이밍을, 시각 순으로 정렬하고 순차 출력하는 타이밍 정렬부와,
    상기 타이밍 정렬부가 출력한 하나의 상기 시험 신호 생성 타이밍에 대응하는 상기 시험 모듈 에뮬레이트부에, 당해 하나의 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호를 의사적으로 생성시키는 스케쥴부로서 기능시키는 기록 매체.
  10. 서로 다른 사이클 주기에 기초한 시험 신호를 피시험 디바이스에 각각 공급하는 복수의 시험 모듈을 포함하는 시험 장치를 에뮬레이트하는 시험 에뮬레이트 장치에서, 하나의 상기 시험 모듈을 에뮬레이트하는 시험 모듈 에뮬레이트 장치에 있어서,
    상기 시험 에뮬레이트 장치는,
    상기 피시험 디바이스의 시험을 제어하는 제어 장치를 에뮬레이트하는 제어 에뮬레이트부와,
    상기 제어 에뮬레이트부로부터의 지시에 기초하여, 상기 복수의 시험 모듈의 각각이, 당해 시험 모듈의 사이클 시간에 대응하는 시험 신호를 의사적으로 생성해야 하는 시험 신호 생성 타이밍을 생성하는 동기 에뮬레이트부와,
    상기 동기 에뮬레이트부가 생성한 복수의 상기 시험 신호 생성 타이밍을, 시각 순으로 정렬하고 순차 출력하는 타이밍 정렬부와,
    상기 타이밍 정렬부가 출력한 하나의 상기 시험 신호 생성 타이밍에 대응하는 당해 시험 모듈 에뮬레이트 장치에, 당해 하나의 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호를 의사적으로 생성시킬 것을 지시하는 스케쥴부를 포함하고,
    상기 시험 모듈 에뮬레이트 장치는,
    상기 스케쥴부로부터의 지시에 기초해, 상기 하나의 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호를 의사적으로 생성하는 패턴 발생기 에뮬레이트부를 포함하는 시험 모듈 에뮬레이트 장치.
  11. 제10항에 있어서,
    상기 하나의 시험 신호 생성 타이밍에 대응하는 사이클이 종료하는 사이클 종료 타이밍을 동기 에뮬레이트부에 통지하고, 상기 동기 에뮬레이트부에 상기 사이클 종료 타이밍에 기초해서 당해 시험 모듈 에뮬레이트 장치가 다음의 시험 신호를 의사적으로 생성해야하는 상기 시험 신호 생성 타이밍을 더 생성시키는 시험 모듈 인터페이스 에뮬레이트부를 더 포함하는 시험 모듈 에뮬레이트 장치.
  12. 서로 다른 사이클 주기에 기초한 시험 신호를 피시험 디바이스에 각각 공급하는 복수의 시험 모듈을 포함하는 시험 장치를 에뮬레이트하는 시험 에뮬레이트 장치에서, 컴퓨터를, 하나의 상기 시험 모듈을 에뮬레이트하는 시험 모듈 에뮬레이트 장치로서 기능시키는 프로그램을 기록한 기록 매체에 있어서,
    상기 시험 에뮬레이트 장치는,
    상기 피시험 디바이스의 시험을 제어하는 제어 장치를 에뮬레이트하는 제어 에뮬레이트부와,
    상기 제어 에뮬레이트부로부터의 지시에 기초하여, 상기 복수의 시험 모듈 에뮬레이트부의 각각이, 당해 시험 모듈의 사이클 시간에 대응하는 시험 신호를 의사적으로 생성해야 하는 시험 신호 생성 타이밍을 생성하는 동기 에뮬레이트부와,
    상기 동기 에뮬레이트부가 생성한 복수의 상기 시험 신호 생성 타이밍을, 시각 순으로 정렬하고 순차 출력하는 타이밍 정렬부와,
    상기 타이밍 정렬부가 출력한 하나의 상기 시험 신호 생성 타이밍에 대응하는 당해 시험 모듈 에뮬레이트 장치에, 당해 하나의 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호를 의사적으로 생성시킬 것을 지시하는 스케쥴부를 포함하고,
    상기 프로그램은, 상기 컴퓨터를,
    상기 스케쥴부로부터의 지시에 기초해, 상기 하나의 시험 신호 생성 타이밍에 대응하는 사이클 시간에서의 시험 신호를 의사적으로 생성하는 패턴 발생기 에뮬레이트부로서 기능시키는 기록 매체.
  13. 시험 신호를 피시험 디바이스에 공급하는 시험 모듈을 포함하는 시험 장치에 있어서,
    상기 피시험 디바이스의 시험을 제어하는 제어 장치와,
    사이클 주기에 기초해 시험 신호를 생성하는 시험 모듈과,
    상기 시험 모듈을 에뮬레이트하는 시험 모듈 에뮬레이트부를 포함하고,
    상기 제어 장치는,
    상기 피시험 디바이스의 실제 시험 또는 의사적 시험의 어느 쪽을 수행할 것인가의 지시를 입력하고,
    상기 피시험 디바이스의 실제 시험을 수행하는 지시를 받은 경우에, 상기 피시험 디바이스의 시험을 수행하는 시험 프로그램을 상기 시험 모듈에 공급하고, 상기 시험 모듈에 의해 상기 피시험 디바이스의 시험을 수행시키고, 상기 피시험 디바이스의 의사적 시험을 수행하는 지시를 받은 경우에, 상기 시험 프로그램을 상기 시험 모듈 에뮬레이트부에 공급하고, 상기 시험 모듈 에뮬레이트부에 의해 상기 피시험 디바이스의 시험을 시뮬레이트시키는 시험 장치.
  14. 제13항에 있어서,
    상기 제어 장치는, 당해 제어 장치와 상기 시험 모듈과의 사이의 통신 처리를 수행하는 통신 소프트웨어를 실행하고,
    상기 통신 소프트웨어는, 상기 제어 장치와 협동하여, 당해 통신 소프트웨어를 초기화하는 호출에 포함되는 상기 지시에 기초하여, 상기 시험 프로그램을 상기 시험 모듈 및 상기 시험 모듈 에뮬레이트부의 어느 쪽에 공급하는가를 판단하는 시험 장치.
  15. 시험 신호를 피시험 디바이스에 공급하는 복수의 시험 모듈을 포함하는 시험 장치를 에뮬레이트하는 시험 에뮬레이트 장치에 있어서,
    사이클 주기에 기초한 시험 신호를 생성하는 상기 복수의 시험 모듈을 에뮬레이트하는 복수의 시험 모듈 에뮬레이트부와,
    상기 피시험 디바이스의 시험을 제어하는 제어 장치를 에뮬레이트하는 제어 에뮬레이트부와,
    상기 복수의 시험 모듈 에뮬레이트부의 각각이, 사이클 시간에 대응하는 시험 신호를 의사적으로 생성해야 하는 시험 신호 생성 타이밍을 스케쥴링하는 스케쥴부를 포함하고,
    상기 시험 모듈 에뮬레이트부는,
    함수 호출에 의하여 상기 시험 신호 생성 타이밍의 통지를 받고, 당해 시험 신호 생성 타이밍에 대응하는 사이클 시간 중에 있어서의 시험 신호의 전압의 변화를, 출력 채널을 에뮬레이트하는 출력 채널 객체의 전압 설정 메소드를 복수회 호출함으로써 출력하고,
    당해 사이클 시간에 대응하는 시험 신호의 전압의 변화의 출력을 종료한 후에, 당해 사이클 시간에 대응하는 시험 신호의 전압의 변화의 출력을 종료했다는 것을, 출력 채널 객체의 종료 메소드를 호출함으로써 통지하는 시험 에뮬레이트 장치.
  16. 제15항에 있어서,
    상기 스케쥴부는, 상기 복수의 시험 모듈 에뮬레이트부의 각각으로부터 통지된 상기 종료 메소드에 기초하여, 전체의 상기 시험 모듈 에뮬레이트부가 시험 신호의 전압의 변화의 출력을 종료한 기간을 산출하고,
    상기 기간 내에 있어서의 상기 시험 신호를 취득하여, 당해 시험 신호에 기초하여 피시험 디바이스의 상기 기간 내에 있어서의 동작을 시뮬레이트하는 피시험 디바이스 시뮬레이트부를 더 포함하는 시험 에뮬레이트 장치.
  17. 제15항에 있어서,
    상기 출력 채널 객체는, 상기 종료 메소드의 호출을 받은 후에, 당해 종료 메소드에 의하여 통지된, 이미 시험 신호의 전압의 변화의 출력을 종료한 기간 내의 전압의 변화를 금지하는 시험 에뮬레이트 장치.
KR1020057018755A 2003-03-31 2004-03-30 시험 에뮬레이트 장치, 시험 모듈 에뮬레이트 장치, 및이들을 기록한 기록 매체 KR20050113273A (ko)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US10/403,817 2003-03-31
US10/403,817 US7290192B2 (en) 2003-03-31 2003-03-31 Test apparatus and test method for testing plurality of devices in parallel
US10/404,002 US7460988B2 (en) 2003-03-31 2003-03-31 Test emulator, test module emulator, and record medium storing program therein
US10/404,002 2003-03-31
WOPCT/JP04/001648 2004-02-16
WOPCT/JP04/001649 2004-02-16
PCT/JP2004/001649 WO2004072670A1 (en) 2003-02-14 2004-02-16 Method and structure to develop a test program for semiconductor integrated circuits
PCT/JP2004/001648 WO2004072669A1 (en) 2003-02-14 2004-02-16 Method and apparatus for testing integrated circuits

Publications (1)

Publication Number Publication Date
KR20050113273A true KR20050113273A (ko) 2005-12-01

Family

ID=33161956

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057018755A KR20050113273A (ko) 2003-03-31 2004-03-30 시험 에뮬레이트 장치, 시험 모듈 에뮬레이트 장치, 및이들을 기록한 기록 매체

Country Status (7)

Country Link
EP (3) EP1610136B1 (ko)
JP (1) JP3735636B2 (ko)
KR (1) KR20050113273A (ko)
DE (2) DE602004016891D1 (ko)
MY (1) MY134825A (ko)
TW (1) TWI389033B (ko)
WO (1) WO2004090562A1 (ko)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100731106B1 (ko) * 2005-12-29 2007-06-22 동부일렉트로닉스 주식회사 라이브러리 테스트 회로 및 그 방법
KR100768916B1 (ko) * 2006-07-03 2007-10-19 삼성전자주식회사 패킷 수집/분석 장치 및 이를 이용한 에뮬레이션 방법
KR100873956B1 (ko) * 2006-08-17 2008-12-15 삼성전자주식회사 에뮬레이션 시스템
KR100884983B1 (ko) * 2007-06-26 2009-02-23 주식회사 동부하이텍 표준 셀 라이브러리의 성능 개선을 위한 측정 장치
KR100939670B1 (ko) * 2006-07-05 2010-02-03 요코가와 덴키 가부시키가이샤 반도체 집적 회로 시험 장치 및 방법
US8407659B2 (en) 2009-07-03 2013-03-26 Samsung Electronics Co., Ltd. Method of designing a printed circuit board
KR101310609B1 (ko) * 2012-03-30 2013-09-24 주식회사 이노와이어리스 Yaml을 이용하여 lte 계측 장비를 위한 데이터 및 인터페이스 생성장치 및 생성방법
US10811118B2 (en) 2018-06-12 2020-10-20 Samsung Electronics Co., Ltd. Test interface boards, test systems, and methods of operating test interface boards
KR102558492B1 (ko) * 2022-10-12 2023-07-25 한국철도기술연구원 열차자동운행장치 시뮬레이션 고속화 시스템 및 이를 이용한 고속화 방법

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7460988B2 (en) 2003-03-31 2008-12-02 Advantest Corporation Test emulator, test module emulator, and record medium storing program therein
US7913002B2 (en) * 2004-08-20 2011-03-22 Advantest Corporation Test apparatus, configuration method, and device interface
JP2006275986A (ja) * 2005-03-30 2006-10-12 Advantest Corp 診断プログラム、切替プログラム、試験装置、および診断方法
US20090119084A1 (en) * 2007-11-05 2009-05-07 Advantest Corporation System, method, and program product for simulating test equipment
US7779313B2 (en) * 2008-03-30 2010-08-17 Advantest Corporation Testing apparatus and testing method
US8165027B2 (en) 2008-12-08 2012-04-24 Advantest Corporation Test apparatus and test method
JP2013113665A (ja) * 2011-11-28 2013-06-10 Advantest Corp 試験パターン生成装置、試験プログラム生成装置、生成方法、プログラム、および試験装置
CN108628734B (zh) * 2017-03-21 2023-03-28 中兴通讯股份有限公司 一种功能程序调试方法和终端
CN111949365A (zh) * 2019-05-17 2020-11-17 中车株洲电力机车研究所有限公司 离线仿真方法及计算机存储介质
US11302412B2 (en) * 2019-06-03 2022-04-12 Advantest Corporation Systems and methods for simulated device testing using a memory-based communication protocol
CN111447016B (zh) * 2020-04-02 2022-06-21 上海创远仪器技术股份有限公司 针对信道模拟器的信道模型实现正确性验证处理的方法
TWI719917B (zh) * 2020-07-14 2021-02-21 金麗科技股份有限公司 將類比動態電路運用於數位測試工具的處理方法
CN113157573A (zh) * 2021-04-19 2021-07-23 上海湃星信息科技有限公司 一种软件测试验证系统及其构建方法
TWI772189B (zh) * 2021-09-24 2022-07-21 英業達股份有限公司 硬碟模擬裝置及應用該裝置的測試系統及其測試方法
CN115774663A (zh) * 2022-09-15 2023-03-10 江苏瑞蓝自动化设备集团有限公司 一种LabVIEW的测试系统的优化方法、装置、设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2570558B2 (ja) * 1992-11-20 1997-01-08 日本電気株式会社 ハードウェア・エミュレータ
JP2001184225A (ja) * 1999-12-27 2001-07-06 Toshiba Microelectronics Corp エミュレータ及びエミュレート方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100731106B1 (ko) * 2005-12-29 2007-06-22 동부일렉트로닉스 주식회사 라이브러리 테스트 회로 및 그 방법
KR100768916B1 (ko) * 2006-07-03 2007-10-19 삼성전자주식회사 패킷 수집/분석 장치 및 이를 이용한 에뮬레이션 방법
KR100939670B1 (ko) * 2006-07-05 2010-02-03 요코가와 덴키 가부시키가이샤 반도체 집적 회로 시험 장치 및 방법
KR100873956B1 (ko) * 2006-08-17 2008-12-15 삼성전자주식회사 에뮬레이션 시스템
US8165866B2 (en) 2006-08-17 2012-04-24 Samsung Electronics Co., Ltd. Emulation system
KR100884983B1 (ko) * 2007-06-26 2009-02-23 주식회사 동부하이텍 표준 셀 라이브러리의 성능 개선을 위한 측정 장치
US8407659B2 (en) 2009-07-03 2013-03-26 Samsung Electronics Co., Ltd. Method of designing a printed circuit board
US8832638B2 (en) 2009-07-03 2014-09-09 Samsung Electronics Co., Ltd. Package test devices having a printed circuit board
KR101310609B1 (ko) * 2012-03-30 2013-09-24 주식회사 이노와이어리스 Yaml을 이용하여 lte 계측 장비를 위한 데이터 및 인터페이스 생성장치 및 생성방법
US10811118B2 (en) 2018-06-12 2020-10-20 Samsung Electronics Co., Ltd. Test interface boards, test systems, and methods of operating test interface boards
KR102558492B1 (ko) * 2022-10-12 2023-07-25 한국철도기술연구원 열차자동운행장치 시뮬레이션 고속화 시스템 및 이를 이용한 고속화 방법

Also Published As

Publication number Publication date
TWI389033B (zh) 2013-03-11
TW200428200A (en) 2004-12-16
EP1767955A1 (en) 2007-03-28
DE602004007498D1 (de) 2007-08-23
JP3735636B2 (ja) 2006-01-18
DE602004016891D1 (de) 2008-11-13
DE602004007498T2 (de) 2008-03-13
EP1870724A1 (en) 2007-12-26
JPWO2004090562A1 (ja) 2006-07-06
EP1610136A4 (en) 2006-05-17
MY134825A (en) 2007-12-31
EP1610136A1 (en) 2005-12-28
EP1610136B1 (en) 2007-07-11
WO2004090562A1 (ja) 2004-10-21
EP1767955B1 (en) 2008-10-01

Similar Documents

Publication Publication Date Title
US20080010524A1 (en) Test emulator, test module emulator and record medium storing program therein
JP3735636B2 (ja) 試験エミュレート装置、試験モジュールエミュレート装置、及びこれらのプログラムを記録した記録媒体
EP1592975B1 (en) Method and apparatus for testing integrated circuits
CN100489554C (zh) 测试装置与测试模拟方法
JP2006518460A5 (ko)
JP3911007B1 (ja) モジュール式試験システムをシミュレートする方法及びシステム
JP2007057541A (ja) 試験エミュレート装置
TW202132793A (zh) 使用晶片上系統測試控制器之自動測試設備
JP4608516B2 (ja) モジュール式試験システムに試験モジュールを統合する方法およびモジュール式試験システム
US8010839B2 (en) Test system and method which can use tool during debugging
GB2359894A (en) A method and system for testing microprocessor based boards in a manufacturing environment
JP2009116878A (ja) 試験装置のシミュレーションシステム、方法、及びプログラム製品
CN100456043C (zh) 检测集成电路的方法和装置
JP2009229304A (ja) 試験システム及びモジュール制御方法
TWI287639B (en) A distributed operating system for a semiconductor test system for testing at least one device under test
CN116340150A (zh) 一种基于uvm的可重用的寄存器性能交互验证系统及其应用
JP2005285092A (ja) 試験エミュレート装置
Rajsuman et al. Architecture and design of an open ATE to incubate the development of third-party instruments
Rajsuman et al. Open architecture test system: System architecture and design
JP2009229305A (ja) 試験システム及びモジュール間通信方法
Anderson et al. Integrated FASTBUS, VME and CAMAC diagnostic software at Fermilab

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application