KR101329465B1 - 여러 프로세서들을 사용하는 시스템 테스트 방법 및 장치 - Google Patents

여러 프로세서들을 사용하는 시스템 테스트 방법 및 장치 Download PDF

Info

Publication number
KR101329465B1
KR101329465B1 KR1020117023268A KR20117023268A KR101329465B1 KR 101329465 B1 KR101329465 B1 KR 101329465B1 KR 1020117023268 A KR1020117023268 A KR 1020117023268A KR 20117023268 A KR20117023268 A KR 20117023268A KR 101329465 B1 KR101329465 B1 KR 101329465B1
Authority
KR
South Korea
Prior art keywords
test
processor
tap
tisa
instructions
Prior art date
Application number
KR1020117023268A
Other languages
English (en)
Other versions
KR20120023601A (ko
Inventor
슈레쉬 고얄
미셀 포르톨란
트루렌 브래드포드 반
Original Assignee
알까뗄 루슨트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 알까뗄 루슨트 filed Critical 알까뗄 루슨트
Publication of KR20120023601A publication Critical patent/KR20120023601A/ko
Application granted granted Critical
Publication of KR101329465B1 publication Critical patent/KR101329465B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318533Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
    • G01R31/318558Addressing or selecting of subparts of the device under test
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning

Landscapes

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

Abstract

피테스트 시스템을 액세스하도록 구성된 테스트 액세스 포트(TAP)을 통해 피테스트 시스템의 적어도 일부에 대한 테스트를 수행하기 위한 장치가 제공된다. 그 장치는 TAP를 통해 피테스트 시스템의 적어도 일부에 대한 테스트를 제어하도록 구성된 명령어들을 실행하는 제1프로세서, 및 TAP로의 인터페이스를 지원하는 제2프로세서를 포함한다. 제1프로세서는 테스트 명령들의 실행 중에, TAP의 제어와 관련된 TAP 관련 명령어들을 검출하고, 그 TAP 관련 명령어들을 제2프로세서로 전달하도록 구성된다. 제2프로세서는 제1프로세서에 의해 검출된 TAP 관련 명령어들을 수신하고 그 TAP 관련 명령어들을 처리하도록 구성된다. 제1프로세서는 제2프로세서에 의한 TAP 관련 명령어들의 처리와 동시에 적어도 하나의 작업을 수행하도록 구성된다. 관련 방법 역시 제공된다.

Description

여러 프로세서들을 사용하는 시스템 테스트 방법 및 장치{METHOD AND APPARATUS FOR SYSTEM TESTING USING MULTIPLE PROCESSORS}
관련 출원들에 대한 교차 참조
본 출원은 2009년 3월 4일자에 테스트 명령어 세트 구조(TEST INSTRUCTION SET ARCHITECTURE)라는 발명의 명칭으로 출원된 미국 특허 가출원 제61/157,412호에 대한 우선권을 주장하며, 이 출원은 그 전체가 본 명세서에 참조로서 통합된다.
본 출원은 대리인 사건 번호 ALU/130137로서 "여러 명령어 타입을 사용하는 시스템 테스트 방법 및 장치(METHOD AND APPARATUS FOR SYSTEM TESTING USING MULTIPLE INSTRUCTION TYPES)”라는 발명의 명칭으로 출원된 미국 특허 출원 제12/495237호와 관련되며, 대리인 사건 번호 ALU/130137-3으로서 “스캔 체인 분해를 이용한 시스템 테스트 방법 및 장치(METHOD AND APPARATUS FOR SYSTEM TESTING USING SCAN CHAIN DECOMPOSITION)"라는 발명의 명칭으로 출원된 미국 특허 출원 제12/495336호와 관련되며, 이 출원들 각각은 본 출원과 동시에 출원되며 그 전체가 본 명세서에 참조로서 통합된다.
본 발명은 시스템 테스트 분야에 관한 것으로, 특히 그러나 비한정적으로 시스템 테스트를 위한 명령어들의 발생 및 제어에 관한 것이다.
통상적으로 전자 회로들은 전자 회로를 형성하도록 다양한 디바이스 단자들을 상호 연결하는 도전성 트레이스들을 가진 회로 보드 기판에 납땜되는 복수의 전자 소자들을 포함하는 인쇄 회로 보드(PCB)의 형태로 구성된다. PCB들 및 구현되는 PCB들의 전기 회로들은 대개 복잡하기 때문에, 제조시의 보드 테스트가 점점 더 자동화되고 있다. 이와 관련하여, 보드 테스트 장치들은 높은 수준의 자동화된 기능 테스트를 위해, 채워진 PCB의 I/O 커넥터들을 연결하는 단순한 I/O 가능 테스터들부터, 높고 낮은 레벨 테스트 성능을 위해 테스트되는 보드의 회로 노드들 전부나 일부와 전기적으로 접촉하기 위한 검침(probe) 핀들을 포함하는 테스트 고정물들로, 그리고 테스트되는 보드의 개별 회로 노드들을 외부적으로 검침할 필요 없이 PCB의 자동화된 테스트를 제공하는 통합 테스트로 진화되어 왔다.
보드들 및 디바이스들 내 전자 회로들에 대한 테스트는 통상적으로, 테스트 알고리즘의 정의로부터 실제 테스트 동작까지 진행하는데 필요로 되는 단계들을 지원하는 테스트 자동화 툴들(Testing Automation Tools)에 의해 제어된다. 테스트 자동화를 도모하기 위해, 테스트 자원들은 대개 보드들 및 디바이스들 안에 내장되고, 표준화된 인터페이스를 이용해 액세스될 수 있으며, 보통 테스트 액세스 포트(Test Access Port: TAP)라 불린다. 이것은 핀 수와 합리적 자원 액세스 및 관리를 제한하는 효과를 가진다. 일반적으로, 기존의 표준들 대부분은 대개, 피테스트 시스템(system under test:SUT) 내부의 자원들을 기술하는데 사용될 수 있고 테스트 자동화 툴들로의 입력들로서 사용될 수 있는 한 개 이상의 언어들을 제공한다. 이러한 테스트 자동화 툴들은 TAP를 활용하는 테스트 시퀀스들을 생성하기 위해 그들 각자의 알고리즘을 적용할 수 있다. 그러한 테스트 시퀀스들은 이제, TAP에 명령하고 테스트 동작들을 실행하도록 테스트 제어 유닛(TCU)에 의해 사용될 수 있다. 테스트 동작들의 특성 및 성능은 이러한 각 요소들, 즉 액세스 표준, 데이터 포맷, 및 TCU 구현에 좌우된다.
합동 테스트 액션 그룹(Joint Test Action Group:JTAG)은 IEEE 1149.1로 표기되는 회로 보드 테스트 표준을 개발해 왔다. IEEE 1149.1은 회로 보드들을 테스트하기 위한 테스트 액세스 포트(Test Access Port:TAP)를 명시한다. IEEE 1149.1은 테스트되는 회로 보드들 상에 포함되는 테스트 디바이스들을 통해 하드웨어의 바운더리 스캔(Boundary Scan:BS) 테스트를 지원한다. 바운더리 스캔 테스트는 다른 경우 이용가능할 수 있는 범위 이상의 테스트 커버리지(coverage)를 제공하기 위해 소프트웨어의 제어 하에서 JTAG 호환가능 디바이스의 바운더리 핀들을 제어 및 모니터하는 동작을 수반한다. 또, 보드-레벨 JTAG에서 칩-레벨 JTAG로 이동하는 것과 관련된 기존의 JTAG 한계를 극복하기 위해 IJTAG(Instruction JTAG)가 표준화되고 있다(P1687로 표기됨).
JTAG 및 IJTAG는 ATG(Automated Test Generation) 툴들에 의해 칩들과 전자 디바이스들을 테스트하는데 사용될 수 있다. JTAG는 최소한의 오버헤드로 칩 내부에 구현된 자원들에 대한 직렬 액세스를 가능하게 하는 간단한 5-와이어 TAP를 제공한다. 이때 액세스 하부구조는 테스트 벡터들을 생성하도록 많은 상용 TGT들에 의해 사용될 수 있는 BSDL(Boundary Scan Description Language) 같은 특정 언어로 기술될 수 있다. 그 테스트 벡터들은 통상적으로 1149.1 TAP의 기본 동작들에 대한 하이-레벨의 서술을 가능하게 하는 SVF(Serial Vector Format)이라 불리는 포맷으로 저장된다. SVF에 대한 좀 더 복잡한 대안이 STAPL인데, 이것은 테스트 벡터들에 대한 기본 흐름(flow) 제어(if-then-else) 및 산술적 연산들을 가능하게 하도록 SVF의 벡터 연산들을 확장한다. JTAG-준용 TAP가 SVF나 STAPL 플레이어로부터 명령들을 수신하고, 나중에 오프라인으로 해석될 수 있는 간단한 Go/NoGo 결과들을 생성한다.
불리하게도, 이런 기존의 접근방식들은 많은 한계를 가진다. 첫 번째 한계는 데이터 포맷에 있는데, 이는 테스트 플레이어가 피테스트 시스템에 대해 아무 지식도 가지지 못함에 따라 단지 아주 기본적인 동작들만을 수행할 수 있기 때문이다. 두 번째 한계는 상호작용적(interactive) 테스트(로컬 또는 원격)가 지원될 수 없다는 것이다. 오히려 어떤 테스트 결과들이든 오프라인에서 검토되어야 한다. 또, 그러한 기존의 접근방식들은 구현예에 좌우되고 통상적으로 독점권이 행사된다.
선행 기술에서의 여러 결점들은 피테스트 시스템을 액세스하도록 구성된 테스트 액세스 포트(TAP)를 통해 피테스트 시스템의 적어도 일부에 대한 테스트를 수행하는 방법들 및 장치들을 통해 해결된다.
일 실시예에서, 피테스트 시스템을 액세스하도록 구성된 테스트 액세스 포트(TAP)을 통해 피테스트 시스템의 적어도 일부에 대한 테스트를 수행하기 위한 장치가 제공된다. 그 장치는 TAP를 통해 피테스트 시스템의 적어도 일부에 대한 테스트를 제어하도록 구성된 명령어들을 실행하는 제1프로세서, 및 TAP로의 인터페이스를 지원하는 제2프로세서를 포함한다. 제1프로세서는 테스트 명령들의 실행 중에, TAP의 제어와 관련된 TAP 관련 명령어들을 검출하고, 그 TAP 관련 명령어들을 제2프로세서로 전달하도록 구성된다. 제2프로세서는 제1프로세서에 의해 검출된 TAP 관련 명령어들을 수신하고 그 TAP 관련 명령어들을 처리하도록 구성된다. 제1프로세서는 제2프로세서에 의한 TAP 관련 명령어들의 처리와 동시에 적어도 하나의 작업을 수행하도록 구성된다.
일 실시예에서, 피테스트 시스템의 적어도 일부에 대한 테스트를 수행하기 위한 방법이 제공되고, 여기서 피테스트 시스템은 테스트 액세스 포트(TAP)를 통해 액세스될 수 있다. 그 방법은 제1프로세서에 의해 피테스트 시스템의 적어도 일부에 대한 테스트를 제어하도록 구성된 명령어들을 실행하는 단계, 피테스트 시스템의 적어도 일부에 대한 테스트를 제어하도록 구성된 상기 명령어들의 실행 중에 TAP의 제어와 관련된 TAP 관련 명령어를 검출하는 단계, 제1프로세서로부터 제2프로세서로 상기 TAP 관련 명령어를 제공하는 단계, 및 제2프로세서에 의해 TAP의 제어와 관련된 상기 TAP 관련 명령어를 실행하는 단계를 포함하고, 상기 제1프로세서는 제2프로세서에 의한 TAP 관련 명령어들의 실행과 동시에 적어도 하나의 작업을 수행하도록 구성된다.
첨부된 도면들과 함께 이하의 상세한 설명을 고려함으로써 여기 제시되는 교시 내용이 용이하게 파악될 수 있다.
도 1은 테스트 시스템 및 피테스트 시스템을 포함하는 시스템 테스트 환경의 하이-레벨 블록도이다.
도 2는 피테스트 시스템을 위한 테스트 명령들을 생성하도록 협력하는 테스트 생성 툴 및 소프트웨어 컴파일러를 포함하는 도 1의 테스트 시스템의 일 실시예에 대한 하이-레벨 블록도이다.
도 3은 피테스트 시스템을 위한 테스트 명령들을 생성하도록 협력하는 테스트 생성 툴 및 소프트웨어 컴파일러를 포함하는 도 1의 테스트 시스템의 일 실시예에 대한 하이-레벨 블록도이다.
도 4a-4e는 SPARC V8 ISA를 이용한 TISA의 구현을 위한 명령어 코딩의 세부사항들을 예시하는 SPARC V8 ISA를 이용한 TISA의 구현을 묘사한다.
도 5는 SPARC V8 ISA를 이용한 TISA의 구현을 위한 전형적 TISA 구조를 예시하여, SPARC V8 ISA를 이용한 TISA의 구현을 묘사한다.
도 6은 상호작용적 테스트 사양을 지원하는 TISA 기반 테스트 환경의 일 실시예를 묘사한다.
도 7은 도 6의 TISA 기반 테스트 환경의 전형적 구현을 묘사한다.
도 8은 도 5a의 피테스트 시스템의 송수신기 채널 최적화를 수행하기 위한 전형적 프로그램 구조를 묘사한다.
도 9는 TISA(Test Instruction Set Architecture) 흐름을 형성하기 위해 프로세서의 ISA(Instruction Set Architecture)를 구성하는 방법의 일 실시예를 묘사한다.
도 10은 피테스트 시스템의 적어도 일부를 테스트할 때 사용하도록 구성되는 명령어들을 생성하는 방법의 일 실시예를 묘사한다.
도 11a는 피테스트 시스템의 적어도 일부를 테스트할 때 사용하도록 구성되는 명령어들을 생성하는 방법의 일 실시예를 묘사한다.
도 11b는 피테스트 시스템의 적어도 일부를 테스트할 때 사용하도록 구성되는 명령어들을 생성하는 방법의 일 실시예를 묘사한다.
도 12는 TISA 프로세서 구조의 전형적 실시예를 묘사한다.
도 13은 시스템 테스트 사양들을 제공하도록 여러 프로세서들을 활용하는 테스트 프로세서 구조의 전형적 실시예를 묘사한다.
도 14는 테스트 보조 프로세서 구조의 전형적 실시예를 묘사한다.
도 15는 테스트 부속 프로세서 구조의 전형적 실시예를 묘사한다.
도 16은 TISA 프로세서에 의해 사용될 수 있는 전형적 레지스터 세트를 묘사한다.
도 17은 피테스트 시스템의 전형적 스캔 체인의 전형적 분해를 예시한, 피테스트 시스템의 하이-레벨 블록도를 묘사한다.
도 18은 스캔 체인의 스캔 세그먼트 레벨 추상화를 이용해, 피테스트 시스템의 스캔 체인을 통해 피테스트 시스템의 일부를 테스트하는 방법의 일 실시예에 대한 하이-레벨 블록도를 묘사한다.
도 19는 여기 기술된 기능들을 수행할 때 사용하기 적합한 컴퓨터의 하이-레벨 블록도를 묘사한다.
이해를 돕기 위해, 도면들에 공통되는 동일한 구성요소들을 지칭하기 위해 가능한 경우 동일한 참조 부호들을 사용하였다.
피테스트 시스템(SUT(system under test))의 테스트를 수행하는데 사용될 다양한 시스템 테스트 사양들이 제공된다.
일 실시예에서, 테스트 명령어 세트 구조(test instruction set architecture:TISA)가 제공된다. TISA는 시스템 테스트 수행시 사용되도록 제공된다. TISA는 상호작용적 테스트 사양, 원격 테스트 사양, 및 기타 여기에 기술된 다른 다양한 사양들을 포함하는 개선된 시스템 테스트 사양들을 제공하기 위해 컴퓨터 사이언스 사양들을 시스템 테스트 사양들과 결합한다. TISA는 시스템 테스트 사양들을 이용하는 소프트웨어 기반 명령어 세트 구조(ISA)를 구성시켜 형성된다. 소프트웨어 기반 ISA는 어떤 적절한 소프트웨어 프로그래밍 언어(가령, C++, 자바 등 뿐만 아니라 이들의 다양한 조합)를 활용할 수 있고, 어떤 적절한 프로세서를 이용해 구현될 수 있다. 시스템 테스트 사양들은 IEEE 1149.1(JTAG로도 알려짐) 같은 어떤 적절한 TAP나 어떤 다른 적절한 TAP들을 활용할 수 있다. 일반적으로, TISA는 소프트웨어 프로세스의 아토믹(atomic) 동작들을 테스트 절차의 아토믹 테스트 동작들과 결합함으로써 형성된다. TISA에서, 테스트 절차의 알고리즘 부분들은 소프트웨어 흐름에 의해 처리됨으로써, 테스트 절차의 알고리즘 부분들이 아토믹 테스트 동작들로 전환되도록 한다. TISA는 소프트웨어 프로세스의 아토믹 동작들을 테스트 절차의 아토믹 테스트 동작들과 결합함으로써 형성되어, 아토믹 테스트 동작들이 테스트 절차의 알고리즘 부분들을 다루고 있는 소프트웨어 프로세스의 아토믹 부분들과 동일한 방식으로 처리되도록 한다. 이것이 내장된 테스트 실행, 원격 테스트 실행, 및 여기 묘사되고 기술된 것 같은 다른 다양한 개선된 시스템 테스트 사양들에 대해 보다 세밀한 제어를 가능하게 한다.
도 1은 테스트 시스템 및 피테스트 시스템을 포함하는 시스템 테스트 환경의 하이-레벨 블록도이다.
도 1에 도시된 바와 같이 시스템 테스트 환경(100)은 테스트 시스템(TS)(110) 및 피테스트 시스템(SUT)(120)을 포함한다.
TS(110)는 SUT(120)를 테스트하는데 적합한 임의의 시스템일 수 있다. TS(110)는 SUT(120)를 테스트하도록 구성된다. TS(110)는 SUT(120)에 대한 어떤 테스트, 가령, SUT(120)의 한 개 이상의 개별 구성요소들, SUT(120)의 구성요소들의 하나 이상의 조합들, SUT(120)의 구성요소들 사이의 하나 이상의 상호연결, SUT(120)의 하나 이상의 시스템 레벨 기능들 등 뿐 아니라 이들의 다양한 조합에 대한 테스트를 수행할 수 있다. TS(110)는 테스트 절차들 실행, 입력 데이터를 피테스트 시스템으로 제공, 피테스트 시스템으로부터 출력된 데이터 수신, 시스템 테스트 결과들을 판단하기 위해 피테스트 시스템으로부터 수신된 출력 데이터 처리 등의 기능들 뿐 아니라 이들의 다양한 조합들과 같이, 통상적으로 피테스트 시스템을 테스트하는 것과 관련된 기능들 중 어느 하나를 수행할 수 있다. 피테스트 시스템을 테스트하기 위한 TS(110)의 설계 및 용도가 이하에서 더 상세히 기술된다.
SUT(120)는 TS(110)를 이용해 테스트될 수 있는 어떤 시스템일 수 있다. SUT(120)는 임의의 구성요소(들)을 포함할 수 있으며, TS(110)에 의해 이들 중 적어도 일부가 개별적으로 테스트되고/거나 조합되어 테스트될 수 있다. SUT(120)는 관련된 입출력 액세스 핀들의 하나 이상의 세트들을 가지고 TS(110)에 의해 테스트될 구성요소(들)에 대한 액세스를 제공하는 하나 이상의 스캔 체인들을 포함할 수 있다. SUT(120)를 테스트하기 위해 스캔 체인(들)이 SUT(120) 안에서 활용될 수 있는 방식은 이 기술 분야의 숙련자들에 의해 예상될 수 있다. 예를 들어, SUT(120)는 한 개 이상의 보드들을 포함할 수 있는데, 이들에 대한 테스트는 SUT(120)로 입력 테스트 신호들을 인가하고 SUT(120)로부터 출력 테스트 신호들을 수집하기 위해 사용될 수 있는 관련 입출력 액세스 핀들을 가지는 한 개 이상의 스캔 체인들을 사용해 수행될 수 있다.
도 1에 도시된 바와 같이, TS(110)는 테스트 액세스 인터페이스(TAI)(115)를 통해 SUT(120)를 액세스한다. 테스트 액세스 인터페이스는 TS(110), SUT(120), 수행될 테스트 종류 등 뿐 아니라 이들의 다양한 조합들 중 하나 이상에 좌우될 수 있는 어떤 적절한 테스트 액세스 인터페이스를 이용해 구현될 수 있다.
예를 들어, TAI(115)는 이 명세서에 참조의 형태로 전체가 포함되는 IEEE 1149.1에 표준화된 것 같은 공동 테스트 액션 그룹(JTAG) 테스트 액세스 포트(TAP)를 포함할 수 있다. IEEE 1149.1 표준은 이하의 신호들의 세트를 지원하는 TAP를 규정한다: TDI(Test Data In), TDO(Test Data Out), TMS(Test Mode Select), TCK(Test Clock), 및 선택사항으로서 TRST(Test Reset Signal). SUT(120)의 TDI 및 TDO 핀들은 TS(110)가 SUT(120)의 적어도 일부를 테스트하기 위해 SUT(120)를 액세스할 수 있게 하는 바운더리 스캔 체인 안에서 상호연결된다.
TAI(115)는 어떤 다른 적절한 테스트 액세스 인터페이스를 포함할 수 있다.
당업자라면 TS(110), TAI(115), 및 SUT(120)가 여기에서 포괄되는 실시예들의 특성들을 제공하는데 알맞은 어떤 방식에 따라 구현될 수 있다는 것을 예상할 것이다.
여기 기술된 바와 같이, TISA는 시스템 테스트시 상당한 개선을 제공하기 위해 시스템 테스트 사양들과 결합되는 컴퓨터 사이언스 사양들을 활용할 수 있다. 시스템 테스트 사양들 및 컴퓨터 사이언스 사양들에 대한 일반적 설명이 이어지고, 그 뒤에 TISA를 제공하기 위해 컴퓨터 사이언스 사양들 및 시스템 테스트 사양들이 함께 활용될 수 있는 방식에 대한 설명이 뒤따른다.
TISA는 컴퓨터 사이언스 사양들을 활용함으로써 시스템 테스트 사양들을 더 개선시킨다. 시스템 테스트 사양들은 "자동화된 테스트" 흐름(일반적으로 테스트 알고리즘(들)의 정의로부터 실제 테스트 동작들로 되어 가는데 필요로 될 수 있는 모든 단계들 및 자원들을 포함)의 모든 국면들에서 일반적으로 지원되는 사양들을 포함할 수 있다.
테스트 자동화를 돕기 위해, 테스트 자원들은 대개 보드들 및 디바이스들 안에 내장되고, 보통 테스트 액세스 포트(Test Access Port: TAP)라 불리는 표준화된 인터페이스를 이용해 액세스될 수 있다. 이것은 핀 수와 합리적 자원 액세스 및 관리를 제한하는 효과를 가진다. 피테스트 시스템 내 자원들을 기술하기 위해 여러 언어들이 사용될 수 있으며, 그에 따라 이들은 TGT(Test Generation Tool)들로의 입력들로서 사용될 수 있다. TGT들은 TAP에 명령하고 관련 테스트 동작들을 실행하도록 테스트 제어 유닛(TCU)에 의해 사용될 수 있는 테스트 시퀀스들을 생성하도록 알고리즘들을 적용할 수 있다. 테스트 동작들의 특성 및 성능은 이러한 세 요소들, 즉 액세스 표준, 데이터 포맷, 및 TCU 구현에 좌우된다.
TISA는 개선된 시스템 테스트 사양들을 제공하기 위해 컴퓨터 사이언스 사양들을 활용할 수 있다. 이것은 "소프트웨어 개발 흐름"(일반적으로 선택된 소프트웨어 언어(들)로 코딩된 소프트웨어 알고리즘으로부터 컴파일레이션(compilation), 명령어 세트 구조(ISA), 상호작용적 디버깅 등뿐 아니라 이들의 다양한 조합과 같은 타깃 프로세서 상의 최종 디버깅 및 실행으로 되어 가는데 필요로 될 수 있는 어떤 혹은 모든 단계들 및 자원들을 포함)의 전 국면에서 이용가능한 컴퓨터 사이언스 사양들의 사용을 포함할 수 있다.
컴퓨터 사이언스의 컴파일레이션의 사용이 프로그래머에게 친숙한 하이 레벨 추상화에 정의된 알고리즘을 머신-실행가능 명령어들로 변환하게 한다. 이 프로세스는 입력된 프로그래밍 언어와 프로젝트의 복잡도에 대단히 크게 좌우될 수 있다. 그러나, 그 접근 방식들의 전부나 대부분은 어떤 알고리즘이든 그 복잡도와 무관하게 기본 명령어들로 분해될 수 있다는 기본적인 가정을 공유한다. 이것이 고전적 언어들뿐 아니라, 가령 C++, 자바, Python 등과 같은 보다 현대적인 하이-레벨의 객체 지향적 언어들에도 적용된다.
명령어 세트 구조(ISA)는 모든 프로세서의 핵심이고, 컴파일레이션이 매우 효과적으로 되는 근거이다. 일반적으로, 각각의 프로세서는 프로세서가 동작될 수 있게 하는 방식을 정의하는 명령어 세트를 제공한다. 그 명령어들이 프로세서의 ISA의 적어도 일부를 형성한다. ISA가 레지스터들, 어드레싱 모드들(addressing modes), 연산 코드들(opcodes), 메모리 구조들 등 뿐 아니라 이들의 다양한 조합들과 같이, 명령어들과 관련된 다양한 구성물들을 포함하는 것으로 간주될 수 있다는 것을 예상할 수 있을 것이다. ISA는 프로세서가 메모리로부터/메모리로의 읽기/쓰기 같은 간단한 명령어들을 실행하고, 레지스터들에 대해 논리적이나 산술적인 연산들을 수행하고, 인터럽트를 처리하는 등의 일을 할 수 있게 한다. 이러한 기본 양태는 실질적으로 시간이 지나도 바뀌지 않고 그대로 남아 있으며, 현대의 프로세서들은 대단히 많은 자원들을 효율적으로 활용할 수 있고 그에 따라 거의 같은 정도의 시간 안에 훨씬 많은 수의 그러한 기본 명령어들을 이행할 수 있기 때문에 탁월한 성능을 발휘한다. 게다가, 복잡한 연산들을 하드 코딩함으로써 메인 프로세서를 도울 수 있는 보조 프로세서들(가령, 부동 소수점 보조 프로세서들, 그래픽 보조 프로세서들 등)의 사용으로부터 더 높은 성능들에 도달될 수 있다.
컴퓨터 사이언스에서 디버깅의 사용은 소프트웨어 개발 및 실행 프로세서의 모니터링과 검증을 가능하게 한다. 일반적으로, 소프트웨어 개발은 최종 제품이 불이행 혹은 흔한 호칭인 "버그들(bugs)"이 없도록 보장하기 위해 엄격히 모니터링되고 검증되는 길고 어려운 과정이다. 소프트웨어 프로그램들을 테스트하는 것을 돕기 위해, 소프트웨어 개발 흐름은 많은 강력한 디버깅 특성들을 제공한다. 예를 들어, 전형적 소프트웨어 개발 흐름 디버깅 특징들에는 단계별 실행, 모든 레지스터들 및 메모리 위치들의 가관측성(observability)/제어가능성, 중단점들(breakpoints) 및 관리점들(watchpoints)의 사용 등이 포함된다. 이러한 디버깅 특성들뿐 아니라 다른 다양한 디버깅 특성들은 대개는 소프트웨어 컴파일러에 의해 최종 코드 안에 내장되는 알고리즘들 및 구조들에 의해 이행 가능하게되나, 프로세서 안에서 이용가능한 하드웨어 자원들에 의해 지원될 수도 있다. 이러한 정보로부터 디버거(debugger)는 오리지널 코드를 재구성하고 모든 ISA-레벨 연산들을 프로그래밍 추상 계층에 상관시킬 수 있다.
개선된 시스템 테스트 사양들이 가능하도록 자동화된 테스트 실행 사양들 및 컴퓨터 사이언스 소프트웨어 사양들을 함께 사용하는 것은 도 2 및 도 3을 참조하여 보다 잘 이해될 수 있을 것이다.
도 2는 피테스트 시스템을 위한 테스트 명령들을 생성하도록 협력하는 테스트 생성 툴 및 소프트웨어 컴파일러를 포함하는 도 1의 테스트 시스템의 일 실시예에 대한 하이-레벨 블록도이다.
도 2에 도시된 바와 같이 TS(110)는 테스트 생성 툴(TGT)(210) 및 소프트웨어 컴파일러(SC)(220)를 포함한다.
TGT(210)는 TGT 작성기(212) 및 TGT 알고리즘들(214)을 포함한다.
TGT 작성기(212)는 시스템 서술 파일들(211)을 입력으로서 수용한다. 시스템 서술 파일들(211)은 피테스트 시스템을 테스트하기 위해 테스트 명령들/벡터들을 생성하도록 TGT에 의해 사용될 수 있는 어떤 알맞은 서술 파일들을 포함한다. 예를 들어, 시스템 서술 파일들(211)은 회로 서술 파일들, 보드/고정물 네트리스트(fixture netlist) 파일들, 기타 서술 파일들 등 뿐 아니라 이들의 다양한 조합을 포함할 수 있다. 시스템 서술 파일들(211)은 TGT(210) 상에서 입수될 수 있고/있거나 한 개 이상의 원격 컴포넌트들 및/또는 시스템들로부터 얻어질 수 있다.
시스템 서술 파일들(211)은 한 개 이상의 회로 서술 파일들을 포함할 수 있다. 회로 서술 파일들은 바운더리 스캔 서술 언어(BSDL, 보드-레벨 JTAG에 대한 IEEE 1149.1 표준의 일부로서 개발되었음), 계층구조적 스캔 서술 언어(HSDL, BSDL의 확장버전으로서 개발되었음), 새 스캔 서술 언어(NSDL) 등 뿐 아니라 이들의 다양한 조합 같은 어떤 적절한 서술 언어(들)을 이용해 특정될 수 있다.
시스템 서술 파일들(211)은 한 개 이상의 보드/고정물 네트 리스트 파일들을 포함할 수 있다. 보드/고정물 네트 리스트 파일들은 디바이스(들)에 대한 물리적 설명, 네트 리스트, 커넥션, 및 유사 정보를 기술하는 것과 관련된 파일들을 포함할 수 있다. 보드/고정물 네트 리스트 파일들은 PCB, 거버(Gerber) 같은 어떤 적절한 포맷, 및/또는 보드/고정물 네트 리스트 파일들에 적합한 어떤 다른 포맷으로 특정될 수 있다.
시스템 서술 파일들(211)은 한 개 이상의 다른 서술 파일들을 포함할 수 있다. 그 다른 서술 파일들은 회로 모델을 생성하기 위해 입력으로 사용될 수 있는 어떤 적절한 서술 파일들을 포함할 수 있다. 예를 들어, 다른 서술 파일들에는 Asset의 매크로 언어, Goepel의 CASLAN 언어, 및/또는 어떤 다른 적절한 서술 언어 파일들 같이 어떤 적절한 적용예-명세 및/또는 툴-고유의 서술 언어를 포함할 수 있다.
TGT 작성기(212)는 회로 모델(213)을 도출하기 위해 시스템 서술 파일들(211)을 처리한다. 회로 모델(213)을 도출하기 위한 TGT 작성기(212)에 의한 시스템 서술 파일들(211)의 처리는 어떤 적절한 방식을 통해 수행될 수 있다. 회로 모델(213)은 TGT(210)가 실행 중인 피테스트 시스템의 모델이나 피테스트 시스템의 일부를 특정한다. TGT 작성기(212)는 회로 모델(213)을 TGT 알고리즘들(214)로 제공한다.
TGT 알고리즘들(214)은 회로 모델(213)을 수용한다. TGT 알고리즘들(214)은 TGT 아토믹 테스트 동작들(216)을 생성하기 위해 회로 모델(213)을 처리한다. TGT 알고리즘들(214)에 의해 TGT 아토믹 테스트 동작들(216)을 도출하도록 하는 회로 모델(213)의 처리는 어떤 적절한 방식을 통해 수행될 수 있다.
SC(220)는 SC 프론트엔드(front-end) 알고리즘들(222) 및 SC 백엔드(back-end) 알고리즘들(224)을 포함한다.
SC 프론트엔드 알고리즘들(222)은 컴퓨터 사이언스 소스 파일들(221)을 입력으로서 수용한다. 컴퓨터 사이언스 소스 파일들(221)은 컴파일러에 의해 컴파일링될 수 있는 어떤 적절한 컴퓨터 사이언스 소스 파일들을 포함한다. 예를 들어, 컴퓨터 사이언스 소스 파일들(221)은 C++, 자바, Python 등 뿐 아니라 이들의 다양한 조합 같은 어떤 적절한 컴퓨터 프로그래밍 언어(들)를 위한 컴퓨터 사이언스 소스 파일들을 포함할 수 있다. 예를 들어, 컴퓨터 사이언스 소스 파일들(221)은 하나 이상의 C 파일들, 하나 이상의 C++ 파일들, 및/또는 어떤 다른 적절한 컴퓨터 사이언스 소스 파일들 중 하나 이상을 포함할 수 있다.
SC 프론트엔드 알고리즘들(222)은 프로그램 모델(223)을 도출하기 위해 컴퓨터 사이언스 소스 파일들(221)을 처리한다. 프로그램 모델(223)은 컴퓨터 사이언스 소스 파일들(221)의 중간적 표현을 특정한다. SC 프론트엔드 알고리즘들(222)은 프로그램 모델(223)을 SC 백엔드 알고리즘들(224)로 제공한다.
SC 백엔드 알고리즘들(224)은 프로그래 모델(223)을 입력으로서 수용한다. SC 백엔드 알고리즘들(224)은 ISA 아토믹 동작들(226)을 포함하는 하나 이상의 ISA 이진 파일들(225)을 생성하도록 프로그램 모델(223)을 처리한다. ISA 아토믹 동작들(226)을 포함하는 ISA 이진 파일들(225)을 형성하기 위한 SC 백엔드 알고리즘들(224)에 의한 프로그램 모델(223) 처리는 어떤 적절한 방식에 따라 수행될 수 있다. ISA 아토믹 동작들(226)은 TISA가 구현되는 프로세서에 의해 지원되는 어셈블리-레벨 명령어들이다.
도 2에 도시된 바와 같이, TGT(210) 및 SC(220)의 각자의 프로세싱 흐름 외에, TGT(210) 및 SC(220) 사이의 추가적 상호동작이 TISA 아토믹 동작들(235)의 생성을 제어하는 데 활용될 수 있다. 일 실시예에서, SC 백엔드 알고리즘들(224)이 TGT 알고리즘들(214)로 한 개 이상의 벡터 계산 요청(230)을 개시할 수 있다. SC 벡엔드 알고리즘들(224)은 SC 백엔드 알고리즘들이 TAP를 액세스해야 할 때 벡터 계산 요청(230)을 개시할 수 있다. TGT 알고리즘들(214)은 SC 백엔드 알고리즘들(224)로부터 벡터 계산 요청(230)을 수신할 때 그 수신된 벡터 계산 요청(230)에 기반하여 TAP을 위한 한 개 이상의 TGT 아토믹 테스트 동작들(216)을 생성한다. 그러면 그 한 개 이상의 TGT 아토믹 테스트 동작들(216)이 SC 백엔드 알고리즘들(224)에 의해 제어되는 방식에 따라 TAP로 적용될 수 있는데, 이는 ISA 아토믹 동작들(226)을 이용해 TGT 아토믹 테스트 동작들(216)에 대한 알고리즘 제어를 가능하게 하기 위해 TGT 아토믹 테스트 동작들(216)이 ISA 아토믹 동작들(226)과 결합되기 때문이다. 이런 방식으로, SC(220)는 TAP에 대한 액세스의 알고리즘 제어를 제공한다.
도 2에 도시된 바와 같이, TGT(210) 및 SC(220) 외에, TS(110)는 TISA 작성기(240)를 더 포함한다. TISA 작성기(240)는 TGT 아토믹 테스트 동작들(216) 및 ISA 아토믹 동작들(226)을 수용한다. TISA 작성기(240)는 TGT 아토믹 테스트 동작들(216)을 TISA 명령어들로 변환하고 TISA 명령어들을 ISA 이진 파일(들)(225) 안에 삽입한다(즉, TISA 명령어들을 ISA 아토믹 동작들(226)과 결합함으로서 결과적으로 TISA 아토믹 동작들(246)을 포함하는 TISA 이진 파일들(245)을 형성한다). TISA 작성기(240)는 TGT(210)의 일부, SC(220)의 일부일 수 있고, TGT(210)와 SC(220)에 걸쳐 분할될 수 있고, TGT(210)와 SC(220)와 별개 등으로 구현될 수 있다.
도 2와 관련해 도시되고 기술된 다양한 입력들 및 출력들이 어떤 다른 적절한 방식 및 그 다양한 조합들을 통해 저장, 디스플레이, 실행, 전달, 및/또는 처리될 수 있다는 것을 예상할 수 있을 것이다.
도 3은 피테스트 시스템을 위한 테스트 명령어들을 생성하도록 공동 작업하는 테스트 생성 툴 및 소프트웨어 컴파일러를 포함하는 도 1의 테스트 시스템의 일 실시예에 대한 하이-레벨 블록도이다.
도 3에 도시된 바와 같이, 도 3의 TS(110)는 TISA 아토믹 동작들을 포함하는 TISA 이진 파일들이 테스트 생성 툴 및 소프트웨어 컴파일러 사이의 상호작용을 이용해 생성된다는 점에서 도 2의 TS(110)와 유사한 방식으로 동작한다. 그러나 도 3의 TS(110) 내 테스트 생성 툴 및 소프트웨어 컴파일러 사이의 상호작용은 도 2의 TS(110) 내 테스트 생성 툴 및 소프트웨어 컴파일러 사이의 상호작용과 상이하다.
도 3에 도시된 바와 같이, TS(110)는 테스트 생성 툴(TGT)(310) 및 소프트웨어 컴파일러(SC)(320)를 포함한다.
TGT(310)는 TGT 작성기(312) 및 TGT 알고리즘들(314)을 포함한다.
TGT 작성기(312)는 시스템 서술 파일들(311)을 입력으로서 수용한다. 시스템 서술 파일들(311)은 피테스트 시스템을 테스트하기 위해 테스트 명령들/벡터들을 생성하도록 TGT에 의해 사용될 수 있는 어떤 알맞은 서술 파일들을 포함한다. 예를 들어, 시스템 서술 파일들(311)은 회로 서술 파일들, 보드/고정물 네트리스트(fixture netlist) 파일들, 기타 서술 파일들 등 뿐 아니라 이들의 다양한 조합을 포함할 수 있다. 도 3의 시스템 서술 파일들(311)은 도 2와 관련해 도시되고 기술된 시스템 서술 파일들(211)과 유사한 시스템 서술 파일들(가령, 한 개 이상의 회로 서술 파일들, 한 개 이상의 보드/고정물 네트리스트 파일들, 하나 이상의 다른 서술 파일들 등 뿐 아니라 이들의 다양한 조합들)을 포함할 수 있다. 시스템 서술 파일들(311)은 TGT(310) 상에서 입수될 수 있고/있거나 한 개 이상의 원격 컴포넌트들 및/또는 시스템들로부터 얻어질 수 있다.
TGT 작성기(312)는 한 개 이상의 테스트 동작 서술 파일들(3311-331N)(집합적으로 테스트 동작 서술 파일들(331))을 입력으로서 수용한다. 테스트 동작 서술 파일들(331)은 SC(320)에 의해 생성된다. SC(320)에 의한 테스트 동작 서술 파일들(331)의 생성이 이하에서 상세히 설명된다.
TGT 작성기(312)는 회로 모델(313)을 생성하기 위해 시스템 서술 파일들(311) 및 테스트 동작 서술 파일들(331)을 처리한다. TGT 작성기(312)에 의해 회로 모델(313)을 도출하기 위한 시스템 서술 파일들(311)의 처리는 어떤 적절한 방식을 통해 수행될 수 있다. 회로 모델(313)은 TGT(310)가 실행 중인 피테스트 시스템의 모델이나 피테스트 시스템의 일부를 특정한다. 테스트 동작 서술 파일들(331)과 함께 시스템 서술 파일들(311)의 처리는 TGT(310)가 적절한 TAP 아토믹 동작들을 도출할 수 있게 하는 방식으로 TGT 작성기(312)로 하여금 회로 모델(313)을 도출할 수 있게 한다. TGT 작성기(312)는 회로 모델(313)을 TGT 알고리즘들(314)로 제공한다.
TGT 알고리즘들(314)은 회로 모델(313)을 수용한다. TGT 알고리즘들(314)은 TGT 아토믹 테스트 동작들(316)을 생성하기 위해 회로 모델(313)을 처리한다. TGT 알고리즘들(314)에 의해 TGT 아토믹 테스트 동작들(316)을 도출하도록 하는 회로 모델(313)의 처리는 어떤 적절한 방식을 통해 수행될 수 있다.
도 3에 도시된 바와 같이, TGT(310) 및 SC(320) 외에, TS(110)는 TISA 변환기(340)를 더 포함한다. TISA 변환기(340)는 TGT 아토믹 테스트 동작들(316)을 수용한다. TISA 변환기(340)는 TGT 아토믹 테스트 동작들(346)을 형성하기 위해 TGT 아토믹 테스트 동작들(316)을 변환한다. TISA 변환기(340)는 소프트웨어 컴파일레이션 프로세스에 포함시키기 위해 TISA 아토믹 테스트 동작들(346)을 SC(320)로 제공한다. SC(320)에 의한 TISA 아토믹 테스트 동작들(346)의 사용을 이하에서 상세히 설명한다. TISA 변환기(340)는 TGT(310)의 일부, SC(320)의 일부일 수 있고, TGT(310)와 SC(320)에 걸쳐 분할될 수 있고, TGT(310)와 SC(320)와는 별개 등으로 구현될 수 있다.
SC(320)는 SC 전치(pre) 컴파일러(330), SC 프론트엔드(front-end) 알고리즘들(322) 및 SC 백엔드(back-end) 알고리즘들(324)을 포함한다.
SC 전치 컴파일러(330)는 컴퓨터 사이언스 소스 파일들(321)을 수용한다.
컴퓨터 사이언스 소스 파일들(321)은 컴파일러에 의해 컴파일링될 수 있는 어떤 적절한 컴퓨터 프로그래밍 소스 파일들을 포함한다. 예를 들어, 컴퓨터 사이언스 소스 파일들(321)은 C++, 자바, Python 등 뿐 아니라 이들의 다양한 조합 같은 어떤 적절한 컴퓨터 프로그래밍 언어(들)를 위한 컴퓨터 프로그래밍 소스 파일들을 포함할 수 있다. 예를 들어, 컴퓨터 사이언스 소스 파일들(321)은 하나 이상의 C 파일들, 하나 이상의 C++ 파일들, 및/또는 어떤 다른 적절한 컴퓨터 사이언스 소스 파일들 중 하나 이상을 포함할 수 있다.
SC 전치 컴파일러(330)는 컴퓨터 사이언스 소스 파일들(321)을 처리한다.
SC 전치 컴파일러(330)는 컴퓨터 사이언스 소스 파일들(321)을 처리하고, 그로부터 전처리된 컴퓨터 사이언스 소스 파일들(321P)을 도출한다. 컴퓨터 사이언스 소스 파일들(321)은 어떤 적절한 방식에 따라 전처리된 컴퓨터 사이언스 소스 파일들(321P)을 생성하기 위해 SC 전치 컴파일러(330)에 의해 전처리될 수 있다. SC 전치 컴파일러(330)는 전처리된 컴퓨터 사이언스 소스 파일들(321P)을 프론트엔드 알고리즘들(322)에 제공한다.
SC 전치 컴파일러(330)는 컴퓨터 사이언스 소스 파일들(321)의 처리 도중에 테스트 동작들을 검출하고, 테스트 동작 서술 파일들(331)을 생성한다. 테스트 동작 서술 파일들(331)은 어떤 적절한 테스트 서술 언어를 사용해(가령, 한 개 이상의 표준 테스트 서술 언어들을 사용하거나, TGT(310)에 고유한 테스트 서술 언어를 사용하거나 이들의 다양한 조합을 이용해) 특정될 수 있다. SC 전치 컴파일러(330)는 테스트 동작 서술 파일들(331)을 TGT(310)에 제공한다(예시적으로는 TGT(310)의 TGT 작성기(321)에 제공하고, TGT 작성기(312)는 회로 모델(313)을 도출하기 위해 시스템 서술 파일들(311)과 함께 테스트 동작 서술 파일들(331)을 처리한다).
SC 프론트엔드 알고리즘들(322)은 전처리된 컴퓨터 사이언스 소스 파일들(321P)을 수용한다. SC 프론트엔드 알고리즘(322)들은 또한, TGT(310)에 의해 테스트 동작 서술 파일들(331)로부터 도출된 TGT 아토믹 테스트 동작들(316)을 이용하는 TISA 변환기(340)에 의해 생성되는 TISA 아토믹 테스트 동작들(346)을 수용한다. SC 프론트엔드 알고리즘들(322)은 프로그램 모델(323)을 도출하기 위해, 전처리된 컴퓨터 사이언스 소스 파일들(321P) 및 TISA 아토믹 테스트 동작들(346)을 컴파일링한다. 프로그램 모델(323)은 TISA 아토믹 동작들을 형성하기 위해 TISA 아토믹 테스트 동작들(346)이 ISA 아토믹 동작들 안에 병합될 수 있도록 TISA 아토믹 테스트 동작들(346)을 포함하는 전처리된 컴퓨터 사이언스 소스 파일들(321P)의 중간적 표현을 특정한다. SC 프론트엔드 알고리즘들(322)은 프로그램 모델(323)을 SC 백엔드 알고리즘들(324)로 제공한다.
SC 백엔드 알고리즘들(324)은 프로그래 모델(323)을 수용한다. SC 백엔드 알고리즘들(324)은 ISA 아토믹 동작들(356)을 포함하는 하나 이상의 TISA 이진 파일들(355)을 생성하도록 프로그램 모델(323)을 처리한다. SC 백엔드 알고리즘들(324)에 의해 TISA 아토믹 동작들(356)을 포함하는 TISA 이진 파일들(355)을 형성하도록 하기 위한 프로그램 모델(323) 처리는 어떤 적절한 방식에 따라 수행될 수 있다.
TISA 아토믹 동작들(356)은 ISA 아토믹 동작들(즉, TISA가 구현되는 프로세서에 의해 지원되는 어셈블리 레벨 명령어들) 및 TISA 아토믹 테스트 동작들(346)을 포함한다.
TISA 아토믹 동작들(356)은 TGT 아토믹 테스트 동작들(316)(즉, TISA 아토믹 테스트 동작들(346)의 형태로 됨)에 대한 (ISA 아토믹 동작들을 이용하는) 알고리즘 제어를 제공함으로써, TISA 아토믹 동작들(356)이 적용되어야 할 피테스트 시스템의 개선된 시스템 테스트를 가능하게 할 수 있다. 그에 따라 TGT 아토믹 테스트 동작들(316)(즉, TISA 아토믹 테스트 동작들(346)의 형태로 됨)이 SC 백엔드 알고리즘들(324)에 의해 제어되는 방식으로 TAP에 인가될 수 있는데, 이는 ISA 아토믹 동작들을 이용해 TGT 아토믹 테스트 동작들(316)에 대한 알고리즘 제어를 가능하게 하기 위해 TGT 아토믹 테스트 동작들(316)이 ISA 아토믹 동작들과 결합되기 때문이다. 이런 방식으로, SC(220)는 TAP에 대한 액세스의 알고리즘 제어를 제공한다.
도 3과 관련해 도시되고 기술된 다양한 입력들 및 출력들은 어떤 다른 적절한 방식 및 그 다양한 조합들을 통해 저장, 디스플레이, 실행, 전달, 및/또는 처리될 수 있다는 것을 예상할 수 있을 것이다.
도 2 및 도 3과 관련해, 특정 수의 입력 파일들, 중간 파일들, 모델들, 출력 파일들 등과 관련해 도시되고 기술되고 있지만, 도 2 및 도 3 뿐 아니라 여기 제안된 관련된 다양한 교시 내용들은 어떤 적절한 수의 입력 파일들, 중간 파일들, 모델들, 출력 파일들 등을 이용해 구현될 수 있다는 것을 알 수 있을 것이다.
도 2 및 도 3은 컴퓨터 사이언스 사양들이 개선된 테스트 사양들(가령, 시스템 테스트에 대해 보다 세밀한 제어를 제공하고, 상호작용적 시스템 테스트를 가능하게 하고, 시스템 테스트 중에 상호작용적 디버깅을 가능하게 하며, 여기 도시되고 기술된 다른 다양한 이점들을 제공함)에 대해 활용될 수 있는 방식을 예시한다. 도 2 및 도 3의 시스템 테스트 구조들은 STAPL 같은 기존 접근방식들에 대한 개선을 제공하며, 여기서 그 목표는 벡터 포맷들에 프로그래밍 특성들을 추가하는 것으로, 그에 따라 디버깅, 원격 액세스, 및 상호작용성의 특성들이 처음부터 추가된다. 대조적으로, TISA는 시스템 테스트를 위한 액세스를 제어하기 위해 컴퓨터 프로그래밍 및 내장 애플리케이션들로부터의 정보의 재화를 활용한다.
도 2 및 3을 참조할 때, TISA의 사양 및 특성들은 그 추상 레벨에 의해 정의됨을 예상할 수 있다. 즉, TISA 아토믹 동작들의 정의가 세밀할수록, TISA가 더 우수한 성능을 제공할 것이다.
TISA가 JTAG 구조 안에 구현되는 일 실시예에서, 스캔 동작들에 대해 세 개의 추상 레벨들이 지원될 수 있다.
제1추상 레벨은 벡터 레벨이다. 벡터 레벨은 세 추상 레벨들 중 가장 조악한 세밀도를 가진 것으로, 여기서 아토믹 동작들은 스캔 벡터들의 입력들 및 출력들이 된다. 벡터 레벨은 시리얼 벡터 포맷(SVF)이나 어떤 다른 적절한 벡터 포맷 같은 벡터 포맷으로 가장 잘 표현되며, 최상위 레벨 제어를 제공한다.
제2추상 레벨은 TAP 레벨이다. TAP 레벨에서, TAP 상태 머신(state machine)에 대한 총제적 제어를 가능하게 하기 위해 아토믹 동작이 강화된다. 이것은 스캔 동작들에 대해 보다 정확한 제어, 비표준 시퀀스들(가령, 어드레스 가능 섀도우 프로토콜(Addressable Shadow Protocol)이나 기타 유사 프로토콜들의 경우에 필요로 되는 것들 같은 것)에 대한 지원을 가능하게 한다.
제3추상 레벨은 스캔 세그먼트(Scan Segments) 레벨이다. 스캔 세그먼트 레벨은 세 추상 레벨들 중 가장 정교한 세밀도를 가진다. 벡터 레벨 및 TAP 레벨 추상 레벨들은 스캔 벡터를 아토믹 데이터 포맷으로서 사용하는데, 이것은 전체 스캔 체인이 수반되는 전통적 연속 테스트들에 있어서는 충분하지만 스캔 체인을 구성하는 수십 또는 수백 개의 계측기들에 대한 세밀한 제어의 필요성이 있는 계측기-기반 테스트에 있어서는 부담스러운 것이 된다. 스캔 세그먼트 레벨은 전반적 스캔 경로 내에서 개별적으로 다뤄질 수 있는 "스캔 세그먼트들"의 정의를 가능하게 함으로써, 문제 공간에서 바로 스캔 동작들을 규정하고 구현 시점에 그 스캔 동작들을 해결하는데 사용될 수 있는 융통성 있고 강력한 프리미티브들(primitives)의 세트를 제공할 수 있다. 이러한 접근방식은 이용가능한 계산 자원들이 매우 제한될 수 있는 내장 애플리케이션들에서 이점을 가진다. 스캔 세그먼트 레벨의 사용이 이하에서 더 상세히 묘사되고 설명된다.
도 2 및 3에 도시된 바와 같이, 스캔 동작들의 추상 레벨과 무관하게, TGT에 의해 계산된 결과적 TAP 아토믹 동작들(예시적으로, TGT 아토믹 테스트 동작들(216) 및 TGT 아토믹 테스트 동작들(316))은 해당하는 TISA 아토믹 테스트 동작들로 변환되고 이진 실행파일(executable)로(즉, SC에 의해 생성된 ISA 아토믹 동작들로) 삽입된다.
도 2를 참조할 때, TGT 아토믹 테스트 동작들(216) 및 ISA 아토믹 동작들(226)은 TISA 이진 실행파일들(예시적으로 TISA 이진 파일들(245)) 내 TISA 아토믹 동작들(246)을 형성하도록 처리될 수 있다. TISA 아토믹 동작들(246)은 TISA 아토믹 테스트 동작들 및 ISA 아토믹 동작들을 포함한다.
도 3을 참조할 때, TISA 아토믹 테스트 동작들 (TISA 변환기(340)에 의해 TGT(310)에 의해 도출된 TGT 아토믹 테스트 동작들(316)로부터 생성됨)은 SC(310)의 SC 프론트엔드(324)를 수정할 필요 없이, 전치 컴파일링된 어셈블리 명령어들로서 SC 프론트엔드(324)로 입력될 수 있다. 거의 모든 프로그래밍 언어들이 그러한 동작들을 가능하게 한다는 것을 알 수 있을 것이다. 예를 들어, C에서는 이러한 동작이 "asm" 명령을 이용해 얻어진다. 일 실시예에서, SC 백엔드 알고리즘들(324)에 대한 사소한 수정이 요구될 수 있다(가령, TISA 어셈블러 명령어들의 이진 변환을 처리하기 위해). 그러한 프로세스의 예가 도 11과 관련해 여기서 묘사되고 기술된다.
JTAG 구조 내 TISA 아토믹 동작들의 세분성 레벨들에 대해 주로 묘사 및 기술되었지만, 당업자라면 같은 세분성 레벨들의 TISA 아토믹 동작들이 다른 구조들에서도 활용될 수 있다는 것과, 다른 세분성 레벨들의 TISA 아토믹 동작들이 JTAG 구조 및/또는 다른 구조들 등 뿐 아니라 이들의 다양한 조합에서 활용될 수 있다는 것을 알 수 있을 것이다.
상술한 바와 같이, TISA는 어떤 적절한 명령어 세트 구조(ISA)를 이용해 구현될 수 있다. 예를 들어, TISA는 SPARC V8 ISA, INTEL ISA 등을 사용해 구현될 수 있다.
TISA 구현에 대한 설명의 명료성을 위해, SPARC V8 ISA를 이용하는 TISA의 전형적 구현예가 도 4a-4e와 관련해 도시되고 기술된다. 이러한 전형적 구현예에 있어서, TISA는 SVF 포맷을 포함하는 명령어들의 직접 코딩을 가능하게 하는 벡터 레벨 TISA로서 구현된다. 그러나 위에서 기술한 바와 같이, TISA가 TAP 레벨 TISA 또는 스캔 세그먼트 레벨 TISA로서 구현되는 SPARC V8 ISA를 이용하는 TISA의 구현이 수행될 수도 있음을 예상할 수 있을 것이다.
SPARC V8 ISA는 오픈-소스 소프트 프로세서 패밀리 Leon 2 및 Leon 3 같은 많은 제품들 상에서 구현된다.
1992년 SPARC 인터네셔널 사에 의해 공개된 "The SPARC Architecture Manual Version 8"(이제부터 "SPARC 구조 매뉴얼")에 대한 검토는 SPARC V8 ISA에 의해 활용되지 않는 많은 코드 워드들이 존재한다는 것을 드러낸다. 이것은 적어도 부록 F의 "opcodes and condition codes"의 검토로부터 자명하다.
도 4a는 SPARC V8 ISA의 미활용 코드 워드들을 도시한다. 도 4a에 도시된 미활용 코드 워드들은 TISA를 위한 "테스트" 명령어들을 코딩하는데 사용될 수 있다. 더 상세하게는, "op" 및 "op2" 둘 모두가 0으로 세팅될 때, 그 명령어는 TISA를 위해 사용될 수 있도록 "The SPARC Architecture Manual Version 8"에서 미구현된 것으로 마킹된다.
도 4b는 모두 13개의 SVF 명령어들을 표현할 수 있는 코딩 포맷을 도시한다. 도 4b에 도시된 바와 같이, 비트들 30-25는 명령어 코딩 자체를 포함하고, 비트들 21-18은 하나가 상기 명령어와 함께 사용되어야 하는 경우 TAP 상태를 코딩하는데 사용될 수 있고, 비트들 17-14는 필요한 경우 선택사항인 정보를 특정하기 위해 각 명령어에 의해 사용될 수 있다.
도 4c는 IEEE 1149.1 TAP의 TAP 상태들의 전형적 비트 코딩을 도시한다. TAP 상태들의 비트 코딩은 IEEE 1149.1 TAP 상태 명칭을 나타내는 제1열, IEEE 1149.1 TAP 상태 명칭과 관련된 SVF TAP 상태 명칭을 나타내는별하는 제2열, 및 도 4b의 비트들 21-18의 비트 코딩을 나타내는 제3열을 사용해 표현된다. 비트 코딩은 다른 다양한 방식들을 통해 TAP 상태들에 지정될 수 있다는 것을 알 수 있을 것이다.
SVF 명령어들은 최종 코드 안에서 코딩되어야 할 여러 매개변수들을 고려한다. 매개변수들을 표현하기 위해, 그리고 명령어와 데이터가 분리되게 유지할 보통의 구조상의 최선의 실시에 대한 이익을 도모하도록, 레지스터 기반 매개변수 패싱(passing)이 벡터 레벨 TISA의 이러한 전형적 구현을 위해 정의된다. 따라서, 벡터 레벨 TISA는 여섯 개의 전용 32-비트 레지스터들을 제공한다: GENERIC1, GENERIC2, TDI, TDO, MASK 및 SMASK. 이 여섯 개의 전용 32-비트 레지스터들이 도 4d에 도시된다. 이 여섯 개의 전용 32-비트 레지스터들의 용도가 아래에 상세히 기술되나, 일반적 규칙으로서 이러한 레지스터들은 매개변수를 저장하거나 매개변수가 저장되는 메모리 위치를 가리키는 것 중 어느 하나를 위해 사용된다. 따라서, 컴파일레이션 시점에서 보통의 ISA 명령어들은 TISA 명령어가 유발되기 전에 그러한 레지스터들을 로드하는 데 사용될 수 있다. 더 상세하게는, TISA의 이러한 SPARC V8 ISA 구현시 보통의 로드/저장(load/store) 명령어들에 대한 매개변수들로서 직접적으로 보조 프로세서 레지스터들이 사용될 수 있다.
TISA의 이러한 SPARC V8 ISA 구현시 활용될 수 있는 SVF 명령어들은 ENDDR, ENDIR, STATE, FREQUENCY, PIO, PIOMAP, HDR, HIR, TDR, TIR, SDR, SIR, 및 RUNTEST를 포함한다. 이들 SVF 명령어들은 여기 그 전체가 참조의 형태로 포함되는 1997년 ASSET InterTech사에 의한 "Serial Vector Format Specification"(이제부터 SVF 매뉴얼이라 칭함)을 참조함으로써 보다 잘 이해될 수 있다. TISA의 이러한 SPARC V8 ISA 구현시 이 SVF 명령어들의 사용에 대해 이하에서 보다 상세하게 설명할 것이다.
ENDDR , ENDIR , STATE
ENDDR 및 ENDIR 명령어들은 TAP 인터페이스가 자신의 동작을 종료시키는 TAP 상태를 가리킨다. STATE 명령어는 TAP 인터페이스를 특정 상태로 강제한다. TISA의 이러한 전형적 구현에 있어서, ENDDR, ENDIR, 및 STATE 명령어들에 대한 SVF 코딩들은 도 4e에 도시된 바와 같이 각기 “000000”, “000001”, 및 “000010”이다. 이러한 SVF 명령어들의 SVF 코딩은 필요할 때 "TAP 상태(STATE)" 파일(즉 도 4c에 도시된 것 같은 TAP 상태들의 전형적 비트 코딩)을 이용해 수행될 수 있다. 최소한 SVF 매뉴얼 검토로부터, STATE 명령어가 선택사항으로서 명시적 상태들의 시퀀스를 매개변수들로서 취할 수 있다는 것을 알 수 있을 것이다. 이러한 TISA의 전형적 구현예에 있어서, 상태들의 명시적 시퀀스를 매개변수들로서 취한 것은 상기 시퀀스 내 각 상태에 대해 하나씩 일련의 명령들에 의해 코딩될 것이다.
FREQUENCY
FREQUENCY 명령어는 TAP의 유효(working) 주파수를 특정하는데 사용된다. FREQUENCY 명령어는 32-비트 정수의 Hz 사이클로 표현된다. TISA의 이러한 전형적 구현에 있어서, FREQUENCY 명령어들에 대한 SVF 코딩은 도 4e에 도시된 바와 같이 “000011”이다. FREQUENCY 명령어의 값이 GENERIC1 레지스터에 저장된다.
PIO , PIOMAP
PIO 명령어는 앞서 PIOMAP에 대한 호출에 의해 설정된 포맷으로 병렬 벡터들을 처리하는데 사용될 수 있다. RISA에 대한 이러한 전형적 구현에 있어서, PIOMAP은 TAP 인터페이스를 설정할 적절한 명령들을 생성하는 전치 프로세서 디렉티브(directive)로서 간주된다. 따라서, PIO 명령어는 단지 병렬 벡터를 표현하면 되며, 병렬 벡터들은 병렬 벡터가 저장되는 어드레스를 (GENERIC 1 레지스터 안에서) 나타냄으로써 표현될 수 있다. 벡터를 구성하는 워드들의 개수 "n"은 명령어의 비트들 13-0로 명시되고, 그에 따라 벡터는 213 = 8K 워드들 = 32 Kbytes라는 상한 사이즈를 가진다. 벡터 사이즈가 한 워드의 정확한 배수가 아닌 경우, 필요할 때 메모리 내에 패딩(padding) 및 리얼라인먼트(re-alignment)가 제공될 수 있다. TISA의 이러한 전형적 구현예에 있어서, PIO 명령어들에 대한 SVF 코딩은 “000100”이다.
HDR , HIR , TDR , TIR
HDR, HIR, TDR, 및 TIR 명령어들의 역할은 서로 상이하다. 여기서, 이 SVF 명령어들은 함께 고려되는데, 이는 (1) 이 SVF 명령어들이 기능적으로 유사하고(즉, 이들이 서로 다른 성격을 가짐에도 불구하고 이들 모두가 쉬프트(shift) 연산을 명령함), (2) 이 SVF 명령어들이 이하의 동일한 매개변수들을 수용하기 때문이다:
(1) 길이: 쉬프트할 비트들의 개수를 표현하는 32 비트 넘버,
(2) TDI(선택사항): 입력 쉬프트 벡터,
(3) TDO(선택사항): 예상 출력 쉬프트 벡터,
(4) MASK(선택사항): TDO와 실제 값들을 비교할 때 사용될 마스크.
'1'은 케어(care)를 나타내고, '0'은 돈 캐어(don't care)를 나타낸다.
(5) SMASK(선택사항): TDI에 어떤 비트들이 고려되어야 할지를 마킹하기 위한 마스크. '1'은 케어(care)를 나타내고, '0'은 돈 캐어(don't care)를 나타낸다.
TISA의 이러한 전형적 구현에 있어서, HDR, HIR, TDR, 및 TIR 명령어들에 대한 SVF 코딩들은 도 4e에 도시된 바와 같이 각기 “000110”, “000111”, "001010" 및 “001011"이 된다.
TISA의 이러한 전형적 구현에 있어서, 이하의 추가 코딩들이 사용될 수 있다:
(1) 길이가 GENERIC1 레지스터에 저장된다.
(2) TDI가 존재할 때 O1은 '1'이고 그외의 경우는 '0'이다.
설정되면, TDI 레지스터는 입력 벡터가 저장되는 어드레스를 포함한다.
(3) TDO가 존재할 때 O2는 '1'이고 그외의 경우는 '0'이다.
설정되면, TDO 레지스터는 예상 출력 벡터가 저장되는 어드레스를 포함한다.
(4) MASK가 존재할 때 O3는 '1'이고 그외의 경우는 '0'이다.
설정되면, MASK 레지스터는 출력 마스크가 저장되는 어드레스를 포함한다.
(5) SMASK가 존재할 때 O4는 '1'이고 그외의 경우는 '0'이다.
설정되면, SMASK 레지스터는 출력 마스크가 저장되는 어드레스를 포함한다.
SDR , SIR
SDR 및 SIR 명령어들은 HDR, HIR, TDR, 및 TIR 명령어들과 같은 신택스(syntax)를 가지지만 기능적인 차이를 갖는다: SDR 및 SIR은 TAP 상에서 실제 스캔 동작을 일으킨다. 상호작용적 테스트에서 시스템으로부터 읽혀진 실제 출력 벡터가 알고리즘의 토대가 되며, 따라서 TISA는 메모리에 실제 출력 벡터를 저장하는 수단을 제공한다. “TAP STATE” 필드 (도 4b에 도시된 것과 같이, 비트들 21-18)가 0과 다를 때, GENERIC2 레지스터는 실제 출력 벡터의 저장 위치를 가리킨다. 따라서, SDR 및 SIR은 최대 일곱 개의 매개변수들을 지원할 수 있다. TDO가 명시되고 실제 출력 벡터가 예상 출력 벡터와 다른 경우, SPARC 구조 매뉴얼의 4.2절에 기술된 바와 같이 오버플로(overflow) 플래그가 프로세서 상태 레지스터(PSR(Processor State Register)) 안에 세팅된다.
RUNTEST
RUNTEST 명령어는 TAP 인터페이스가 특정 시간 동안 특정 상태로 테스트를 관리하도록 강제하며, RUNBIST 동작들(가령, IEEE 1149.1에 정의된 것 같은 동작들)을 제어하는데 주로 사용된다. RUNTEST 명령어는 이하의 매개변수들(이들 전부가 선택사항임) 중 한 개 이상을 수용한다:
(1) run_state: 테스트 실행 중에 인터페이스가 유지해야 하는 상태,
(2) run_count: 테스트가 취해야 하는 클록 사이클 횟수,
(3) run_clk: run_count가 참고하는 클록(TCK: TAP 클록, SCK: 시스템 클록),
(4) min_time: 실수(real number)로 표현되는 초 단위의 최소 실행 시간,
(5) max_time: 실수(real number)로 표현되는 초 단위의 최대 실행 시간,
(6) endstate: 명령 마지막에 인터페이스가 도달해야 하는 상태.
TISA의 이러한 전형적 구현예에 있어서, RUNTEST 명령어들에 대한 SVF 코딩은 “000101" 또는 "100101”이다.
TISA의 이러한 전형적 구현에 있어서, 이하의 추가 코딩들이 사용될 수 있다:
(1) TAP_STATE: 이것은 그것이 정의되는 run_state를 포함한다.
(2) O1: TAP_STATE가 정의되면 '1', 그외의 경우는 '0'.
(3) O2: min_count가 명시되면 '1', 그외의 경우는 '0'. 세팅되면, GENERIC1 레지스터는 min_count의 32-비트 무부호(unsigned) 표현을 포함한다.
(4) O3: max_time이 세팅되면 '1', 그외의 경우는 '0'. 세팅되면, GENERIC2 레지스터는 max_count의 32-비트 무부호 표현을 포함한다.
(5) O4: endstate가 세팅되면 '1', 그외의 경우는 '0'. 세팅되면, 비트들 13-10이 최종 상태를 포함한다.
(6) 비트들 9-0: run_count가 명시되면, 무부호 정수(max run_count=210=1024)로서 표현된다. 이 필드가 "0"이 아니면, 비트 30은 run_clock을 가리킨다((‘1’=TCK, ‘0’=SCK).
여기에서는 주로 TISA의 SPARC V8 ISA 구현에 있어서 특정 SVF(즉, 자세히 말하자면 ENDDR, ENDIR, STATE, FREQUENCY, PIO, PIOMAP, HDR, HIR, TDR, TIR, SDR, SIR, 및 RUNTEST)의 사용에 대해 도시 및 기술되고 있지만, 더 적은 SVF나 더 많은 SVF 명령어들이 사용될 수 있다는 것을 알 수 있을 것이다.
SPARC V8 ISA를 이용하는 TISA의 구현에 대하여 주로 도시되고 기술되어 있지만, 여기 도시되고 기술된 TISA 교시 내용들에 따라 TISA를 구현하기 위해 다른 다양한 ISA들이 활용될 수 있다는 것을 알 수 있을 것이다.
상호작용적 테스트 접근방식들에서 데이터 핸드오프(handoff) 포인트는 매우 중요하다. 위에 기술된 바와 같이, 테스트 프로그램은 두 개의 메인 부분들인 (소프트웨어 컴파일러에 의해 나타내는 것 같은) 알고리즘 부분과 (테스트 생성 툴에 의해 나타내는 것 같은) 테스트 액세스 부분으로 구성된다. 테스트 프로그램을 이용하는 테스트 동작 중에, 테스트 프로그램이 피테스트 시스템을 액세스하고 있는 순간들과, 테스트 프로그램이 그 테스트 결과들을 검토하고 다음 단계(들)가 필요한지를 판단하는 순간들이 있을 것이다. 이러한 두 동작들 사이의 핸드-오프가 효율적인 상호작용적 테스트를 얻는데 있어 중요하다.
SVF 및 STAPL 같은 기존의 스크립트 기반의 접근방식들에서, 한 스크립트가 벡터 레벨의 모든 TAP 동작들을 처리한다. 이 레벨에서, 인터페이스(또는 "플레이어")는 TAP 프로토콜과 통신할 수 있고, 피테스트 시스템으로/으로부터 벡터들을 송신/수신할 수 있다. 게다가, STAPL은 비트 벡터들 상에서 일부 기본 흐름 제어(if-then-else) 및 알고리즘 동작들 역시 허용한다. 보다 세밀한 처리(가령, 수신된 벡터 내 레지스터를 식별하거나, 특정 디바이스를 액세스하기 위해 벡터를 계산)에 대한 수요가 존재하는 경우, 플레이어는 알고리즘 부분으로 제어를 넘긴다. STAPL에서는 이것이 "export" 명령을 통해 이뤄진다. 그러나 불리하게도 SVF나 STAPL 어느 것도 이를 위한 표준화된 포맷을 가지고 있지 않다(STAPL의 경우, 핸드오프 과정은 항상 정해진 사업자에게 독점권이 있다).
에릭손(Ericsson)에서 나온 마스터 테스트 제어기(MTC(Master Test Controller)) 및 시스템 BIST 프로세서 같은 기존의 내장된 접근 방식들에서는 알고리즘 부분과 테스트 액세스 부분 사이의 동일한 분할이 이용된다. 그러한 내장된 접근 방식들에서는 알고리즘 부분과 테스트 액세스 부분이 별도로 프로그래밍되어야 하는 서로 다른 보조 프로세서들에 의해 실행된다. 게다가, 알고리즘 부분 및 테스트 액세스 부분의 메모리 공간들이 물리적으로 달라, 결과적인 핸드오프 메커니즘들이 STAPL 핸드오프 메커니즘들과 유사하게 된다. 그 결과는 테스트 액세스 부분의 보조 프로세서가 알고리즘 부분으로의 핸드오프 전에 많은 스캔 동작들을 저장하지 않을 수 없게 된다는 것으로, 증가하는 사이즈의 스캔 체인들이 주어질 때는 어마어마한 양의 자원들을 필요로 할 수 있다.
통합 테스트에 대한 기존의 접근 방식들(가령, SVF 및 STAPL 같은 스크립트 기반의 접근 방식들 및 MTC 및 시스템 BIST 프로세서 같은 내장된 접근 방식들)과 대조적으로, TISA는 테스트 액세스 부분(즉, 테스트 동작들)을 알고리즘 부분(즉, 고전적 ISA) 안에 통합함으로써 테스트 액세스 부분과 알고리즘 부분이 동일한 물리적 메모리 공간을 공유하도록 하고, 그에 따라 테스트 액세스 부분과 알고리즘 부분 사이의 핸드오프 (및 그에 따른 데이터 패싱)가 자동이 되게 할 수 있다. TISA에서, 테스트 액세스 부분과 알고리즘 부분 사이의 핸드오프는 명령어 레벨에서 이뤄지므로, 프로세서는 관련 스케줄링 전략에 따라 필요할 때 스캔 및 알고리즘을 자유롭게 뒤섞을 수 있다(즉, 테스트 동작들과 알고리즘 동작들을 자유롭게 뒤섞을 수 있다).
SPARC V8 ISA를 이용하는 TISA의 이러한 전형적 구현예에 있어서, 벡터들을 처리하는 모든 동작들은 (SVF 명령어들과 관련해 상술한 바와 같이) 절대 어드레싱을 이용한다. 결과적으로, 테스트 벡터들은 ISA 프로그램 안에서 보통의 변수들처럼 사용될 수 있고, 그에 따라 테스트 액세스 부분과 알고리즘 부분 사이의 인터페이스를 자동화할 수 있다. 예로서, 상술한 바와 같이 SPARC V8 ISA를 이용하는 TISA의 전형적 구현예에 기반하여, 이하의 단계들은 원형적 테스트 시퀀스를 예시한다:
(1) SDR 명령어는 피테스트 시스템으로부터 테스트 출력 데이터를 얻기 위해 사용된다. 결과적 출력 데이터는 특정 메모리 위치(가령, GENERIC2 레지스터 내 "actual" 매개변수) 에 자리한다.
(2) 고전적 LOAD 명령어는 이 출력 데이터를 레지스터 안에 로드되도록 이동할 수 있다.
(3) 출력 데이터가 레지스터 안에 로드되면, 산술 연산 및/또는 논리 연산들이 그 출력 데이터를 처리하는 데 사용될 수 있다(SPARC V8 ISA가 load/store 구조이므로, 모든 데이터는 처리되기 전에 레지스터 안으로 로드되어야 한다는 것에 유의해야 한다).
(4) 고전적 STORE 명령어는 알고리즘의 결과를 메모리 안으로 이동한다.
(5) SDR 명령어는 새 테스트 입력 데이터를 TAP로 보낼 수 있다(가령, TDI 레지스터 내 "TDI" 매개변수 사용).
(2)에서 (4)까지의 고전적 알고리즘 동작들은 어떤 ISA 알고리즘 구현예에 있어 표준으로, TISA에 의해 어떤 방식으로도 변형되지 않는다.
따라서, 이러한 단순한 예로부터 TISA가 알고리즘 부분과 테스트 액세스 부분 사이의 자연스럽고 효율적인 핸드오프를 이용하는 어떤 주어진 알고리즘이나 컴퓨터 프로그램을 사용해 지원될 수 있다는 것이 분명하다.
SPARC V8 ISA를 이용하는 TISA의 이러한 전형적 구현예에 있어서 절대 어드레싱이 사용된다(TISA를 기술함에 있어서의 명료성을 위해). 그러나, 여기서의 교시 내용에 의해 정보를 숙지한 당업자라면 SPARC 구조 매뉴얼에 기술된 모든 적법한 SPARC V8 어드레싱 모드들을 지원하도록 TISA의 이러한 전형적 구현예를 변형할 수도 있을 것이다.
여기서는 SVF가 사용되는 TISA의 전형적 구현예에 대하여 주로 도시되고 기술되었지만, SVF는 1149.1 TAP들의 기본적이지만 완벽한 처리를 제공한다고 증명된 잘 알려진 포맷이기 때문에 SVF가 이 전형적 구현예에 사용되었다. 여기서의 교시 내용에 의해 정보를 숙지한 당업자라면 TISA가 어떤 다른 적절한 제어 포맷들을 이용해 구현될 수도 있다는 것을 알 수 있을 것이며, 그 다른 제어 포맷들 중 다수는 TAP 상태 머신의 보다 세밀한 제어를 가능하게 하고 보다 정교한 테스트 동작들을 지원할 수 있을 것이다.
여기서는 추상 레벨이 벡터 레벨인 TISA의 구현예에 대하여 주로 도시되고 기술되었지만, 여기서의 교시 내용에 의해 정보를 숙지한 당업자라면 TISA의 추상 레벨이 TAP 레벨이나 스캔 세그먼트 레벨이 되도록 여기 도시되고 기술된 전형적 TISA 구현예가 변형될 수 있다는 것을 알 수 있을 것이다.
TISA를 설명함에 있어서의 명료성을 위해, 테스트되는 전형적 시스템에 테스트를 수행할 TISA의 전형적 구현예가 도 5 및 6과 관련해 도시되고 기술된다. TISA의 이러한 전형적 사용에 있어서, TISA는 SPARC V8 ISA 및 SVF를 이용하는 벡터 레벨 TISA로서 (즉, 도 4a-4e와 관련해 도시되고 기술된 전형적 구현의 연속으로서) 구현된다.
도 5a 및 5b는 피테스트 시스템에 대한 테스트를 수행할 TISA의 전형적 사용을 도시한다.
도 5a는 JTAG TAP(510) 및 피테스트 시스템(520)을 포함하는 시스템 테스트 환경(500)을 도시한다.
JTAG TAP(510)은 피테스트 시스템(520)에 대한 테스트 액세스를 제공한다. JTAG TAP(510)은 피테스트 시스템(520)으로 입력 데이터를 보내고 피테스트 시스템(520)으로부터 출력 데이터를 수신하기 위해 피테스트 시스템(520)에 대한 테스트 액세스를 제공한다. JTAG TAP(510)은 8 비트 명령어 레지스터인 명령어 레지스터(IR)(512)를 포함한다.
JTAG TAP(510)은 테스트 시스템(가령, 도 3과 관련해 도시되고 기술된 테스트 시스템(110) 같은 것으로, 명료성을 위해 생략됨)에 의해 제어된다.
피테스트 시스템(520)은 제1보드(521)(B1으로 표시됨) 및 제2보드(525)(B2로 표시됨)를 포함한다. 제1보드(521)는 전송기(522)(T로 표시됨)를 포함한다. 제2보드(525)는 수신기(526)(R로 표시됨)를 포함한다. 전송기(522)는 연결부(529)를 통해 수신기(526)로 데이터를 보낸다. 이 예에서, 연결부(529)는 8 비트 연결부이다.
도 5a에 도시된 바와 같이, 각 보드는 자체의 스캔 체인을 통해 JTAG TAP(510)으로부터 액세스될 수 있다. 자세히 말해, 제1보드(521)는 제1스캔 체인(523)을 통해 액세스될 수 있고, 제2보드(525)는 제2스캔 체인(527)을 통해 액세스될 수 있다. 제1스캔 체인(523) 및 제2스캔 체인(527)은 JTAG TAP(510)의 IR(512)에 의해 선택될 수 있다(가령, IR=0는 제1보드 B1을 선택하고, IR=1은 제2보드 B2를 선택한다). 전송기(522) 및 수신기(526)는 그들의 보드들 상에 단독으로 있지 않는다. 오히려 그들은 보다 넓은 스캔 체인들의 일부에 해당한다(가령, 이 예를 위해, 각각 24 비트 및 16 비트).
테스트 프로그램에서 입력 데이터는 제1스캔 체인(523)을 통해 전송기(522)로 보내지고, 그에 따른 출력 데이터는 제2스캔 체인(527)을 이용함으로써 수신기(526)로부터 수집된다. 철저한 테스트를 수행하기 위해, 모든 가능한 값들이 연결부(529)를 통해 보내짐으로써 28=256 개의 벡터들이 연결부(529)를 통해 보내지게 된다. C를 이용할 때, 전형적 프로그램은 아래와 같을 수 있다:
Figure 112011077230915-pct00001
이 프로그램에서, 라인 2는 JTAG 동작들을 처리하는 C 모듈을 포함하고, 여기서 라인 12와 13에서 사용되는 "apply_JTAG”및 "Read_JTAG" 기능들이 정의된다. SC(320)의 전치 컴파일러(330)가 이러한 기능들을 인식하고, TGT(310)를 위한 테스트 동작 서술 파일들(331)을 생성한다. 테스트 동작 서술 파일들(331)의 포맷은 제1보드(521) 및 제2보드(525)의 실제 구현예에 따라 가변될 수 있다. 예를 들어, 제1보드(521) 및 제2보드(525) 둘 모두가 IJTAG에 부합되는 것이면, 테스트 동작 서술 파일들(331)은 가령 새 스캔 서술 언어(NSDL) 코드를 사용해 명시될 수 있을 것이다. 테스트 동작 서술 파일들(331)을 이용하는 TGT(310)는 TISA 변환기(340)에 의해 TISA 아토믹 테스트 동작들(346)로 변환되는 TGT 아토믹 테스트 동작들(316)을 생성한다. TISA 아토믹 테스트 동작들(346)은 SC(320)의 프론트엔드(324)로 제공된다. TGT 아토믹 테스트 동작들(316), 관련 TISA 아토믹 테스트 동작들(346), 및 결과적 TISA 이진 코드가 도 5b에 도시된다.
도 5b는 도 5a의 시스템 테스트 환경(500) 중 테스트를 수행하는 테스트 시스템에 의해 사용될 TISA 코딩으로 C 명령들을 매핑하는 것을 도시한다.
도 5b에 도시된 바와 같이, C 명령들을 TISA 코딩으로 매핑하는 것은 네 개의 칼럼들인 "C 명령" 칼럼(541), "SVF 명령어" 칼럼(542), "TISA 어셈블러" 칼럼(543), 및 "TISA 코딩" 칼럼(544)을 가지는 테이블(540)을 사용해 나타낸다. 테이블(540)은 왼쪽에서 오른쪽으로 C 명령이 SVF 명령어로 변환될 수 있고, SVF 명령어가 TISA 어셈블러로 변환될 수 있으며, TISA 어셈블러가 TISA 이진 코딩으로 코딩될 수 있는 방식을 예시한다.
Apply_JTAG(value,B1.T) 명령은 두 개의 SVF 명령어들인 SIR 8 TDI(00) 및 SDR 24 TDI(value)로 변환된다.
SIR 8 TDI(00) SVF 명령어는 다음과 같은 세 개의 동작들로서 TISA 어셈블러로 변환된다:
SET 8, %cGENERIC1
SET 00, %cTDI
SIR TDI, 이것은 TISA 코딩으로 12010000으로서 변환된다.
SIR 24 TDI(value) SVF 명령어는 다음과 같은 세 개의 동작들로서 TISA 어셈블러로 변환된다:
SET 24, %cGENERIC1
SET value, %cTDI
SDR TDI, 이것은 TISA 코딩으로 10010000으로서 변환된다.
Read_JTAG(value,B2.R) 명령은 두 개의 SVF 명령어들인 SIR 8 TDI(01) 및 SDR 16 ACTUAL(value)로 변환된다.
SIR 8 TDI(01) SVF 명령어는 다음과 같은 세 개의 동작들로서 TISA 어셈블러로 변환된다:
SET 8, %cGENERIC1
SET 01, %cTDI
SIR TDI, 이것은 TISA 코딩으로 12010000으로서 변환된다.
SIR 16 ACTUAL(value) SVF 명령어는 다음과 같은 세 개의 동작들로서 TISA 어셈블러로 변환된다:
SET 16, %cGENERIC1
SET "value", %cGENERIC2
SDR ACTUAL, 이것은 TISA 코딩으로 10008000으로서 변환된다.
SET 동작들의 TISA 코딩은 특정되지 않는데, 이는 SPARC V8 매뉴얼이 그 동작들을 프로세서의 구현에 이어지는 상이한 코딩을 가질 수 있는 "의사 명령어들"로서 식별하기 때문이다.
결정된 TISA 코딩들을 사용해, 전치 컴파일러(330)는 이제 하이 레벨 JTAG 액세스들을 그들의 관련 TISA 어셈블러 명령어들로 대체할 수 있다. 그 결과는 C를 사용하여 명시되는 다음과 같은 코드이며, 여기서 JTAG TAP로의 호출은 관련 TISA 어셈블러 코딩으로 대체되었다:
Figure 112011077230915-pct00002
이 코드는 프로그램 모델(323)을 생성할 프론트엔드 알고리즘들(322) 안으로 입력될 수 있다. 프로그램 모델(323)은 TISA 아토믹 동작들(356)을 포함하는 실행가능한 TISA 이진 파일(들)(355)을 생성할 백엔드 알고리즘들(324) 안으로 입력될 수 있다.
테이블(540)의 "TISA 코딩" 칼럼(544)은 TISA 어셈블러 명령어들의 이진 코딩을 묘사한다(가령, 도 4a-4e와 관련해 도시되고 기술된 것 같이 SPARC V8 ISA를 이용하는 TISA의 전형적 구현에 대해 정의된 다양한 규칙들을 사용).
여기 기술된 바와 같이, TISA는 피테스트 시스템의 테스트를 수행할 때 테스트 세분성과 관련해 (즉, TAP 레벨부터 스캔 세그먼트 레벨까지) 완전한 자유를 제공한다. 도 2 및 도 3에 도시된 바와 같이, 그리고 도 4a-4e 및 도 5a-5b의 전형적 TISA 구현예를 이용해 추가로 설명되는 바와 같이, 테스트 패턴들은 소프트웨어 컴파일러에 의한 테스트 생성 툴로의 명시적 쿼리들(queries)을 이용해 산출될 수 있어, 소프트웨어 알고리즘에 있어서의 유일한 한계는 그 쿼리들 자체에 대한 해결이 된다.
예로서, 조악한 레벨에서 SC로부터 TGT로의 쿼리들에는 (가령, 고전적 BSDL 기반 바운더리 스캔 테스트에서와 같이) 피시스템의 전체 스캔 체인이 포함될 수 있다.
예로서, 세밀한 레벨에서는 SC로부터 TGT로의 쿼리들에 레지스터들이나 심지어 비트들이 포함될 수 있다. 예를 들어, 전용 스캔 세그먼트 프리미티브들이 계측기 액세스 및 TAP 재설정을 크게 가속화할 수 있고, 코드 재사용을 끌어올릴 수 있으며, 다양한 다른 이점들을 제공할 수 있을 것이다.
예로서, 조악한 레벨과 정교한 레벨 사이의 어디 쯤에 있는 중간 레벨에서, SC로부터 TGT로의 쿼리들은 기능적으로 행해질 수 있다(가령, IJAG 및 다른 적절한 표준 같은 표준들을 이용하고, NSDL 및 다른 적절한 객체 지향 서술 언어들 같은 서술 언어들을 이용함).
이런 방식으로, TISA는 디바이스/레지스터 액세스가 모델 공간에서(즉, TGT에서)에서 해결되게 강제하는 것이 아니라, 오히려 개발자들로 하여금 문제 공간(즉, SC에서)에서 디바이스/레지스터 액세스를 처리할 수 있게 함으로써, 개발자들이 분석 세밀도를 자신들의 수요 및 이용가능한 자원들에 맞춰 조정할 수 있게 한다.
또한, 가령 자동화된 테스트 장치(ATE(Automated Test Equipment))에서와 같이 TISA 프로세서가 충분한 자원들을 가지는 실시예들에 있어서, 회로 모델의 적어도 일부가 프로그램 모델 안에서 구현됨으로써 TISA 머신이 바로 벡터 패턴들을 계산할 수 있다.
또한, TISA는 상호작용적 디버깅(로컬 및/또는 원격 방식)을 포함하는 상호작용적 테스트, 병행 수행, 이식성(portability) 등 뿐 아니라 이들의 다양한 조합을 포함하는 상호작용적 테스트 같이, 이전에 TISA 없이는 가능하지 않았던 다양한 다른 시스템 테스트 사양들에 대해 지원을 가능하게 한다. 이러한 추가 사양들이 지금부터 추가로 상세히 다뤄진다.
도 6은 상호작용적 테스트 사양을 지원하는 TISA 기반 테스트 환경의 일 실시예를 도시한다.
도 6에 도시된 바와 같이, TISA 기반 테스트 환경(600)은 호스트 컴퓨터(HC)(601), 테스트 시스템(TS)(610) 및 피테스트 시스템(SUT)(620)을 포함한다.
HC(601)는 SUT(620)의 테스트를 제어하기 위한 TS(610)를 제어하도록 구성된다. HC(601)는 메모리(604)에 연결된 프로세서(602)를 포함한다. 프로세서(602) 및 메모리(604)는 어떤 적절한 프로세서 및 메모리일 수 있다.
메모리(604)는 한 개 이상의 디버거 제어 프로그램들(605)을 저장한다. 디버거 제어 프로그램(들)은 HC(601)로 하여금 TS(610) 상에서 운영되는 컴퓨터 프로그램(들)의 실행을 추적하고, 바람직하거나 필요한 경우 바꾸도록 할 수 있다. 예를 들어, 디버거 제어 프로그램(들)(605)은 GNU 디버거(GDB), dbx 디버거, Perl 디버거, Bash 디버거, Python 디버거 등의 적절한 디버거 프로그램들 뿐 아니라 이들의 다양한 조합 가운데 한 개 이상을 포함할 수 있다.
메모리(604)는 또한 한 개 이상의 디버거 디스플레이 프로그램들(606)을 저장할 수 있다. 디버거 디스플레이 프로그램(들)은 HC(601)가 디버거 제어 프로그램(들)(605)과 관련된 정보를 디스플레이할 수 있게 한다. 디버거 제어 프로그램(들)(605)과 관련된 정보는 디버거 디스플레이 프로그램(들)(606)에 의해 어떤 적절한 방식에 따라 (가령, 한 개 이상의 디스플레이 기기들을 사용하여) 디스플레이될 수 있다. 예를 들어, 디버거 디스플레이 프로그램(들)(606)은 (GDB로의 그래픽 유저 인터페이스인) 인사이트(Insight), 데이터 디스플레이 디버거(DDD, GDB 및 다른 것들 같은 다양한 명령-라인 디버거들을 위해 그래픽 유저 인터페이스를 제공함) 등과 같은 적절한 디버거 디스플레이 프로그램들 뿐 아니라 이들의 다양한 조합 중 하나 이상을 포함할 수 있다.
TS(610)는 SUT(620)를 테스트할 목적으로 HC(601)에 의해 제어된다. TS(610)는 (가령 도 1-3의 TS(110)에 대해 도시되고 기술된 것과 같이) TISA와 양립하는 방식으로 기능하도록 구성되고, 또한, (가령 HC(601) 상에서 운영되는 디버거들에 의한 액세스를 가능하게 함으로써) 상호작용적 테스트를 지원하도록 구성된다.
TS(610)는 메모리(614)에 연결된 TISA 프로세서(612)를 포함한다. TISA 프로세서(612)는 (도 4a-4e 및 도 5와 관련해 위에서 묘사되고 기술된 것 같이) SPARC V8, INTEL 등과 같은 어떤 적절한 프로세서를 이용해 구현될 수 있다. 메모리(604)는 어떤 적절한 메모리일 수 있다.
메모리(614)는 한 개 이상의 디버거 프로그램 스텁들(stubs)(615)을 저장한다. 디버거 프로그램 스텁들(615)은 HC(601)상에서 운영되는 해당 디버거 제어 프로그램(들)(605)의 디버거 프로토콜을 파악함으로써, HC(601)가 TS(610)와 통신하도록 할 수 있다. 예를 들어, 디버거 스텁(들)(615)은 GDB 스텁, DBX 스텁, Perl 스텁, Bash 스텁, Python 스텁 등의 적절한 디버거 프로그램들 뿐 아니라 이들의 다양한 조합 가운데 한 개 이상을 포함할 수 있다.
메모리(614)는 TISA 이진 파일들(616)을 저장한다. TISA 이진 파일들(616)은 도 2 및 도 3과 관련해 묘사되고 기술된 것 같은 방식으로 TS(610)에 의해 생성된다. TISA 이진 파일들(616)은 SUT(620)에 대해 테스트를 수행하도록 TISA 프로세서(612)에 의해 실행된다.
TS(610)는 또한 TISA 프로세서(612)와 연결된 테스트 액세스 포트(TAP)(618)를 포함한다. TAP(618)는 TISA 프로세서(612)가 HC(601)에 의해 제어되는 동안 SUT(620)의 테스트를 수행할 수 있도록 TISA 프로세서(612) 및 SUT(620) 사이에 테스트 인터페이스를 제공한다. TAP(618)는 어떤 적절한 TAP(가령 1149.1 TAP)일 수 있다.
TISA 프로세서(612)는 인터페이스(617)를 이용해 TAP(618)과 인터페이스한다. 인터페이스(617)는 TAP 및 피테스트 시스템 사이의 어떤 적절한 인터페이스(가령, TAP(618)가 1149.1 TAP로서 구현되는 경우 TCK, TMS, TDI, TDO, 및 선택사항으로서 TRST를 지원하는 인터페이스 같은)일 수 있다.
도 6에 도시된 바와 같이, HC(601) 및 TS(610) 사이에 인터페이스(609)가 존재한다. 인터페이스(609)는 HC(601) 및 TS(610) 사이의 로컬 통신 및/또는 원격 통신을 지원할 수 있다. 따라서, HC(601)는 TS(610)를 통해 로컬 방식 및/또는 원격 방식으로 SUT(620)의 상호작용적 테스트를 제어할 수 있다.
예를 들어, 로컬 테스트에 있어서, 인터페이스(609)는 유니버설 비동기 수신기-송신기(Universal Asynchronous Receiver-Transmitter :UART) 인터페이스, 시리얼 인터페이스 등 뿐 아니라 이들의 다양한 조합 중 한 개 이상으로서 구현될 수 있다.
예를 들어, 리코트 테스트에 있어서, 인터페이스(609)는 전송 제어 프로토로(TCP)/인터넷 프로토콜(IP)이나 어떤 다른 적절한 통신 프로토콜들 같은 어떤 적절한 통신 사양들을 이용해 구현될 수 있다. 이것은 HC(601)와 TS(610)가 먼 지리적 거리만큼 떨어져 있을 수 있는 원격 테스트를 가능하게 하고, HC(601)는 SUT(620)의 테스트를 수행할 목적으로 TS(610)를 계속 제어할 수 있을 것이다.
TISA 기반 테스트 환경(600)에서, HC(601)는 표준 연결부(가령, UART, TCP/IP 등)을 통해 TS(610)의 동작을 제어함으로써 SUT(620)에 대한 테스트 실행을 단계별로 제어할 수 있고, 그에 따라 상호작용적 테스트 및 디버깅 사양을 가능하게 할 수 있다.
명료성을 목적으로 생략되어 있지만, HS(601) 및 TS(610)가 추가 프로세서들, 추가 메모리들, 내부 통신 버스들, 입/출력 모듈들, 추가 지원 회로들(가령, 전력 공급기들) 등 뿐 아니라 이들의 다양한 조합들 같은 다양한 다른 구성요소들을 포함할 수 있다는 것을 알 수 있을 것이다.
명료성을 목적으로 생략되어 있지만, SUT(620)가 TISA를 이용해 테스트될 수 있는 어떤 피테스트 시스템일 수 있음을 예상할 수 있을 것이다.
주로 특정 타입의 디버거 제어 프로그램들, 디버거 디스플레이 프로그램들, 인터페이스들 등에 대하여 묘사되고 기술되어 있지만, TISA-기반 테스트 환경(600)은 다양한 다른 디버거 제어 프로그램들, 디버거 디스플레이 프로그램들, 인터페이스들 등 뿐 아니라 이들의 다양한 조합을 이용해 총체적 상호작용 테스트 사양들을 가능하게 하는 방식으로 구현될 수 있다.
도 7은 도 6의 TISA 기반 테스트 환경의 전형적 구현을 묘사한다
도 7에 도시된 바와 같이, 도 7의 전형적 TISA-기반 테스트 환경(700)은 GNU 툴 스위트(Tool Suite)가 도 5a의 전형적 시스템 테스트 환경(500)에 대한 상호작용적 테스트를 지원하는데 사용되는 도 6의 TISA 기반 테스트 환경(600)의 전형적 구현예이다.
도 7에 도시된 바와 같이, 전형적인 TISA 기반 테스트 환경(700)은 호스트 컴퓨터(HC)(701), 테스트 시스템(TS)(710) 및 피테스트 시스템(SUT)(720)을 포함한다.
HC(701)는 프로세서(702) 및 메모리(704)를 포함한다. 도 7의 HC(701)는 디버거 제어 프로그램(들)(605)이 GDB (GDB 705)를 사용해 구현되고 디버거 디스플레이 프로그램(들)(606)이 DDD (DDD 706)을 사용해 구현되는 도 6의 HC(601)의 전형적 구현예이다.
TS(710)는 TISA 프로세서(712)와 메모리(714)를 포함한다. 도 7의 TS(710)는 TISA 프로세서(612)가 SPARC V8 ISA를 이용해 구현되고 (SPARC V8 TISA 프로세서(712)로 표시), 디버거 프로그램 스텁(들)(615)이 GDB 스텁(GDB 스텁 715)을 이용해 구현되고, TISA 이진 파일들(616)이 SPARC V8 TISA 프로세서(712)와 관련된 SPARC V8 ISA에 기반하여 생성되는(TISA 이진 파일들(716)) 도 6의 TS(610)의 구현예이다.
TS(710)는 SPARC V8 TISA 프로세서(712)와 연결된 테스트 액세스 포트(TAP)(718) 역시 포함한다. 도 7의 TS(710)는 TAP(618)가 1149.1 TAP (1149.1 TAP(718))를 사용해 구현되는 도 6의 TS(610)의 구현예이다.
SPARC V8 TISA 프로세서(712)는 인터페이스(717)를 이용해 1149.1 TAP(718)과 접속한다. 인터페이스(717)는 TCK, TMS, TDI, TDO, 및 선택사항으로서 TRST를 지원하는 표준 1149.1 인터페이스이다.
SUT(720)는 도 5a의 SUT(520)이다. SUT(720)는 도 5a의 SUT(520)에서처럼 서로 다른 보드 상에 송신기와 수신기를 포함한다.
1149.1 TAP(718)는 SPARC V8 TISA 프로세서(712)가 HC(701)에 의해 제어되는 동안 SUT(720)의 테스트를 수행할 수 있도록 SPARC V8 TISA 프로세서(712) 및 SUT(720) 사이에 테스트 인터페이스를 제공한다.
도 7에 도시된 바와 같이, HC(701) 및 TS(710) 사이에 인터페이스(709)가 존재한다. 인터페이스(709)는 HC(701) 및 TS(710) 사이에서 (가령, 네트워크를 통해) 로컬 통신 및/또는 원격 통신을 지원할 수 있다. 따라서, HC(701)는 TS(710)를 통해 로컬 방식 및/또는 원격 방식으로 SUT(720)의 상호작용적 테스트를 제어할 수 있다.
전형적인 TISA 기반 테스트 환경(700)에서, HC(701)는 인터페이스(709)를 통해 TS(710)의 동작을 제어함으로써 SUT(720)에 대한 테스트 실행을 단계별로 제어할 수 있고, 그에 따라 상호작용적 테스트 및 디버깅 사양을 가능하게 할 수 있다.
도 7의 좌측 대부분이 기존의 컴퓨터 사이언스 요소들, 즉, 전체 HC(701) 뿐 아니라 TS(710) 상에 GDB 스텁(715)을 재사용한다는 것을 예상할 수 있을 것이다. 도 7의 중앙 부분도 같은 경우로서, HC(701) 및 TS(710)(뿐 아니라 이들과 관련된 서브 요소들) 사이의 유사성은 명백하다. TISA는 그러한 전반적 기반구조가 시스템 테스트를 제공하는데 활용될 수 있게 한다.
예로서, 도 5a의 시스템 테스트 환경(500)(관련된 전형적 C 프로그램들, SVF 명령어들, TISA 어셈블러 명령어들, 및 TISA 코딩들을 포함)과 관련하여, (a) 변수들 “sent_value” 및 “received_value” 을 모니터링하면서 단계별 실행, (b) tap로 보내질 값(변수 “sent_value”)에 대한 즉석 수정, (c) 종료(end) 조건 루프 돌기(looping)의 수정. (d) 모든 변수들의 모니터링 등 뿐 아니라 이들의 다양한 조합들같이, TISA가 GDB(또는 어떤 다른 적절한 디버거들)에 대해 활용함으로써 이행할 수 있는 많은 상호작용적 테스트 동작들이 존재한다. 이러한 상호작용적 테스트 동작들은 GDB에 대한 표준 동작들이며, 상술한 바와 같이 알고리즘 부분과 테스트 액세스 부분 사이에서 제어를 자동으로 핸드오프하도록 하는 TISA의 능력으로 인해 TISA는 이들을 직접적으로 사용할 수 있다. TISA가 부재할 때, 각각의 핸드오프 구현을 위해 특별한 툴이 개발되고 구성되어야 할 것이다.
도 7의 전형적 TISA-기반 테스트 환경(700)은 테스트되는 특정 시스템의 상호작용적 테스트를 지원하기 위해 GNU 툴 스위트를 이용하는 것에 대하여 주로 묘사되고 기술되지만, 여기서의 교시 내용에 의해 정보를 숙지한 당업자라면 TISA 기반의 테스트 환경에서 상호작용적 테스트 사양들은 테스트되는 어떤 타입의 시스템을 테스트하기 위한 어떤 적절한 툴 스위트들을 사용해 구현될 수 있다는 것을 예상할 수 있을 것이다.
도 6의 TISA-기반 테스트 환경(600)과 도 7의 전형적 TISA-기반 테스트 환경(700)이 (TISA에 의해 가능하게 되는 상호작용적 테스트 사양들을 기술함에 있어서의 명료성을 위해) 테스트가 미리 정해진 알고리즘을 따라 단계별로 수행되는 선형 테스트 절차들에 대하여 주로 묘사 및 기술되고 있지만, 컴퓨터 사이언스 경험 및 TISA에 의해 가능한 기법들의 활용으로 인해 다른 더 복잡한 상호작용적 테스트 시나리오들이 있을 수 있다는 것을 예상할 수 있을 것이다. TISA에 의해 가능하게 되는 보다 복잡한 상호작용적 테스트 시나리오의 예가 여기서 도 8과 관련해 묘사 및 기술된다. 이것은 다만 예일 뿐으로 여기서의 교시 내용에 의해 정보를 숙지한 당업자라면 다른 많은 상호작용적 테스트 시나리오들 및 적용예들에서 TISA를 사용할 수 있다는 것을 예상할 수 있을 것이다.
여기 기술된 바와 같이, 세분성 및 상호작용 둘 모두를 지원하는 것 외에, TISA는 병행 수행(concurrency)을 지원한다.
TISA는 시스템 테스트 흐름을 컴퓨터 사이언스 소프트웨어 흐름과 자연스럽고도 완전하게 병합함으로써 두 흐름들의 최선의 양태들을 활용할 수 있다. 예로서, STAPL 같은 접근방식들은 규정상 완전히 순차적이기 때문에 계측기들에 대한 병행 수행 제어를 처리하는 것에 어려움을 겪는다. 또, MTC 및 SystemBIST 같은 접근방식들은 본래 순차적이고 싱글-태스킹이므로, 병행 수행을 지원하기 위해 그 접근방식들을 프로그래밍하는 것은 어렵고도 어색할 수 있다. 대조적으로, 병행 수행적 실행은 컴퓨터 사이언스에서 잘 알려진 문제이며 이를테면 현재 모든 운영 시스템들의 기반에 깔려 있다. 병행 수행적 실행을 지원하는 많은 수의 라이브러리들이 수 있고(가령, POSIX 스위트, BOOST 스위트 등), 대다수의 현재의 프로세서들은 멀티-태스킹 및 컨텍스트-스위칭을 효과적으로 지원하도록 설계된다(가령, SPARC V8은 이를테면 로테이팅(rotating) 레지스터 윈도를 구현한다). 시스템 테스트 흐름 및 TISA에 의해 이행되는 컴퓨터 사이언스 소프트웨어 흐름 사이의 자연스러운 상호작용은 TISA가 병행 수행에 대한 그러한 컴퓨터 사이언스 접근방식들을 완전하게 활용할 수 있게 한다.
TISA에 의한 병행 수행 사양들의 지원은 예를 이용해 더 잘 이해될 수 있다. 예로서, 도 5a 및 도 7의 피테스트 시스템(520)의 송신기(522) 및 수신기(526) 사이의 T-R 채널의 데이터 전송 레이트를 최적화하는 문제를 생각할 수 있다. 이것은 제1보드(521) 상의 송신기(522)로부터 데이터 패턴들의 스트림을 전송하고, 제2보드(525) 상의 수신기(526)에서 대응 데이터 패턴들의 스트림을 수신하며, 송수신된 데이터 패턴들의 스트림들을 비교해 비트/에러 레이트를 산출하고 그에 맞춰 송신기(522) 및/또는 수신기(526)의 매개변수들을 튜닝하는 일을 수반할 것이다. 이러한 최적화는 동시 발생적으로 동작되는 세 개의 프로그램들을 이용해 효율적으로 수행될 수 있다.
도 8은 도 5a 및 도 7의 피테스트 시스템의 송수신기 채널 최적화를 수행하기 위한 전형적 프로그램 구조를 묘사한다.
도 8에 도시된 바와 같이, 전형적 프로그램 구조는 패턴 발생기(802), 패턴 수신기(804), 및 비교기(806)를 포함한다. 도 5a 및 도 7의 피테스트 시스템(520)의 송신기(522) 및 수신기(526) 사이의 T-R 채널의 데이터 전송 레이트를 최적화하기 위해 패턴 발생기(802), 패턴 수신기(804), 및 비교기(806)가 공동 작업한다.
패턴 발생기(802)는 적절한 입력 데이터 패턴들을 제1보드(521) 상의 송신기(522)(T)로 보낸다. 제1보드(521)(B1)의 스캔 체인(523)을 통해 입력 데이터 패턴들을 송신기(522)로 제공하기 위해 패턴 발생기(522)는 TAP(예시적으로 도 5a의 TAP(510), 도 7의 TAP(718))를 액세스할 수 있다. 패턴 발생기(802)는 (가령, 도 5a와 관련해 여기 기술된 코드의 라인들 12-13에서 명시된 바와 같이) 어떤 적절한 방식으로 송신기(522)에 입력 데이터 패턴들을 제공할 수 있다. 입력 데이터 패턴들은 송신기(522) 및 수신기(526) 사이의 T-R 채널을 최적화하기 위해 적합한 어떤 데이터 패턴들일 수 있다. 예를 들어, 입력 데이터 패턴들은 미리 계산된 패턴들, 랜덤 패턴들 등 뿐 아니라 이들의 다양한 조합들일 수 있다.
패턴 수신기(804)는 적절한 출력 데이터 패턴들을 제2보드(525) 상의 수신기(526)(R)로부터 수신한다. 제2보드(525)(B2)의 스캔 체인(527)을 통해 출력 데이터 패턴들을 수신기(526)로부터 수집하기 위해 패턴 수신기(804)는 TAP(예시적으로 도 5a의 TAP(510), 도 7의 TAP(718))를 액세스할 수 있다. 패턴 수신기(804)는 (가령, 도 5a와 관련해 여기 기술된 코드의 라인들 14-15에서 명시된 바와 같이) 어떤 적절한 방식으로 수신기(526)로부터 출력 데이터 패턴들을 수집할 수 있다.
비교기(806)는 패턴 발생기(802) 및 패턴 수신기(804)와 통신한다. 비교기는 입력 데이터 패턴들과 출력 데이터 패턴들을 비교한다. 비교기(806)는 T-R 채널의 비트 전송 레이트 및 비트 에러 레이트를 평가하고, 그 비교 결과들에 기초해, T-R 채널의 매개변수들을 최적화하도록 송신기(522) 및 수신기(526) (명료성을 위해 도 5a 및 도 7로부터 생략됨) 양방 모두의 제어 레지스터를 액세스할 수 있다.
그러한 최적화 테스트 절차를 수행하기 위해, 패턴 발생기(802), 패턴 수신기(804), 및 비교기(806)는 병행하여 작업해야 하고, 각각은 나머지들과 무관하게 TAP에 액세스할 수 있어야 한다. 이러한 타입의 제어 구조는 TAP에 대한 원-포인트(one-point) 시리얼 핸드오프 제어만을 지원하도록 개발된 전통적 환경들에서 코딩하기가 매우 어렵다. 이러한 타입의 제어 구조는 MTC나 동일한 시리얼 TAP 액세스 패러다임을 역시 공유하는 그러한 다른 접근방식들을 활용하는 환경들에서 코딩하기가 또한 매우 어렵다. 대조적으로, TISA는 테스트 액세스에 관해 그러한 어떤 가정을 이용해 설계되지 않는다. 오히려 TISA에서는 테스트 액세스가 다른 프로세서 자원들과 유사한 방식으로 다뤄지며, 테스트 액세스 명령어들은 고전적 ISA 명령어들과 직접적으로 섞이게 된다. TISA를 이용해, 도 8의 최적화 테스트 절차는 프로세스들, 스레드(thread)들, 인터-프로세스 통신들(IPC) 등 뿐만 아니라 이들의 다양한 조합들 같은 표준 구성들을 이용하는 어떤 멀티태스킹 운영 시스템에 의해 실행될 수 있다. 이런 방식으로, 패턴 발생기(802), 패턴 수신기(804), 및 비교기(806)는 TAP로의 액세스를 공유할 수 있고, 가령 다익스트라의 세마포어(Dijkstra's semaphores) 같은 잘 알려진 구성물들 및 알고리즘들을 이용하여 모든 프로세서 자원들에 대해 행해지는 것과 같은 어떤 궁극적 TAP 공유 문제들을 해결할 수 있다. 따라서, 기존의 시스템 테스트 사양들은 병행 수행을 지원하지 않는데 반해, TISA는 병행 수행을 쉽고도 완전하게 지원한다는 것이 명백하다.
상술한 바와 같이, TISA는 테스트 액세스 방법이나 관련 테스트 프로그램 분할에 관해 어떤 가정도 하지 않는다. 그보다, 테스트 명령어들은 고전적 ISA 명령어들과 같은 방식 또는 실질적으로 같은 방식으로, 그 둘 사이의 어떤 사전적 분리 없이 다뤄진다. 이것은 TISA가 모든 기존의 (그리고 대체로 미래의) 모든 컴퓨터 사이언스 알고리즘들 및 구성물들로 기존의 테스트 프로세서 접근방식들이 지원할 수 없는 어떤 것과 완벽하게 호환될 수 있게 한다.
따라서, 기존의 소프트웨어 라이브러리들이 TISA 구조 안에 이식될 수 있다는 것을 예상할 수 있을 것이다. 예를 들어, POSIX 및 BOOST 스위트들을 활용하여 (가령 도 8과 관련해 여기 묘사 및 기술된 바와 같이) 멀티태스킹 및 병행 수행성을 획득하는 것이 용이할 것이다. 또, TISA가 기존 ISA의 일반화로서(가령 도 5a 및 도 5b와 관련해 묘사되고 기술된 전형적 SPARC V8 TISA 구현예와 관련하여 묘사되고 기술된 바와 같이) 얻어지는 경우, TISA로 개발되었던 ISA가 이미 그러한 소프트웨어 라이브러리들을 포함할 것이기 때문에, 포팅(porting)이 필요하지 않을 수도 있다는 것을 예상할 수 있을 것이다.
또, TISA를 이용하는 개선된 시스템 테스트를 제공하기 위해 다른 다양한 컴퓨터 사이언스 기법들이 활용될 수 있다는 것을 예상할 수 있을 것이다. 예를 들어, TISA에 대해 활용될 수 있는 그러한 컴퓨터 사이언스 기법들의 일부 예들은 다음과 같은 것을 포함한다: (a) 플랫폼과 무관한 코딩 스타일들의 사용, (b)ISA-ISA 변환기들의 사용, (c) 예를 들어 자바에 대한 것 같이 플랫폼과 무관한 바이트코드를 얻기 위한 버추얼 머신(Virtual Machine) 접근 방식이나, 심지어 TISA가 되기 위한 자바 버추얼 머신 자체의 확장버전의 사용, 및 (d) 적절한 드라이버들에 의해 프리미티브들로 변환될 수 있는 일부 TISA 소프트웨어 인터페이스들을 표준화하기 위한 애플리케이션 프로그래밍 인터페이스(API)의 사용. 이러한 예들은 단지 TISA를 위해 활용될 수 있는 컴퓨터 사이언스 기법들의 몇 가지 예들에 불과하다.
도 9는 피테스트 시스템의 적어도 일부를 테스트함에 있어 프로세서에 의해 사용되기 위해 구성되는 TISA 명령어들을 포함하는 테스트 명령어 세트 구조(TISA(Test Instruction Set Architecture))를 형성하기 위해 명령어 세트 구조(ISA(Instruction Set Architectue))를 구성하는 방법의 일 실시예를 묘사한다.
여기서는 직렬방식으로 수행되는 것으로 주로 묘사 및 기술되고 있지만, 방법(900)의 단계들 중 적어도 일부는 동시 발생적으로, 혹은 도 9와 관련해 묘사되고 기술된 것과는 다른 순서로 수행될 수도 있다.
방법(900)은 (902) 단계에서 시작한다.
단계(904)에서 제1명령어 세트가 생성된다. 제1명령어 세트는 프로세서에 의해 지원되는 ISA 명령어들(즉, 프로세서에 TISA를 제공하기 위해 활용되는 ISA 명령어들)을 포함한다.
단계(906)에서 제2명령어 세트가 생성된다. 제2명령어 세트는 피테스트 시스템과 관련된 테스트 명령어들을 포함한다. 제2명령어 세트는 가령 도 2의 TGT(210)와 관련해 묘사되고 기술된 바와 같이, 혹은 도 3의 TGT(310)와 관련해 묘사되고 기술된 바와 같이, 그리고/혹은 테스트 명령어들을 생성하는 어떤 다른 적절한 방법을 이용하는 어떤 적절한 방식을 통해 생성될 수 있다.
단계(908)에서, 제1명령어 세트들 및 제2명령어 세트들은 통합되어 TISA 명령어들을 형성한다. TISA 명령어들은 프로세서에 TISA를 제공한다.
단계(910)에서, TISA 명령어들은 저장, 디스플레이, 전달, 및/또는 실행되거나, 이들의 조합으로 처리된다. TISA 명령어들은 어떤 다른 적절한 방식으로 처리될 수도 있다.
방법(900)은 단계(912)에서 종료된다.
TISA는 가령 도 10의 방법(1000)와 관련해 묘사되고 기술된 바와 같이, 혹은 도 2의 테스트 시스템 및 도 11a의 관련 방법(1110)과 관련해 묘사되고 기술된 바와 같이, 혹은 도 3의 테스트 시스템 및 도 11b의 관련 방법(1120)과 관련해 묘사되고 기술된 바와 같이, 그리고/혹은 TISA를 형성하는 어떤 다른 적절한 방법을 이용하는 어떤 적절한 방식을 통해 형성될 수 있다.
도 10은 피테스트 시스템의 적어도 일부를 테스트할 때 사용하도록 구성되어 있는 명령어들을 생성하는 방법의 일 실시예를 묘사한다. 여기서는 직렬방식으로 수행되는 것으로 주로 묘사 및 기술되고 있지만, 방법(1000)의 단계들 중 적어도 일부는 동시 발생적으로, 혹은 도 10과 관련해 묘사되고 기술된 것과는 다른 순서로 수행될 수도 있다. 방법(1000)은 단계(1002)에서 시작한다.
단계(1004)에서 제1명령어 세트가 생성된다. 제1명령어 세트는 적어도 한 컴퓨터 사이언스 소스 파일을 컴파일링함으로써 생성되는 명령어들(가령, 프로세서에 의해 지원되는 ISA의 ISA 명령어들)을 포함한다.
단계(1006)에서 제2명령어 세트가 생성된다. 제2명령어 세트는 피테스트 시스템과 관련된 적어도 한 서술 파일을 컴파일링함으로써 생성되는 테스트 명령어들을 포함한다.
단계(1008)에서, 제1 및 제2명령어 세트들이 결합되어 결합된 명령어 세트를 형성한다. 결합된 명령어 세트에서, 제1명령어 세트의 명령어들은 제2명령어 세트의 테스트 명령어들의 실행을 제어하는데 사용되도록 되어 있다.
단계(1010)에서, 결합된 명령어 세트는 저장, 디스플레이, 전달, 및/또는 실행되거나, 이들의 조합으로 처리된다. 결합된 명령어 세트는 어떤 다른 적절한 방식으로 처리될 수도 있다.
방법(1000)은 단계(1012)에서 종료된다.
도 11a 및 11b는 도 9와 관련해 묘사되고 기술된 방법(900) 및/또는 도 10과 관련해 묘사되고 기술된 방법(1000)에 대한 보다 상세한 실시예들을 도시한다.
도 11a는 피테스트 시스템의 적어도 일부를 테스트할 때 사용하도록 구성되어 있는 명령어들을 생성하는 방법의 일 실시예를 묘사한다. 여기서는 주로 특성 시퀀스에 따라 수행되고 있는 것으로 묘사 및 기술되고 있지만, 도 11a의 방법(1110)의 단계들 중 적어도 일부는 도 11a와 관련해 묘사되고 기술된 것과는 다른 순서로 수행될 수도 있다. 도 11a는 도 2 및 도 2의 관련 내용과 연계하여 봄으로써 보다 잘 파악될 수 있다.
방법(1000)은 단계(1111)에서 시작한다.
단계(1112)에서 프로그램 모델이 생성된다. 프로그램 모델은 적어도 한 컴퓨터 사이언스 소스 파일(가령, 프로세서에 의해 지원되는 ISA의 ISA 명령어들)을 컴파일링함으로써 생성되고, 여기서 적어도 한 컴퓨터 사이언스 소스 파일은 적어도 한 호출(call)을 포함한다.
단계(1113)에서 제1명령어 세트가 생성된다. 제1명령어 세트는 프로그램 모델을 사용해 생성된다. 적어도 한 계산 요청 역시 적어도 한 컴퓨터 사이언스 소스 파일에 포함되는 적어도 한 호출을 사용해 생성된다.
단계(1114)에서 회로 모델이 생성된다. 회로 모델은 피테스트 시스템과 관련된 적어도 한 시스템 서술 파일을 컴파일링함으로써 생성된다.
단계(1115)에서 제2명령어 세트가 생성된다. 제2명령어 세트는 회로 모델 및 적어도 한 계산 요청을 이용해 생성된다.
단계(1116)에서, 제1 및 제2명령어 세트들이 결합되어 결합된 명령어 세트를 형성한다. 결합된 명령어 세트에서, 제1명령어 세트의 명령어들은 제2명령어 세트의 테스트 명령어들의 실행을 제어하는데 사용되도록 되어 있다.
단계(1117)에서, 결합된 명령어 세트는 저장, 디스플레이, 전달, 및/또는 실행되거나, 이들의 조합으로 처리된다. 결합된 명령어 세트는 어떤 다른 적절한 방식으로 처리될 수도 있다.
방법(1000)은 단계(1118)에서 종료된다. 도 11b는 피테스트 시스템의 적어도 일부를 테스트할 때 사용하도록 구성되어 있는 명령어들을 생성하는 방법의 일 실시예를 묘사한다. 여기서는 주로 직렬 방식에 따라 수행되고 있는 것으로 묘사 및 기술되고 있지만, 도 11b의 방법(1120)의 단계들 중 적어도 일부는 동시 발생적이거나 도 11b와 관련해 묘사되고 기술된 것과는 다른 순서로 수행될 수 있다. 도 11b는 도 3 및 도 3의 관련 내용과 연계하여 봄으로써 보다 잘 파악될 수 있다.
방법(1100)은 단계(1121)에서 시작한다.
단계(1122)에서, 적어도 한 전처리된 컴퓨터 사이언스 소스 파일 및 적어도 한 테스트 동작 서술 파일이 적어도 한 컴퓨터 사이언스 소스 파일을 전처리함으로써 생성된다.
단계(1123)에서 회로 모델이 생성된다. 회로 모델은 피테스트 시스템 및 적어도 한 테스트 동작 서술 파일과 관련된 적어도 한 시스템 서술 파일을 컴파일링함으로써 생성된다.
단계(1124)에서 테스트 동작들의 세트가 생성된다. 테스트 동작들의 세트는 회로 모델을 사용해 생성된다. 테스트 동작들의 세트로부터의 테스트 동작들은 테스트 프리미티브들의 세트(가령, 회로 모델을 생성하는 테스트 생성 툴에 의해 규정되는 테스트 프리미티브들)를 사용해 기술된다. 프리미티브들의 세트는 피테스트 시스템을 테스트하는 데 사용하도록 구성되어 있는 테스트 동작들을 포함한다.
단계(1125)에서, 동작들의 세트는 테스트 동작들의 세트의 테스트 프리미티브들을 명령어 세트 구조의 소프트웨어 명령어들과 결합하여 사용되도록 구성되는 테스트 명령어들로 변환함으로써 테스트 명령어 세트로 변환된다.
단계(1126)에서 프로그램 모델이 생성된다. 프로그램 모델은 적어도 한 전처리된 컴퓨터 사이언스 소스 파일 및 테스트 명령어 세트를 컴파일링함으로써 생성된다.
단계(1127)에서 결합된 명령어 세트가 생성된다. 결합된 명령어 세트는 프로그램 모델을 사용해 생성된다. 결합된 명령어 세트는 (a) 적어도 한 전처리된 컴퓨터 사이언스 소스 파일로부터 결정된 소프트웨어 명령어들, 및 (b) 테스트 명령어 세트로부터의 테스트 명령어들을 포함한다.
단계(1128)에서, 결합된 명령어 세트는 저장, 디스플레이, 전달, 및/또는 실행되거나, 이들의 조합으로 처리된다. 결합된 명령어 세트는 어떤 다른 적절한 방식으로 처리될 수도 있다.
방법(1120)은 단계(1129)에서 종료된다.
도 12는 TISA 프로세서 구조의 전형적 실시예를 묘사한다.
도 12에 도시된 바와 같이, TISA 프로세서 구조(1200)는 TISA 프로세서(1210)와 메모리(1220)를 포함한다.
TISA 프로세서(1210)는 SPARC V8 프로세서, INTEL 프로세서, 또는 어떤 다른 적절한 프로세서 같이, TISA를 이용하여 시스템 테스트를 수행하기 적합한 어떤 프로세서일 수 있다.
메모리(1220)는 한 개 이상의 랜덤 액세스 메모리, 영구 메모리 등 뿐 아니라 이들의 다양한 조합을 포함해, TISA를 이용해 시스템 테스트를 지원할 TISA 프로세서(1210)에 의해 사용하기 적합한 어떤 메모리를 포함할 수 있다. 메모리(1220)는 테스트 프로그램들, TISA 명령어들, 테스트 데이터 등 뿐 아니라 이들의 다양한 조합들 같이, TISA를 이용해 시스템 테스트를 수행하기 위해 필요로되는 어떤 정보를 저장할 수 있다.
일 실시예에서, 예를 들어 도 12의 TISA 프로세서 구조(1200)는 도 2 및 도 3과 관련해 묘사되고 기술된 TISA 흐름들을 지원할 수 있다.
일 실시예에서, 예를 들어 도 12의 TISA 프로세서 구조(1200)는 도 6과 관련해 묘사되고 기술된 테스트 시스템(610)의 TISA 프로세서(612) 및 메모리(614)와 유사한 방식으로 동작할 수 있다. 예를 들어 도 12의 TISA 프로세서 구조(1200)는 도 7과 관련해 묘사되고 기술된 테스트 시스템(710)에서와 같이, SPARC V8 TISA 프로세서 및 관련 메모리를 사용해 구현될 수 있다. 그러한 실시예에서, TISA 프로세서(1210) 자체가 ISA 및 TISA 명령어들 양방 모두를 해석하고 실행한다.
일 실시예에서, 테스트 액세스 포트(TAP)를 통해 피테스트 시스템의 적어도 일부를 테스트하는데 사용할 장치는 테스트 명령어 세트 구조의 명령어 세트를 저장하기 위한 메모리, 및 TAP를 통해 피테스트 시스템의 적어도 일부를 테스트하기 위해 테스트 명령어 세트 구조의 명령어 세트를 실행하는 프로세서를 포함한다. 테스트 명령어 세트 구조의 명령어 세트는 프로세서에 의해 지원되는 명령어 세트 구조(ISA)의 복수의 명령어들을 구비한 제1명령어 세트와, TAP와 관련한 복수의 테스트 명령어들을 구비한 제2명령어 세트를 포함하며, 제1명령어 계층의 명령어들과 제2명령어 계층의 명령어들이 통합되어 테스트 명령어 세트 구조의 명령어 세트를 형성한다.
일 실시예에서, 테스트 액세스 포트(TAP)를 통해 피테스트 시스템의 적어도 일부를 테스트하는데 사용할 TISA 프로세서는 프로세서에 의해 지원되는 명령어 세트 구조(ISA)의 명령어들을 포함하는 제1명령어 계층과 TAP와 관련된 테스트 명령어들을 포함하는 제2명령어 계층을 포함하고, 여기서 제1명령어 세트의 ISA 명령어들과 제2명령어 세트의 테스트 명령어들이 통합되어 피테스트 시스템의 적어도 일부를 테스트하기 위해 구성되는 TISA를 형성한다.
일 실시예에서, 테스트 액세스 포트(TAP)를 통해 피테스트 시스템(SUT)을 테스트하기 위한 컴퓨터 프로세서는 TAP를 통해 피테스트 시스템과 상호작용을 가능하게 하는 어의구조(semantics)를 가지는 테스트 명령어 세트 구조(TISA)에 따라 명령어들을 처리하도록 구성된 회로 구성을 포함한다. TISA는 제1타입의 복수의 명령어들과 제2타입의 복수의 명령어들을 포함하는데, 제1타입의 명령어들은 컴퓨터 프로세서에 의해 지원되는 명령어 세트 구조(ISA)의 명령어들을 포함하고, 제2타입의 명령어들은 TAP를 통해 피테스트 시스템을 테스트하기 위한 테스트 명령어들을 포함한다.
위에서는 TISA 프로세서가 특정 방식으로(가령, 서로 다른 계층들 및/또는 타입의 명령어들을 나타내기 위해 특정 언어를 사용) 정의된 실시예들에 대하여 주로 묘사되고 기술되어 있지만, 여기에 제공된 것 같은 다양한 TISA의 묘사 및 기술을 통해 충분히 지원되는 다른 방식들을 통해서도 TISA가 정의될 수 있다는 것을 예상할 수 있을 것이다.
여기서는 TISA 프로세서 구조가 TISA를 지원하는 단일 프로세서를 사용해 구현되는 실시예들에 대하여 주로 묘사되고 기술되어 있지만, 다른 실시예들에서 TISA 프로세서 구조는 여러 프로세서들을 이용해 구현될 수 있다.
도 13은 시스템 테스트 사양들을 제공하도록 여러 프로세서들을 활용하는 테스트 프로세서 구조의 전형적 실시예를 묘사한다.
도 13에 도시된 바와 같이, 테스트 프로세서 구조(1300)는 통신 경로(1330)를 거쳐 통신하는 일차 프로세서(1310) 및 이차 프로세서(1320)를 포함한다. 일차 프로세서(1310)는 SPARC V8 프로세서, INTEL 프로세서, 또는 어떤 다른 적절한 프로세서 같이, 시스템 테스트를 지원하기 적합한 어떤 프로세서일 수 있다. 일차 프로세서(1310)는 피테스트 시스템을 테스트하기 위한 명령어들을 실행한다. 일 실시예에서, 예를 들어 일차 프로세서(1310)는 도 12의 TISA 프로세서 구조(1200)의 CPU(1210)에 의해 지원되는 기능들과 유사한 테스트 기능들을 지원할 수 있다(가령, 테스트 프로세서 구조(1300)가 TISA를 활용하는 경우). 일 실시예에서, 예를 들어 일차 프로세서(1310)는 TISA를 활용하지 않는 테스트 프로세서 구조들 내 테스트 프로세서들에 의해 지원되는 테스트 기능들을 지원할 수 있다. 일차 프로세서(1310)는 다른 다양한 테스트 사양들을 지원할 수 있다.
이차 프로세서(1320)는 SPARC V8 프로세서, INTEL 프로세서, 또는 어떤 다른 적절한 프로세서 같이, 시스템 테스트를 지원하기 적합한 어떤 프로세서일 수 있다. 이차 프로세서(1320)는 피테스트 시스템(명료성을 위해 생략됨)으로의 테스트 액세스 포트(TAP) 인터페이스를 지원한다. TAP 인터페이스는 어떤 적절한 TAP와 인터페이스할 수 있다. 예를 들어, TAP 인터페이스는 IEEE 1149.1 TAP나 피테스트 시스템을 테스트하는데 사용될 수 있는 어떤 다른 적절한 TAP로의 인터페이스를 제공할 수 있다.
일차 프로세서(1310) 및 이차 프로세서(1320)는 피테스트 시스템의 적어도 일부에 대한 테스트를 수행하기 위해 공동으로 작업한다.
일차 프로세서(1310)는 피테스트 시스템을 테스트하기 위한 테스트 명령어들을 실행한다. 테스트 명령어들은 TISA의 테스트 명령어들 (테스트 프로세서 구조(1300)가 TISA를 활용할 경우)이나 TISA와 관련되지 않은 명령어들(테스트 프로세서 구조(1300)가 TISA를 활용하지 않는 경우)일 수 있다. 일차 프로세서(1310)는 테스트 명령어들의 실행 중에, 피테스트 시스템의 TAP 제어와 관련된 명령어들(가령, 피테스트 시스템의 TAP 제어기로 입력 데이터를 로드하기 위한 명령어들, 피테스트 시스템의 TAP 제어기로부터 출력 데이터를 읽기 위한 명령어들 등의 명령어들 뿐 아니라 이들의 다양한 조합들 같은)을 검출한다. 일차 프로세서(1310)는 이차 프로세서(1320)로 TAP 관련 명령어들을 제공한다. 이차 프로세서(1320)는 일차 프로세서(1310)로부터 TAP 관련 명령어들을 수신한다. 이차 프로세서(1320)는 그 TAP 관련 명령어들을 실행한다. 일차 프로세서(1310)는 이차 프로세서(1320)가 일차 프로세서(1310)로부터 수신된 TAP 관련 명령어들을 실행하는 동안 계속해서 테스트 명령어들을 실행한다. 이런 식으로 일차 프로세서(1310)는 이차 프로세서(1320)가 피테스트 시스템의 TAP를 통해 스캔 동작들을 제어하는 동안, 콘텍스트 스위치를 수행하며 계속해서 동작할 수 있다. 이것은 단일 프로세서 방식을 이용하기 어려운데, 이는 단일 프로세서가 TAP를 제어하는 동안 그 단일 프로세서가 다른 동작들을 수행하는 것은 금지되기 때문이다. 따라서, 테스트 프로세서 구조(1300)에서와 같이 여러 프로세서들의 사용이 최신 성능의 프로세서들을 사용할 필요 없이 테스트 효율성에서의 상당한 개선을 제공하는데, 한 프로세서가 한 동작을 수행하는데 요구되는 시간과 비교할 때 TAP를 통한 동작들은 통상적으로 긴 시간이 걸린다는 점을 감안할 때 특히 그러하다.
피테스트 시스템의 적어도 일부에 대한 테스트를 수행하기 위한 일차 프로세서(1310) 및 이차 프로세서(1320) 사이의 공동 작업은 통신 경로(1330)에 의해 수월하게 된다. 통신 경로(1330)는 테스트 프로세서 구조(1300)가 구현되는 다중-프로세서 구조의 타입에 좌우될 수 있는, 일차 프로세서(1310) 및 이차 프로세서(1320) 사이의 어떤 적절한 통신 수단을 이용해 구현될 수 있다. 예를 들어, 통신 경로(1330)는 메인 프로세서 인터페이스 버스, 보조 프로세서 인터페이스, 통신 인터페이스(가령, SERDES(serializer-deserializer) 인터페이스나 다른 적절한 통신 인터페이스 같은 것) 등 뿐 아니라 이들의 다양한 조합 중 한 개 이상을 포함할 수 있다.
명료성을 위해 생략되었지만, 테스트 프로세서 구조(1300)가 메모리(가령, 랜덤 액세스 메모리, 영구 메모리, 캐시 메모리 등 뿐 아니라 이들의 다양한 조합)를 포함할 것이라는 것을 예상할 수 있을 것이다. 테스트 프로세서 구조(1300)의 메모리는 일차 프로세서(1310) 및 이차 프로세서(1320)에 의해 공유되는 메모리, 일차 프로세서(1310) 전용 메모리, 이차 프로세서(1320) 전용 메모리 등 뿐 아니라 이들의 다양한 조합들 중 하나 이상을 포함할 수 있다.
명료성을 위해 생략되었지만, 테스트 프로세서 구조(1300)가 버스들, I/O 회로들 등 뿐 아니라 이들의 다양한 조합들과 같은 다른 다양한 지원 회로들을 포함할 것이라는 것을 예상할 수 있을 것이다.
도 13의 TISA 프로세서 구조(1300)는 여러가지 방식에 따라 구현될 수 있다.
일 실시예에서, 예를 들어 테스트 프로세서 구조는 시스템 테스트를 지원하기 위해 중앙 연산 유닛(CPU)이 테스트 보조 프로세서 유닛(TCPU(test co-processor unit)과 공동 작업하는 테스트 보조 프로세서 유닛 구조를 이용할 수 있다. 전형적 일 실시예가 도 14와 관련해 묘사 및 기술된다.
일 실시예에서, 예를 들어 테스트 프로세서 구조는 시스템 테스트를 지원하기 위해 중앙 연산 유닛(CPU)이 테스트 부속 프로세서 유닛(TAPU(test adjunct processor unit)과 공동 작업하는 테스트 부속 프로세서 유닛 구조를 이용할 수 있다. 전형적 일 실시예가 도 15와 관련해 묘사 및 기술된다.
도 14는 테스트 보조 프로세서 구조의 전형적 실시예를 묘사한다. 테스트 보조 프로세서 구조(1400)는 TISA를 이용한 시스템 테스트를 지원하기 위한 TISA 프로세서 구조로서 사용하기 적합하다. 테스트 보조 프로세서 구조(1400)는 또한 TISA를 이용하지 않는 시스템 테스트를 지원하기 위한 테스트 프로세서 구조로서 사용하기에도 적합하다.
테스트 보조 프로세서 구조(1400)는 중앙 처리 유닛(CPU)(1410), 테스트 보조 프로세서 유닛(TCPU)(1420), 메인 메모리(1430), 및 플래시 메모리(1440)를 포함한다.
테스트 보조 프로세서 구조(1400)는 메인 프로세서 인터페이스 버스(1451)를 포함한다. CPU(1410), TCPU(1420), 메인 메모리(1430), 및 플래시 메모리(1440)는 각각 메인 프로세서 인터페이스 버스(1451)에 연결된다(또는 메인 프로세서 인터페이스 버스(1451)와 통신할 수 있도록 구성된다).
테스트 보조 프로세서 구조(1400)는 또한 CPU(1410) 및 TCPU(1420)를 직접 연결함으로써 CPU(1410) 및 TCPU(1420) 사이의 직접 통신을 가능하게 하는 보조 프로세서 인터페이스(1452)를 포함할 수 있다.
CPU(1410)는 피테스트 시스템의 시스템 테스트를 수행하기 적합한 어떤 CPU일 수 있다. CPU(1410)는 도 13과 관련해 묘사 및 기술된 일차 프로세서(1310)에 의해 지원되는 테스트 사양들을 지원한다.
TCPU(1420)는 피테스트 시스템의 시스템 테스트를 돕기 적합한 어떤 CPU일 수 있다. TCPU(1420)는 (가령, IEEE 1149.1 TAP 또는 피테스트 시스템을 테스트하는데 사용되는 어떤 다른 적절한 TAP 같은) 어떤 적절한 TAP와 인터페이스할 수 있는 테스트 액세스 포트(TAP) 인터페이스(1460)를 지원한다. TCPU(1420)는 도 13과 관련해 묘사 및 기술된 이차 프로세서(1320)에 의해 지원되는 테스트 사양들을 지원한다.
CPU(1410) 및 TCPU(1420)는 도 13과 관련해 묘사 및 기술된 일차 프로세서(1310) 및 이차 프로세서(1320)와 유사한 방식으로, 피테스트 시스템의 적어도 일부에 대한 테스트를 수행하도록 공동 작업한다. CPU(1410) 및 TCPU(1420)는 TCPU(1420)가 테스트 중에 피테스트 시스템의 TAP를 제어하기 위한 TAP 관련 명령어들을 실행하는 동안 CPU(1410)가 계속해서 테스트 명령어들을 처리하도록 동작할 수 있게 하기 위해 명령어 예외 처리(instruction exception handling)를 활용한다.
CPU(1410)는 피테스트 시스템을 테스트하기 위한 테스트 명령어들을 실행한다. CPU(1410)는 테스트 명령어들의 실행 중에 명령어 예외들(즉, 피테스트 시스템의 TAP 제어와 관련된 명령어들)을 검출하고 그 명령어 예외들을 TCPU(1420)로 제공한다. TCPU(1420)는 CPU(1410)로부터 명령어 예외들을 수신하고, TCPU(1420)가 CPU(1410)가 계속해서 다른 작업들(가령, 다른 테스트 명령어들의 실행)을 수행하도록 동작하는 동안 그 명령어 예외들을 다룰 수 있도록, 명령어 예외들을 처리한다. 달리 말해, CPU(1410) 및 TCPU(1420)는 시스템 테스트 도중에, TCPU(1420) 가 CPU(1410)에 의해 검출된 명령어 예외들을 다루는 동안 CPU(1410)는 컨텍스트를 스위칭하고 계속해서 다른 작업들을 수행하도록 동작하도록 공동 작업함으로써 시스템 테스트 효율을 향상시킬 수 있다.
일 실시예에서, CPU(1410)는 가령 CPU(1410)의 성능 향상을 위해 캐시(1411)를 포함한다.
일 실시예에서, TCPU(1420)는 시스템 테스트를 지원하는데 사용되기 적합한 어떤 타입의 DMA(direct memory access)일 수 있는 DMA 유닛(1421)을 포함한다. 일 실시예에서, 예를 들어 DMA 유닛(1421)은 스캐터/개더(sctter/gather:S/G) DMA 유닛이다. TCPU(1420)는 CPU(1410)로부터 수신된 명령어 예외들을 다루고 메모리에 저장된 상당한 데이터에 효율적으로 액세스하기 위해 DMA 유닛(1421)을 활용할 수 있다. 일 실시예에서, CPU(1410)는 명령어 예외를 대면하기 앞서 S/G DMA 테이블들을 구성할 수 있다.
일 실시예에서, TCPU(1420)는 특수화된 TCPU 명령어 세트를 지원한다. 특수화된 TCPU 명령어 세트는 TAP 액세스 및 제어를 지원할 수 있다. 특수화된 TCPU 명령어 세트는 TAP 상태 머신 상에서 특정 TAP 동작을 수행하기 위해 TCPU(1420)에 의해 사용될 수 있다.
CPU(1410) 및 TCPU(1420)는, CPU(1410)에 의한 테스트 명령어들의 실행, TCPU(1420)에 의한 명령어 예외 처리, TCPU(1420)에 의한 TCPU 명령어 실행 등 뿐 아니라 이들의 다양한 조합들 같은 다양한 테스트 기능들을 수행하기 위해, 메인 메모리(1430) 및/또는 플래시 메모리(1440)를 활용한다. 메인 메모리(1430)는 어떤 적절한 프로세서 메모리일 수 있다. 플래시 메모리(1440)는 어떤 적절한 플래시 메모리 또는 어떤 다른 적절한 영구 메모리 형태일 수 있다. CPU(1410) 및 TCPU(1420)는 임의 액세스를 이용해 메모리를 공유한다. CPU(1410) 및 TCPU(1420)는 또한 정보 교환을 목적으로 메모리를 공유할 수도 있다. 특정 수 및 타입의 메모리에 대하여 주로 묘사 및 기술되었지만, CPU(1410) 및 TCPU(1420)에 의해 수행되는 기능들을 지원하기 위해 다른 다양한 메모리 스킴들이 사용될 수 있다는 것을 예상할 수 있을 것이다.
CPU(1410) 및 TCPU(1420)는 CPU(1410) 및 TCPU(1420) 사이의 통신 및, CPU(1410) 및/또는 TCPU(1420) 및 테스트 보조 프로세서 구조(1400)의 다른 구성요소들(가령, 메인 메모리(1430), 플래시 메모리(1440), 및 기타 구성요소들) 사이의 통신 등 뿐 아니라 이들의 다양한 조합을 이용해, 피테스트 시스템에 대한 테스트를 수행한다. 그러한 통신들은 메인 프로세서 인터페이스 버스(1441), 및 보조 프로세서 인터페이스(1452) 중 하나나 양방 모두를 이용해 지원될 수 있다. CPU(1410) 및 TCPU(1420) 사이의 통신들은 명령어 예외 통지, 인터럽트 액세스, DMA 임의 등 뿐 아니라 이들의 다양한 조합들과 관련된 통신들을 포함할 수 있다. CPU(1410) 및 TCPU(1420), 그리고 테스트 보조 프로세서 구조(1400)의 다른 구성요소들 사이의 통신들은 메모리로부터의 읽기, 메모리에 쓰기, 및/또는 피테스트 시스템을 테스트하도록 지원하며 수행될 수 있는 어떤 다른 작업들과 관련된 통신들을 포함할 수 있다.
도 15는 테스트 부속 프로세서 구조의 전형적 실시예를 묘사한다. 테스트 부속 프로세서 구조(1500)는 TISA를 이용한 시스템 테스트를 지원하기 위한 TISA 프로세서 구조로서 사용하기 적합하다. 테스트 부속 프로세서 구조(1500)는 또한 TISA를 이용하지 않는 시스템 테스트를 지원하기 위한 테스트 프로세서 구조로서 사용하기에도 적합하다.
테스트 부속 프로세서 구조(1500)는 중앙 연산 유닛(CPU)(1510) 및 테스트 부속 프로세서 유닛(TAPU)(1520)을 포함한다. CPU(1510) 및 TAPU(1520)는 같은 보드에 상주하거나 상이한 보드들에 상주할 수 있다.
CPU(1510)는 피테스트 시스템의 시스템 테스트를 수행하기 적합한 어떤 CPU일 수 있다. CPU(1510)는 도 13과 관련해 묘사 및 기술된 일차 프로세서(1310)에 의해 지원되는 테스트 사양들을 지원한다.
CPU(1510)는 그와 관련된 메인 메모리(1530M), 플래시 메모리(1530F), 및 입/출력 모듈(1540)을 갖는다. CPU(1510)는 그와 관련된 메인 프로세서 인터페이스 버스(1550)를 가진다. CPU(1510), 메인 메모리(1530M), 플래시 메모리(1540F), 입/출력 모듈(1540) 각각은 메인 프로세서 인터페이스 버스(1550)와 연결된다(아니면 통신할 수 있도록 구성된다).
일 실시예에서, CPU(1510)는 가령 CPU(1510)의 성능 향상을 위해 캐시(1511)를 포함한다.
TAPU(1520)는 피테스트 시스템의 시스템 테스트를 돕기 적합한 어떤 CPU일 수 있다. TAPU(1520)는 입/출력 모듈(1521)을 포함한다. TAPU(1520)는 (가령, IEEE 1149.1 TAP 또는 피테스트 시스템을 테스트하는데 사용되는 어떤 다른 적절한 TAP 같은) 어떤 적절한 TAP와 인터페이스할 수 있는 테스트 액세스 포트(TAP) 인터페이스(1590)를 지원한다. TAPU(1520)는 도 13과 관련해 묘사 및 기술된 이차 프로세서(1320)에 의해 지원되는 테스트 사양들을 지원한다.
TAPU(1520)는 그와 관련된 로컬 테스트 메모리(1560)를 가진다. TAPU(1520)는 그와 관련된 내부 인터페이스 버스(1570)를 가진다. TAPU(1520) 및 로컬 테스트 메모리(1560)는 각각 내부 인터페이스 버스(1570)에 연결된다(또는 통신할 수 있도록 구성된다).
CPU(1510)와 연관된 입/출력 모듈(1540) 및 TAPU(1520)의 입/출력 모듈(1521)은 CPU(1510) 및 TAPU(1520) 사이의 통신을 가능하게 하는 통신 인터페이스(1580)를 지원한다. 그 통신 인터페이스(1580)는 CPU(1510)로부터 TAPU(1520)까지 TAP 관련 명령들의 스트리밍을 지원한다.
일 실시예에서, CPU(1510)와 연관된 입/출력 모듈(1540) 및 TAPU(1520)의 입/출력 모듈(1521)은 SERDES(Serializer-Deserializer) 통신 사양들을 지원하며, 그에 따라 통신 인터페이스(1580)는 SERDES 기반 통신 인터페이스가 된다. 이 실시예에서, SERDES 기반 통신 인터페이스(1580)는 (가령, GigE(Gigabit Ehternet), SRIO(Serial Rapid IO), PCIe(Peripheral Component Interconnect Express) 등과 같은) 어떤 적절한 SERDES 통신 프로토콜을 이용해 구현될 수 있다. 여기서는 CPU(1510) 및 TAPU(1520) 사이의 SERDES 기반 통신들을 이용하는 것에 대해 주로 묘사되고 기술되었지만, CPU(1510) 및 TAPU(1520) 사이의 통신을 지원하기 위해 다른 적절한 통신 사양들이 사용될 수도 있다.
CPU(1510) 및 TAPU(1520)는 도 13과 관련해 묘사 및 기술된 일차 프로세서(1310) 및 이차 프로세서(1320)와 유사한 방식으로, 피테스트 시스템의 적어도 일부에 대한 테스트를 수행하도록 공동 작업한다. CPU(1510) 및 TAPU(1520)는 TAPU(1520)가 테스트 중에 피테스트 시스템의 TAP를 제어하기 위한 TAP 관련 명령어들을 실행하는 동안 CPU(1510)가 계속해서 테스트 명령어들을 처리하도록 동작할 수 있게 하기 위해 통신 인터페이스(1580)를 통한 명령 스트리밍(command streaming)을 활용한다.
CPU(1510)는 피테스트 시스템을 테스트하기 위한 테스트 명령어들을 실행한다. CPU(1510)는 테스트 명령어들의 실행 중에 피테스트 시스템의 TAP 제어와 관련된 명령어들을 검출한다. CPU(1510)는 통신 인터페이스(1580)를 통해 TAPU(1520)로 TAP 관련 명령어들을 전달한다(즉, 통신 인터페이스(1580)를 통해 전달하기 위해 CPU(1510)로부터 메인 프로세서 인터페이스 버스(1550)를 거쳐 입/출력 모듈(1540)까지). TAPU(1520)는 CPU(1510)로부터 TAP 관련 명령어들을 수신하고, CPU(1510)가 계속해서 다른 작업들(가령, 다른 테스트 명령어들의 실행)을 수행하도록 동작하는 동안 TAPU(1520)가 그 TAP의 제어를 다룰 수 있도록, TAP 관련 명령어들을 처리한다. 달리 말해, CPU(1510) 및 TAPU(1520)는 시스템 테스트 도중에, TAPU(1520)가 CPU(1510)에 의해 검출된 TAP 관련 명령어들을 다루는 동안 CPU(1510)는 컨텍스트를 스위칭하고 계속해서 다른 작업들을 수행하도록 동작하도록 공동 작업함으로써, 시스템 테스트 효율을 향상시킬 수 있다.
일 실시예에서, CPU(1510)에 의해 검출되고 TAPU(1520)에 의해 처리되는 TAP 관련 명령어들은 TAPU(1520)로의 전달을 위해 CPU(1510)에 의해 패킷화된다.
일 실시예에서, CPU(1510)에 의해 검출되고 TAPU(1520)에 의해 처리되는 TAP 관련 명령어들은 TAPU(1520)에 의해 지원되는 연산 코드(opcodes)를 포함한다. 그러한 일 실시예에서, TAP 관련 명령어들은 CPU(1510)와 관련된 메모리 및 TAPU(1520)와 관련된 메모리 사이에서(가령, 메인 메모리(1530M) 및 로컬 테스트 메모리(1560) 사이에서) 블록 메모리 카피를 수행하는데 사용되도록 구성되는 한 개 이상의 확장 명령들을 또한 포함할 수 있다.
CPU(1510)는 테스트 명령어들의 실행, TAP 관련 명령어들의 검출, TAP 관련 명령어들의 패킷화 등 뿐만 아니라 이들의 다양한 조합과 같은 다양한 테스트 기능들을 수행하기 위해 메인 메모리(1530M) 및 플래시 메모리(1530F)를 활용한다. 메인 모리(1530M)는 어떤 적절한 프로세서 메모리일 수 있다. 플래시 메모리(1530F)는 어떤 적절한 플래시 메모리 또는 어떤 다른 적절한 영구 메모리일 수 있다.
TAPU(1520)는 CPU(1510)로부터 수신된 TAP 관련 명령어들의 저장, CPU(1510)로부터 수신된 TAP 관련 명령어들의 처리 등 뿐 아니라 이들의 다양한 조합들 같은 다양한 테스트 기능들을 수행하기 위해 로컬 테스트 메모리(1560)를 활용한다. 로컬 테스트 메모리(1560)는 어떤 적절한 프로세서 메모리일 수 있다. 일 실시예에서, 로컬 테스트 메모리(1560)는 (온칩(on-chip) 메모리에서 필요로 될 수 있는 것과 같은) 전체적 스캔 체인이 아닌, 피테스트 시스템의 스캔 체인의 스캔 체인 세그먼트들의 처리를 다루기 때문에 상대적으로 적을 수 있다.
특정 수 및 타입의 메모리에 대해 주로 묘사 및 기술되었지만, CPU(1510) 및 TCPU(1520)에 의해 수행되는 기능들을 지원하기 위해 다른 다양한 메모리 스킴들이 사용될 수 있다는 것을 예상할 수 있을 것이다.
여기서는 TISA를 구현하기 위한 보조 프로세서 구조 및 부속 프로세서 구조에 대해 주로 묘사 및 기술되었으나, TISA는 상기 보조 프로세서 구조 및 부속 프로세서 구조가 아닌 프로세서 구조들을 포함할 수 있는 어떤 적절한 프로세서 구조를 이용해 구현될 수도 있다는 것을 예상할 수 있을 것이다. 따라서, TISA 프로세서 구조는 다양한 방식들에 따라 여러 프로세서들을 이용해 구현될 수 있으며, 그 방식들 중 적어도 일부는 TISA를 지원하기 위해 둘 이상의 프로세서들의 사용을 포함할 수도 있다.
여기서는 TISA를 구현하기 위한 보조 프로세서 구조 및 부속 프로세서 구조에 대해 주로 묘사 및 기술되었으나, 여기서의 교시 내용을 숙지한 당업자라면 보조 프로세서 구조 및 부속 프로세서 구조 각각이 다른 타입의 테스트 구조들(즉, TISA를 이용하지 않는 다른 테스트 구조들)을 구현하는 데 사용될 수 있다는 것을 알 수 있을 것이다.
테스크 보조 프로세서 구조 및 테스트 부속 프로세서 구조는 각각이 TISA로 하여금 통신하는 두 프로세서들에 의해 실행되게 한다는 점에서 기능적으로 유사하다는 것을 알 수 있다. 주어진 한 적용예에 있어서, 가용 자원, 비용, 성능, 물리적 제약(동일 칩, 다른 칩들 및/또는 보드들, 또는 이들의 조합 형태에서의 집적) 뿐 아니라 어떤 다른 구현 매개변수 같이 구현에 종속되는 매개변수들에 기초해 설계자에 의해 두 구조 사이의 선택이 이뤄질 수 있다. 여기서는 테스트 보조 프로세서 및 테스트 부속 프로세서 구조들에 대해 주로 묘사 및 기술되었으나, 여기서의 교시 내용을 숙지한 당업자라면 이러한 구현의 고려사항들이 어떤 다른 타입의 테스트 구조들/하부구조들에도 적용될 것이라는 것을 알 수 있을 것이다.
여기 묘사 및 기술된 TISA 프로세서 구조들은 시스템 테스트를 수행하는데 사용할 어떤 적절한 TISA를 이용할 수 있다.
TISA 프로세서 구조들을 이용해 사용하도록 구성되는 TISA의 한 전형적 실시예에 대한 설명이 이어진다. TISA에 대한 이러한 전형적 실시예는 여기 묘사 및 기술된 스캔 세그먼트 레벨 (Scan Segment Level) 프리미티브들의 구현예이다. 스캔 세그먼트 레벨 추상 레벨에서, 피테스트 시스템의 전체적 스캔 체인이 세그먼트들로 나눠지고, 그런 다음 알고리즘의 데이터 아톰(atom)으로서 사용된다. 피테스트 시스템은 사람 및/또는 자동화 툴이 될 수 있는 알고리즘 개발자에 의해 스캔 세그먼트들로 분할될 수 있다. 스캔 동작들이 스캔 세그먼트 레벨에서 수행되게 할 TISA의 사용에 대한 보다 일반적인 내용, 즉 이 전형적 TISA 구현예와 무관한 내용이 아래에 상세하게 주어진다.
이하의 TISA의 실시예는 그러한 스캔 세그먼트들을 정의하고 다룰 수 있는 레지스터들 및 명령어 세트를 제안한다. 이하의 실시예는 32 비트 사이즈의 TISA에 기반하나, 어떤 다른 워드 사이즈(가령, 16 비트, 64 비트, 또는 어떤 다른 적절한 워드 사이즈)로 구성될 수도 있다.
도 16은 TISA 프로세서에 의해 사용될 수 있는 전형적 레지스터 세트를 묘사한다. 전형적인 TISA는 각기 도 16a-16d에 묘사된 네 개의 레지스터 세트들(레지스터 세트 R1에서 R4로 표시됨)을 포함한다.
도 16a에 도시된 바와 같이, 제1레지스터 세트 R1은 이하의 사용자 액세스 가능 데이터 레지스터들을 포함한다:
● StatusRegister: status(상황) 상태 정보를 포함하는 32 비트 레지스터,
● ControlRegister: 명령 인코딩을 포함하는 32 비트 레지스터,
● BlockRegister: 스캔 데이터 인(data in)(gather data) 및, 데이터 아웃(data out)(scatter data)을 어디에 쓸지를 간접적으로 가리키는 사전 포맷된 데이터 구조들에 대한 메모리 내 오프셋을 포함하는 32 비트 레지스터 [Scatter/Gather 세그먼트 서술(segment descriptions)을 액세스하기 위해 모든 스캔 및 비교 동작들에 대해 사용됨],
● ScanLengthRegister: 스캔되기 위해 남아있는 비트들의 현재의 개수가 상주하는(또한 블록 모드 연산 코드들에 대한 Scatter/Gather 세그먼트 서술로부터 자동으로 상주되는) 32 비트 레지스터,
● ScanStateRegister: 스캔 동작의 startState, scanState, 및 endState를 표현하는 4 개의 비트들로 된 3 개의 뱅크들을 포함하는 32 비트 레지스터. 4 개의 비트들은 TAP 상태 머신의 16 가지 상태들의 인코딩을 나타냄(또한 블록 모드에서Scatter/Gather 세그먼트 서술로부터도 상주됨),
● UserDataRegisters[1-11]: 작은 스캔 동작들 및 데이터 재사용을 위한 스캔 세그먼트 데이터를 포함하는 32 비트 레지스터들(소스나 목적지 레지스터일 수 있음).
도 16b에 도시된 바와 같이, 제2레지스터 세트 R2는 이하의 내부 스크래치(Internal Scratch) 레지스터들을 포함한다:
● BlockPointerRegister: 여러 스캔 명령어들의 기간 동안 처리될 현재의 Scatter/Gather 세그먼트 서술 참조(reference)를 가리키는 32 비트 레지스터,
● BlockCountRegister: 여러 스캔 명령어들의 기간 동안 처리될 Scatter/Gather 세그먼트 서술들의 수를 포함하는 32 비트 레지스터,
● InstructionRegister: 디코딩을 위해 현재의 연산 코드가 위치하는 32 비트 레지스터,
도 16c에 도시된 바와 같이, 제3레지스터 세트 R3는 이하의 Scatter/Gather 세그먼트 서술 레지스터들을 포함한다.
● BlockOffsetField: 64 비트 구조들이 사용될 때 어드레스의 뱅크를 나타내는 32 비트 넘버,
● ScanLengthField: 이 세그먼트에 대해 스캔할 비트들의 개수를 명시하는 32-비트 정수,
● StateTraversalField: 이 스캔 동작에 대해 각기 시작 상태, 스캔 상태, 및 종료 상태를 나타내는, 4 개 비트들로 된 3 개의 필드들(각자의 4 비트는 16 개의 상태인 TAP 상태 머신 상태들을 나타냄),
● SourceLocationField: TDI 데이터가 메모리에 상주하는 위치에 대한 32 비트 베이스 어드레스,
● DestinationLocationField: TDO 데이터가 메모리에 저장될 위치에 대한 32 비트 베이스 어드레스,
● ExpectedValueField: 예상 벡터가 메모리에 상주하는 위치에 대한 32 비트 어드레스,
● ResponseLocationField: 캡처된 TDI 데이터가 메모리에 상주하는 위치에 대한 32 비트 베이스 어드레스,
● MaskField: 비교 동작을 제한하는데 사용되는 MASK 데이터가 메모리에 상주하는 위치에 대한 32 비트 베이스 어드레스,
● ResultLocationField: 비교 결과가 메모리에 저장될 위치에 대한 32 비트 베이스 어드레스.
도 16d에 도시된 바와 같이, 제4레지스터 세트 R4는 이하의 멀티블록(Multiblcok) Scater/Gather 세그먼트 서술 레지스터들을 포함한다.
● BlockOffsetField: 64 비트 구조들이 사용될 때 어드레스의 뱅크를 나타내는 32 비트 넘버,
● BlockCountField: (멀티블록 스캔 동작 중에 BlockCountRegister를 초기화하는데 사용되는) 이 멀티블록 스캔에 의해 표현되는 스캔 세그먼트들의 개수를 규정하는 32 비트 넘버,
● ScatterGatherOpcodeField: 관련된 ScatterGatherBlockField에 의해 가리켜질 Scatter/Gather 세그먼트 서술에 사용되는 32 비트 명령 연산 코드,
● ScatterGatherBlockField: 이전 Scatter/GatherOpcodeField와 관련된 Scatter/Gather 세그먼트 서술이 메모리에 위치하는 곳에 대한 32 비트 어드레스.
전형적 TISA 레지스터 세트들은 어떤 적절한 방식을 통해 변경될 수 있다는 것을 알 수 있을 것이다. 예를 들어, 전형적 레지스터 세트들 각각은 더 적거나, 더 많거나, 다른 레지스터들을 포함하도록 변경될 수 있다. 예를 들어, 전형적 레지스터들은 더 적거나, 더 많거나, 다른 세트들 안에 재 그룹화될 수 있다. 예를 들어, 더 적거나, 더 많거나, 다른 레지스터 세트들이 사용될 수 있다. 다시 말해, 전형적 TISA 레지스터 세트들은 TISA 프로세서 구조를 구현하기 위한 TISA 명령어 세트들과 함께 사용하기 적합한 어떤 다른 TISA 레지스터 세트(들)로 대체될 수 있다.
전형적 TISA는 시스템 테스트를 수행하는데 사용하기 위한 어떤 적절한 TISA 명령어 세트(즉, 명령 딕셔너리)를 활용할 수 있다.
전형적 TISA 명령어 세트는 도 16a-16d에 대해 묘사 및 기술된 레지스터 세트들 R1부터 R4까지 뿐만 아니라 여기 묘사되고 기술된 오리지널 ISA 레지스터 세트들을 처리하기 위해 활용될 수 있는 아래의 연산 코드들을 포함한다.
StateTransition <TMS Value>, <TCK cycles>
● 이 연산 코드는 주어진 수의 TCK 클록 사이클 동안 TMS의 값을 이용해 TAP 상태 머신을 검토하는데 사용된다. 이 연산 코드는 TAP 상태 머신의 상태들 사이에서 일반적 상태 천이를 수행하는데 사용된다. <TMS Value>가 단일 비트를 나타낸다면, <TCK cycles>는 연산 코드의 나머지 데이터 비트들을 나타낸다.
RunTest <startState>, <testState>, <endState>
● 이 연산 코드는 <startState>에서 <testState>로 천이하고, ScanLengthRegister에 의해 명시된 것 같은 TCK 사이클 수 동안 <testState>에서 루프를 도는데 사용된다. 이 연산 코드는 루프 돌기의 결과로서 <endState>로 천이하는데 사용된다.
ScanRegister <source register>, <destination register>[,<expected register>] [,<mask register>]
● 이 연산 코드는 사용자 데이터 레지스터<source register> 내 데이터를 스캔하고 캡처된 값을 사용자 데이터 레지스터<destination register> 안으로 저장하는데 사용된다. <expected_register>가 존재하는 경우, 결국은 <mask_register>를 사용해(존재하는 경우) 캡처된 데이터와 그것을 비교하고 그에 따라 에러를 제기한다. 스캐닝된 비트들의 수가 ScanLengthRegister (0 <= n < 32)에 정의된다. 시작, 스캔, 종료 상태들이 ScanStateRegister에 정의된다.
ScanRegisterZero <destination register>[,<expected register>] [,<mask register>]
● 이 연산 코드는 모두 "0"인 벡터 값을 스캔하고 캡처된 값을 사용자 데이터 레지스터<destination register> 안으로 저장하는데 사용된다. 스캐닝된 비트들의 수가 ScanLengthRegister (0 <= n < 32)에 정의된다. 시작, 스캔, 종료 상태들이 ScanStateRegister에 정의된다. <expected_register> 및 <mask_register>는 ScanRegister 명령어에서와 같이 사용된다.
ScanRegisterOne <destination register>[,<expected register>] [,<mask register>]
● 이 연산 코드는 모두 "1"인 벡터 값을 스캔하고 캡처된 값을 사용자 데이터 레지스터<destination register> 안으로 저장하는데 사용된다. 스캐닝된 비트들의 수가 ScanLengthRegister (0 <= n < 32)에 정의된다. 시작, 스캔, 종료 상태들이 ScanStateRegister에 정의된다. <expected_register> 및 <mask_register>는 ScanRegister 명령어에서와 같이 사용된다.
ScanBlock
● 이 연산 코드는 <startState>에서 시작하고, <scanState>에서 데이터를 스캐닝하고, <endState>로 블록의 StateTraversalField에 의해 규정된 것 같은 동작 상태를 마무리하는 SUT에 대해 BlockRegister에 의해 가리켜진 데이터를 스캐닝하는데 사용된다. ScanStateRegister는 스캔 동작에 앞서 StateTraversal Field로부터 데이터를 가져와 상주시킨다. ScanLengthRegister는 스캔 동작에 앞서 ScanLengthField로부터 데이터를 가져와 상주시킨다. TDO로부터의 어떤 데이터도 보존되지 않는다. ExpectedValueField와 Maskfield가 세팅되면, 비교 및 그에 따른 에러 생성이 행해진다.
ScanBlockCapture
● 이 연산 코드는 <startState>에서 시작하고, <scanState>에서 데이터를 스캐닝하고, <endState>로 블록의 StateTraversalField에 의해 규정된 것 같은 동작 상태를 마무리하는 SUT에 대해 BlockRegister에 의해 가리켜진 데이터를 스캐닝하는데 사용된다. ScanStateRegister는 스캔 동작에 앞서 StateTraversal Field로부터 데이터를 가져와 상주시킨다. ScanLengthRegister는 스캔 동작에 앞서 ScanLengthField로부터 데이터를 가져와 상주시킨다. TDO로부터 캡처된 데이터가 보존된다. ExpectedValueField와 Maskfield가 세팅되면, 비교 및 그에 따른 에러 생성이 행해진다.
ScanBlockZeroCapture
● 이 연산 코드는 <startState>에서 시작하고, <scanState>에서 데이터를 스캐닝하고, <endState>로 블록의 StateTraversalField에 의해 규정된 것 같은 동작 상태를 마무리하고 그 결과를 BlockRegister에 의해 규정된 레지스터에서 캡처하는 SUT에 대해 모두 "0"인 데이터 벡터를 스캐닝하는데 사용된다. ScanStateRegister는 스캔 동작에 앞서 StateTraversal Field로부터 데이터를 가져와 상주시킨다. ScanLengthRegister는 스캔 동작에 앞서 ScanLengthField로부터 데이터를 가져와 상주시킨다. ExpectedValueField와 Maskfield가 세팅되면, 비교 및 그에 따른 에러 생성이 행해진다.
ScanBlockZero
● 이 연산 코드는 <startState>에서 시작하고, <scanState>에서 데이터를 스캐닝하고, <endState>로 블록의 StateTraversalField에 의해 규정된 것 같은 동작 상태를 마무리하고 그 결과를 캡처하지 않는 SUT에 대해 모두 "0"인 데이터 벡터를 스캐닝하는데 사용된다. ScanStateRegister는 스캔 동작에 앞서 StateTraversal Field로부터 데이터를 가져와 상주시킨다. ScanLengthRegister는 스캔 동작에 앞서 ScanLengthField로부터 데이터를 가져와 상주시킨다. ExpectedValueField와 Maskfield가 세팅되면, 비교 및 그에 따른 에러 생성이 행해진다.
ScanBlockOneCapture
● 이 연산 코드는 <startState>에서 시작하고, <scanState>에서 데이터를 스캐닝하고, <endState>로 블록의 StateTraversalField에 의해 규정된 것 같은 동작 상태를 마무리하고 그 결과를 BlockRegister에 의해 규정된 레지스터에서 캡처하는 SUT에 대해 모두 "1"인 데이터 벡터를 스캐닝하는데 사용된다. ScanStateRegister는 스캔 동작에 앞서 StateTraversal Field로부터 데이터를 가져와 상주시킨다. ScanLengthRegister는 스캔 동작에 앞서 ScanLengthField로부터 데이터를 가져와 상주시킨다. ExpectedValueField와 Maskfield가 세팅되면, 비교 및 그에 따른 에러 생성이 행해진다.
ScanBlockOne
● 이 연산 코드는 <startState>에서 시작하고, <scanState>에서 데이터를 스캐닝하고, <endState>로 블록의 StateTraversalField에 의해 규정된 것 같은 동작 상태를 마무리하고 그 결과를 캡처하지 않는 SUT에 대해 모두 "1"인 데이터 벡터를 스캐닝하는데 사용된다. ScanStateRegister는 스캔 동작에 앞서 StateTraversal Field로부터 데이터를 가져와 상주시킨다. ScanLengthRegister는 스캔 동작에 앞서 ScanLengthField로부터 데이터를 가져와 상주시킨다. ExpectedValueField와 Maskfield가 세팅되면, 비교 및 그에 따른 에러 생성이 행해진다.
전형적 TISA 명령어 세트는 명시적 값들을 이용하는 이하의 레지스터 변경 명령어들을 포함한다:
LoadRegisterExplicit <const value>, <register name>
● 이 명령어는 <register name>으로 명명되는 레지스터 안에 <const value>의 상수를 로드한다.
CopyRegister <source register>, <destination register>
● 이 명령어는 <destination register>로 명명된 레지스터 안에 <source register>라고 명명된 레지스터의 콘텐츠를 카피한다.
전형적 TISA 명령어 세트는 함축된 값들을 이용하는 이하의 레지스터 변경 명령어를 포함한다:
LoadRegisterImplicit <user data register>, <register name>
● 이 명령어는 실제 데이터가 상주하는 메모리 위치에 대한 포인터 레퍼런스로서 <user data register>라는 이름의 레지스터 내 값을 사용하고, 그 레퍼런스 값을 <register name>으로 명명된 레지스터 안에 저장한다.
전형적 TISA 명령어 세트는 이하의 레지스터 보존 명령어들을 포함한다:
StoreRegisterImplicit <register name>, <user data register>
● 이 명령어는 <register name>이라 명명된 레지스터 내 값이 저장되어야 할 메모리 위치에 포인터 레퍼런스로서 <user data register>라는 이름의 레지스터 내 값을 사용한다.
StoreRegisterExplicit <register name>, <const value>
● 이 명령어는 <register name>이라 명명된 레지스터의 값을 <const value>에 의해 명시된 메모리 위치 안에 저장한다.
전형적 TISA 명령어 세트는 레지스터들에 대한 이하의 논리 연산들을 포함한다:
AND <source register>, <destination register>
● 이 연산은 <source register> 및 <destination register> 사이에 AND 논리 연산을 수행하고 그 결과 값을 <destination register> 안에 놓는다.
OR <source register>, <destination register>
● 이 연산은 <source register> 및 <destination register> 사이에 OR 논리 연산을 수행하고 그 결과 값을 <destination register> 안에 놓는다.
XOR <source register>, <destination register>
● 이 연산은 <source register> 및 <destination register> 사이에 XOR 논리 연산을 수행하고 그 결과 값을 <destination register> 안에 놓는다.
NOT <source register>, <destination register>
● 이 연산은 <source register>에 대해 NOT 연산을 수행하고 그 결과 값을 <destination register> 안에 놓는다.
XORM <source register>, <mask register>, <destination register>
● 이 연산은 사용자 데이터 레지스터 <source register> 및 사용자 데이터 레지스터 <destination register> 사이에 XOR 논리 연산을 수행하고, "1" 값을 포함하는 사용자 데이터 레지스터 <mask register> 비트와 얼라인되는 비트들만을 비교하고, 그 결과 값을 <destination register>에 놓는다. 비교되지 않은 비트들은 <destination register> 안에 "0" 값으로 귀착될 것임에 유의하여야 한다.
전형적 TISA 명령어 세트는 레지스터들에 대한 이하의 기타 연산들을 포함한다:
NOP
● 일부 ISA 명령어 세트들에서 얼라인먼트(alignment)를 제공할 필러(filler)로서 사용될 비동작 연산 코드.
전형적 TISA 명령어 세트는 부속 프로세서 구조를 이용하는 실시예에 대한 스트리밍 지원을 확장하기 위해 이하의 명령어들을 포함한다:
MemoryWrite
● 이 명령어는 이하의 독립변수들을 사용해 로컬 테스트 메모리에 쓰기를 수행한다: <sequence number>, <block offset (32-bit offset)>, <number of bytes to transfer>, <destination address (in specified memory block)>, <data byte(s)>.
MemoryRead
● 이 명령어는 이하의 독립변수들을 사용해 로컬 테스트 메모리로부터 읽기를 수행한다: <sequence number>, <block offset (32-bit offset)>, <number of bytes to transfer>, <source address (in specified memory block)>. 이 명령어는 시퀀스 넘버와 전송되는 바이트 수가 달려 있는 데이터 바이트들의 스트림을 리턴한다.
전형적 TISA 명령어 세트는 스캔 상태에 대해 이하의 값들을 포함한다:
StartState, ScanState, EndState
● 스캔 상태 코드들은 다음과 같은 것들을 포함한다:
TestLogicReset (TLR), RunTest/Idle (RTI), PauseDR (PDR), PauseIR (PIR), ScanDR (SDR), ScanIR (SIR). 상태 코드 당 4-비트 표현이 존재하며, 12 비트들은 스캔 동작의 전체 상태 천이 시퀀스를 나타내기 위해 사용된다.
여기서의 교시 내용을 숙지한 당업자라면, 여기 묘사되고 기술된 TISA 프로세서 구조들과 함께 다른 다양한 TISA 구현예들이 사용될 수 있다는 것을 예상할 수 있을 것이다. 예를 들어, 다른 TISA 구현예들은 더 적거나, 더 많거나, 다른 레지스터들을 사용할 수 있고, 더 적거나, 더 많거나, 다른 명령어 세트들을 사용할 수 있는 등의 사실뿐 아니라 이들의 다양한 조합들을 활용할 수 있다. 일 실시예에서, 특정 적용예들에 더 잘 맞는 TISA 구현을 제공하기 위해, 또는 어떤 다른 적절한 이유로, 다른 프로세서 구조들이 사용되는 다른 TISA 구현예들이 활용될 수 있다.
상술한 바와 같이, JTAG 구조에서의 TISA 사용은 스캔 동작들이 스캔 세그먼트 레벨에서 수행될 수 있게 하고, 이것은 전체적 스캔 경로 안에서 독립적으로 제어가능한 "스캔 세그먼트들"의 정의를 허용함으로써 문제 공간에서 바로 스캔 동작들을 규정하고 구현 시간에 그 스캔 동작들을 해결하도록 사용될 수 있는 융통성 있고 매우 효과적인 프리미티브들의 세트를 제공할 수 있다.
일반적으로, JTAG 동작들은 모든 비트들이 직렬 방식으로 하나씩 스캔 인(scanned in)되는 동안 동시에 비트들이 직렬 방식으로 하나씩 스캔 아웃(scanned out)되는 스캔 동작에 기반한다. 이것은 스캔 동작을 수행할 수 있도록 스캔 체인의 각 비트마다 어떤 값(즉, 인풋과 아웃풋 벡터)이 필요로 되는지에 대한 지식이 요구됨을 의미한다. 통상적으로 TGT들은 BSDL 같은 서술 언어들을 통해 얻어지는 시스템 모델로부터 필요한 벡터들을 계산함으로써 전통적 구조의 테스트에 대해 그러한 사양을 제공한다. 부가적으로, SVF 및 STAPL 같은 포맷들은 사용자에게 그러한 벡터들을 처리할 수 있게 할 때 이를 반영한다. 이런 방식의 테스트는 구조적(및 다른 타입의) 테스트에 있어 충분하지만, 이런 방식의 테스트는 전체적 스캔 체인을 액세스할 실제적 필요성이 없는 상호작용적 설정들에 있어서는 매우 비효율적이다. 이 비효율성은 한 예를 고려해 보여질 수 있다.
예를 들어, 각각이 16 비트들을 가진 100 개의 계측기들로 이뤄진 스캔 체인을 고려할 수 있다. 사용자가 스캔 체인 내 76 번째 계측기들의 레지스터들에 0x1234를 쓸 필요가 있었다면, TGT는 총 스캔 체인(100*16=1600 비트들)에 대한 벡터를 생성하고 그것이 스캔 체인 안으로 입력되도록 TAP 인터페이스로 보내야 할 것이다. 마찬가지로, 사용자가 관련 출력을 읽고 싶어했다면, TGT는 원하는 출력 정보를 추출할 수 있기 전에 1600 비트 벡터 전체를 수신해야 할 것이다. 이 예에서, 대다수의 스캔 비트들이 쓸모가 없다는 사실은 중요하지 않은데, 이는 스캔 효율성은 목표 가운데 하나가 아니기 때문이다(오히려, 이 예에서 목표는 기본적으로 스캔 체인의 한 특정 개체를 효율적으로 액세스할 수 있도록 하는 것이다).
이런 타입의 접근 방식은 최소한 다음과 같은 이유로 문제가 된다:
(a) 긴 벡터들을 처리해야 하는 계산상의 필요성이 존재한다(가령, 많은 메모리 이동이 성능에 큰 영향을 미친다). (b) 메모리에 전체 벡터(들)을 저장할 필요가 있다(이것은 긴 체인들에 있어 문제가 될 수 있다). (c) 메모리 저장은 데이터 입력 및 데이터 출력에만 국한되지 않고 예상 데이터, 입력 및 출력 마스크 등도 포함한다(그에 따라 단지 입출력 데이터로부터 이미 잠정적으로 팽배되어 있는 메모리 요건들을 배가시키게 된다). (d) 계측기-벡터-계측기로부터의 변환이 매회 이뤄져야 한다(이것은 계산 능력 및 시간을 요한다).
스캔 세그먼트 레벨 추상 레벨은 스캔 효율성에 대한 어떤 특별한 강조 없이(물론 필요하다면 그렇게 하겠지만) 피테스트 시스템의 스캔 체인의 개별 개체들이나 개체들의 그룹들에 대해 효율적인 액세스를 제공하기 위한 강력한 툴이다.
일 실시예에서, 스캔 세그먼트 레벨 추상화는 스캔 체인을 일련의 세그먼트들로 분해하고 세그먼트들 각각에 대해 하나 이상의 스캔 동작들을 규정함으로써 구현된다. 스캔 체인은 복수의 요소들로 이뤄지며, 각 세그먼트는 스캔 체인의 요소들 중 적어도 한 개를 포함한다. 요소들은 피테스트 시스템의 많은 레벨들에서 정의될 수 있고(가령, 요소들은 디바이스들, 계측기들, 레지스터들, 레지스터의 세그먼트들 등 뿐 아니라 이들의 다양한 조합일 수 있다), 그에 따라 스캔 체인이 분해되는 세그먼트들이 피테스트 시스템의 많은 레벨들에서 규정될 수 있다(가령, 세그먼트들은 디바이스들, 디바이스(드)의 일부, 하나 이상의 계측기들, 계측기(들)의 일부, 하나 이상의 레지스터들, 레지스터(들)의 일부, 하나 이상의 레지스터 세그먼트들 등 뿐 아니라 이들의 다양한 조합들을 포함할 수 있다). 이런 방식으로 세그먼트가 스캔 체인의 최소 제어 유닛을 나타낼 수 있다.
일 실시예에서, 스캔 체인의 세그먼트들로의 분해는 계층적(hierarchical)일 수 있다. 예를 들어, 스캔 체인은 세그먼트들로 분해될 수 있고, 세그먼트들의 적어도 일부는 서브 세그먼트들로 이뤄질 수 있고, 그 서브 세그먼트들의 적어도 일부는 서브 세그먼트들로 이뤄지는 식으로 될 수 있다. 이런 방식으로, 스캔 체인의 계층적 분해는 세그먼트가 다른 세그먼트들로 이뤄질 수 있는 트리 기반의 구조를 가진 것으로 보여질 수 있다. 그러한 일 실시예에서, 트리의 나뭇잎들(leaves)에 있는 세그먼트들은 세그먼트들이라 칭해질 수 있고(이들이 스캔 체인의 최소 제어 유닛을 나타낸다는 점에서), 트리의 나뭇잎들 위에 자리하는 세그먼트들은 수퍼 세그먼트들이라 칭해질 수 있다. 일 실시예에서, 스캔 체인의 세그먼트들 중 한 개 이상은 사용자/시스템에만 자명한 방식으로 제어될 수 있는 가상 서브 세그먼트들로 이뤄질 수 있다. 스캔 체인의 계층적 분해는 어떤 다른 적절한 방식으로 처리될 수도 있다.
세그먼트화의 이용은 세그먼트들의 타입들 및/또는 세그먼트 결합들의 타입들에 대한 개체들의 정의를 가능하게 한다. 개체는 한 타깃 타입의 각 물리적 인스턴스에 대해 유효하고 재사용될 수 있는 그 타깃 타입에 대한 일반적 서술이다. 예를 들어, 개체는 기기, 기기들의 그룹, 기기의 일부, 계측기, 계측기들의 그룹, 계측기의 일부 등 뿐 아니라 이들의 다양한 조합들에 대한 서술을 규정할 수 있다. 따라서, 스캔 체인은 스캔 체인의 세그먼트들이 특정 요소들이나 요소들의 결합들을 포함하도록 분해될 수 있기 때문에, 개체들은 스캔 체인의 개별 세그먼트들 및/또는 세그먼트들의 개별 조합들에 대해 정의될 수 있다. 예를 들어, 스캔 체인이 세그먼트들이 계측기를 포함하도록 분해되는 경우, 그 타입의 세그먼트(즉, 그 타입의 계측기를 포함하는 각 세그먼트)에 대해 개체가 규정될 수 있어, 스캔 체인의 그 타입 세그먼트의 각각의 물리적 경우에 대해 그 개체가 재사용될 수 있게 된다. 마찬가지로, 예를 들어, 스캔 체인이 세그먼트들이 여러 계측기들을 포함하도록 분해되는 경우, 그 타입의 세그먼트(즉, 그 타입의 계측기들의 조합을 포함하는 각 세그먼트)에 대해 개체가 규정될 수 있어, 스캔 체인의 그 타입 세그먼트의 각각의 물리적 인스턴스에 대해 그 개체가 재사용될 수 있게 된다. 이것은 이하에 기술되는 바와 같이 추가적 특성들 및 기능들이 지원될 수 있게 한다.
세그먼트화의 이용은 개체(즉, 제어 중인 세그먼트 타입에 대한 서술)가 그 개체와 통신하는데 사용되는 물리적 프로토콜과 상관될 수 있게 한다. 결과적으로 서술 언어들(가령, NSDL, P1687 IJTAG PDL 등과 같은)이 개체에 대해 고유하게 쓰여질 수 있고, 연결성 서술 부분(가령, NSDL이나 IJTAG HDL의 구조)이 세그먼트화 명령어들의 순서를 기술할 수 있다.
TISA는 특정 개체 타입의 모든 발생들에 대해 한 번 정의될 수 있는 재사용 가능한 모듈화를 제공하는데, 이는 TISA 명령어들이 모델 기반의 동작들이 아닌 세그먼트 기반의 동작들이기 때문이다. 따라서, TISA는 특정 세그먼트에서 테스트 중인 개체에 대해 모듈형이고 자율적이기 때문에, TISA는 기존 구조들에 비해 상당한 이점들을 제공한다.
TISA는 기존 틀들이 필요로 하는 만큼 그대로 정적 모델로서 전체 연결을 규정할 필요없이, 필요한 어떤 순서에 따라, 스캔 프로세서의 어느 포인트에서 실행 흐름과 관계가 있는 재사용 가능하고 이동 가능한 모듈로 테스트 데이터 레지스터 규정의 직접 매핑을 가능하게 한다. TISA는 통합 제어 흐름 및 표준 컴퓨터 사이언스 기법들에 기반해 단일 해법 공간 구조로서 스캔 동작들과 비스캔(non-scan)인 포트/신호 인터페이스들의 통합을 가능하게 한다(비스캔 동작들로의 액세스를 제공하기 위해 네이티브 언어 구조들이 사용되는 해법들에 비해 상당한 이점을 제공함).
TISA는 같은 개체의 여러 인스턴스들에 대해 명령어 시퀀스들의 재사용을 가능하게 함으로써, 시스템의 코드 저장 요건 감축을 가능하게 할 수 있다. 예를 들어, 매핑 프로그램에 의해 호출되는 서술 언어 함수들로 매핑하는 일반화된 함수가 작성될 수 있다. 이 예에서, 함수들 각각은 개체를 나타내는 네이티브 언어 객체들에 대한 방법들이고, 시스템에 정의되는 각 개체에 대해 그러한 객체들의 별개의 인스턴스들이 있을 수 있으나, 이러한 인스턴스들 각각과 통신하는데 사용되는 코드의 단일 카피가 있을 수도 있다. 이런 식으로, 네이티브 언어 구현 모델들은 회로의 연결 및 기능을 특정하는데 사용되는 서술 언어를 직접 제어한다.
위에서 주어진 예에 대해, 스캔 세그먼트 레벨 추상화의 이용은 계측기들 1부터 75까지를 포함하는 세그먼트 S1, 계측기 76을 포함하는 세그먼트 S2, 및 계측기들 77부터 100까지를 포함하는 세그먼트 S3 같은 세 세그먼트들의 정의를 가능하게 할 것이다. 이 방식에 따라 계측기 76으로의 액세스는 크게 단순화된다. 예를 들어, 세그먼트 S3에 대해 "더미 쉬프트(dummy shift)"(가령, ScanBlockZero)를 하고, 세그먼트 S2(즉, 계측기 76)에 대해 명령어(들)을 실행하고, 세그먼트 S1에 대해 또 다른 더미 쉬프트를 하고, 그에 따라 업데이트로 종료됨으로써 계측기 76으로의 액세스가 획득될 수 있을 것이다. 그러한 시퀀스에서, 세그먼트 S2(즉, 스캔 체인 내 특정 계측기)로의 액세스가 세그먼트 S1이나 세그먼트 S3에 대해 그 길이와 별개로 어떤 지식도 필요로 함이 없이 제공된다. 이것은 단지 예일 뿐이므로, 다른 계측기들이나 계측기 그룹들에 대한 액세스를 가능하게 하기 위해 100 계측기 길이의 체인들에 대한 다른 분해방식들이 있을 수 있다는 것을 알 수 있을 것이다.
도 17은 피테스트 시스템의 전형적 스캔 체인의 전형적 분해를 예시한, 피테스트 시스템의 하이-레벨 블록도를 묘사한다.
전형적 SUT(1700)는 네 개의 디바이스들(17101-17104)(합쳐서 디바이스들(1710), 도 17에서는 디바이스 1, 디바이스 2, 디바이스 3, 디바이스 4로 각기 표시됨)을 포함한다. 디바이스들(1710)은 스캔 체인(1720)을 형성하기 위해 SUT(1700) 안에서 직렬로 정렬된다. 스캔 체인(1720)은 다음과 같다:
TAP의 TDI가 디바이스 17104의 입력 포트에 연결되고, 디바이스 17104의 출력 포트가 디바이스 17103의 입력 포트에 연결되고, 디바이스 17103의 출력 포트가 디바이스 17102의 입력 포트에 연결되고, 디바이스 17102 출력 포트가 디바이스 17101 입력 포트에 연결되고, 디바이스 17101 출력 포트는 TAP의 TDO에 연결된다.
전형적 SUT(1700)에서, 디바이스들(1710) 각각은 (1) 입력들을 테스트 명령어 레지스터(TIR) 및 테스트 데이터 레지스터(TDR)로 제공하는 입력 디멀티플렉서, 및 (2) TIR 및 TDR로부터의 출력들을 모으기 위한 출력 멀티플렉서를 포함한다. 각 디바이스(1700)의 TIR 및 TDR은 병렬 레지스터들이다. 디바이스(17102)는 하나의 추가 TDR을 포함하며 입력 디멀티플렉서가 입력들을 하나의 TIR과 두 개의 TDR들에 제공하고 하나의 TIR 및 두 개의 TDR들로부터 출력들을 모으도록 하는데, 여기서 하나의 TIR과 두 개의 TDR들은 모두 병렬로 놓인다. TIR들 및 TDR들 각각은 직렬 쉬프트 레지스터들로서 묘사되고, 각각이 9 개의 관련 요소들(가령, 플립-플롭들)을 포함한다. 이런 방식으로, (a) TIR들이 36 개의 직렬 요소들을 포함하는 하나의 스캔 체인(테스트 명령어 스캔 체인이라 표시됨)을 형성하고 (b) TDR들은 45 개의 총 요소들과 36 개의 직렬 요소들을 포함하는 또 하나의 스캔 체인(테스트 데이터 스캔 체인이라 표시됨)을 형성한다(즉, 디바이스(171002)의 두 TDR들이 병렬이기 때문이다).
전형적인 SUT(1700)에서 테스트 명령어 스캔 체인이 다음과 같은 네 개의 세그먼트들로 분해되었다: 디바이스(17104)의 TIR의 9 개 요소들을 포함하는 제1세그먼트(SI4), 디바이스(17103)의 TIR의 9 개 요소들을 포함하는 제1세그먼트(SI3), 디바이스(17102)의 TIR의 9 개 요소들을 포함하는 제2세그먼트(SI2), 디바이스(17101)의 TIR의 9 개 요소들을 포함하는 제4세그먼트(SI1). 이런 방식으로 테스트 시스템은 SUT(1700)의 다른 TIR들에 대한 최소한의 지식(이들이 구성되는 요소들의 개수가 아님)을 이용해, 개별적으로나 조합 방식으로 SUT(1700)의 TIR들 중 어느 하나에 액세스할 수 있다.
전형적 SUT(1700)에서 테스트 데이터 스캔 체인은 여섯 개의 직렬 세그먼트(일곱 개의 총 세그먼트)로 다음과 같이 분해되었다: 디바이스(17104)의 TDR의 9 개 요소들을 포함하는 제1세그먼트(SD4), 디바이스(17103)의 TDR의 9 개 요소들을 포함하는 제2세그먼트(SD3), 디바이스(17102)의 제1TDR의 9 개 요소들을 포함하는(서브 세그먼트 (SD2.1)) 또는 디바이스(17102)의 제2TDR의 9개 요소들을 포함하는(서브 세그먼트 (SD2.2)) 제3세그먼트(SD2)(이들은 세그먼트들의 총 수를 세기 위한 목적에 따라 개별 세그먼트들로서 계산됨), 및 다음과 같이 세 개의 직렬 서브 세그먼트들로 추가 분해되는 제4세그먼트: 디바이스(17101)의 TDR의 최초 3 개의 요소들을 포함하는 제1서브 세그먼트(서브 세그먼트 (SD1.1)로 표시), 디바이스(17101)의 TDR의 다음 4 개의 요소들을 포함하는 제2서브 세그먼트(서브 세그먼트 (SD1.2)로 표시), 및 디바이스(17101)의 TDR의 마지막 2 개의 요소들을 포함하는 제3서브 세그먼트(서브 세그먼트 (SD1.3)로 표시). 이런 방식으로 테스트 시스템은 SUT(1700)의 다른 TDR들에 대한 최소한의 지식(이들이 구성되는 요소들의 개수가 아님)을 이용해, 개별적으로나 조합 방식으로 SUT(1700)의 TDR들 중 어느 하나(또는 심지어 디바이스(17101)의 TDR의 서브 부분들)에 액세스할 수 있다.
도 17의 SUT(1700)는 단지, 피테스트 시스템의 스캔 체인(들)이 스캔 세그먼트 레벨 추상화를 제공할 때 사용하기 위해 분해될 수 있는 방식의 한 예에 불과함을 알 수 있을 것이다. 여기서는 요소들, 성분들 등의 특정 타입, 개수, 및 배열과 관련해 묘사 및 기술되었지만, 스캔 테스트 체인(들)이 분해되는 피테스트 시스템은 요소들, 성분들 등의 다른 다양한 타입, 개수, 및/또는 배열들을 포함할 수 있다는 것을 알 수 있을 것이다.
여기 기술된 바와 같이, 피테스트 시스템의 스캔 체인 분해는 스캔 동작들이 세그먼트들에 대해 정의될 수 있게 하고, 그에 따라 테스트 효율성을 개선할 수 있다. 분해된 스캔 체인의 세그먼트들에 대한 스캔 동작들을 포함하는 명령어 세트를 생성하기 위한 일 실시예에 따른 방법이 도 18과 관련해 여기서 묘사 및 기술된다.
스캔 분해 및 스캔 세그먼트 동작들의 생성에 대한 보다 상세한 예가 다음과 같이 제공된다.
일반적 예로서, 각 보드가 한 세그먼트를 포함하는 세 개의 보드들을 포함하는 스캔 체인을 고려할 수 있다(제1보드, 제2보드, 및 제3보드와 관련해 세그먼트들 A, B, 및 C로 각각 표시됨). 이 예에서, 스캔 세그먼트들이 계층적인 경우, 제1보드 상의 세그먼트 A는 복수의 서브 세그먼트들(가령, 서브 세그먼트들 A1부터 An)로 구성될 수 있고, 제2보드 상의 세그먼트 B는 복수의 세그먼트들(가령, 서브 세그먼트들 B1부터 Bn)로 구성될 수 있고/있거나 제3보드 상의 세그먼트 C는 복수의 서브 세그먼트들(가령, 서브 세그먼트들 C1부터 Cn)로 구성될 수 있다.
보다 구체적인 예로서, 적용예 및 SUT를 따라 세그먼트는 계측기 내 하나 이상의 레지스터들, 계측기, 레지스터들의 클러스터, 한 개 이상의 보드들 등 뿐 아니라 이들의 다양한 조합들이 될 수도 있다.
따라서 전체적 스캔 동작이 일련의 세그먼트 스캔 동작들로 분해된다. 결과적으로, 최종 스캔 체인 동작을 얻기 위해 필요한 것 전부는 일련의 간단한 아토믹 동작들이다. 따라서, 스캔 세그먼트 레벨 추상화의 실시예들은 비한정적인 것으로서 아토믹 테스트 동작들이 프로세서 동작들처럼 처리되는 구현예들에서(가령, 여기 묘사되고 기술된 다양한 TISA 구현예들이나 아토믹 테스트 동작들이 프로세서 동작들처럼 처리되는 어떤 다른 유사한 구현예들 같은 것에서) 특히 효과적이다.
그러한 스캔 세그먼트 레벨 추상화의 실시예들에서, 스캔 세그먼트 레벨 스캔 동작들의 실제 구현예는 JTAG와 연결되는 하나 이상의 기술적 제약들이 다뤄질 것을 요할 수 있다. 예를 들어, 무엇보다 TAP 머신의 상태 및 Pause-DR 상태(항상 구현되는 것은 아님) 사용의 위험을 규정할 필요성과 같은 제약들이 다뤄질 필요가 있다.
스캔 체인 내 계측기/세그먼트의 위치에 기초해, 스캔 체인을 통해 수신된 출력 비트스트림에서 계측기/세그먼트 출력들을 식별하기 위해, 스캔 체인은 스캔 인(scan in)된 최초의 세그먼트가 (그것이 스캔 체인의 끝에 가장 인접할 때) 스캔 아웃되는 최초의 세그먼트가 되도록 (직렬적 성질이 주어지는) FIFO(first-in-first-out) 시스템으로서 처리될 수 있다.
SUT가 스캔 세그먼트 동작들의 시퀀스를 단일 스캔 동작처럼 "경험"하게 만들기 위해, TCK는 세그먼트 동작들 사이에서 정지되어(frozen) 있을 수 있다. 스캔 체인 내 모든 요소들이 동기화되므로, TCK를 그런 식으로 멈추게 하는 효과는 스캔 체인이 TCK와 함께 정지되게 한다.
TISA-기반 테스트 시스템에서 스캔 세그먼트 레벨의 사용은 약간의 예들을 이용해 더 잘 파악될 수 있다. 이어지는 예들에서, 피테스트 시스템(SUT)은 세 개의 세그먼트들(순서대로 A, B, 및 C로 표시됨)로 이뤄지고, 사용자가 세그먼트 B 안에 값 V를 기록해야 한다고 가정할 수 있다.
첫 번째 예로서, 시스템의 세 세그먼트들(A, B, 및 C)이 동일한 JTAG 디바이스 안에서 구현된다고 가정할 수 있다. 이 첫 번째 예에서, 세 개의 세그먼트들이 메모리 내에 정의되면, TISA 동작들이 다음과 같이 될 것이다:
i. Startstate = Run-Test-Idle, Scanstate=Endstate=ShiftDR 세팅,
ii. ScanLenghtField를 세그먼트 A의 길이로 세팅,
iii. 바이패스 시퀀스를 세그먼트 A 안에 스캐닝,
iv. Startstate = Scanstate=Endstate=ShiftDR 세팅,
v. ScanLenghtField를 세그먼트 B의 길이로 세팅,
vi. V를 세그먼트 B안에 스캐닝,
vii. Startstate = Scanstate= ShiftDR, Endstate=Run-Test-Idle 세팅,
viii. ScanLenghtField를 세그먼트 C의 길이로 세팅,
ix. 바이패스 시퀀스를 세그먼트 C 안에 스캐닝.
첫 번째 예에 대하여, TAP 유한 상태 머신(FSM(Finite State Machine))을 ShiftDR 상태로 유지하는 것은 스캔 체인 상에 아무런 업데이트도 존재하지 않도록 보장한다. 이것은 UpdateDR 상태가 오직 ShiftDR을 떠날 때만 도달된다고 할 때, (i)부터 (ix)까지의 단계에서 TAP FSM을 ShiftDR 상태로 유지하는 것이 스캔 체인 상의 업데이트가 존재하지 않도록 보장하는 첫 번째 예로부터 알 수 있다.
또한 그 첫 번째 예에 대해, 스캔 클록 TCK는 스캔 동작들(즉, (iii), (vi), 및 (ix)) 도중에만 액티브되고 나머지 상태들에서는 정지된다. 그 효과는, TCK와 동기화되는 동작들에 기반하는 SUT의 관점에서 SUT는 (iii), (vi), 및 (ix) 단계들을 연속 비트스트림으로 간주할 것이라는 것이다.
또 상기 첫 번째 예에 대해, "바이패스 시퀀스"는 스캔 세그먼트의 특성으로, 예를 들어 한 주어진 시퀀스(모드 0, 모두 1, 또는 다른 적절한 시퀀스)이거나, "don't care"일 수 있으며, 여기서 그러한 시퀀스를 결정하는 것은 TGT에 달려있다.
두 번째 예로서, 시스템의 세 세그먼트들(A, B, 및 C)이 서로 다른 JTAG 디바이스들(하나 이상의 카드들) 상에서 구현된다고 가정할 수 있다. 이 두 번째 예에서, 세 개의 세그먼트들이 메모리 내에 정의되면, TISA 동작들이 다음과 같이 될 것이다:
i. Segment A 상태들 세팅 : StartState=RunTest/Idle, ScanState=ShiftIR, EndState=ShiftIR (gateTCK indicator),
ii. 세그먼트 A ScanLengthField를 세그먼트 A IR의 길이로 세팅,
iii. ScanBlock을 세그먼트 A에 대한 BYPASS 명령어 패턴을 이용해 실행,
iv. 세그먼트 B 상태들 세팅: StartState=ShiftIR, ScanState=ShiftIR, EndState=ShiftIR (gateTCK indicator),
v. 세그먼트 B ScanLengthField를 세그먼트 B IR의 길이로 세팅,
vi. ScanBlock을 세그먼트 B에 대한 EXTEST 명령어 패턴을 이용해 실행,
vii. 세그먼트 C 상태들 세팅: StartState=ShiftIR, ScanState=ShiftIR, EndState=RunTest/Idle,
viii. 세그먼트 C ScanLengthField를 세그먼트 C IR의 길이로 세팅,
ix. ScanBlock을 세그먼트 C에 대한 BYPASS 명령어 패턴을 이용해 실행,
x. Segment A 상태들 세팅: StartState=RunTest/Idle, ScanState=ShiftDR, EndState=ShiftDR (gateTCK),
xi 세그먼트 A ScanLengthField를 세그먼트 A 선택 DR (1 비트 BYPASS DR)의 길이로 세팅,
xii. ScanBlock을 세그먼트 A에 대한 BYPASS 데이터 패턴을 이용해 실행,
xiii. 세그먼트 B 상태들 세팅: StartState=ShiftDR, ScanState=ShiftDR, EndState=ShiftDR (gateTCK),
xiv. 세그먼트 B ScanLengthField를 세그먼트 B 선택 DR (핀들에 대한 n 비트 BSR DR)의 길이로 세팅,
xv. ScanBlock을 세그먼트 B에 대한 EXTEST 데이터 패턴을 이용해 실행,
xvi. 세그먼트 C 상태들 세팅: StartState=ShiftDR, ScanState=ShiftDR, EndState=RunTest/Idle,
xvii. 세그먼트 C ScanLengthField를 세그먼트 C 선택 DR (1 비트 BYPASS DR)의 길이로 세팅,
xviii. ScanBlock을 세그먼트 C에 대한 BYPASS 데이터 패턴을 이용해 실행.
첫 번째 예와 두 번째 예를 비교할 때, 세그먼트들을 선택/선택해제하기 위해 각 JTAG 디바이스의 명령어 레지스터(IR)를 사용해야 할 필요성으로부터 두 번째 예와 관련된 부가적 복잡도가 생겨나게 될 것임을 알 수 있을 것이다. 그 경우, 관련 JTAG 디바이스를 1149.1 표준의 BYPASS 모드에 놓음으로써(두 번째 예의 (iii) 및 (xvii) 단계들에서 나타낸 바와 같이) 미사용 세그먼트들이 체인으로부터 바로 축출된다.
하나 이상의 JTAG 디바이스들 상에 규정된 어떤 수의 세그먼트들을 이용해 위의 두 예들의 모든 구성들이 가능하다는 것을 예상할 수 있을 것이다. 위의 두 예들은 단지 피테스트 시스템을 테스트하기 위한 스캔 세그먼트 레벨의 사용을 예시하기 위한 목적으로 제공되는 예들에 불과하며, 따라서 피테스트 시스템을 테스트하기 위해 스캔 세그먼트 레벨이 사용되는 실시예들이 이 예들로 국한되도록 의도되지는 않았음을 더 예상할 수 있을 것이다. 그러한 실시예들에서, TISA 명령어들의 실제 시퀀스는 아래의 사항들 중 하나 이상을 포함하는 여러 원천들을 가질 수 있다: (1) TISA 명령어들은 TGT에 의해 정적으로 산출될 수 있고, 이 경우 사용자가 세그먼트를 액세스하고자 할 때마다 전체 체인이 스캐닝되어야 한다(이러한 해법이 스캔 시간에 대해 최적은 아니겠지만, 제한된 계산 소스들 및 시간 제약이 미약하거나 아예 없는 내장 시스템들에 있어서는 유용할 수 있다는 것을 예상할 수 있을 것이다), (2) TISA 명령어들은 액세스 요청들을 수신하고 이들을 스캔 동작들로 만드는 소프트웨어 스케줄러에 의해 제공될 수 있다, (3) TISA 명령어들은 하드웨어 스케줄러(가령, 비한정적인 것으로서 일부 고성능 프로세서들에서 명령어 재정렬 및 우회를 위해 행해지는 것 등)에 의해 제공될 수 있다. 스캔 세그먼트 레벨 제어와 관련된 TISA 명령어들은 상술한 방법들 및/또는 상술한 방법들 중 하나 이상을 대신하거나 그에 대해 추가하여 사용될 수 있는 하나 이상의 다른 적절한 방법들의 조합을 포함할 수 있는 어떤 다른 적절한 방식으로 제공될 수도 있음을 예상할 수 있을 것이다.
스캔 세그먼트 레벨 추상 레벨은 IEEE P1687 표준에 의해 제기되는 것들 같은 동적 토폴로지들 및 다른 동적 토폴로지들을 다룸에 있어 강력한 툴이다. 스캔 체인의 한 섹션이 액티브 스캔 경로 안에 받아들여지거나 배제될 수 있다면(가령, IEEE P1687 표준에 의해 제기된 SIB 셀이나 어떤 다른 적절한 계층구조-가능 구성요소(들)을 이용), 그 섹션이 하나의 (또는 그 이상의) 세그먼트로서 마킹될 수 있다. 테스트 스케줄러는 이때 시스템 상태로부터, 이러한 세그먼트(들)이 액티브 상태인지 아닌지 여부, 그에 따라 세그먼트가 TISA 명령어 스케줄링에 포함되어야 하는지에 대한 지식을 가지게 된다. 여기서의 교시 내용을 숙지한 당업자라면 이러한 원리가 핫-스왑(hot-swap) 보드들 같은 다른 동적 요소들에도 사용될 수 있고 (가령 상태 레지스터로부터 그들의 존재를 검출함으로써) 어떤 다른 적절한 동적 요소들에도 사용될 수 있다는 것을 예상할 수 있을 것이다.
도 18은 스캔 체인의 스캔 세그먼트 레벨 추상화를 이용해, 피테스트 시스템의 스캔 체인을 통해 피테스트 시스템의 일부를 테스트하는 방법의 일 실시예에 대한 하이-레벨 블록도를 묘사한다.
여기서는 직렬방식으로 수행되는 것으로 주로 묘사 및 기술되고 있지만, 방법(1800)의 단계들 중 적어도 일부는 동시 발생적으로, 혹은 도 18과 관련해 묘사되고 기술된 것과는 다른 순서로 수행될 수도 있다.
방법(1800)은 단계(1802)에서 시작한다.
단계(1804)에서 스캔 체인이 복수의 세그먼트들로 분해된다. 스캔 체인은 복수의 요소들로 이뤄지며, 각 세그먼트는 스캔 체인의 요소들 중 적어도 한 개를 포함한다. 스캔 체인은 상술한 바와 같이 어떤 적절한 방식에 따라 세그먼트들로 분해될 수 있다. 여기 기술된 바와 같이, 스캔 체인의 세그먼트들로의 분해는 개발 흐름 상의 어디에서나 적용될 수 있다(가령, 테스트 개발자, 테스트 발생 툴, 내장된 회로 모델 등에 의해).
단계(1806)에서 명령어 세트가 생성된다. 이 명령어 세트는 ISA와 관련된 프로세서 명령어들 및 피테스트 시스템의 일부를 테스트하기 위한 테스트 명령어들을 포함한다. 테스트 명령들은 스캔 체인의 세그먼트들 각각에 대해 그 세그먼트에 대해 수행될 적어도 한 스캔 동작을 포함한다. 테스트 명령어들은 종래의 테스트 명령어들, TISA의 테스트 명령어들 등과 같은 어떤 타입의 테스트 명령어들일 수 있고, 따라서 어떤 적절한 방식을 통해 생성될 수 있다. 명령어 세트는 어떤 적절한 방식(가령, 위에서 묘사되고 기술된 것과 동일하거나 유사한 방식)을 통해 생성될 수 있다.
단계(1808)에서, 명령어 세트가 피테스트 시스템의 일부를 테스트하기 위해 실행된다. 명령어 세트는 명령어 세트의 명령어들의 타입에 좌우될 수 있는 어떤 적절한 방식을 통해 실행될 수 있다.
방법(1800)은 단계(1810)에서 종료된다.
여기서는 TISA의 실시예들이 스캔 동작들이 스캔 세그먼트 레벨에서 수행될 수 있도록 하는데 사용되는 실시예들에 대해 주로 묘사 및 기술되었지만, 여기 묘사되고 기술된 스캔 세그먼트 레벨 실시예들 중 하나 이상은 TISA와 닮은 명령어 구조들, 비 TISA 명령어 구조들 및/또는 비 TISA 테스트 환경 구현예들 등을 사용하는 환경들에도 제공될 수 있다는 것을 예상할 수 있을 것이다.
여기서는 여기 묘사되고 기술된 것 같이 형성 및 활용될 수 있는 TISA들의 전형적 실시예들에 의해 가능한 강화된 시스템 테스트 사양들을 설명할 목적으로 "상기 TISA"를 참조하고 있지만, TISA가 형성되는 프로세서의 ISA, TISA가 형성되는 SUT의 특징, TISA가 실행되도록 되어 있는 테스트 알고리즘의 특징 등 뿐 아니라 이들의 다양한 조합들 중 하나 이상과 같은 다양한 요인들에 따라 많은 상이한 TISA들이 형성될 수 있다는 것을 예상할 수 있을 것이다. 따라서 많은 상이한 타입들의 TISA들이 형성될 수 있다는 점에서, 여기서 이뤄지는 "상기 TISA"에 대한 참조는 보다 일반적으로 "어느 한 TISA"로 파악될 수 있다.
도 19는 여기 기술된 기능들을 수행할 때 사용하기 적합한 컴퓨터의 하이-레벨 블록도를 묘사한다. 도 19에 도시된 바와 같이, 컴퓨터(1900)는 프로세서 요소(1902)(가령, 중앙 처리 유닛(CPU)이나 다른 적절한 프로세서(들)), 메모리(1904)(가령, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 및/또는 어떤 다른 적절한 타입의 메모리), 여기 묘사되고 기술된 시스템 테스트 기능들을 수행하도록 구성된 시스템 테스트 모듈/프로세스(1905), 및 다양한 입출력 기기들(1906)(가령, 사용자 입력 기기(키보드, 키패드, 마우스 등과 같은 것), 사용자 출력 기기(디스플레이, 스피커 등과 같은 것), 입력 포트, 출력 포트, 수신기, 송신기, 및 저장 기기들(가령, 테이프 드라이브, 플로피 드라이브, 하드 디스크 드라이브, 컴팩트 디스크 드라이브 등)를 포함한다.
여기 묘사되고 기술된 시스템 테스트 기능들은 가령 범용 컴퓨터, 하나 이상의 ASIC(application specific integraged circuit) 및/또는 어떤 다른 하드웨어 균등물들을 이용해 소프트웨어 및/또는 소프트웨어 및 하드웨어의 조합으로 구현될 수 있다. 일 실시예에서, 상술한 시스템 테스트 기능들의 적어도 일부에 대한 구현예를 구현 및/또는 지원하기 위해, 시스템 테스트 프로세스(1905)가 메모리(1904)로 로드되고 프로세서(1902)에 의해 실행될 수 있다. 따라서, 시스템 테스트 프로세스(1905)(관련 데이터 구조들을 포함)는 컴퓨터 판독가능 저장 매체나 캐리어, 가령 RAM 메모리, 마그네틱 또는 옵티컬 드라이브나 디스켓 등에 저장될 수 있다.
여기서 소프트웨어 방법들로서 논의된 단계들 중 일부는 하드웨어 안에서, 이를테면, 다양한 방법의 단계들을 수행하기 위해 프로세서와 공동 작업하는 회로부로서 구현될 수 있다는 것을 예상할 수 있다. 여기 기술된 기능들/요소들의 일부는 컴퓨터 명령어들이 컴퓨터에 의해 처리될 때, 여기 기술된 방법들 및/또는 기법들이 유발되거나 제공되도록 컴퓨터의 동작을 구성시키는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 본 발명의 방법들을 이끌어내는 명령어들은 고정되거나 탈부착 가능한 매체에 저장되거나, 방송이나 다른 신호 보유 매체에서 데이터 스트림을 통해 전송되거나, 명령어들에 따라 동작하는 컴퓨팅 기기 내 메모리 안에 저장될 수 있다.
본 발명의 교시 내용들을 포함하는 다양한 실시예들이 여기서 상세히 도시되고 기술되었지만, 당업자라면 여전히 이 교시 내용들을 포함하는 다른 많은 변형된 실시예들을 쉽게 안출할 수 있을 것이다.

Claims (15)

  1. 피테스트 시스템에 액세스하도록 구성된 테스트 액세스 포트(TAP)를 통해 상기 피테스트 시스템의 적어도 일부에 대한 테스트를 수행하는 장치로서,
    제 1 프로세서를 포함하되,
    상기 제 1 프로세서는,
    상기 TAP를 통해 상기 피테스트 시스템의 적어도 일부에 대한 테스트를 제어하도록 구성된 명령어 세트 -상기 명령어 세트는 상기 TAP의 제어와 관련된 TAP 관련 명령어를 포함함- 를 실행하고,
    상기 명령어 세트의 실행 중에 상기 TAP 관련 명령어를 검출하며,
    상기 TAP로의 인터페이스를 지원하도록 구성된 제 2 프로세서로 상기 TAP 관련 명령어를 전달하도록 구성되는
    장치.
  2. 삭제
  3. 제 1 항에 있어서,
    메인 프로세서 인터페이스 버스 -상기 제 1 프로세서는 상기 메인 프로세서 인터페이스 버스에 통신가능하게 연결됨- 와,
    상기 제 1 프로세서 및 상기 제 2 프로세서를 통신가능하게 연결하도록 구성된 보조 프로세서 인터페이스를 더 포함하되,
    상기 제 1 프로세서는 상기 TAP 관련 명령어를 상기 보조 프로세서 인터페이스를 통해 상기 제 2 프로세서로 전달하도록 구성되는
    장치.
  4. 제 1 항에 있어서,
    상기 제 1 프로세서는 상기 TAP 관련 명령어를 명령어 예외(instruction exception)로서 검출하고 전달하도록 구성되는
    장치.
  5. 제 1 항에 있어서,
    상기 제 2 프로세서는 스캐터/개더(scatter/gather) 직접 메모리 액세스(DMA) 유닛을 포함하며, 상기 제 1 프로세서는 상기 TAP 관련 명령어를 검출하기 전에 상기 스캐터/개더 DMA 유닛의 적어도 하나의 스캐터/개더 DMA 테이블을 구성하도록 구성되는
    장치.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 테스트 액세스 포트(TAP)를 통해 액세스 가능한 피테스트 시스템의 적어도 일부에 대한 테스트를 수행하는 방법에 있어서,
    제 1 프로세서에 의해, 상기 TAP를 통해 상기 피테스트 시스템의 적어도 일부에 대한 테스트를 제어하도록 구성된 명령어 세트를 실행하는 단계 -상기 명령어 세트는 상기 TAP의 제어와 관련된 TAP 관련 명령어를 포함함- 와,
    상기 명령어 세트의 실행 중에 상기 제 1 프로세서에 의해, 상기 TAP의 제어와 관련된 TAP 관련 명령어를 검출하는 단계와,
    상기 제 1 프로세서로부터, 상기 TAP로의 인터페이스를 지원하도록 구성된 제 2 프로세서로 상기 TAP 관련 명령어를 전달하는 단계를 포함하는
    방법.
  11. 제 1 항에 있어서,
    상기 제 1 프로세서는,
    상기 TAP 관련 명령어를 패킷화하고,
    통신 인터페이스를 통해 상기 제 2 프로세서로 상기 패킷화된 TAP 관련 명령어를 전달하도록 구성되는
    장치.
  12. 제 1 항에 있어서,
    상기 제 1 프로세서는 자신과 관련된 메인 메모리를 갖고 상기 제 2 프로세서는 자신과 관련된 로컬 테스트 메모리를 가지며,
    상기 TAP 관련 명령어는 상기 메인 메모리와 상기 로컬 테스트 메모리 사이에 블록 메모리 카피를 수행하도록 구성된 적어도 하나의 확장 커맨드(extension command)를 포함하는
    장치.
  13. 제 1 항에 있어서,
    상기 제 1 프로세서는 상기 제 2 프로세서에 의한 상기 TAP 관련 명령어의 처리와 동시에 적어도 하나의 작업을 수행하도록 구성되는
    장치.
  14. 제 1 항에 있어서,
    상기 제 2 프로세서는 상기 TAP를 통해 적어도 하나의 스캔 동작을 제어하는 상기 TAP 관련 명령어를 실행하도록 구성되는
    장치.
  15. 제 1 항에 있어서,
    상기 제 2 프로세서를 더 포함하되,
    상기 제 2 프로세서는,
    상기 제 1 프로세서로부터 상기 TAP 관련 명령어를 수신하고,
    상기 TAP 관련 명령어를 처리하도록 구성되는
    장치.
KR1020117023268A 2009-03-04 2010-03-03 여러 프로세서들을 사용하는 시스템 테스트 방법 및 장치 KR101329465B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15741209P 2009-03-04 2009-03-04
US61/157,412 2009-03-04
PCT/US2010/026037 WO2010101995A1 (en) 2009-03-04 2010-03-03 Method and apparatus for system testing using multiple processors

Publications (2)

Publication Number Publication Date
KR20120023601A KR20120023601A (ko) 2012-03-13
KR101329465B1 true KR101329465B1 (ko) 2013-11-13

Family

ID=42167394

Family Applications (5)

Application Number Title Priority Date Filing Date
KR1020137021681A KR20130100018A (ko) 2009-03-04 2010-03-03 여러 명령어 타입을 사용하는 시스템 테스트 방법 및 장치
KR1020117020512A KR20110122165A (ko) 2009-03-04 2010-03-03 스캔 체인 분해를 이용한 시스템 테스트 방법 및 장치
KR1020117023268A KR101329465B1 (ko) 2009-03-04 2010-03-03 여러 프로세서들을 사용하는 시스템 테스트 방법 및 장치
KR1020117020633A KR101489550B1 (ko) 2009-03-04 2010-03-03 여러 명령어 타입을 사용하는 시스템 테스트 방법 및 장치
KR1020137015909A KR101533170B1 (ko) 2009-03-04 2010-03-03 스캔 체인 분해를 이용한 시스템 테스트 장치

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020137021681A KR20130100018A (ko) 2009-03-04 2010-03-03 여러 명령어 타입을 사용하는 시스템 테스트 방법 및 장치
KR1020117020512A KR20110122165A (ko) 2009-03-04 2010-03-03 스캔 체인 분해를 이용한 시스템 테스트 방법 및 장치

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020117020633A KR101489550B1 (ko) 2009-03-04 2010-03-03 여러 명령어 타입을 사용하는 시스템 테스트 방법 및 장치
KR1020137015909A KR101533170B1 (ko) 2009-03-04 2010-03-03 스캔 체인 분해를 이용한 시스템 테스트 장치

Country Status (6)

Country Link
US (3) US8533545B2 (ko)
EP (3) EP2404184B1 (ko)
JP (4) JP5489249B2 (ko)
KR (5) KR20130100018A (ko)
CN (3) CN102439470B (ko)
WO (3) WO2010101984A1 (ko)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7984336B2 (en) * 2006-05-24 2011-07-19 Freescale Semiconductor, Inc. Method and system for storing data from a plurality of processors
US8719649B2 (en) 2009-03-04 2014-05-06 Alcatel Lucent Method and apparatus for deferred scheduling for JTAG systems
US8533545B2 (en) * 2009-03-04 2013-09-10 Alcatel Lucent Method and apparatus for system testing using multiple instruction types
US8572433B2 (en) * 2010-03-10 2013-10-29 Texas Instruments Incorporated JTAG IC with commandable circuit controlling data register control router
US8112669B2 (en) * 2009-08-31 2012-02-07 Comsonics, Inc. Wireless diagnostic system
US20110087861A1 (en) * 2009-10-12 2011-04-14 The Regents Of The University Of Michigan System for High-Efficiency Post-Silicon Verification of a Processor
CN102110037A (zh) * 2009-12-29 2011-06-29 鸿富锦精密工业(深圳)有限公司 电子装置测试系统
US9316690B2 (en) * 2010-03-19 2016-04-19 Qualcomm Incorporated Data recirculation in configured scan paths
US8352791B2 (en) * 2010-06-04 2013-01-08 GM Global Technology Operations LLC Configurable test suite
US8516318B2 (en) * 2010-12-15 2013-08-20 International Business Machines Corporation Dynamic scan
US8570077B2 (en) * 2010-12-17 2013-10-29 Qualcomm Incorporated Methods and implementation of low-power power-on control circuits
US8423343B2 (en) * 2011-01-24 2013-04-16 National Tsing Hua University High-parallelism synchronization approach for multi-core instruction-set simulation
US8677324B2 (en) 2011-01-31 2014-03-18 Hewlett-Packard Development Company, L.P. Evaluating performance of an application using event-driven transactions
CN103458086B (zh) * 2012-06-04 2016-12-14 联想(北京)有限公司 一种智能手机及其故障检测方法
CN102799528B (zh) * 2012-07-12 2015-12-09 中国科学院声学研究所 一种用于电路板级测试的脚本调试方法、装置及其系统
US9121892B2 (en) * 2012-08-13 2015-09-01 Analog Devices Global Semiconductor circuit and methodology for in-system scan testing
TWI461907B (zh) * 2012-10-11 2014-11-21 Mstar Semiconductor Inc 配合多個應用程式之整合系統和測試系統
US9959186B2 (en) * 2012-11-19 2018-05-01 Teradyne, Inc. Debugging in a semiconductor device test environment
CN103092188B (zh) * 2012-12-28 2018-01-12 派芬自控(上海)股份有限公司 一种测试方法及系统
US9183105B2 (en) 2013-02-04 2015-11-10 Alcatel Lucent Systems and methods for dynamic scan scheduling
US9810729B2 (en) * 2013-02-28 2017-11-07 Advantest Corporation Tester with acceleration for packet building within a FPGA block
US9239360B2 (en) * 2014-01-28 2016-01-19 Texas Instruments Incorporated DFT approach to enable faster scan chain diagnosis
US11042929B2 (en) 2014-09-09 2021-06-22 Oracle Financial Services Software Limited Generating instruction sets implementing business rules designed to update business objects of financial applications
CN104749515B (zh) * 2015-03-31 2017-12-15 中国人民解放军国防科学技术大学 一种基于顺序等分分段式的低功耗扫描测试方法和装置
CN105138364B (zh) * 2015-08-21 2019-03-01 Oppo广东移动通信有限公司 一种终端系统升级的方法及装置
US9640280B1 (en) * 2015-11-02 2017-05-02 Cadence Design Systems, Inc. Power domain aware insertion methods and designs for testing and repairing memory
WO2017107125A1 (en) * 2015-12-24 2017-06-29 Intel Corporation Conflict mask generation
WO2017129242A1 (en) * 2016-01-27 2017-08-03 Advantest Corporation Deterministic concurrent test program executor for an automated test equipment
KR102675841B1 (ko) 2016-05-17 2024-06-18 삼성전자주식회사 바이너리 벡터 기반의 테스트 장치
CN109863413B (zh) * 2016-05-20 2022-03-25 默升科技集团有限公司 Serdes应用中基于扫描的测试设计
WO2018089295A1 (en) * 2016-11-08 2018-05-17 Xcerra Corporation Multi-node testing system and method
US10521344B1 (en) * 2017-03-10 2019-12-31 Pure Storage, Inc. Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems
US10592370B2 (en) * 2017-04-28 2020-03-17 Advantest Corporation User control of automated test features with software application programming interface (API)
CN110658438B (zh) * 2018-06-29 2024-09-17 是德科技股份有限公司 扫描测试系统及其控制装置和控制方法
CN109408382A (zh) * 2018-10-11 2019-03-01 网宿科技股份有限公司 一种持续集成方法和持续集成系统
JP7058759B2 (ja) * 2019-01-22 2022-04-22 株式会社アドバンテスト 1または複数の被テストデバイスをテストするための自動試験装置、1または複数の被テストデバイスの自動試験のための方法、および、コマンドエラーを処理するためのコンピュータプログラム
US11069420B2 (en) 2019-07-25 2021-07-20 Micron Technology, Inc. In-system test of a memory device
CN110634530B (zh) * 2019-09-10 2021-05-25 珠海博雅科技有限公司 芯片的测试系统和测试方法
CN111176961B (zh) * 2019-12-05 2022-03-29 腾讯科技(深圳)有限公司 一种应用程序测试方法、装置及存储介质
CN111209210A (zh) * 2020-01-15 2020-05-29 北京明略软件系统有限公司 一种生成测试用例方法、装置、电子设备及存储介质
US11243252B1 (en) 2020-08-17 2022-02-08 Cisco Technology, Inc. Processor to JTAG test data register interface
CN112100954B (zh) * 2020-08-31 2024-07-09 北京百度网讯科技有限公司 验证芯片的方法、装置和计算机存储介质
CN113342583B (zh) * 2021-06-08 2022-11-29 海光信息技术股份有限公司 芯片验证系统、方法、装置、设备和存储介质
CN113358070B (zh) * 2021-07-07 2023-03-28 苏州鑫睿益荣信息技术有限公司 一种汽车刹车片平整度及销钉高度检测系统及其检测方法
CN113552473B (zh) * 2021-09-22 2021-12-28 北京紫光青藤微系统有限公司 用于芯片测试的系统和待测芯片装置
CN114036885A (zh) * 2021-11-08 2022-02-11 上海兆芯集成电路有限公司 内建自测试的方法及互连接口
CN114416450B (zh) * 2022-01-18 2022-09-27 深圳市百泰实业股份有限公司 一种pcba生产测试管理方法
WO2024186533A1 (en) * 2023-03-08 2024-09-12 Qorvo Us, Inc. Scan test in a single-wire bus circuit

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694399A (en) * 1996-04-10 1997-12-02 Xilinix, Inc. Processing unit for generating signals for communication with a test access port
KR20050083716A (ko) * 2002-10-01 2005-08-26 크리스토퍼 프랑크 맥코넬 컴퓨터를 이용한 무선 오디오 통신 시스템 및 방법
KR100944143B1 (ko) 2005-11-23 2010-02-24 퀄컴 인코포레이티드 통신 시스템 내의 디바이스들에 소프트웨어 업그레이드 통지를 제공하는 방법, 장치, 프로세서 및 컴퓨터-판독가능 매체
KR101146159B1 (ko) 2004-02-19 2012-05-25 퀄컴 캠브리지 리미티드 계층화된 사용자 인터페이스

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08233904A (ja) * 1995-02-27 1996-09-13 Nec Eng Ltd バウンダリスキャン回路
JPH0926807A (ja) * 1995-07-12 1997-01-28 Keyence Corp プログラマブルコントローラ
US5838568A (en) * 1996-06-28 1998-11-17 International Business Machines Corporation Heated circuit assembly tester and method
US5949692A (en) 1996-08-28 1999-09-07 Synopsys, Inc. Hierarchical scan architecture for design for test applications
US5828579A (en) 1996-08-28 1998-10-27 Synopsys, Inc. Scan segment processing within hierarchical scan architecture for design for test applications
JP3385210B2 (ja) 1998-03-31 2003-03-10 富士通株式会社 テストデータスキャン装置およびスキャン方法
US6061709A (en) 1998-07-31 2000-05-09 Integrated Systems Design Center, Inc. Integrated hardware and software task control executive
US6195774B1 (en) * 1998-08-13 2001-02-27 Xilinx, Inc. Boundary-scan method using object-oriented programming language
US6370664B1 (en) 1998-10-29 2002-04-09 Agere Systems Guardian Corp. Method and apparatus for partitioning long scan chains in scan based BIST architecture
US7392431B2 (en) * 1999-02-19 2008-06-24 Texas Instruments Incorporated Emulation system with peripherals recording emulation frame when stop generated
US7089404B1 (en) * 1999-06-14 2006-08-08 Transmeta Corporation Method and apparatus for enhancing scheduling in an advanced microprocessor
JP2001201543A (ja) * 2000-01-18 2001-07-27 Rooran:Kk スキャン・パス構築用プログラムを記録した記録媒体とスキャン・パスの構築方法及びこのスキャン・パスを組み込んだ演算処理システム
US6453456B1 (en) * 2000-03-22 2002-09-17 Xilinx, Inc. System and method for interactive implementation and testing of logic cores on a programmable logic device
US6640322B1 (en) * 2000-03-22 2003-10-28 Sun Microsystems, Inc. Integrated circuit having distributed control and status registers and associated signal routing means
US6691270B2 (en) 2000-12-22 2004-02-10 Arm Limited Integrated circuit and method of operation of such a circuit employing serial test scan chains
JP3751531B2 (ja) * 2001-03-16 2006-03-01 沖電気工業株式会社 Jtagインターフェース回路及びそれを用いたjtag対応半導体装置のテスト方法とデバッグ方法
KR100941563B1 (ko) * 2001-10-17 2010-02-10 엔엑스피 비 브이 전자 장치 및 전자 장치의 자동 설정 방법
US6957371B2 (en) 2001-12-04 2005-10-18 Intellitech Corporation Method and apparatus for embedded built-in self-test (BIST) of electronic circuits and systems
US7047462B2 (en) 2002-01-04 2006-05-16 Hewlett-Packard Development Company, Lp. Method and apparatus for providing JTAG functionality in a remote server management controller
JP2003228999A (ja) * 2002-02-01 2003-08-15 Rohm Co Ltd 半導体記憶装置
US20030163773A1 (en) * 2002-02-26 2003-08-28 O'brien James J. Multi-core controller
US7073110B1 (en) 2002-04-26 2006-07-04 Xilinx, Inc. Method and system for programmable boundary-scan instruction register
US7039841B2 (en) 2002-05-08 2006-05-02 Credence Systems Corporation Tester system having multiple instruction memories
US7234092B2 (en) 2002-06-11 2007-06-19 On-Chip Technologies, Inc. Variable clocked scan test circuitry and method
US6832539B2 (en) * 2002-07-15 2004-12-21 Delaware Capital Formation, Inc. Cylinder lock
JP4182202B2 (ja) 2002-08-02 2008-11-19 富士通マイクロエレクトロニクス株式会社 シミュレーション用カバレッジ算出装置及びシミュレーション用カバレッジ算出方法
US20040078179A1 (en) * 2002-10-17 2004-04-22 Renesas Technology Corp. Logic verification system
US7539915B1 (en) * 2003-01-07 2009-05-26 Marvell Israel (Misl) Ltd. Integrated circuit testing using segmented scan chains
JP2004280588A (ja) 2003-03-17 2004-10-07 Cats Kk システムlsi設計支援装置およびシステムlsi設計支援プログラム
US7406699B2 (en) 2003-04-02 2008-07-29 Microsoft Corporation Enhanced runtime hosting
US7305586B2 (en) 2003-04-25 2007-12-04 International Business Machines Corporation Accessing and manipulating microprocessor state
US7080789B2 (en) * 2003-05-09 2006-07-25 Stmicroelectronics, Inc. Smart card including a JTAG test controller and related methods
US7346821B2 (en) 2003-08-28 2008-03-18 Texas Instrument Incorporated IC with JTAG port, linking module, and off-chip TAP interface
US7149943B2 (en) 2004-01-12 2006-12-12 Lucent Technologies Inc. System for flexible embedded Boundary Scan testing
US7139950B2 (en) * 2004-01-28 2006-11-21 International Business Machines Corporation Segmented scan chains with dynamic reconfigurations
KR100880832B1 (ko) 2004-02-10 2009-01-30 삼성전자주식회사 코-디버깅 기능을 지원하는 반도체 집적회로 및 반도체집적회로 테스트 시스템
US7334060B2 (en) 2004-03-19 2008-02-19 International Business Machines Corporation System and method for increasing the speed of serially inputting data into a JTAG-compliant device
US7143324B2 (en) 2004-11-04 2006-11-28 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for automatic masking of compressed scan chains with unbalanced lengths
JP2006146757A (ja) 2004-11-24 2006-06-08 Toshiba Corp デバッグ用レジスタおよびデータ転送方法
US7206983B2 (en) 2005-03-31 2007-04-17 Lsi Logic Corporation Segmented addressable scan architecture and method for implementing scan-based testing of integrated circuits
US7383478B1 (en) * 2005-07-20 2008-06-03 Xilinx, Inc. Wireless dynamic boundary-scan topologies for field
JP2007147352A (ja) 2005-11-25 2007-06-14 Sony Corp 無線インターフェースモジュール及び電子機器
JP4805134B2 (ja) * 2006-12-28 2011-11-02 富士通株式会社 集積回路の内部ラッチをスキャンする方法及び装置並びに集積回路
JP2008165534A (ja) * 2006-12-28 2008-07-17 Oki Electric Ind Co Ltd 半導体装置
US8015462B2 (en) * 2007-05-11 2011-09-06 Renesas Electronics Corporation Test circuit
US8418008B2 (en) * 2008-12-18 2013-04-09 Lsi Corporation Test technique to apply a variable scan clock including a scan clock modifier on an integrated circuit
US8533545B2 (en) * 2009-03-04 2013-09-10 Alcatel Lucent Method and apparatus for system testing using multiple instruction types
US8621301B2 (en) 2009-03-04 2013-12-31 Alcatel Lucent Method and apparatus for virtual in-circuit emulation
US8055948B2 (en) * 2009-09-14 2011-11-08 International Business Machines Corporation Resilient software-controlled redundant array of independent disks (RAID)

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694399A (en) * 1996-04-10 1997-12-02 Xilinix, Inc. Processing unit for generating signals for communication with a test access port
KR20050083716A (ko) * 2002-10-01 2005-08-26 크리스토퍼 프랑크 맥코넬 컴퓨터를 이용한 무선 오디오 통신 시스템 및 방법
KR101146159B1 (ko) 2004-02-19 2012-05-25 퀄컴 캠브리지 리미티드 계층화된 사용자 인터페이스
KR100944143B1 (ko) 2005-11-23 2010-02-24 퀄컴 인코포레이티드 통신 시스템 내의 디바이스들에 소프트웨어 업그레이드 통지를 제공하는 방법, 장치, 프로세서 및 컴퓨터-판독가능 매체

Also Published As

Publication number Publication date
EP2404184A1 (en) 2012-01-11
EP2404182B1 (en) 2014-05-21
WO2010101995A1 (en) 2010-09-10
EP2404183A1 (en) 2012-01-11
JP5684739B2 (ja) 2015-03-18
CN102341718B (zh) 2015-05-20
US20100229058A1 (en) 2010-09-09
JP5489249B2 (ja) 2014-05-14
CN102439470B (zh) 2014-07-16
KR20120023601A (ko) 2012-03-13
JP2012519854A (ja) 2012-08-30
KR20130100018A (ko) 2013-09-06
WO2010102019A8 (en) 2010-11-18
JP2014067436A (ja) 2014-04-17
KR20130081717A (ko) 2013-07-17
KR20110124274A (ko) 2011-11-16
EP2404183B1 (en) 2014-08-13
KR101533170B1 (ko) 2015-07-02
WO2010101984A1 (en) 2010-09-10
CN102341718A (zh) 2012-02-01
JP5683502B2 (ja) 2015-03-11
EP2404182A1 (en) 2012-01-11
KR101489550B1 (ko) 2015-03-24
CN102341719A (zh) 2012-02-01
US20100229036A1 (en) 2010-09-09
US20100229042A1 (en) 2010-09-09
JP2012519912A (ja) 2012-08-30
WO2010102019A1 (en) 2010-09-10
US8533545B2 (en) 2013-09-10
KR20110122165A (ko) 2011-11-09
CN102439470A (zh) 2012-05-02
CN102341719B (zh) 2015-04-01
JP2012519853A (ja) 2012-08-30
US8677198B2 (en) 2014-03-18
EP2404184B1 (en) 2013-10-02

Similar Documents

Publication Publication Date Title
KR101329465B1 (ko) 여러 프로세서들을 사용하는 시스템 테스트 방법 및 장치
EP2588875B1 (en) Method and apparatus for virtual in-circuit emulation
US8719649B2 (en) Method and apparatus for deferred scheduling for JTAG systems
US8775884B2 (en) Method and apparatus for position-based scheduling for JTAG systems

Legal Events

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

Payment date: 20161028

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171204

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee