제1장 atpg & fault simulation

40
제 1 장 ATPG & Fault Simulation - 1 - 제1장 ATPG & Fault Simulation 1.1 실험 목적 디지털 회로의 테스트 패턴 생성을 위한 ATPG (Automatic Test Pattern Generation) 알고리 듬을 이해하고 TetraMax tool의 구성과 사용방법을 알아본다. 그리고 TetraMax tool을 이용하여 ATPG와 fault simulation을 수행한다. 1.2 이론 디지털 회로의 테스트의 문제는 결국 테스트 패턴을 어떻게 효율적으로 생성하겠는가 하는 문제와 직결된다. 자동 테스트 패턴 생성 (ATPG: automatic test pattern generation)은 주어진 설계 회로에 대하여 고장 모델을 가정하여 패턴 생성을 자동화시키는 것이다. 디지털 회로에서 고장을 검출하기 위한 테스트 패턴을 생성하는 방법은 크게 세 가지로 구분된다. 1) Manual test pattern generation 설계 회로의 동작 검증을 위하여 논리 시뮬레이션에서 사용한 기능 테스트 패턴을 변형시켜 고장 검출을 위한 테스트 패턴으로 사용하는 것으로 일반적으로 높은 고장 검출률(fault coverage)을 얻기는 어려우나 회로의 동작 속도로 테스트를 실시할 경우 고착 고장 외에도 시간 지연 고장 등을 검출할 수 있는 장점이 있다. 2) Random test pattern generation 고장 모델이나 회로의 구조에 비교적 무관하게 소프트웨어 또는 하드웨어적인 방법으로 임의의 테스트 패턴을 생성하는 것으로 패턴 생성이 용이하고 내장형 자체 테스트 등의 방법에 적용될 수 있다. 그러나 회로의 구조에 따라 일관성 있는 높은 고장 검출률(fault coverage)을 보장하기 어려운 단점이 있다. 3) Algorithmic test pattern generation 회로도와 사용된 소자의 동작 특성을 이용하여 소프트웨어 알고리듬을 사용하여 테스트 패턴을 생성하는 것으로 주어진 고장 모델에 대하여 비교적 높은 검출율을 얻을 수 있다. 또한, 임의의 테스트 패턴 생성과는 달리 결정적(Deterministic) 테스트 패턴 생성 방식이라 부르기도 한다.

Upload: others

Post on 09-Apr-2022

53 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 1 -

제1장 ATPG & Fault Simulation

1.1 실험 목

디지털 회로의 테스트 패턴 생성을 한 ATPG (Automatic Test Pattern Generation) 알고리

듬을 이해하고 TetraMax tool의 구성과 사용방법을 알아본다. 그리고 TetraMax tool을 이용하여

ATPG와 fault simulation을 수행한다.

1.2 이론

디지털 회로의 테스트의 문제는 결국 테스트 패턴을 어떻게 효율 으로 생성하겠는가 하는

문제와 직결된다. 자동 테스트 패턴 생성 (ATPG: automatic test pattern generation)은 주어진

설계 회로에 하여 고장 모델을 가정하여 패턴 생성을 자동화시키는 것이다. 디지털 회로에서

고장을 검출하기 한 테스트 패턴을 생성하는 방법은 크게 세 가지로 구분된다.

1) Manual test pattern generation

설계 회로의 동작 검증을 하여 논리 시뮬 이션에서 사용한 기능 테스트 패턴을 변형시켜 고장

검출을 한 테스트 패턴으로 사용하는 것으로 일반 으로 높은 고장 검출률(fault coverage)을 얻기는

어려우나 회로의 동작 속도로 테스트를 실시할 경우 고착 고장 외에도 시간 지연 고장 등을 검출할

수 있는 장 이 있다.

2) Random test pattern generation

고장 모델이나 회로의 구조에 비교 무 하게 소 트웨어 는 하드웨어 인 방법으로 임의의

테스트 패턴을 생성하는 것으로 패턴 생성이 용이하고 내장형 자체 테스트 등의 방법에 용될 수

있다. 그러나 회로의 구조에 따라 일 성 있는 높은 고장 검출률(fault coverage)을 보장하기 어려운

단 이 있다.

3) Algorithmic test pattern generation

회로도와 사용된 소자의 동작 특성을 이용하여 소 트웨어 알고리듬을 사용하여 테스트 패턴을

생성하는 것으로 주어진 고장 모델에 하여 비교 높은 검출율을 얻을 수 있다. 한, 임의의 테스트

패턴 생성과는 달리 결정 (Deterministic) 테스트 패턴 생성 방식이라 부르기도 한다.

Page 2: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 2 -

여기에서는 회로의 고장을 검출하기 한 테스트 패턴 생성 방법 에서 알고리듬에 의한 테스트

패턴 생성에 하여 설명한다. 테스트 패턴 생성 방법은 회로의 형태 고장 모델 등에 의해 여러

가지로 분류될 수 있으므로 여기에서는 표 인 고장 모델인 고착 고장 모델 을 상으로 하여

일반 인 테스트 생성 알고리듬의 개념을 소개하기로 한다.

테스트 생성 알고리듬의 설계는 테스트하려는 회로의 설계 형태에 따라 다양한 구조를 갖게 된다.

를 들어, 메모리 는 PLA와 같은 정형 구조를 갖는 회로에서의 테스트 생성 기법과 ALU와

같은 임의 구조의 회로 형태(random logic)에서의 테스트 생성 기법에는 많은 차이가 있을 수 있다.

여기에서는 임의 구조의 회로에 한 일반 인 테스트 패턴 생성 기법에 하여 기술하기로 하며

메모리와 같은 정형 구조의 회로에 한 테스트 패턴 생성 문제는 다루지 않는다.

한, 회로 형태는 combinational circuit과 sequential circuit으로 구분되는데, combinational circuit에

서는 하나의 패턴으로 고착 고장을 검출할 수 있는 반면에 sequential circuit에서는 고장 효과를

feedback loop 는 립 롭을 통과시켜야 할 경우가 발생하므로 여러 개의 테스트 패턴을 연속 으로

인가하여야 하는 경우가 많다. 그러나 combinational circuit에서 용되는 알고리듬을 sequential

circuit에서의 테스트 패턴 생성에도 부분 용할 수 있으므로 우선 combinational circuit에서의

테스트 패턴 생성 기법을 설명한다. 다시 말하면 sequential circuit의 테스트 생성 문제는 매우 복잡하고

시간이 많이 걸리며 한 fault coverage가 매우 낮을 수 있기 때문에 최근의 동향은 스캔설계 기법과

같은 테스트를 고려한 설계를 하여 테스트 모드에서는 sequential circuit를 combinational circuit으로

변환시켜 combinational circuit용 테스트 생성 기법을 용한다.

(1) Combinational circuit의 테스트 생성

가. 기본 개념

Combinational circuit에서의 테스트 생성 문제는 최근 활발한 연구 개발로 비교 높은 fault

coverage를 얻을 수 있는 테스트 패턴 생성이 가능하다. 테스트 생성 방법으로는 크게 boolean

difference를 사용한 방식과 회로의 구조를 하나의 탐색 공간으로 하여 연속 인 탐색 과정을

필요로 하는 경로 추 방식이 있다. 재 실용 으로 사용되는 방식은 경로 추 방식이며 이

방식은 일반 으로 탐색 공간을 어떠한 방식으로 탐색하는가에 따라 효율성이 결정되게 된다.

테스트를 생성하려면 탐색 과정에서 설정된 목표에 한 선택 그에 따른 결정 값의 증명 과정을

고장 효과 유발 고장 효과 과정이 모두 만족될 때까지 반복하여 필요한 주입력단 신호의

논리값을 결정하여야 한다. 여기에서는 경로 추 방식에 의한 표 인 combinational circuit용

테스트 생성 알고리듬인 D-알고리듬, PODEM 알고리듬, FAN 알고리듬에 하여 설명한다. 테스트

생성은 고장 유발 단계와 고장 향 단계가 필요하며 각 단계를 동시에 만족시키기 한

주입력단 신호의 논리값을 결정하게 된다.

Page 3: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 3 -

1) 고장 향 유발 단계 (fault excitation)

고장 향 유발 단계에서는 고장이 존재하는 신호선에 고장이 있을 경우와 없을 경우에 한

차이를 발생시켜 고장의 향이 유발되도록 주입력단의 논리값을 결정하는 과정이다. 를 들어

그림 1-1에서 게이트 G의 출력 신호선에 s-a-0 고장이 존재한다고 가정하자. 고장 유발 과정은

고장이 없을 때는 논리값 1, 없을 때는 논리값 0이 발생하도록 주입력단 신호에 논리값을 결정하는

것이다. 따라서 G의 출력 신호에 논리값 1을 배정하는 것을 고장 향 유발 목표 (objective)로

설정한다. 즉, 고장 향 유발 목표는 신호선과 그에 한 논리값으로 구성되며 그림 1-1의 경우에는

(G의 출력 신호, 논리값 1)이 된다. 그 다음, 목표를 만족시키기 한 주입력 신호의 논리값을

정하여 주어야 하며 이러한 과정을 논리값 정당화 과정 (line justification)이라고 한다. 그 결과,

주입력 B와 C에 각각 논리값 1을 배정하게 된다. 이러한 주입력값에 의하여 고장 치에는 고장

향 (무고장 논리값 1 / 고장 논리값 0 : good 1/ faulty 0)이 발생하게 된다.

A

B C

D

G

H

I

K M s-a-0

그림 1-1. 고장 향 유발 고장 향 과정의

2) 고장 향 단계 (fault propagation)

일단 고장 향이 유발되면 그 향을 회로의 외부에서 찰할 수 있도록 하기 하여 고장

향 과정이 필요하다. 그림 1-1에서 게이트 G의 출력 신호의 고장 반응을 회로의 주출력단

M 는 N으로 시키기 하여 G에서 M 는 N까지의 경로 어도 한 개 이상의 경로를

통하여 고장 향 (good 1/faulty 0)을 주출력 단까지 시켜야 한다. 가장 단순한 방법으로는

단일 고장 경로 활성화 방법 (single path sensitization)으로 고장 치에서부터 주출력단까지의

여러 경로 에서 한 번에 하나의 경로를 선택하여 고장 향을 주출력단으로 시키는 것이다.

를 들어, 그림 1-1에서 G-I-J-N을 고장 경로로 선택할 경우를 고려하자. 고장 향을 주출력단까지

하기 하여는, 우선, 논리 소자 I의 입력 신호 에서 고장 경로 상에 있지 않는 입력

C와 D (경로외 입력이라고 함)가 출력 무 향 논리값 (noncontrolling value)인 논리값 1을 가져야

하며 논리 소자 J에서는 입력 신호 E가 논리값 1을 가져야 한다. 이 게 고장 경로 상의

논리 소자에 한 입력값 결정 과정을 고장 경로의 활성화 (path sensitization)이라고 한다. 즉,

고장 경로의 활성화를 하여는 고장 경로 상에 있는 모든 게이트의 입력 신호 에서 경로

Page 4: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 4 -

상에 있지 않은 입력 신호의 논리값을 고장 향이 될 수 있도록 출력 무 향 논리값으로

배정하는 목표를 설정하고 동시에 논리값 정당화 과정을 통하여 그 목표를 달성하기 한 주입력

신호의 논리값을 결정하여야 한다.

고장 경로의 활성화에는 단일 고장 경로의 활성화 (single path sensitization)와 다 고장 경로의

활성화 (multiple path sensitization)가 있다. 를 들어 주입력 신호 (A,B,C,D,E) = (0,1,1,0,1)은

경로 G-I-J-N을 통하여 고장 향을 주출력단 N으로 시키는 단일 고장 경로의 활성화를

일으키게 된다. 한편, 주입력 신호 (A,B,C,D,E) = (1,1,1,1,0)은 경로 G, H, K, M과 G, I, K, M으로

동시에 고장 향을 주출력단 N으로 시키는 다 고장 경로의 활성화를 일으키게 된다. 경우에

따라서는 고장 향이 반드시 다 고장 경로의 활성화로만 주출력단에 되기도 한다.

결국, 테스트 생성 과정은 고장 향 유발 고장 향 를 동시에 만족시키기 한 주입력단

신호의 논리값을 결정하는 것인데, 두 과정을 동시에 만족하는 주입력단 신호의 논리값이 항상

존재하는 것은 아니다. 를 들어, 그림 1-1에서 G의 출력단에 s-a-1 고장을 가정하고 테스트를

구하려고 할 때, 고장 향 유발을 하여 B=1, C=0을 인가하 다고 하자. 이때 단일 고장

경로인 G-I-J-N으로 고장을 시키려고 한다면 C=0으로 인하여 논리 소자 I의 출력값이 1로

고정되어 고장이 될 수 없음을 알 수 있다. 따라서, 재 결정된 논리값의 상태로는 고장 향을

G-I-J-N으로 시킬 수 없음을 알 수 있다. 이러한 경우를 상충의 발생 (conflict)이라고 하며

상충을 해결하기 하여는 다양한 선택이 있을 수 있다. 한가지 방법은 다른 고장 경로를

탐색하여 만약 다른 고장 경로가 존재하면 그 쪽으로 고장 향을 하려는 시도를 할 수도

있고, 다른 방법으로는 재 결정된 논리값을 취소하고 다른 값으로 다시 결정하여 다시 한번

G-I-J-N으로 고장을 시키려고 시도하는 방법이 있을 수 있다. 그러나, 어떠한 방법을 취하던지

일 성있는 체계 인 방법이 필요하며, 따라서 정확한 테스트 생성 알고리듬의 설계가 필요하게

된다.

S

A

B

C

D

E

F

H

stuck-at-0

그림 1-2. redundant fault

탐색 과정 의 결정은 회로 내의 특정 소자의 입출력단에 특정 논리값을 배정하려는 시도이며

이러한 결정은 항상 정당화 과정이 필요한데 경우에 따라서는 결정 사항을 만족시킬 수 없는

Page 5: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 5 -

경우가 발생할 수 있다. 그림 1-2에서 신호선 F에 s-a-0 고장이 있다고 가정하면, 우선 고장을

유발시키기 하여 F에 논리값 1을 배정하고 그에 한 정당화 과정으로 주입력 신호 A, B를

각각 논리값 1로 결정하게 된다. 그 다음 고장 향을 주출력 H에 시키려면 신호선 D와 E를

동시에 논리값 0으로 결정하여야만 한다. 이때 신호선 D에 결정된 논리값 0을 입증하려면 주입력

신호 D에 논리값 0을 가하여야 한다. 그러나 D에 논리값 0을 배정하기 하여는 신호선 S를

논리값 1로 정하여 주어야 하므로 그 결과 신호선 E를 1로 만들게 되어 신호선 F에 있는 고장

향이 주출력단 H로 되려는 것을 막게 된다. 이러한 상을 상충 (conflict)이 발생하 다고

하며 그에 한 해결을 하여는 가장 최근에 내린 결정을 취소하여야 한다. 즉, 신호선 D에

논리값 0을 배정하려는 결정을 취소하여야 하므로 결국 신호선 D에 논리값 1을 배정하려는 새로운

결정을 하게 된다. 그러나 이 결정 역시 고장 향의 를 쇄하게 되므로 잘못된 결정임을

알 수 있다. 따라서, 다시 그 이 의 결정에 한 취소를 하여야 한다. 이를 하여 재까지 내린

결정을 2진 트리 구조의 결정 트리에 장한다. 결정 트리는 스택 (stack)에서와 같이 LIFO (Last

In First Out) 방식으로 새로운 결정을 삽입 (push)하거나 는 상충이 발생하 을 때 backtrack을

하기 한 제거 (pop)에 사용된다. 이 과정을 도식 으로 나타내면 그림 1-3과 같다.

F0 1

A1 0

B1 0

D0 1

backtrack

backtrack

backtrack

backtrack

그림 1-3. backtrack 과정

결국 모든 결정을 취소하게 되며 신호선 F의 s-a-0 고장에 한 테스트 패턴 생성이 불가능을

함을 알 수 있게 된다. 이러한 고장을 redundant fault이라고 하며 회로의 동작에 향을 미치지

않는 고장임을 알 수 있다. 따라서 그림 1-2에서 신호선 F를 체 회로에서 삭제하더라도 회로

동작에 지장이 없게 된다.

테스트 생성 알고리듬은 탐색 과정이 테스트 패턴을 생성하거나 고장이 무해 고장임을 증명할

수 있을 때까지 지속되므로 과도한 계산 시간이 걸릴 수 있다. 따라서 컴퓨터에서 테스트 생성을

할 때 일정한 시간이 지나거나 backtrack limit를 제한하여 그 범 안에서 패턴 생성을 시도하고

만약 테스트 패턴 생성 작업이 완료되지 않으면 패턴 생성을 단하게 된다. 그러한 고장을 aborted

Page 6: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 6 -

fault라고 부르게 되며 이 경우에는 그 고장이 무해 고장인지 는 테스트가 가능한 고장인지는

단 불능 상태가 된다. combinational circuit의 경우 주입력의 수가 N이면 각 입력단이 0 는

1의 조합으로 탐색 공간의 크기는 2N 이상이 되므로 N의 값이 크면 공간을 모두 탐색하기는 사실상

불가능한 경우가 발생할 수 있다. 이러한 이유로 테스트 생성 알고리듬의 복잡도는 NP-complete임이

증명되어 있다.

이상으로 설명한 테스트 생성의 기본 개념을 정리하면 테스트 생성 알고리듬의 구조가 그림

1-4와 같이 설계될 수 있음을 알 수 있으며 각 세부 부분에 한 설명은 combinational circuit의

표 인 알고리듬인 D-알고리듬, PODEM 알고리듬 FAN 알고리듬의 경우로 나 어 각각의

특성에 하여 설명하기로 한다.

이밖에도 boolean difference에 의한 테스트 생성은 회로의 스 칭 함수를 계산하여 고장 향

유발 함수와 고장 향 함수를 스 칭 함수로 나타내며 테스트 패턴은 고장 향 유발 함수와

고장 향 함수의 AND 스 칭 연산으로 결정하게 된다. boolean difference에 의한 테스트

패턴의 생성은 목표 고장을 검출하는 모든 테스트 패턴을 구할 수 있는 장 이 있는 반면에 회로의

크기가 커짐에 따라 스 칭 함수를 표 하기 한 효율 인 방법의 부재로 인하여 기억 용량의

크기가 기하 수 으로 증가하는 단 이 있어 실용 이지 못하다. 최근 스 칭 함수를 효율 으로

표 하는 binary decision diagram을 이용한 테스트 패턴 생성 방식이 발표되고 있으나 아직까지

경로 추 방식에 비하여 실용 이지 못한 단 이 있다.

Step 1: 초기화

1) 회로내의 모든 논리 소자의 입출력 신호값을 X로 초기화

2) 목표고장을 가정

Step 2: 목표 설정

초기목표는 고장 영향 유발 목표 또는 고장 영향 전파 목표의 설정

Condition 2.1: 목표의 설정이 가능하면 목표에 대한 논리값 결정 과정 수행

Condition 2.2: 상충의 발생으로 목표설정이 불가능하면 시도철회 과정 수행

Step 3: 테스트 생성 과정 진행 여부 결정

Condition 3.1: 고장 영향이 유발이 되고 동시에 고장 영향이 주출력단에

전파되었으면 테스트 생성 완료

Condition 3.2: 테스트 생성 중단 조건이 만족되면 테스트 생성 종료

Condition 3.3: 조건 3.1과 3.2가 만족되지 않으면, Step 2로 이동

그림 1-4. 테스트 생성 알고리듬의 구조

Page 7: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 7 -

나. D-알고리듬

D-알고리듬은 1966년 Roth에 의하여 발표되었으며 테스트 패턴 생성 문제에 한 첫 번째

알고리듬이다. 여기서 알고리듬의 의미는 redundant fault가 아닌 고장에 하여는 항상 테스트

패턴의 생성을 보장한다는 뜻이다. D-알고리듬에 한 자세한 설명을 하기 에 우선 몇 가지

요한 용어와 개념에 한 정의가 되어야 한다.

특이 지배 (singular cover) : 논리 소자의 특이 지배란 기본 으로 논리 진리표의 축약 형태이다.

그림 1-5는 2입력 NOR 소자의 특이 지배를 보여주는데 가로 칸은 특이 큐 (singular cube)라고

부른다.

ab c

a b c

0 0 1

0 1 0

1 0 0

a b c

0 0 1

X 1 0

1 X 0

truth table singular cube

그림 1-5. NOR 논리 소자의 특이 지배

D-큐 (propagation D-cube) : D-큐 는 redundant fault와 고장 회로의 입출력

계를 표 하는데 사용한다. 심벌 D는 고장 향 (fault free 상태 1 / fault 상태 0)을 표 하며

심벌 D'는 고장 향 (fault free 상태 0 / fault 상태 1)을 표 한다. D-큐 는 입력단의 고장 향을

출력단으로 시키는 큐 를 나타내며 2 입력 NOR 논리 소자의 D-큐 는 다음과 같다.

a b c

1 0 D D‘

2 0 D' D

3 D 0 D‘

4 D D D‘

5 D‘ 0 D

6 D‘ D D

이때 4번째와 6번째의 D-큐 는 다 고장 를 의미하게 됨을 주시할 필요가 있다.

이러한 D-큐 는 논리 소자의 특이 지배 계에서 유도할 수 있다.

기본 D-큐 (primitive D-cube of a fault) : 고장의 기본 D-큐 는 주어진 고장의 존재를

명시하기 하여 사용한다. 즉, 논리 소자의 입력단 는 출력단에 치한 고장을 그 논리 소자의

출력단까지 시키기 한 최소한의 입력 신호값을 나타낸다. 를 들어, 2-입력 NOR 소자의

출력단에 고착 고장이 있을 때, 기본 D-큐 는 다음과 같다.

기본 D-큐 는 하나 이상이 존재할 수 있으며 논리값 정당화 과정에서 각각의 기본 D-큐 를

Page 8: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 8 -

시험해야 할 경우도 있다. 3-입력 NAND 소자의 입출력단에 치한 고장에 한 기본 D-큐 는

그림 1-6과 같다.

ab c

a b c

0 0 D

a b c

1 X D'X 1 D'

fault site

stuck-at-0 stuck-at-1

abc

d

a b c d 고장

0 X X D d stuck-at-0

X 0 X D d stuck-at-0

X X 0 D d stuck-at-0

1 1 1 D' d stuck-at-1

0 1 1 D a stuck-at-1

1 0 1 D b stuck-at-1

1 1 0 D c stuck-at-1

그림 1-6. 3-입력 NAND 소자의 기본 D-큐

D-교차 (D intersection) : 마지막으로 소개되는 D-교차는 고장 경로의 활성화를 하여 사용된

다. 즉, 고장의 기본 D-큐 와 고장 경로 상의 D-큐 와의 교집합 동작을 수행하게 되며,

이 과정은 고장 향이 최소한 하나의 주출력단에 될 때까지 계속한다. 를 들어, 그림 1-7의

회로에서 a s-a-0 고장을 검출하고자 할 때, a s-a-0 고장의 기본 D-큐 는 (a, b, d) = (0, 1,

D')이다. 이 고장 향을 주출력단 z까지 하기 하여는 a s-a-0 고장의 기본 D-큐 를 G2의

D-큐 와 교차시켜 상충이 발생하지 않도록 하여야 한다. 따라서, G2의 D-큐 의

하나인 (c, d, z) = (D', 0, D)와 교차시켜 체 으로 (a, b, c, d, z) = (0, 1, 0, D', D)로 고장이

주출력단 z에서 검출되게 된다.

ab d

c z

G1

G2stuck-at-0

그림 1-7. b s-a-0 고장 회로

이상으로 D-알고리듬에 한 개략 인 소개를 하 으며 D-알고리듬의 구조는 그림 1-8과 같다.

테스트 생성 과정에서 상충이 없을 수는 없다. 잘못된 선택 는 고장 자체가 무해 고장일 경우에는

선정된 목표의 결정과 입증 과정에서 상충이 발생할 수 있다. 그러한 경우에는 에서 언 한바와

같이 결정 트리 (decision tree)에 한 시도 철회 과정 (backtrack)을 하게 된다.

Page 9: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 9 -

D-알고리듬은 최 의 완 한 테스트 생성 알고리듬으로 리 사용되어 왔으나 탐색 과정이 지나치

게 복잡하고 비효율 인 면이 많다. D-알고리듬은 설정된 목표에 하여 회로 내의 모든 내부

게이트의 출력 신호선을 탐색 공간으로 하여 논리값을 배정하고 그에 한 방 향분석 (forward

implication) 후방 향 분석 (backward implication)을 수행한다. 방 향분석은 시뮬 이션과

같이 배정된 신호에 한 회로 동작 반응을 결정하는 것이며 후방 향분석은 논리값 정당화

(line justification)와 같은 의미로 목표의 달성을 하여 주입력단을 향하여 새로운 결정을 내리고

그에 따른 입증을 하는 것이다.

Page 10: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 10 -

Step 1: 회로의 초기화 및 고장 유발 목표 설정

1) 회로내의 모든 논리 소자의 입출력 신호값을 X로 초기화

2) 목표 고장을 가정하고 하나의 고장의 기본 D-큐브를 설정한다.

즉, 고장 위치에 고장 심벌인 D 또는 D'를 배정한다.

Step 2: 고장 영향 전파 목표 설정 (D-drive 단계)

1) 고장 영향이 주출력단에 전파될 때까지 고장 위치에서부터 최소한

하나의 주출력단까지의 경로를 활성화시킨다. 이 과정을 D-드라이브

라고 하며 D-교차 연산을 통하여 부분적으로 결정된 테스트 패턴인

테스트 큐브를 만든다.

2) D-드라이브 과정에서 출력단까지의 경로가 여러개 있는 경우에는

D-경계 (D-frontier)를 형성하게 된다. D-경계는 회로내의 논리

소자 중에서 입력단에 고장 영향이 전파되어 있고 그 출력단에는 아직

미지 논리값 X가 있는 논리 소자의 집합으로 D-드라이브 과정에서

하나의 소자를 선택하여 고장 경로로 삼는다.

3) 경로 활성화 과정에서 결정된 논리값에 대하여 영향 분석을

전방과 후방으로 수행 (forward and backward implication) 한다.

영향 분석은 결정된 논리값으로 인하여 회로내의 다른 소자의

논리값이 결정되는지를 확인하는 과정으로 이 과정에서 상충을

발견되면 D-경계에 속해있는 다른 소자를 선택하여 D-드라이브를

계속 진행시킨다. 만약, D-경계에 있는 모든 소자가 상충을 발생시키게

되면 현재까지의 결정이 잘못되었음을 의미하므로 가장 최근에 내린

결정을 결정 트리에서 시도철회를 한다.

Step 3: 논리값 정당화 과정 (line justification)

1) Step 2의 수행으로 회로내의 소자 중에서 출력단의 논리값은 확정값

(0, 1, D, D')을 갖고 있으나 입력단의 논리값으로 그 출력값이 입증되지

않은 소자가 존재하게 된다. 그 경우, 확정된 출력값을 정당화하는

과정이 필요하다.

2) 이 과정은 해당 논리 소자의 특이 큐브를 이용하여 수행하게 되며

출력단의 논리값은 확정값을 갖고 있으나 입력단의 논리값으로 그

출력값이 입증되지 않은 소자가 존재하지 않을 때까지 계속한다. 즉,

특이 큐브와 테스트 큐브와의 교집합 연산으로 새로운 테스트 큐브를

만드는 과정을 계속한다.

3) 이때에도 결정된 논리값에 대한 전방 및 후방의 영향 분석을 하고

상충이 발견되면 시도 철회 과정을 수행한다.

Step 4: 테스트 생성 과정 진행 여부 결정

조건 3.1: 고장 영향이 유발되고 동시에 고장 영향이 주출력단에 전파

되었으면 테스트 생성 완료한다.

조건 3.2: 테스트 생성 중단 조건이 만족되면 테스트 생성 종료

조건 3.3: 조건 3.1과 3.2가 만족되지 않으면, Step 2로 이동한다.

Page 11: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 11 -

그림 1-8. D-알고리듬의 구조

따라서 상충 을 발견하고 결정 트리에서 시도 철회를 할 때, 오류를 시정하기까지 많은 시간이

소모될 수 있다. 이 사실은 테스트 생성에 걸리는 시간이 테스트 생성이 용이한 (상충 발생이

은) 부분의 고장에 한 시간이 아니라 일부 극소수의 테스트 생성이 어려운 고장에 의하여

좌우된다는 실험 인 결과를 비추어 볼 때, 테스트 생성 알고리듬의 효율성은 결국 탐색 공간의

크기에 반비례함을 알 수 있게 된다.

특히, D-알고리듬의 단 은 하나의 결정을 내린 후 그에 한 충분한 정당화 과정을 끝내지

않은 채 다른 결정을 내리게 되어 상충의 발생 소지가 많아 결정 철회 횟수가 증가될 수 있어

비효율 이란 이다. 즉, D-드라이 과정에서 주출력단까지 고장 향을 시키는 과정에서

연속 인 결정 (decision)을 내리게 되는데, 그러한 결정들에 한 입증 과정이 주출력단까지 고장

향을 시킨 후에 비로소 시작하기 때문에 잘못된 결정을 간에 수정하기 어려운 단 이

있다. 한, D-드라이 의 고장 경로 활성화에서 모든 고장 경로에 모든 가능한 조합을 분리하여

수행하기 때문에 최악의 경우에는 테스트 생성시 많은 시간이 소요될 수 있다는 단 이 있다. 를

들어, 단 하나의 주출력을 갖는 combinational circuit에서 고장 치에서부터 주출력단까지의 경로의

수가 N이면 D-알고리듬에서는 2N 개의 경우의 수에 해당하는 단일 고장 경로와 다 고장

경로를 각각 D-드라이 하게 된다. 이와 같은 고장 경로 활성화 과정에서의 문제 을 해결하기

하여 다 논리값 시스템을 채용한 9치 논리값 D-알고리듬이 발표되었다

D-알고리듬이 실제로 정확한 알고리듬 (테스트가 존재하는 고착 고장의 경우, 시간이 충분히

주어지면 항상 테스트 생성이 가능)이라는 증명은 Roth의 논문에서 발표되었다.

다. PODEM 알고리듬

PODEM (Path-Oriented DEcision Making) 알고리듬은 1981년 Goel에 의하여 제안된 알고리듬으

로 D-알고리듬과 같이 (0, 1, X, D, D') 등의 5치 논리값 시스템을 사용하는 경로 추 방식이다.

PODEM 알고리듬은 특히 exclusive-or 논리 소자로 구성된 ECAT (error correction and translation)

형태의 논리 회로 테스트 생성에 효과 인 것으로 알려져 있으나 부분의 회로에 하여도 D-알고리

듬에 비하여 성능이 우수한 것으로 알려져 있다. PODEM 알고리듬은 D-알고리듬과 달리 다음과

같은 여러 가지 특징을 가지고 있다.

1) PODEM 알고리듬은 탐색 공간을 주입력 신호에 국한한다. 설정된 목표에 한 논리값 정당화를

시도할 때, 회로의 내부 신호에는 논리값을 배정하지 않고 소자의 극성을 이용하여 경로 추 을

주입력단까지 한 뒤 주입력에 비로소 논리값을 배정하게 된다. 따라서 PODEM 알고리듬에서는

방 향 분석 (forward implication)만을 수행하게 된다.

2) PODEM 알고리듬은 고장 경로의 활성화 과정에서 단일 경로와 다 경로에 한 구분이

Page 12: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 12 -

없이 비명시 인 공간 탐색 (implicit space enumeration) 기법을 수행하게 되므로 D-알고리듬에

비하여 경로 탐색 과정이 효과 이다.

3) 한번에 하나의 결정을 내리고 그에 따른 목표를 설정 후 정당화 과정을 거치게되며 여러

개의 결정을 동시에 내리지 않아 상충의 발생 소지가 다.

PODEM 알고리듬은 그림 1-9와 같은 기본 구조를 가지고 있다. 그림 1-9의 PODEM의 구조는

D-알고리듬과 달리 비교 간결한 편이다. 모든 결정은 주입력단에서만 하고 그에 한 정당화

작업은 주어진 목표에 하여 재까지 결정된 주입력단의 논리값이 상충을 발생시키는지 여부만

확인하면 된다. PODEM 알고리듬에서는 목표를 설정함에 있어 기 목표로 고장 치에 고장을

주입하려는 고장 향유발 목표 (fault excitation objective)와 이 목표가 달성된 후에 고장 향을

주출력단으로 시키려는 고장 향 목표 (fault propagation objective)로 나 고 있다. 그러나

고장의 향이 유발되지 않았을 때에는 고장 향 유발에 필요한 주입력단의 논리값을 결정하지

못하 을 때이므로 고장 치를 D-경계에 추가함으로써 무리 없이 두 가지 경우를 함께 처리할

수 있다.

Page 13: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 13 -

Step 1: 1) 회로내의 모든 논리 소자의 입출력 신호값을 X로 초기화

2) 목표 고장을 선택

Step 2: 고장 위치에 고장 유형에 따라 D 또는 D'를 배정하고 초기 목표로 정한다.

즉, 초기 목표 (initial objective)는 고장 효과 유발 목표가 되며 이 초기

목표는 D-경계에 삽입한다.

Step 3: 후방 추적 과정 (backtrace)

주입력단 (PI)에 도달할 때까지 후방 추적을 계속한다. 후방 추적

과정 중간에 있는 논리 소자에 대하여는 논리값을 결정하지 않고

주입력단에 도달하면 논리값을 결정한다.

Step 4: 결정된 논리값을 주입력 논리값 결정 트리 (decision tree)에 삽입한다.

또한, 새로이 결정된 주입력단의 논리값에 대한 전방 영향 분석

(forward implication)을 수행한다.

조건 4.1: 상충이 발견되면 PI_REMAKE를 통한 시도 철회를 하고 Step 4를

반복한다. 이때, 주입력 논리값 결정 트리가 비어 있으면 고장이 무해

고장임이 증명된다.

조건 4.2: 상충이 발생하지 않으면 Step 5로 이동한다.

Step 5: 설정된 목표가 달성되었는지를 확인한다.

조건 5.1: 목표가 달성되지 않았으면 Step 3로 이동한다.

조건 5.2: 목표가 달성되었으면 Step 6으로 진행시킨다.

Step 6: 고장 영향이 주출력단으로 전파되었는지 확인한다.

조건 6.1: 전파되었으면 테스트가 생성된 것이다.

조건 6.2: 전파되지 않았으면 D-경계에서 하나의 소자를 선택하여

새로운 목표로 설정한다 (이때 X-경로 검사를 실시한다).

그림 1-9. PODEM 알고리듬의 구조

Page 14: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 14 -

Make alternative assignment on associated primary input. Flag last node.

Start

A

Test possible?

(그림1-11)P1

P2(그림1-11)

No

Yes

Make initial assignment (1 or 0) to an unassigned primary input. Add unflagged node to decision tree.

With assignments made sofar on the primary inputs

B

Decision treeempty?

Last nodeflagged?

Exit-untestablefault

C

Set associatedprimary inputto X. Removelast node.

B

P3(그림1-12)

C

Implications of all assigned and unassigned primary inputs.

Isit a test ?

Exit-done

A

No

No

No

Yes

Yes

Yes

1

2

3

4

5

6

7 8

9

10

그림 1-10. PODEM 알고리듬 흐름도

Page 15: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 15 -

(그림1-10)

G.U.T.Output at

X ?

Inputstuck faulton G.U.T.?

P1

Set output of G.U.T. opposite to stuck fault direction.

P1

Disable selection of gate B at box 5 for determining present initial objective

Set output of gate B to 1(0) if B is an AND, NOR(NAND), OR) gate

Set G.U.T. output to 1(0) if G.U.T. is an AND, NOR (NAND,OR) gate

Set faulted input opposite to stuck fault direction

P4

Yes

Initialobjective

No

D

Find gate B with D or D' on inputs, X on output and closest to a primary output

Found sucha gate ?

X-path fromgate B to a primary

output?

No

No

Yes

No(그림1-10)

Test notpossiblewithpresentassignments

Yes

Initialobjective

D

7 8 9 10

(그림1-12)

Yes

Faultedinput at X?

No

Yes

Initialobjective

Initialobjective

1

2

3 4

5

6

그림 1-11. 초기 목표 설정 흐름도

Page 16: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 16 -

P4 (그림1-11)

Is objectivenet fed by a primary

input?

Found primary input. Initial assignment is the current objective level

P3

A

Yes

Currentobjective level

and type of gate drivingobject net?

No {fed by gate Q}

OR/NAND with current objective = 1AND/NOR with current objective = 0

OR/NAND with current objective = 0AND/NOR with current objective = 1

Next objective net is that input of Q which (a) is at X, (b) is the hardest to control (among inputs at X) primary inputs.

Next objective net is that input of Q which (a) is at X, (b) is the easiest to control (among inputs at X) from primary inputs.

Is Qa NAND/NOR

gate?

Next objective level is the same as the current objective level

Next objective level is the complement of the current objective level

ARepeat with current objectivereplaced newly determinednext objective

(그림1-10)

1

2

3

4 5

6

7 8

No Yes

그림 1-12. 후방 추 과정 흐름도

한 Step 4의 PI_REMAKE는 재의 주입력단에서 결정된 논리값으로는 목표의 달성에 상충 을

발생시킬 때, 최근에 결정 트리에 삽입된 순으로 그 결정을 철회하는 과정이다. 즉, 최근에 결정된

Page 17: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 17 -

주입력단의 논리값을 반 로 하여 방 향 분석 (forward implication)을 수행한다. 이때, 상충이

사라지면 결정 트리에 변경된 논리값을 기록하고 동시에 이 결정이 한 번 변경된 이 있음을

표기한다. 만약, 변경된 논리값에도 계속 상충 이 발생하면 결정 트리에서 그 결정을 제거하여

취소한 다음, 다시 가장 최근에 내린 결정에 하여 시도철회 과정을 반복한다.

그림 1-9에서 설명된 체 인 구조는 그림 1-11, 12, 13의 흐름도에서 보다 자세하게 설명되고

있다. 기 목표를 설정하는 방법(그림 1-9의 Step 2와 6)이 그림 1-12에서 보여주고 있는데, 여기서

목표란 목표 논리값과 목표 신호선을 의미한다. 목표 설정에서는 PODEM 알고리듬에서 제안된

X-경로 검사 방식이 사용되는데, 이 방법은 D-경계에 포함된 각 요소에서부터 회로의 주출력단까지의

경로가 미지 논리값으로 남아있는지 여부를 확인하는 것으로 이미 경로가 폐쇄된 방향으로 D-드라이

를 시도하는 것을 방지하기 한 선험 기법이다.

그림 1-11에서 목표 논리값은 논리값 0 는 1이고 목표 신호선은 그 목표 논리값을 필요로

하는 회로 상의 치이다. 그림 1-12는 기 목표를 달성하기 하여 후방 추 과정을 통한 주입력단에

서의 논리값 정당화 과정이 설명되어 있다. 후방 추 과정은 목표 신호선에서 주입력단을 향하여

신호 경로를 추 하는 것인데, 주입력단에 도달하게 되면 비로소 새로운 논리값이 결정되게 된다.

한 이러한 결정이 목표 달성에 상충을 발생시키지 않는지 확인하는 작업으로서 주출력단을 향하여

앞으로 향 분석 (forward implication)을 하게 된다.

그림 1-12에서 사용된 “hardest control" "easiest control"의 개념은 후방추 과정에서 출력

논리값을 정당화하기 하여 입력단을 추 할 때 여러 가지 입력 에서 하나를 선택하기 하여

사용되는 개념으로 주로 테스트 용이도 척도 (testability measure)로 쉽고 어려움을 측한다. 그러나,

이러한 척도가 항상 정확한 것은 아니기 때문에 신빙성이 높지 않으므로 임의로 선택하여도 체

후방 추 과정의 성능에는 큰 향을 미치지 않을 수 있다. 표 인 테스트 용이도 척도로는

SCOAP, CAMELOT등이 있다.

라. FAN 알고리듬

마지막으로 소개할 FAN 알고리듬은 1983년 Fujiwara에 의하여 제안되었다. FAN 알고리듬은

테스트 패턴 생성 문제가 주로 재결합 분기 (reconvergent fanout stem)의 존재에 의하여 어려워지는

것에 착안하여 분기 신호에 배정하는 논리값 선정 과정에서 효율 인 방법을 도입하 다. 한,

탐색 공간의 크기를 이기 하여 헤드라인 (headline) 개념을 도입하고 있는데, 헤드라인이란

그림 1-13(a)과 같이 그 치에서 주입력 단까지의 후방 추 향권 (backtrace cone of influence)의

내부에 분기 이 없는 일종의 트리 구조의 루트를 의미한다.

논리값 정당화 (line justification) 과정에서 주입력단에 논리값을 결정하지 않고 헤드라인에 논리값

을 결정하게 되면 헤드라인의 논리값은 고장 향 유발과 고장 향 과정을 모두 마친 후

결정할 수 있어 결과 으로 탐색 공간의 크기를 이는 효과가 있다. 그러나 실용 인 회로에서

Page 18: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 18 -

주입력단 신호가 아닌 회로 내부의 헤드라인은 별로 없어 헤드라인 개념의 도입에 의한 효과는

그다지 크지 않다. 참고로 헤드라인을 확장시킨 것으로 기 노드 (basis node)가 있다. 기

노드는 TOPS 알고리듬에서 제안된 것으로 그림 1-13(b)와 같이 기 노드에서 주입력단까지의

후방 추 향권 (backtrace cone of influence)의 내부에 분기 이 있더라도 기 노드에서 완

재결합 (total reconvergent)하게 되면 헤드라인과 같은 방식으로 테스트 생성에 이용할 수 있다.

Z

headline

Z

basis node

(a) headline (b) basis node

그림 1-13 헤드라인과 기 노드

FAN 알고리듬은 주로 PODEM 알고리듬에 기 한 방식이지만 부분 으로 D-알고리듬의 장 도

도입한 방법으로 회로 내부에서 방 후방의 향 분석 (forward and backward implication)을

수행하게 되어 상충 의 조기 발견이 가능하게 한다. 회로 내부에서 후방 향 분석의 결과로

여러 개의 일시 인 목표가 생기게 되는데 D-알고리듬에서와는 달리 하나의 목표를 달성하기

하여 만들어진 여러 개의 부분 목표가 모두 만족되어 해당 목표가 만족될 때까지 새로운 목표를

설정하지 않는다. FAN 알고리듬에서는 여러 개의 부분 목표를 효율 으로 동시에 만족시키기

하여 다 후방 추 방식을 도입하 다.

(2) TetraMax flow

TetraMax tool은 high-speed, high-capacity의 ATPG tool이다. TetraMax tool은 다양한 형태의

design과 design flow에 해서 은 수의 test vector을 사용하여 높은 fault coverage을 얻을 수

있는 테스트 팽성을 생성한다. TetraMax tool을 이용한 design flow를 수행하기 해서는 우선 register

transfer level(RTL)의 HDL netlist에 해서 Test-Ready compile을 수행하게 된다. 그리고 check_scan

command를 이용하여 test design rule에 한 checking을 수행한다. 실제로 compile된 netlist에 해서

scan을 삽입하는 동작은 insert_scan command로 수행하게 되는데 그 이 에 preview_scan command를

이용하여서 insert_scan command에 의해서 합성되는 scan architecture를 미리 살펴볼 수 있다. 사용자

는 자신이 원하는 scan architecture를 얻을 때까지 의 과정을 반복하고 난후에 insert_scan command를

실행하게 된다. 마지막으로 check_scan command를 이용하여 남아있는 DRC violation을 확인하고

test protocol을 불러들이게 된다. DRC violation이 없는 netlist가 만들어지면 ATPG를 수행할 비가

Page 19: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 19 -

끝나게 되고 write_test_protocol command를 사용하여서 STIL protocol file를 생성하고 TetraMax

tool이 이 STIL protocol file과 design netlist를 읽어들여서 ATPG를 수행하게 된다. 아래의 그림

1-14는 DFT compiler와 TetraMax tool을 이용하여 ATPG을 수행하는 기본 인 flow를 나타내고

있다.

Test-Ready Compilation(compile -scan)

Test DRC(check_scan)

Preview Scan Architecture(preview_scan)

Scan Insertion(insert_scan)

Test DRC(check_scan)

Scan DesignCompleted

write_test_protocol

HDLNetlist

VerilogLibrary

Compiled,Scanned

Nelist

TetraMaxATPG

STIL TestProtocol

File

MemoryModel

DFT Compiler

그림 1-14 DFT Compiler와 TetraMax를 이용한 Design Flow

그림 1-15는 TetraMax tool의 기본 인 ATPG design flow를 나타내고 있다. 이 flow는 다음의

과정으로 이루어진다.

1. 필요한 경우에는 TetraMax tool의 요구 사항을 만족하도록 Netlist를 수정한다.

2. Netlist를 읽어들인다.

3. Library Model을 읽어들인다.

Page 20: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 20 -

4. ATPG design model을 생성한다.

5. DFT Compiler에 의해서 생성된 STIL test protocol file을 읽어들인다. test DRC (Design Rule

Checking)을 수행하여 필요한 수정을 한다.

6. Fault list을 setup하고 ATPG option을 설정한다.

7. ATPG을 수행한다.

8. Test coverage에 한 review을 수행하고 필요한 경우에는 ATPG를 다시 수행한다.

9. Pattern compressiong을 수행한다.

10. Test pattern과 fault list을 장한다.

PreprocessNetlist

Read Netlist

Read Library Models

Build the Model

Perform Test DesignRule Checking (DRC)

Prepare to Run ATPG

Run ATPG

Review Test Coverage

Rerun ATPG

Compress TestPatterns

Save TestPatterns

Done

Netlist

Models

STIL TestProtocol

File

Page 21: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 21 -

그림 1-15 TetraMax의 ATPG Flow

1.3 실험 환경 로그램 분석

Ⅰ. 실험에 사용될 설계 툴의 환경 설정

1. c-shell 환경 설정

설계 툴이 설치되면 각 사용자들은 설계 툴을 사용하기 해서 기본 인 환경을 설정해주어야

한다. 워크스테이션(workstation)에서 각자의 작업 환경을 .cshrc라는 c-shell 일을 이용하여 설

정해 수 있는데, 각 설계 툴에서 사용되는 각 명령어를 실행하기 해서는 c-shell 일에 각

설계 툴에 한 환경을 만들어주어야 한다. .cshrc 일에 들어가는 가장 표 인 환경설정 명령

은 다음과 같이 3가지가 존재한다.

- setenv

- set path

- source

에서 setenv는 환경변수를 설정해주는 명령어이다. 다음 와 같은 형태로 명령을 정의한다.

setenv SYNOPSYS_SIM /tools/synopsys

setenv LICENSE /tools/synopsys/license.dat

setenv LICENSE ${LICENSE}:/tools/maxplus2/license.dat

SYNOPSYS_SIM이라는 변수가 /tools/synopsys라는 경로로 표 된다는 뜻이다. 따라서, 이 명

령어 다음부터는 /tools/synopsys라고 경로를 부 쓰지 않고 $SYNOPSYS_SIM이라고만 쓰면 된

다. 두 번째 에서의 LICENSE라는 변수는 /tools/synopsys 디 토리 에 있는 license.dat 일

을 신한다는 뜻이다. 세 번째 은 동일한 LICENSE 변수에 /tools/maxplus2 디 토리 에 있

는 license.dat 일을 추가시킨다는 뜻이다. 유닉스에서 실행되는 설계 툴 들은 모두 라이센스

일을 구동시켜서 설계 툴의 불법 도용을 방지한다. 따라서, 사용자는 c-shell 일에 라이센스의

치를 표기해두어야 하는데, 여러 개의 설계 툴에서 요구하는 라이센스 일의 환경 변수명이

동일할 경우, 첫 번째로 환경을 설정하는 설계 툴은 두 번째 처럼 표기해도 되지만, 두 번째 이

후로 환경을 설정하는 설계 툴은 세 번째 처럼 표기해야 로그램 실행에 문제가 발생하지 않

는다.

Page 22: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 22 -

다음으로 set path 명령어에 해서 알아보기로 하자. set path 명령어는 특정 경로에 해서 자

동으로 설정해주는 환경설정 명령어이다. 를 들어, com_c라는 명령어가 dir_A/dir_B라는 디 토

리 에 존재하고, 이것을 실행하려는 상황을 고려해 볼 때, dir_A라는 디 토리에서는 com_c라는

명령어가 존재하지 않는다. 따라서, dir_A 디 토리에서 그냥 com_c라는 명령어를 실행시키면 명

령어를 인식하지 못할 것이다. 그러므로, com_c를 실행시키기 해서는 com_c가 존재하는 치를

써주고 명령어를 실행시켜야 한다. com_c라는 명령어를 실행시킬 때마다 이런 과정을 수행하는

것은 매우 번거로운 일이다. 따라서, 필요한 명령어들이 존재하는 경로를 미리 설정해 놓으면, 어

느 디 토리에서나 필요한 명령어를 실행시킬 수 있다. 필요한 경로를 추가시키는 명령어는 다음

과 같이 쓴다.

set path = ($path $SYNOPSYS_SIM/admin)

명령은 기존에 설정된 경로($path)에 $SYNOPSYS_SIM/admin 경로를 추가한다는 뜻이다.

앞에서 SYNOPSYS_SIM은 /tools/synopsys를 의미하는 변수로 설정되었으므로, 결과 으로 기존

경로에 /tools/synopsys/admin이라는 경로가 추가된 것이다.

마지막으로, source 명령어는 환경설정 일을 실행시키는 명령어이다. 환경설정 일은 그 자

체로 실행이 되는 것이 아니라, source라는 명령어를 사용하여 실행시켜야 한다. 설계 툴에는 기

본 인 환경설정이외에도 설계 툴 자체에 필요한 환경설정 일을 가지고 있는 경우가 있다. 따라

서, 설계 툴의 환경설정 일을 실행시키기 해서 이 명령어가 필요하다.

Ⅱ. Synosys 툴의 추가적인 환경 설정

1. 작업 디 토리 만들기

Synopsys 툴에서는 HDL 일을 이용하여 시뮬 이션 논리회로로 합성하기 해 여러 가지

컴 일 일을 만들고 있다. 그런데, 이러한 컴 일 일들은 한 곳에 따로 모아서 장하면 일

을 리하는데도 편하고, 계층 구조의 설계를 해서도 필수 이다. 만약, 작업 디 토리를 사용

하지 않으면 HDL 일을 하나의 디 토리에 모두 장해야하고, 컴 일된 일들도 그 디 토리

에 생겨서 일 리가 매우 어려워진다. 한, 다른 디 토리에서 HDL 일을 만들고 이 디

토리의 일을 이용하려고 해도 문제가 생긴다. 이러한 문제의 해결을 해, 모든 HDL 일의 컴

일 일을 하나의 특정 디 토리(즉, 작업 디 토리)에 장해야 한다.

Page 23: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 23 -

작업 디 토리의 치는 자신이 읽기와 쓰기가 허용된 작업 공간이면 어느 곳이든지 치할 수

있다. 이 디 토리에 장된 일들은 모두 시뮬 이션이나 논리회로 합성을 할 때 사용되는 일

들로서, 논리합성 컴 일(analyze) 명령시 *.sim이나 *.mra, *.mr, *.st, *.syn 등이 생성된다.

2. design compiler/design analyzer 환경설정 방법

설계 툴이 설치되면 설계 툴이 동작하는 기본 환경을 설정해 놓은 일이 존재한다. Synopsys

툴 에서 기본 환경을 설정해 놓은 일(환경설정 일)이 .synopsys_vss.setup와 .synopsys

_dc.setup이며, 이 일들은 각각 아래의 경로에 존재한다.

$SYNOPSYS_SIM/admin/setup/.synopsys_vss.setup

$SYNOPSYS_SIM/synthesis/admin/setup/.synopsys_dc.setup

Synopsys 툴의 모든 동작은 환경설정 일에 의해 동작이 결정되는데, 툴이 이 환경설정 일

을 참조하는 우선 순 는 재 디 토리, 사용자의 루트 디 토리, 툴의 기본 환경 설정 일과

같은 순이다. 만약, 사용자가 재 디 토리나 자신의 루트 디 토리에 환경설정 일을 설치하지

않으면 기본 으로 정해진 툴의 환경설정 일을 용하게 된다. 따라서, 사용자가 툴을 하게

사용하려면 각 사용자는 각자의 루트 디 토리에 자신에게 맞는 환경설정 일을 만들어 놓아야

한다.

Synopsys 툴에서 제공하는 기본 환경설정 일의 내용을 보면 그 양이 매우 많음을 알 수 있

다. 이 모든 것에 해서 굳이 변경할 필요는 없고, 이 에서 자신에게 필요한 부분에 해서만

설정내용을 만들면 된다. 왜냐하면, 각 사용자가 만들어 놓은 환경설정 일에 없는 내용은 툴의

기본 인 환경 설정을 참조하기 때문이다.

.synopsys_vss.setup 일에서 논리회로 합성시 설정해주어야 할 것은 Synopsys 툴의 컴 일

일을 어느 곳에 장하는가를 결정해주는 내용이다. 앞에서 작업의 효율을 해 생성한 작업 디

토리를 Synopsys 툴에 알려주기 해서, 이 일을 이용하여 각 사용자가 만든 작업 디 토리

의 이름과 치를 결정해주는 것이다. 를 들어, work라는 디 토리를 자신의 루트 디 토리

에 만들었다면 아래와 같이 쓰면 된다.

WORK > DEFAULT

DEFAULT : ~/work

.synopsys_dc.setup 일도 .synopsys_vss.setup 일과 마찬가지로 사용자의 설계 환경에 따라

변경이 필요하다. 논리회로 합성은 HDL 언어를 논리 게이트로 만들어주는 과정이므로, 특정 공정

의 라이 러리를 지정해주어야 한다. 공정에 따라 게이트의 연산지연 시간이 달라 논리회로 합성

Page 24: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 24 -

시 조건이 달라지므로 논리회로 합성 결과도 다르게 된다. 논리회로 합성기에서 사용되는 환경설

정 일은 논리회로 합성시 어느 공정을 사용하여 논리 게이트를 만들어낼 것인가를 지정해주는

역할을 한다. 다음은 각 사용자가 자신의 환경에 맞게 만들어 주어야할 환경 설정 내용을 보여

다.

link_library = {"*" "라이브러리명.db"};

search_path = {. ""/tools/synopsys/U-2003.06/libraries/syn"};

target_library = {"라이브러리명.db"};

designer = "설계자 이름" ;

company = "설계자 소속";

symbol_library = {"라이브러리명.sdb"};

첫 번째 과 네번째 은 논리회로 합성을 할 때 어느 공정 라이 러리를 사용하여 논리회로

로 합성할 것인가를 설정해주는 것이다. 여기서, 라이 러리명.db는 논리회로로 합성하고자하는 공

정 라이 러리의 이름을 의미한다. Synopsys 툴에서 기본 으로 제공해주는 1.0 um 공정으로

class.db가 있다. 공정 라이 러리를 지정하게 되면 논리회로 합성기는 라이 러리에서 제공되는

각 셀의 연산 지연 특성을 알 수 있고, 원하는 논리회로 합성 제약 조건(시간, 면 등)에 논리회

로 합성 결과가 제 로 맞는지를 검하면서 최 의 논리회로 합성 결과를 이끌어 낸다.

두 번째 은 라이 러리가 존재하는 곳의 디 토리를 지정해주는 내용이다. Synopsys에서 제공

하는 tsmc 라이 러리를 사용하고 싶은 경우에는 tsmc 라이 러리가 설치되어 있는 디 토리의

치를 지정해주면 되고(본 교재에서는 Synopsys 논리합성 툴을 /tools/synopsys/U-2003.06

/libraries/syn 디 토리 에 설치하 다고 가정하 다.), 별도로 원하는 공정을 사용하고 싶으면,

그 라이 러리가 설치되어 있는 경로를 추가로 지정해주어야 한다.

여섯 번째 과 일곱 번째 은 각각 설계자의 이름과 소속을 지정해주는 것이고, 마지막 은 논

리회로로 합성된 각 게이트를 표 하기 한 심볼들의 공정명을 지정해주는 것이다.

1.4 실험 과정

I. Design_Analyzer 에서의 실험과정

테스트 벡터를 생성하기 에, TetraMAX에서 필요로 하는 일들을 DFT Compiler를 통해서

만들어 주어야 한다. 다음 과정을 통해 필요한 verilog 일과 STIL procedure 일을 만들어

다.

➀ % dc_shell 우선 dc_shell을 실행해 다.

Page 25: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 25 -

➁ dc_shell> read -f verilog s298.v DFT Compiler를 통해 scan chain을 구성해 s298 디자인 일을 읽는다.

해당 디자인 일을 작업할 폴더로 이동시킨 상태에서 하는 것이 보다 실험환경을 꾸미는데 용

이하다.

➂ dc_shell> current_design s298 current design을 설정해 다. 여기서는 s298이 최상 모듈이므로, s298로 설정한다.

다음과 같이 current design이 s298로 된 것을 확인할 수 있다.

Page 26: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 26 -

➃ dc_shell>uniquify 회로내에서 자주 쓰이는 립 롭의 회로의 경우 하나의 셀으로 여러번 불러 사용하게 된다. 스

캔을 형성할 경우 이러한 립 롭을 각각 하나씩 가져야 하므로 우리는 각각의 스캔을 생성해야

한다.(해당 명령을 수행하게 되면 기존에 존재하던 dff의 립 롭이 dff_0, dff_1의 형태로 회로내

에 사용되어진 횟수만큼 기술되어 진다.)

➄ dc_shell>compile컴 일하여 회로를 합성하여 다. 아래와 같은 결과를 찰 할 수 있다.

Page 27: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 27 -

➅ dc_shell> check_scan check_scan이라는 명령어를 통해 DFT Compiler로 하여 test protocol을 추정토록 한다.

다시 말해, test design rule을 체크하는 것이다. 이 과정에서 회로 내부의 립 롭과 기타등등의

ATPG생성에 필요한 정보를 수집하게 된다.

Page 28: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 28 -

➆ dc_shell> test_stil_netlist_format = verilog dc_shell> write -format verilog -hierarchy -output s298_syn.v s298

test_stil_netlist_format 명령어를 통해 STIL 일의 포맷을 결정할 수 있다. 여기서는 verilog로

한다.

write - format format -hierarchy -output filename top_module

이 명령어는 top module을 원하는 포맷으로 장하는 명령어이다.

재 top module인 s298을 s298_syn.v 라는 verilog 일로 장한다.

➇ dc_shell> write_test_protocol -format stil -out s298_syn.spf write_test_protocol -format format -out filename

이 명령어는 test_protocol을 원하는 포맷으로 장하는 명령어이다. 여기서는 test protocol을

STIL format으로 장한다.

STIL Procedure File (spf)는 다음과 같은 정보를 제공하는데 쓰인다.

․ 스캔 인풋과 아웃풋의 이름

․ 핀과 클럭 등에 한 타이 정의

․ 스캔 enable 시 스

․ 스캔 쉬 트 시 스

➈ dc_shell>exit DFT Compiler를 나간다.

Page 29: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 29 -

Page 30: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 30 -

II. TetraMax 에서의 실험

① % tmax64

TetraMAX가 실행하도록 환경 설정을 마친 후, TetraMAX를 실행한다. 일반 텍스트 환경에서

실험하기를 원한다고 할 경우 그냥 tmax만 입력하면 실행이 된다.

Page 31: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 31 -

➁ BUILD> read netlist s298_syn.v DFT Compiler로 만든 netlist를 읽는다.

Page 32: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 32 -

③ BUILD> read netlist tsmc25.v

verilog 시뮬 이션 라이 러리를 읽는다.

④ BUILD> run build_model s298

top module의 ATPG 모델을 생성한다.

Page 33: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 33 -

⑤ DRC> run drc s298_syn.spf

테스트 패턴을 생성하기 에, TetraMAX에서 design rule check (DRC)를 해야 한다.

DRC 체크를 하면, TetraMAX는 spf 일로부터 clocks, resets, test structures를 읽어낸다.

회로와 design rule check 과정에서 문제가 발생하지 않는 경우 우리는 ATPG를 수행할 수 있는

환경을 구축하게 된것이다. ATPG를 수행하기 해서 모든과정에서 오류가 없이 동작하는지를

찰하고 다음 과정으로 넘어가면 된다.

Page 34: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 34 -

III. ATPG 수행

① TEST> add faults -all

TEST> run atpg -auto

모든 고장에 한 atpg를 수행한 결과이다. 524개의 고장 검출을 하나도 할 수 없게 된다. 이

경우에 지 sequential 회로 내부에서 back trace를 하지 않은 결과를 보여주는 과정이다. 회로

내부에 sequential logic이 사용되어 back trace를 하지 않은 경우 fault를 검출할 수가 없게 되는

것이다.

Page 35: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 35 -

➁ TEST> remove faults -all TEST> add faults -all

회로 내부에 고장을 다시 삽입하여 다. -auto의 옵션을 사용하 을 경우 회로 내부에 테스트를

한 로직 (스캔) 이 없을 경우 coverage가 0%가 나오기 때문에 다시 고장을 삽입하여 테스트 하

여 다.

Page 36: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 36 -

➂ TEST> run atpg full_sequential_only ATPG의 생성과정에서 sequential에서 back trace를 제한 없이 사용하여 회로 내부를 테스트 하

는 기법을 말한다. 회로내부에 따로 스캔을 형성하여 테스트에 필요한 블록을 제작하지 않은 상태

이기 때문에 해당 ATPG를 형성할 때 back trace를 사용하여 테스트를 수행하여야지 올바른 테스

트가 가능해 지게 된다.

테스트시의 시간이 상당히 많이 걸리는 것을 볼 수 있다 회로 내부의 립 롭의 상태를 테스트

가 가능한 상태로 셋 하는데 많은 시간이 소요되어서 그런 것을 볼 수 있다. ATPG를 사용하여

Page 37: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 37 -

검출 할 수 없는 고장의 경우도 56개의 고장이 있는 것을 볼 수 있다. test coverage의 경우

79.39%가 나온다.

③ TEST> write patterns s298_syn.stil -format stil

생성된 테스트 패턴을 STIL 포맷의 일로 장한다. 사용된 명령어 write patterns filename

1-format format은 테스트 패턴을 특정한 포맷으로 장하는명령어 이다.

Page 38: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 38 -

IV. ATPG의 여러 기법들

앞에서 기본 인 ATPG를 생성하여 실험하는 체 과정을 해보았다. 이번 트에서는 회로내부

에서 Simulation을 수행할때의 선택 인 옵션과 회로내부에서 단일고착고장이 발생하 을 경우 어

떤식으로 고장을 검출해 나아갈 수 있는지에 한 내용을 알아보도록 하겠다.

➀ 앞장에서 default 값으로 ATPG를 수행하 다. 이번 트에서는 add faults -all 까지의 입력을

모두 마친상태에서 ATPG를 수행하지 않고 ATPG 설정 화면으로 들어가서 수행한다.

Page 39: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 39 -

➁ 패턴을 기본 으로 셋 하는 창이다. 련 명령의 경우는 아래에 설명되어 있다.

* Max Patterns: Specifies a limit on the total number of patterns generated by the ATPG

process.

* Coverage: A number between 1.00 and 100.00 that specifies the target test coverage

percentage, after which ATPG stops. The default is 100.00.

* Capture Cycles: A value from 2 to 10 that specifies the maximum capture cycle depth

attempted during Fast-Sequential ATPG. The default value, 0, disables Fast-Sequential

ATPG. It is recommended that you use Fast-Sequential ATPG with or before you use

Full-Sequential ATPG.

* Enable Full-Seq ATPG: Specifies whether to enable Full-Sequential ATPG. By default,

Full-Sequential ATPG is disabled. If you enable it and then click the Run button,

TetraMAX runs Full-Sequential ATPG after Basic-Scan ATPG and Fast-Sequential

ATPG (if enabled).

* Random Decision: Determines the initial decision during ATPG. By default, this option is

disabled, which bases the initial decision on controllability criteria. When enabled, this

option causes the initial decision to be random, which can sometimes result in lower

pattern counts.

* Random Prevention: Determines how a BUS primitive input is selected to prevent Z-state

contention. By default, this option is disabled, which causes the first BUS input to be

selected. When enabled, this option causes a BUS input to be selected at random.

Page 40: 제1장 ATPG & Fault Simulation

제 1 장 ATPG & Fault Simulation

- 40 -

* Check Point: When enabled, this option causes TetraMAX to save patterns and fault lists

periodically during the generation of ATPG patterns. Enabling this option opens another

dialog box, which you use to specify the checkpoint time interval and the names of the

two files into which the patterns and fault lists will be saved. Any existing file with the

same name is overwritten. Specify the checkpoint time interval in CPU seconds. The

minimum setting is 60 seconds.

* Store ATPG Patterns: Determines whether ATPG patterns created by the ATPG run will

be stored. You can turn this option off if you only want to determine a test coverage and

you do not need the generated patterns.

* Reset Bidis: Specifies the behavior to follow when postclock contention occurs on

bidirectional pins. By default, this option is enabled, which causes the pattern to be

modified so that the bidirectional pin is forced to Z, thereby avoiding postclock contention

and allowing the pattern to be retained. Disabling this option prevents the pattern from

being changed. Instead, TetraMAX discards the pattern and searches for alternative

patterns that do not cause contention.

* ATPG Design Flow: Preparing for ATPG

* DI Analysis: Determines whether TetraMAX performs a "detected by implication" analysis

for undetected faults upon completion of the ATPG process. When enabled (the default),

TetraMAX searches for any undetected faults that may have been given credit as

"detected by implication" (DI) due to existing patterns.

* Summary: Specifies whether a completion summary is issued after the ATPG pattern

effort has completed. By default, a summary of the pattern count, test coverage, and fault

report is displayed after each ATPG run.

* Verbose: Selects a verbose report of pattern merge effort during ATPG pattern generation.

➂ 이번장의 경우 회로 내부에 스캔이 삽입되지 않은 상태이기 때문에 높은 고장 검출률과 빠른 테스트 용시간을 얻기 어렵기 때문에 단순한 full_sequential_only만 사용해서 test coverage를

산출하 다. 2장에서 스캔을 사용한 구조에서 해당 옵션을 사용하여 검증하겠다.