Professional Documents
Culture Documents
01 ATPG Synopsys
01 ATPG Synopsys
1.1 실험 목적
디지털 회로의 테스트 패턴 생성을 위한 ATPG (Automatic Test Pattern Generation) 알고리
듬을 이해하고 TetraMax tool의 구성과 사용방법을 알아본다. 그리고 TetraMax tool을 이용하여
ATPG와 fault simulation을 수행한다.
1.2 이론
수 있는 장점이 있다.
단점이 있다.
회로도와 사용된 소자의 동작 특성을 이용하여 소프트웨어 알고리듬을 사용하여 테스트 패턴을
생성하는 것으로 주어진 고장 모델에 대하여 비교적 높은 검출율을 얻을 수 있다. 또한, 임의의 테스트
패턴 생성과는 달리 결정적(Deterministic) 테스트 패턴 생성 방식이라 부르기도 한다.
- 1 -
제 1 장 ATPG & Fault Simulation
가. 기본 개념
Combinational circuit에서의 테스트 생성 문제는 최근 활발한 연구 개발로 비교적 높은 fault
coverage를 얻을 수 있는 테스트 패턴 생성이 가능하다. 테스트 생성 방법으로는 크게 boolean
테스트 생성 알고리듬인 D-알고리듬, PODEM 알고리듬, FAN 알고리듬에 대하여 설명한다. 테스트
생성은 고장 유발 단계와 고장 영향 전파 단계가 필요하며 각 단계를 동시에 만족시키기 위한
주입력단 신호의 논리값을 결정하게 된다.
- 2 -
제 1 장 ATPG & Fault Simulation
1) 고장 영향 유발 단계 (fault excitation)
고장 영향 유발 단계에서는 고장이 존재하는 신호선에 고장이 있을 경우와 없을 경우에 대한
차이를 발생시켜 고장의 영향이 유발되도록 주입력단의 논리값을 결정하는 과정이다. 예를 들어
A
H
s-a-0
B K M
G
C
I
D
그림 1-1. 고장 영향 유발 및 고장 영향 전파 과정의 예
2) 고장 영향 전파 단계 (fault propagation)
일단 고장 영향이 유발되면 그 영향을 회로의 외부에서 관찰할 수 있도록 하기 위하여 고장
- 3 -
제 1 장 ATPG & Fault Simulation
된다.
D
S
C
E
H
F
B
A
stuck-at-0
- 4 -
제 1 장 ATPG & Fault Simulation
경우가 발생할 수 있다. 그림 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에 있는 고장
F
0 1
A
1 0 backtrack
B
1 0 backtrack
D
0 1 backtrack
backtrack
그림 1-3. backtrack 과정
- 5 -
제 1 장 ATPG & Fault Simulation
불가능한 경우가 발생할 수 있다. 이러한 이유로 테스트 생성 알고리듬의 복잡도는 NP-complete임이
증명되어 있다.
이상으로 설명한 테스트 생성의 기본 개념을 정리하면 테스트 생성 알고리듬의 구조가 그림
표현하는 binary decision diagram을 이용한 테스트 패턴 생성 방식이 발표되고 있으나 아직까지
경로 추적 방식에 비하여 실용적이지 못한 단점이 있다.
Step 1: 초기화
Step 2: 목표 설정
초기목표는 고장 영향 유발 목표 또는 고장 영향 전파 목표의 설정
Step 3: 테스트 생성 과정 진행 여부 결정
전파되었으면 테스트 생성 완료
- 6 -
제 1 장 ATPG & Fault Simulation
나. D-알고리듬
D-알고리듬은 1966년 Roth에 의하여 발표되었으며 테스트 패턴 생성 문제에 대한 첫 번째
알고리듬이다. 여기서 알고리듬의 의미는 redundant fault가 아닌 고장에 대하여는 항상 테스트
a b c a b c
0 0 1 0 0 1
a 0 1 0 X 1 0
b c
1 0 0 1 X 0
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
- 7 -
제 1 장 ATPG & Fault Simulation
시험해야 할 경우도 있다. 3-입력 NAND 소자의 입출력단에 위치한 고장에 대한 기본 D-큐브는
그림 1-6과 같다.
stuck-at-0 stuck-at-1
fault site a b c a b c
a
b c 0 0 D 1 X D'
X 1 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
a 1 1 1 D' d stuck-at-1
b d 0 1 1 D a stuck-at-1
c 1 0 1 D b stuck-at-1
1 1 0 D c stuck-at-1
하나인 (c, d, z) = (D', 0, D)와 교차시켜 전체적으로 (a, b, c, d, z) = (0, 1, 0, D', D)로 고장이
주출력단 z에서 검출되게 된다.
a
G1 d
b
stuck-at-0
G2 z
c
그림 1-7. b s-a-0 고장 회로
- 8 -
제 1 장 ATPG & Fault Simulation
그에 따른 입증을 하는 것이다.
- 9 -
제 1 장 ATPG & Fault Simulation
과정이 필요하다.
Step 4: 테스트 생성 과정 진행 여부 결정
- 10 -
제 1 장 ATPG & Fault Simulation
그림 1-8. D-알고리듬의 구조
따라서 상충점을 발견하고 결정 트리에서 시도 철회를 할 때, 오류를 시정하기까지 많은 시간이
소모될 수 있다. 이 사실은 테스트 생성에 걸리는 시간이 테스트 생성이 용이한 (상충 발생이
적은) 대부분의 고장에 대한 시간이 아니라 일부 극소수의 테스트 생성이 어려운 고장에 의하여
좌우된다는 실험적인 결과를 비추어 볼 때, 테스트 생성 알고리듬의 효율성은 결국 탐색 공간의
크기에 반비례함을 알 수 있게 된다.
수행하기 때문에 최악의 경우에는 테스트 생성시 많은 시간이 소요될 수 있다는 단점이 있다. 예를
들어, 단 하나의 주출력을 갖는 combinational circuit에서 고장 위치에서부터 주출력단까지의 경로의
N
수가 N이면 D-알고리듬에서는 2 개의 경우의 수에 해당하는 단일 고장 전파 경로와 다중 고장
다. PODEM 알고리듬
PODEM (Path-Oriented DEcision Making) 알고리듬은 1981년 Goel에 의하여 제안된 알고리듬으
듬에 비하여 성능이 우수한 것으로 알려져 있다. PODEM 알고리듬은 D-알고리듬과 달리 다음과
같은 여러 가지 특징을 가지고 있다.
1) PODEM 알고리듬은 탐색 공간을 주입력 신호에 국한한다. 설정된 목표에 대한 논리값 정당화를
시도할 때, 회로의 내부 신호에는 논리값을 배정하지 않고 소자의 극성을 이용하여 경로 추적을
주입력단까지 한 뒤 주입력에 비로소 논리값을 배정하게 된다. 따라서 PODEM 알고리듬에서는
- 11 -
제 1 장 ATPG & Fault Simulation
- 12 -
제 1 장 ATPG & Fault Simulation
2) 목표 고장을 선택
Step 3: 후방 추적 과정 (backtrace)
주입력단 (PI)에 도달할 때까지 후방 추적을 계속한다. 후방 추적
고장임이 증명된다.
- 13 -
제 1 장 ATPG & Fault Simulation
Start
P1 (그림1-11)
No Make initial
assignment (1 or 0)
to an unassigned
P2 (그림1-11) primary input.
Add unflagged node
B to decision tree.
2
No Exit-untestable P3 (그림1-12)
fault
9 C
Last node
Yes flagged?
Implications of
6
all assigned and
unassigned
No primary inputs.
Make alternative
Set associated assignment on
primary input associated 3
to X. Remove primary input.
last node. Flag last node.
7 8 Yes Is
it a test ?
4
B C
Exit-done
10 No
- 14 -
제 1 장 ATPG & Fault Simulation
P1 (그림1-10)
No G.U.T. Yes
Output at
D X?
1
Find gate B
with D or D'
on inputs, X on Input
No Yes
output and stuck fault
closest to a on G.U.T.?
primary output Initial 2
5 objective
Set output of
G.U.T. opposite
No Found such to stuck fault
Test not a gate ? direction. No Faulted
possible
input at X?
with
present Yes 3 4
assignments
X-path from Yes Yes
gate B to a primary
output?
6
Initial Initial Initial
P1 (그림1-10) No objective objective objective
Disable selection Set output of Set G.U.T. output Set faulted input
of gate B at box 5 gate B to 1(0) to 1(0) if G.U.T. opposite to
for determining if B is an AND, is an AND, NOR stuck fault
present initial NOR(NAND), (NAND,OR) gate direction
objective OR) gate
7 8 9 10
D P4 (그림1-12)
그림 1-11. 초기 목표 설정 흐름도
- 15 -
제 1 장 ATPG & Fault Simulation
P4 (그림1-11)
Is objective
Yes
net fed by a primary
input?
1
Found primary input. No {fed by gate Q}
Initial assignment is
the current objective Current OR/NAND with current objective = 1
level objective level AND/NOR with current objective = 0
2 and type of gate driving
object net?
3
Is Q
No Yes
a NAND/NOR
gate?
6
7 8
그림 1-12. 후방 추적 과정 흐름도
- 16 -
제 1 장 ATPG & Fault Simulation
라. FAN 알고리듬
마지막으로 소개할 FAN 알고리듬은 1983년 Fujiwara에 의하여 제안되었다. FAN 알고리듬은
테스트 패턴 생성 문제가 주로 재결합 분기점 (reconvergent fanout stem)의 존재에 의하여 어려워지는
것에 착안하여 분기점 신호에 배정하는 논리값 선정 과정에서 효율적인 방법을 도입하였다. 또한,
탐색 공간의 크기를 줄이기 위하여 헤드라인 (headline) 개념을 도입하고 있는데, 헤드라인이란
그림 1-13(a)과 같이 그 위치에서 주입력 단까지의 후방 추적 영향권 (backtrace cone of influence)의
내부에 분기점이 없는 일종의 트리 구조의 루트를 의미한다.
논리값 정당화 (line justification) 과정에서 주입력단에 논리값을 결정하지 않고 헤드라인에 논리값
을 결정하게 되면 헤드라인의 논리값은 고장 영향 유발과 고장 영향 전파 과정을 모두 마친 후
결정할 수 있어 결과적으로 탐색 공간의 크기를 줄이는 효과가 있다. 그러나 실용적인 회로에서
- 17 -
제 1 장 ATPG & Fault Simulation
Z Z
있는 테스트 팽성을 생성한다. 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를 수행할 준비가
- 18 -
제 1 장 ATPG & Fault Simulation
있다.
HDL
Netlist
DFT Compiler
Test-Ready Compilation
(compile -scan)
Test DRC
(check_scan)
Scan Insertion
(insert_scan)
Test DRC
(check_scan)
Scan Design
Completed
Compiled,
write_test_protocol
Scanned
Nelist
STIL Test
Protocol
File
그림 1-15는 TetraMax tool의 기본적인 ATPG design flow를 나타내고 있다. 이 flow는 다음의
과정으로 이루어진다.
- 19 -
제 1 장 ATPG & Fault Simulation
Netlist
Preprocess
Netlist
Models
Read Netlist
Run ATPG
Rerun ATPG
Compress Test
Patterns
Save Test
Patterns
Done
- 20 -
제 1 장 ATPG & Fault Simulation
1.3 실험 환경 및 프로그램 분석
Ⅰ. 실험에 사용될 설계 툴의 환경 설정
1. c-shell 환경 설정
- setenv
- set path
- source
- 21 -
제 1 장 ATPG & Fault Simulation
다음으로 set path 명령어에 대해서 알아보기로 하자. set path 명령어는 특정 경로에 대해서 자
동으로 설정해주는 환경설정 명령어이다. 예를 들어, com_c라는 명령어가 dir_A/dir_B라는 디렉토
써주고 명령어를 실행시켜야 한다. com_c라는 명령어를 실행시킬 때마다 이런 과정을 수행하는
것은 매우 번거로운 일이다. 따라서, 필요한 명령어들이 존재하는 경로를 미리 설정해 놓으면, 어
느 디렉토리에서나 필요한 명령어를 실행시킬 수 있다. 필요한 경로를 추가시키는 명령어는 다음
과 같이 쓴다.
Ⅱ. Synosys 툴의 추가적인 환경 설정
1. 작업 디렉토리 만들기
컴파일 파일을 만들고 있다. 그런데, 이러한 컴파일 파일들은 한 곳에 따로 모아서 저장하면 파일
을 관리하는데도 편하고, 계층적 구조의 설계를 위해서도 필수적이다. 만약, 작업 디렉토리를 사용
하지 않으면 HDL 파일을 하나의 디렉토리에 모두 저장해야하고, 컴파일된 파일들도 그 디렉토리
- 22 -
제 1 장 ATPG & Fault Simulation
$SYNOPSYS_SIM/admin/setup/.synopsys_vss.setup
$SYNOPSYS_SIM/synthesis/admin/setup/.synopsys_dc.setup
않으면 기본적으로 정해진 툴의 환경설정 파일을 적용하게 된다. 따라서, 사용자가 툴을 적절하게
사용하려면 각 사용자는 각자의 루트 디렉토리에 자신에게 맞는 환경설정 파일을 만들어 놓아야
한다.
- 23 -
제 1 장 ATPG & Fault Simulation
시 조건이 달라지므로 논리회로 합성 결과도 다르게 된다. 논리회로 합성기에서 사용되는 환경설
정 파일은 논리회로 합성시 어느 공정을 사용하여 논리 게이트를 만들어낼 것인가를 지정해주는
역할을 한다. 다음은 각 사용자가 자신의 환경에 맞게 만들어 주어야할 환경 설정 내용을 보여준
다.
1.4 실험 과정
만들어 주어야 한다. 다음 과정을 통해 필요한 verilog 파일과 STIL procedure 파일을 만들어 준
다.
➀ % dc_shell
우선 dc_shell을 실행해 준다.
- 24 -
제 1 장 ATPG & Fault Simulation
이하다.
- 25 -
제 1 장 ATPG & Fault Simulation
➃ dc_shell>uniquify
회로내에서 자주 쓰이는 플립플롭의 회로의 경우 하나의 셀으로 여러번 불러 사용하게 된다. 스
캔을 형성할 경우 이러한 플립플롭을 각각 하나씩 가져야 하므로 우리는 각각의 스캔을 생성해야
한다.(해당 명령을 수행하게 되면 기존에 존재하던 dff의 플립플롭이 dff_0, dff_1의 형태로 회로내
에 사용되어진 횟수만큼 기술되어 진다.)
➄ dc_shell>compile
컴파일하여 회로를 합성하여 준다. 아래와 같은 결과를 관찰 할 수 있다.
- 26 -
제 1 장 ATPG & Fault Simulation
➅ dc_shell> check_scan
check_scan이라는 명령어를 통해 DFT Compiler로 하여금 test protocol을 추정토록 한다.
다시 말해, test design rule을 체크하는 것이다. 이 과정에서 회로 내부의 플립플롭과 기타등등의
- 27 -
제 1 장 ATPG & Fault Simulation
한다.
write - format format -hierarchy -output filename top_module
이 명령어는 top module을 원하는 포맷으로 저장하는 명령어이다.
․ 스캔 enable 시퀀스
․ 스캔 쉬프트 시퀀스
➈ dc_shell>exit
DFT Compiler를 나간다.
- 28 -
제 1 장 ATPG & Fault Simulation
- 29 -
제 1 장 ATPG & Fault Simulation
① % tmax64
TetraMAX가 실행하도록 환경 설정을 마친 후, TetraMAX를 실행한다. 일반 텍스트 환경에서
- 30 -
제 1 장 ATPG & Fault Simulation
- 31 -
제 1 장 ATPG & Fault Simulation
- 32 -
제 1 장 ATPG & Fault Simulation
회로와 design rule check 과정에서 문제가 발생하지 않는 경우 우리는 ATPG를 수행할 수 있는
- 33 -
제 1 장 ATPG & Fault Simulation
III. ATPG 수행
① TEST> add faults -all
TEST> run atpg -auto
- 34 -
제 1 장 ATPG & Fault Simulation
- 35 -
제 1 장 ATPG & Fault Simulation
- 36 -
제 1 장 ATPG & Fault Simulation
- 37 -
제 1 장 ATPG & Fault Simulation
➀ 앞장에서 default 값으로 ATPG를 수행하였다. 이번파트에서는 add faults -all 까지의 입력을
모두 마친상태에서 ATPG를 수행하지 않고 ATPG 설정 화면으로 들어가서 수행한다.
- 38 -
제 1 장 ATPG & Fault Simulation
* 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
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.
- 39 -
제 1 장 ATPG & Fault Simulation
* 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.
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.
- 40 -