테스트용 설계

Design for testing

테스트용 설계 또는 테스트 가능성 설계(DFT)는 하드웨어 제품 설계에 테스트 가능성 기능을 추가하는 IC 설계 기술로 구성됩니다.추가된 기능을 통해 제조 테스트를 쉽게 개발하고 설계 하드웨어에 적용할 수 있습니다.제조 테스트의 목적은 제품의 올바른 기능에 악영향을 미칠 수 있는 제조상의 결함이 제품 하드웨어에 포함되어 있지 않은지 검증하는 것입니다.

테스트는 하드웨어 제조 흐름의 여러 단계에서 이루어집니다.일부 제품에서는 고객 환경의 하드웨어 유지 보수에도 사용할 수 있습니다.테스트는 일반적으로 자동 테스트 장비(ATE)를 사용하여 실행되는 테스트 프로그램 또는 시스템 유지보수의 경우 조립된 시스템 내부에서 실행됩니다.결함의 존재(즉, 테스트 실패)를 발견하고 나타낼 뿐만 아니라, 발생한 테스트 실패의 성격에 대한 진단 정보를 기록할 수 있습니다.진단 정보를 사용하여 장애의 원인을 찾을 수 있습니다.

즉, 양호한 회로로부터의 벡터(패턴)의 응답은 DUT(테스트 대상 디바이스)로부터의 벡터(같은 패턴을 사용)의 응답과 비교됩니다.응답이 같거나 일치하면 회선은 양호한 것입니다.그렇지 않으면 회로가 의도한 대로 제조되지 않습니다.

DFT는 테스트 프로그램 개발과 테스트 적용 및 진단을 위한 인터페이스로서 중요한 역할을 합니다.적절한 DFT 규칙과 제안이 구현되어 있으면 자동 테스트 패턴 생성(ATPG)이 훨씬 쉬워집니다.

역사

DFT 기술은 적어도 전기/전자 데이터 처리 장치의 초기부터 사용되어 왔다.1940/50년대의 초기 예는 엔지니어가 아날로그 컴퓨터[아날로그 스캔]의 일부 내부 노드에서 전압/전류를 "스캔"(선택적으로 프로브)할 수 있도록 한 스위치와 기기입니다.DFT는 종종 내부 회로 요소에 대한 개선된 액세스를 제공하는 설계 변경과 관련되어 로컬 내부 상태를 보다 쉽게 제어(제어성) 및/또는 관찰(관측성)할 수 있습니다.설계 변경은 엄격히 물리적인 특성(예를 들어, 물리적 프로브 포인트를 네트워크에 추가) 및/또는 제어성/관측성을 용이하게 하기 위한 활성 회로 요소(예를 들어 멀티플렉서 삽입)를 추가할 수 있다.내부 회로 소자의 제어성 및 관찰성 개선은 테스트에 매우 중요하지만 DFT의 유일한 유형은 아닙니다.예를 들어, 다른 지침에서는 테스트 대상 제품과 테스트 장비 사이의 계면의 전기기계적 특성을 다루고 있습니다.예를 들어 프로브 포인트의 크기, 모양 및 간격에 대한 지침이나 백드라이빙에 의한 손상 위험을 완화하기 위해 프로브 네트에 부착된 드라이버에 높은 임피던스 상태를 추가하는 제안 등이 있습니다.

수년간 업계에서는 바람직한 DFT 회로 수정 및/또는 필수 DFT 회로 수정에 대해 다소 상세하고 다소 공식적인 가이드라인을 개발하여 사용해 왔습니다.현대 마이크로일렉트로닉스용 전자 설계 자동화(EDA)의 맥락에서 DFT에 대한 공통적인 이해는 상용 DFT 소프트웨어 도구의 기능뿐만 아니라 이러한 도구를 연구, 개발 및 사용하는 DFT 엔지니어 커뮤니티의 전문 지식과 경험에 의해 형성됩니다.DFT 관련 지식의 대부분은 디지털 회로에 초점을 맞추고 있지만 아날로그/혼합 신호 회로용 DFT는 다소 뒷전입니다.

마이크로일렉트로닉스 제품의 DFT 목표

DFT는 테스트 개발, 테스트 적용 및 진단에 사용되는 방법에 영향을 미치며 이에 따라 달라집니다.

적어도 디지털 회로용으로 오늘날 업계에서 사용되는 대부분의 도구 지원 DFT는 구조 테스트 패러다임을 기반으로 합니다.구조 테스트에서는 회로의 전반적인 기능이 올바른지 여부를 직접 판단하지 않습니다.대신에, 구조 리스트에 지정되어 있는 몇개의 저레벨 빌딩 블록으로부터 회선이 올바르게 조립되고 있는 것을 확인하려고 합니다.예를 들어 지정된 모든 로직게이트가 존재하며 올바르게 동작하며 올바르게 연결되어 있습니까?네트워크 리스트가 올바르고 구조 테스트에서 회로 소자의 올바른 어셈블리가 확인된 경우 회로가 올바르게 기능해야 합니다.

이는 테스트 대상 회로가 기능 사양에 따라 기능하는지 검증하는 기능 테스트와는 크게 다릅니다.이것은, Netlist 로 지정된 회선이 기능 사양을 만족하고 있는지를 판단하는 기능 검증의 문제와 밀접하게 관련하고 있습니다.

구조 패러다임의 한 가지 장점은 테스트 생성은 기하급수적으로 증가하는 기능 상태 및 상태 천이를 처리할 필요 없이 제한된 수의 비교적 단순한 회로 소자를 테스트하는 데 집중할 수 있다는 것입니다.한 번에 하나의 논리 게이트를 테스트하는 작업은 간단해 보이지만 극복해야 할 장애물이 있습니다.오늘날의 매우 복잡한 설계에서는 대부분의 게이트가 깊이 내장되어 있는 반면 테스트 장비는 1차 입력/출력(I/O) 및/또는 일부 물리적 테스트 포인트에만 연결됩니다.따라서 내장 게이트는 논리 층을 개입시켜 조작해야 합니다.개입 로직이 상태 요소를 포함하고 있는 경우, 기하급수적으로 폭발하는 상태 공간과 상태 전이 시퀀싱 문제는 테스트 생성에 해결할 수 없는 문제를 일으킨다.테스트 생성을 단순화하기 위해 DFT는 일부 내부 회로 소자에서 발생하는 상황을 제어하거나 관찰할 때 복잡한 상태 전이 시퀀스의 필요성을 배제함으로써 접근성 문제에 대처합니다.회로 설계/실장 중에 이루어진 DFT 선택에 따라, 복잡한 논리 회로에 대한 구조 테스트의 생성은 다소 자동화되거나 자동화할[1] 수 있습니다[1].따라서 DFT 방법론의 한 가지 핵심 목표는 설계자가 DFT의 양과 유형과 시험 생성 과제의 비용/편익(시간, 노력, 품질) 사이에서 균형을 맞출 수 있도록 하는 것이다.

또 다른 이점은 향후 문제가 발생할 경우에 대비하여 회로를 진단하는 것입니다.이는 사용 중 장애가 발생했을 때 장치를 테스트할 수 있도록 설계에 일부 기능 또는 조항을 추가하는 것과 같습니다.

기대하는

업계의 과제 중 하나는 칩 테크놀로지(I/O 카운트/크기/배치/스페이스, I/O 속도, 내부 회로 수/속도/전원, 열제어 등)의 급속한 진보를 계속하는 것입니다.따라서 최신 DFT 기법은 차세대 칩과 어셈블리를 기존 테스트 장비에서 테스트하거나 새로운 테스트 장비의 요건/비용을 절감할 수 있는 옵션을 제공해야 합니다.그 결과, 테스트 대상 제품의 비용 목표에 따라 지정된 범위 내에서 테스트 적용 시간을 유지하기 위해 압축 통합과 같은 DFT 기법이 지속적으로 업데이트되고 있습니다.

테스트 주도의 개발

TDD(Test-Driven Development)는 핵심 기능을 쓰기 전에 테스트를 작성하는 프로세스입니다.소프트웨어 개발자는 코드 작성을 위해 TDD 방법론을 사용하는 경향이 있습니다.따라서 코드 작성은 보다 논리적이고 모듈러 방식으로 진행되기 때문에 코드 테스트를 보다 쉽게 할 수 있습니다.

즉, TDD는 다음의 순서로 나눌 수 있습니다.

  1. 프로젝트를 기능 모듈 또는 "유닛"으로 분할합니다.
  2. 각 유닛에 대한 인터페이스를 생각하고 있습니다.
  3. 이러한 유닛의 바람직한 동작과 에러 처리 방법을 결정합니다.
  4. 이 동작을 체크하는 쓰기 테스트입니다.
  5. 마지막으로 이 동작을 구현하고 테스트를 통과하기 위한 소프트웨어 구현.[2]

DFT는 궁극적으로 TDD 방법론을 [citation needed]따르는 부산물입니다.

진단

특히 첨단 반도체 기술의 경우 제조된 웨이퍼마다 일부 칩에 기능하지 않는 결함이 있을 것으로 예상된다.테스트의 주요 목적은 기능하지 않는 칩을 찾아 완전히 기능하지 않는 칩에서 테스트 대상 칩에서 캡처한 하나 이상의 반응이 예상된 반응과 다르다는 것을 의미합니다.따라서 테스트에 실패한 칩의 비율은 해당 칩 유형의 예상 기능 수율과 밀접하게 관련되어 있어야 합니다.그러나 실제로 테스트 플로어에 처음 도착하는 새로운 칩 타입의 칩이 모두 고장나는 것은 드문 일이 아니다(이른바 제로 이율 상황).이 경우 칩은 제로 이율 상황의 원인을 식별하는 디버깅 프로세스를 거쳐야 합니다.다른 경우에는 검정 이탈(검정 실패 비율)이 예상보다 높거나 허용 가능한 수준 또는 갑자기 변동할 수 있습니다.다시, 칩은 과도한 테스트 이탈의 원인을 파악하기 위해 분석 과정을 거쳐야 한다.

어느 경우든 테스트 중에 칩이 고장나는 방법에는 근본적인 문제의 본질에 대한 중요한 정보가 숨겨져 있을 수 있습니다.분석을 용이하게 하기 위해 단순한 통과/실패 이상의 추가 실패 정보가 실패 로그에 수집됩니다.불합격 로그에는 일반적으로 언제(예를 들어, 시험기 사이클), 어디서(예를 들어, 어떤 시험기 채널에서), 어떻게 시험이 실패했는지(예를 들어, 로직 값)에 대한 정보가 포함됩니다.Diagnostics는 문제가 발생했을 가능성이 높은 칩 내부의 논리/물리적인 위치에서 실패 로그를 도출하려고 합니다.볼륨 진단이라고 불리는 진단 프로세스를 통해 다수의 장애를 실행함으로써 시스템 장애를 식별할 수 있습니다.

경우에 따라서는(예: 프린트 회로 기판, MCM(멀티 칩 모듈), 내장 메모리 또는 독립형 메모리) 테스트 대상 고장 회로를 수리할 수 있습니다.이를 위해 진단에서는 장애가 발생한 장치를 신속하게 찾아 고장난 장치를 수리/교체하기 위한 워크오더를 작성해야 합니다.

DFT 접근방식은 진단에 어느 정도 적합합니다.DFT의 관련 목표는 지능형 고장 분석(FA) 샘플 선택이 가능하고 진단과 FA의 비용, 정확도, 속도 및 throughput을 개선할 수 있는 범위 내에서 고장 데이터 수집과 진단을 용이하게/간소화하는 것이다.

스캔 설계

칩 입력에서 테스트 대상 내부 회로(CUT)로 테스트 데이터를 전달하고 출력을 관찰하는 가장 일반적인 방법은 스캔 설계라고 합니다.스캔 설계에서 설계의 레지스터(플립 플랍 또는 래치)는 칩의 내부 노드에 액세스하기 위해 사용되는 하나 이상의 스캔 체인으로 접속된다.테스트 패턴은 스캔 체인을 통해 시프트되고 기능 클럭 신호는 "캡처 사이클" 중에 펄스되어 회로를 테스트한 후 칩 출력 핀으로 시프트되어 예상된 "좋은 기계" 결과와 비교됩니다.

스캔 기술을 쉽게 적용하면 긴 테스터 시간 및 메모리 요구 사항과 함께 큰 벡터 세트가 발생할 수 있습니다.테스트 압축 기술은 칩 상의 스캔 입력을 압축 해제하고 테스트 출력을 압축함으로써 이 문제를 해결합니다.일반적으로 특정 테스트 벡터는 스캔 체인 비트의 작은 부분만 설정 및/또는 검사하면 되므로 큰 이득을 얻을 수 있습니다.

스캔 설계의 출력은 테스트 장비에 의해 실행되는 직렬 벡터 형식(SVF)과 같은 형식으로 제공될 수 있습니다.

DFT 기능을 사용한 디버깅

스캔 체인은, 「실행/실행」테스트의 제조에 편리할 뿐만 아니라, 칩 설계의 「디버깅」에도 사용할 수 있습니다.이 맥락에서 칩은 일반적인 "기능 모드"로 동작합니다(예를 들어 컴퓨터나 휴대전화 칩이 어셈블리 언어 명령을 실행할 수 있습니다).언제든지 칩 클럭을 정지하고 칩을 "테스트 모드"로 재구성할 수 있습니다.이 시점에서 스캔 체인을 사용하여 전체 내부 상태를 덤프아웃하거나 원하는 값으로 설정할 수 있습니다.스캔을 사용하여 디버깅을 지원하는 또 다른 방법은 모든 메모리 요소에 대해 초기 상태에서 스캔한 후 기능 모드로 돌아가 시스템 디버깅을 수행하는 것입니다.장점은 많은 클럭 사이클을 거치지 않고 시스템을 기존 상태로 만들 수 있다는 것입니다.클럭 제어 회로와 함께 스캔 체인을 사용하는 것은 "디버깅을 위한 설계" 또는 "디버깅 가능성을 위한 설계"라고 불리는 논리 설계의 관련 하위 분야입니다.[3]

「 」를 참조해 주세요.

레퍼런스

  • IEEE 규격 1149.1(JTAG) 테스트 가능성 프라이머 JTAG 및 경계 스캔을 중심으로 한 테스트용 설계에 관한 기술 프레젠테이션
  • VLSI 테스트 원칙과 아키텍처, L.T.의왕, C.W. Wu, X.Q.원, 2006년 2장엘세비어
  • Lavagno, Martin 및 Scheffer의 집적회로를 위한 전자 설계 자동화 핸드북 ISBN0-8493-3096-3 전자설계 자동화 분야 조사.이 요약은 (허가를 받아) 베른트 코에네만(Bernd Koenemann)에 의해 Vol I, 21장 "테스트를 위한 설계"에서 파생되었다.
  1. ^ Ben-Gal I., Herer Y. and Raz T. (2003). "Self-correcting inspection procedure under inspection errors" (PDF). IIE Transactions on Quality and Reliability, 34(6), pp. 529-540.
  2. ^ Lynch, Stephen (28 March 2022). "What is Test Driven Development? An Introduction for Embedded Systems". Archived from the original on 14 July 2022. Retrieved 14 July 2022.
  3. ^ 2007년 6월 21일 EDN, Ron Wilson의 "디버깅을 위한 설계: [permanent dead link]

외부 링크