Vous êtes sur la page 1sur 14

Using Synopsys Asynchronous OCC IP to target cross clock

domain faults

Gao Qiang
Himanshu Kukreja
Jovin Basil Roy J

Lantiq Asia Pacific Pte Ltd


Singapore

www.lantiq.com

ABSTRACT

High transition delay coverage is utmost priority in current complex designs to improve the test
quality. Conventionally the faults between two OCC domains are not considered for the
transition delay test. The default OCC structure and ATPG flow support faults which belong to
only one clock domain. When there is a timing requirement between different clock domains,
those faults must be tested. This requires some modification for OCC structure or insertion of
synchronous OCC IP. The paper describes this novel DFT concept used to test the inter clock
domain faults using the asynchronous OCC IP and modification of ATPG. This approach also
enabled us to target the critical paths across clock domains using path delay fault model

SNUG 2014 1 Using Synopsys Asynchronous OCC IP


to target cross clock domain faults
Table of Contents
1. Introduction .............................................................................................................................. 4
2. OCC structure and principle .................................................................................................... 4
2.1 Basic structure and principle of OCC ........................................................................... 4
2.2 Details of at-speed clock pulse generation ................................................................... 6
3. Cross clock domains faults testing using Asynchronous-OCC ............................................... 7
3.1 Enhancement for Asynchronous-OCC ......................................................................... 9
3.2 SPF Modification ........................................................................................................ 10
3.3 ATPG and Simulation result....................................................................................... 10
3.3.1 Pattern AB result ............................................................................................. 11
3.3.2 Pattern BA result ............................................................................................. 12
3.3.3 Pattern A result ................................................................................................ 12
3.3.4 Pattern B result ................................................................................................ 13
3.4 Coverage improvement............................................................................................... 14
4. Conclusion ............................................................................................................................. 14
5. References .............................................................................................................................. 14

Table of Figures
Figure 1 Design before OCC insertion ................................................................................... 5
Figure 2 Design after OCC insertion ...................................................................................... 5
Figure 3 at-speed clock pulse generation ................................................................................ 6
Figure 4 waveform of clock pulse generation......................................................................... 6
Figure 5 Example of 2 clock domains with divider ................................................................ 7
Figure 6 Two synchronous clocks with two OCC .................................................................. 8
Figure 7 2 OCCs start to run at different time ........................................................................ 8
Figure 8 2 OCCs start to run at the same time ........................................................................ 8
Figure 9 Proposed Enhancement in OCC connection............................................................. 9
Figure 10 Launch by CLK_A(clk_500), captured by CLK_B(clk_250) .............................. 11
Figure 11 Launched by CLK_B(clk_250), captured by CLK_A(clk_500) .......................... 12
Figure 12 Launch and captured by CLK_A(clk_500) .......................................................... 13
Figure 13 Launch and captured by CLK_B(clk_250) .......................................................... 13
Figure 14 coverage comparison between 2 types of OCC .................................................... 14

SNUG 2014 2 Using Synopsys Asynchronous OCC IP


to target cross clock domain faults
SNUG 2014 3 Using Synopsys Asynchronous OCC IP
to target cross clock domain faults
1. Introduction
The transition-delay fault (TDF) model is used to detect slow-to-rise and slow-to-fall fault on
the nodes. TDF fault means that a transition from 0 to 1 or from 1 to 0 on the node does not
produce the correct results at the maximum operating speed of the device. So it requires the
accurate application of two high-speed clock pulses to apply the tests for these fault models.

One common methodology for at-speed testing is to leverage existing on-chip clock (OCC)
generation circuitry. This approach uses the active controller (OCC) to generate the high-speed
launch and capture clock pulses.

High transition delay coverage is utmost priority in current complex designs to improve the test
quality. Conventionally the faults between two OCC domains are not considered for the
transition delay test. The OCC structure and ATPG flow support faults which belong to the clock
domain. When there is a timing requirement between different clock domains, those faults must
be tested. This requires some modification for OCC structure or insertion of synchronous OCC
IP. The paper describes this novel DFT concept used to test the inter clock domain faults using
the asynchronous OCC IP and modification of ATPG procedure (spf) file.

This paper will describe the principle of OCC, analyze its limitation for cross clock domain test
and propose a solution to test cross clock domain faults.

2. OCC structure and principle

2.1 Basic structure and principle of OCC


DFT Compiler can insert OCC controller and TetraMAX can generate at-speed test patterns by
applying clocks through proper control sequences to the OCC circuitry and test-mode controls.

The following figures show an example design with and without OCC.

SNUG 2014 4 Using Synopsys Asynchronous OCC IP


to target cross clock domain faults
1.1 Design without OCC
CGU refers to the clock generation unit (PLL)
Function logic

FUNC_CLK
CGU

Figure 1 Design before OCC insertion

1.2 Design with OCC


OCC
OCC clock_chain
OCC_SI OCC_SO

ATE_CLK

Fucntion logic

FUNC_CLK One-hot counter Clk_gate


CGU
Clk_Selection

ATE_CLK

Test_SE
PLL_bypass
Scan_mode

Figure 2 Design after OCC insertion

NOTE: Figure 2 is just a simplified logical view to understand OCC easily, not a real
implementation.

Functionality of OCC:
1. scan shift mode, shift configuration value (how many fast clock pulses will be generated)
to OCC clock_chain.
2. scan capture mode, the one-hot counter will run based on func_clk frequency. It enables
at_speed clock pulse based on the value of OCC clock_chain.

SNUG 2014 5 Using Synopsys Asynchronous OCC IP


to target cross clock domain faults
2.2 Details of at-speed clock pulse generation
OCC
occ chain

occ_si occ_so
shift shift shift
scan_clk reg reg reg

clk_enable

scan_enable clk_out
One-hot counter fast
Sync0 Sync1 Sync2 & pipe clk Clk_gating
fast_clk Compare logic en

Figure 3 at-speed clock pulse generation

The following figure shows how the fast clock pulse is generated when clk_enable[0] is set to 1.

enable pulse if
clk_enable[0]=1
pipe reg
3 synchronization cycles fastclk_enable reg

fast_clk
scan_enable

clk_out
7th clock pulse after
scan_enable falling

Figure 4 waveform of clock pulse generation

Description:
1. The whole flow is triggered by detecting falling edge of scan_enable.
2. After scan_en is captured by rising edge of fast_clk, it needs the following steps to
generate final clock pulse.
1) Three synchronous cycles
2) Synchronized falling edge of internal scan_enable will trigger counter to run:

SNUG 2014 6 Using Synopsys Asynchronous OCC IP


to target cross clock domain faults
(1 to n) (n will be depend on the value of OCC clock_chain)
3) An additional pipeline cycle: 1
4) fast_clk enable cycle:1
5) occ output clock pulse generated

So after scan_enable falling edge , the 3+n+1+1+1 fast_clk pulse will be sent out on clk_out of
OCC.

3. Cross clock domains faults testing using Asynchronous-OCC


The following is an example design (implemented project) with two clock domains. Frequencies
of these two clocks are 500MHz and 250MHz, and the cross clock domain faults need to be
tested since they are synchronous and it has synchronous functional paths.

500MHz 250MHz
Divider
1/2

Figure 5 Example of 2 clock domains with divider

After inserting OCC, the clock structure would look like the one shown below.

SNUG 2014 7 Using Synopsys Asynchronous OCC IP


to target cross clock domain faults
Block B
500MHz Divider OCC_B
B
1/2 250MHz

A
OCC_A Block A

Figure 6 Two synchronous clocks with two OCC

Based on the description of 2.2, we know that falling edge of scan_en will trigger the OCC to
start the operation. For the example shown above, scan_en is asynchronous with internal at-
speed clocks (CLK_A and CLK_B), so there will be two scenarios for OCC to start running.

OCC_A start
scan_en OCC_B start

CLK_A
CLK_B
Figure 7 Both OCCs start to run at different time

OCC_A start
scan_en OCC_B start

CLK_A
CLK_B
Figure 8 Both OCCs start to run at the same time

SNUG 2014 8 Using Synopsys Asynchronous OCC IP


to target cross clock domain faults
As shown in the above figures, different time relationship between scan_en and internal clocks
make different relationship between OCC_A and OCC_B, so the asynchronous OCC cant be
used to generate patterns for cross clock domain faults directly. Since the relationship of the
clocks are not in sync for the capture pulse generation. By doing a hardware change in the circuit
we could bring in the synchronicity in the OCCs .

3.1 Enhancement for Asynchronous-OCC

To generate patterns for cross clock domains, we need to make 2 OCCs run in same way
regardless the relationship between internal clock and scan_en. Now the following modification
needs to be done for OCC_A and OCC_B.
For OCC_B, we created a new output from the internal scan_en synchronized by CLK_B.
For OCC_A, we use the new output of OCC_B to enable one-hot counter of OCC_A.

For the details, please look at the figure shown below.


occ chain

occ_si occ_so
shift shift shift
scan_clk reg reg reg

OCC_B clk_enable

scan_enable clk_out
One-hot counter fast
Sync0 Sync1 Sync2 & pipe clk Clk_gating
fast_clk Compare logic en

occ chain

occ_si occ_so
shift shift shift
scan_clk reg reg reg

OCC_A clk_enable

scan_enable clk_out
One-hot counter fast
Sync0 Sync1 Sync2 & pipe clk Clk_gating
fast_clk Compare logic en

Figure 9 Proposed Enhancement in OCC connection

SNUG 2014 9 Using Synopsys Asynchronous OCC IP


to target cross clock domain faults
Based on the modification, the starting of OCC_A will be controlled by OCC_B. In other words,
only the case shown in Figure 8 will exist in new structure. This gives a predicted synchronous
pulse generation between the clock domains. In addition to this hardware change the procedure
file also to be modified for the atpg to understand the relationship.

3.2 SPF Modification


Latency is a parameter of SPF which refers to the number of pulses of the PLLClock that must
pulse before the first internal clock pulse is issued by the OCC controller. Based on the modified
structure, the time to issue the first clock pulse from OCC_A and OCC_B will be calculated in
the following way.
For OCC_A: ( ) ( )
For OCC_B: ( ) ( )

As we have mentioned in the earlier explanation the clocks are 500 and 250 MHz, so the
Period_A = 2ns and Period_B = 4ns

If n=1 (clk_chain[0]=1) for both clock, then the time of first clock pulse for two internal clocks
are shown below.
OCC_A: 4 * 2 = 8 ns
OCC_B: 4 * 4 = 16 ns
So based on same clock configuration settings (clock_chain[0]=1), clock pulse of OCC_B will
be 8ns (2 clock_B cycles) later than that of OCC_A.

So the latency setting for OCC_B is 2, and for OCC_A is 0.

The following are the settings in SPF.


PLLStructures "inst_XXX/i_ccu/CLK_B" {
PLLCycles 10;
Latency 2; // added for synchronous clock

PLLStructures "inst_XXX/i_ccu/CLK_A" {
PLLCycles 10;
Latency 0; // added for synchronous clock

3.3 ATPG and Simulation result


Based on the modifications of OCC and SPF, four kinds of patterns will be generated by ATPG.

Pattern AB : launched by CLK_A and captured by CLK_B (target cross clock domain faults)
Pattern BA : launched by CLK_B and captured by CLK_A (target cross clock domain faults)
Pattern A : launched by CLK_A and captured by CLK_A
SNUG 2014 10 Using Synopsys Asynchronous OCC IP
to target cross clock domain faults
Pattern B : launched by CLK_B and captured by CLK_B

3.3.1 Pattern AB result


Pattern information from TMAX:
Pattern 76 (fast_sequential-parallel_clocking)
Cycle-based clocking sequence:
--------------------
0: \inst_XXX/i_ccu/u_OCC_clkx20/u1/X: 0100
1: \inst_XXX/i_ccu/u_OCC_clkx10/u1/X: 0-1-
Clock Instruction Registers:
0: 0000010000
1: 0100000000
// PLL internal clock pulse: capture_cycle=0,
node=\inst_XXX/i_ccu/u_OCC_clkx20/u1 (3859)
// PLL internal clock pulse: capture_cycle=1,
node=\inst_XXX/i_ccu/u_OCC_clkx10/u1 (3243)

Result of simulation:

Figure 10 Launch by CLK_A(clk_500), captured by CLK_B(clk_250)

SNUG 2014 11 Using Synopsys Asynchronous OCC IP


to target cross clock domain faults
3.3.2 Pattern BA result
Pattern information from TMAX:
Pattern 72 (fast_sequential)
Cycle-based clocking sequence:
--------------------
0: \inst_XXX/i_ccu/u_OCC_clkx20/u1/X: 01
1: \inst_XXX/i_ccu/u_OCC_clkx10/u1/X: 1-
Clock Instruction Registers:
0: 0000010000
1: 1000000000
// PLL internal clock pulse: capture_cycle=0,
node=\inst_XXX/i_ccu/u_OCC_clkx10/u1 (3243)
// PLL internal clock pulse: capture_cycle=1,
node=\inst_XXX/i_ccu/u_OCC_clkx20/u1 (3859)

Figure 11 Launched by CLK_B(clk_250), captured by CLK_A(clk_500)

3.3.3 Pattern A result


Pattern information from TMAX:
Pattern 75 (fast_sequential-parallel_clocking)
Cycle-based clocking sequence:
--------------------
0: \inst_XXX/i_ccu/u_OCC_clkx20/u1/X: 11
1: \inst_XXX/i_ccu/u_OCC_clkx10/u1/X: 0-
Clock Instruction Registers:
0: 1100000000
1: 0000000000

SNUG 2014 12 Using Synopsys Asynchronous OCC IP


to target cross clock domain faults
// PLL internal clock pulse: capture_cycle=0,
node=\inst_XXX/i_ccu/u_OCC_clkx20/u1 (3859)
// PLL internal clock pulse: capture_cycle=1,
node=\inst_XXX/i_ccu/u_OCC_clkx20/u1 (3859)

Result of simulation:

Figure 12 Launch and captured by CLK_A(clk_500)

3.3.4 Pattern B result


Pattern information from TMAX:
Pattern 16 (fast_sequential)
Cycle-based clocking sequence:
--------------------
0: \inst_XXX/i_ccu/u_OCC_clkx20/u1/X: 0000
1: \inst_XXX/i_ccu/u_OCC_clkx10/u1/X: 1-1-
Clock Instruction Registers:
0: 0000000000
1: 1100000000
// PLL internal clock pulse: capture_cycle=0,
node=\inst_XXX/i_ccu/u_OCC_clkx10/u1 (3243)
// PLL internal clock pulse: capture_cycle=1,
node=\inst_XXX/i_ccu/u_OCC_clkx10/u1 (3243)

Result of simulation:

Figure 13 Launch and captured by CLK_B(clk_250)

SNUG 2014 13 Using Synopsys Asynchronous OCC IP


to target cross clock domain faults
3.4 Coverage improvement
The following figure is coverage comparison between enhancement OCC and default OCC.

Figure 14 coverage comparisons between two types of OCC


With the modified asynchronous OCC, the test coverage is increased by almost 4%. Most
importantly this 4% coverage enhancement targets some of the timing critical inter clock domain
faults, which would have remained, untested with the conventional approach.

4. Conclusion
By default, cross clock domain faults are not targeted during at-speed test.. The falling edge of
scan_enable triggers OCC to start. As scan_enable is asynchronous with internal at-speed clock,
the different relationship between scan_enable and internal clock will make 2 OCC clock outputs
asynchronous to each other. This is the reason why the default OCC does not support cross clock
domain fault detection.
The paper described an innovative methodology to update certain connectivity in asynchronous
OCCs to achieve deterministic behavior between two OCCs which can help in targeting the
critical inter clock domain faults. The change in OCC connectivity along with corresponding
change in SPF helps us achieve the test coverage for the inter clock domain paths which
enhances the test quality and thus the reliability of the chip. The methodology has been
implemented in one of our devices and is silicon proven.

5. References

[ 1 ] Lantiq DFT Standard, Mandatory Design for Testability (DFT) Features for Infineon Technologies SOC
Products
[ 2 ] DFT Compiler User Guide
[ 3 ] TetraMax ATPG User Guide

SNUG 2014 14 Using Synopsys Asynchronous OCC IP


to target cross clock domain faults

Vous aimerez peut-être aussi