26
TDDC33 Design for Test of Digital Systems Design for Test of Digital Systems TDDC33 Lab Instructions Date of last revision 24/08/2012 2012 Dimitar Nikolov, IDA/SaS ESLAB

Lab Instructions 2012 dft

Embed Size (px)

DESCRIPTION

dft

Citation preview

  • TDDC33 Design for Test of Digital Systems

    Design for Test of Digital Systems

    TDDC33

    Lab Instructions

    Date of last revision

    24/08/2012

    2012

    Dimitar Nikolov, IDA/SaS ESLAB

  • TDDC33 Design for Test of Digital Systems 1

    Table of Contents

    1. Introduction ......................................................................................................................................... 3

    2. Initial preparations .............................................................................................................................. 4

    3. Synthesis ............................................................................................................................................. 5

    3.1. Input ............................................................................................................................................. 5

    3.2. Output .......................................................................................................................................... 5

    3.3. Synthesis procedure ..................................................................................................................... 5

    4. Design for test using DFTAdvisor .................................................................................................. 7

    4.1. Input ............................................................................................................................................. 7

    4.2. Output .......................................................................................................................................... 7

    4.3. Starting DFTAdvisor ................................................................................................................... 7

    4.4. Circuit Setup ................................................................................................................................ 7

    4.5. Test Synthesis .............................................................................................................................. 7

    4.5.1 Full Scan Insertion ..................................................................................................................... 8

    4.5.2 Partial Scan Insertion ................................................................................................................. 8

    5. Fault Coverage Analysis and Test Pattern Generation using FastScan ............................................ 10

    5.1. Input ........................................................................................................................................... 10

    5.2. Output ........................................................................................................................................ 10

    5.3. Writing test patterns ................................................................................................................... 10

    5.4. Starting FastScan ....................................................................................................................... 11

    5.5. Circuit setup ............................................................................................................................... 11

    5.6. Fault simulation ......................................................................................................................... 12

    5.7. Test pattern generation ............................................................................................................... 12

    5.8. Results and analysis ................................................................................................................... 13

    6. Test point insertion in VHDL ........................................................................................................... 14

    6.1. Input ........................................................................................................................................... 14

    6.2. Output ........................................................................................................................................ 14

    6.3. Inserting test points .................................................................................................................... 14

    7. Board test using Boundary Scan (IEEE 1149.1) ............................................................................... 15

    7.1. Input ........................................................................................................................................... 15

    7.2. Output ........................................................................................................................................ 15

  • TDDC33 Design for Test of Digital Systems 2

    7.3. Starting Trainer1149 .................................................................................................................. 15

    7.4. How to use Trainer1149 ............................................................................................................. 15

    7.5. Introducing a fault ...................................................................................................................... 16

    7.6. Writing and verifying a test program using the Test Constructor .............................................. 17

    7.7. Writing and verifying a test program using the TAP Controller................................................ 19

    Appendix A S27_TP VHDL Description ............................................................................................. 20

    References ............................................................................................................................................. 25

  • TDDC33 Design for Test of Digital Systems 3

    1. Introduction

    This document describes the environmental setup and the tools needed to complete the lab

    assignments in the course TDDC33 Design for Test of Digital Systems. The tools that are used in this

    course are listed in Table 1. For the synthesis, automatic test pattern generation (ATPG), and design

    for test (DFT), the core cells from AMS 0.35m [1] standard cell library will be used together with

    the test library c35_CORELIB.atpg. A design named s27 will be used as an example throughout these

    instructions. The s27 design is described in VHDL (s27.vhdl) and stored in a directory named

    s27_test. The name of the design and the directory will later be changed as you solve the lab

    assignments.

    The rest of this document is organized as follows. Chapter 1 contains information about how to setup

    the system in order to start the tools. The following chapters, Chapter 2 to Chapter 7, contain

    instructions for the synthesis, DFT, test pattern generation, test point insertion, and board testing,

    respectively.

    Task Tool Tool vendor

    Synthesis Leonardo Spectrum (Mentor Graphics)

    Design for test DFTAdvisor (Mentor Graphics)

    Test pattern generation FastScan (Mentor Graphics)

    Boundary Scan Trainer1149 (Testonica)

    Boundary Scan TSTAP-Studio (SAAB Aerotech)

    Table 1 Covered tools

  • TDDC33 Design for Test of Digital Systems 4

    2. Initial preparations

    The following commands are all executed in a terminal window.

    Add the modules /mentor/tessent and mentor/fpgadv if they are missing.

    To check which modules are already loaded issue the following command:

    module list

    If the modules /mentor/tessent and mentor/fpgadv are missing from the list, use the following

    command to add the modules.

    module add prog/mentor/fpgadv module add prog/mentor/tessent

    Note! If you have added the modules by yourself, then each time you close the terminal window you

    will need to add them again. To avoid adding the modules each time you close the terminal window,

    use the following command:

    module initadd prog/mentor/fpgadv module initadd prog/mentor/tessent

    Observe that these commands do not add the modules instantly, instead the modules /mentor/tessent

    and mentor/fpgadv will be loaded by default from the next time you login to your account.

    Make a directory s27_test

    mkdir s27_test

    Download and extract the required files. (Described in the labs)

    Download the labX.tar.gz file where X is the number of the lab gunzip labX.tar.gz tar xvf labX.tar Copy the following files to the s27_test directory:

    c35_CORELIB.atpg

    fflop.vhd

    gates.vhd

    s27.vhdl

    Set the environment variable MODEL_TECH

    setenv MODEL_TECH /sw/mentor/fpgadv/6.2/Modeltech/bin

    Generate the work directory

    $MODEL_TECH/vlib work

    Compile the vhdl files

    $MODEL_TECH/vcom -93 fflop.vhd $MODEL_TECH/vcom -93 gates.vhd $MODEL_TECH/vcom s27.vhdl

  • TDDC33 Design for Test of Digital Systems 5

    3. Synthesis

    This chapter describes the synthesis procedure using Leonardo Spectrum from Mentor Graphics. It is

    assumed that the initial preparations, described in the Chapter 2, have been made.

    3.1. Input

    A compiled VHDL-file

    3.2. Output

    A synthesized Verilog netlist

    3.3. Synthesis procedure

    Start the synthesis program from a command prompt

    leonardo & Click OK

    In the Quick Setup tab

    Select library file:

    technology->ASIC->AMS->c35_CORELIB

    Select input file

    Input->Open files: Select the vhdl file (s27.vhd)

    Select the name of the output file

    s27.v

    In the Advanced tab

    Output -> Format->Verilog

    In the Quick Setup tab

    Check that the Optimize Effort is set to Fastest Runtime Check that the output filename is correct

    Start synthesis

    Run Flow Check the results from the synthesis in the Exemplar.log file Check that the Verilog file (s27.v) was generated

  • TDDC33 Design for Test of Digital Systems 6

    Figure 1 Synthesis Setup (Quick Tab)

    Figure 2 Synthesis setup (Advanced Tab)

  • TDDC33 Design for Test of Digital Systems 7

    4. Design for test using DFTAdvisor

    This chapter describes how to perform scan chain insertion using DFTAdvisor tool from Mentor

    Graphics.

    4.1. Input

    A design netlist (Verilog netlist)

    Library file

    4.2. Output

    A new design netlist

    ATPG setup files (dofile and procedure file)

    4.3. Starting DFTAdvisor

    Invoke DFTAdvisor from the command prompt

    dftadvisor netlist_file lib c35_CORELIB.ATPG

    Note! The command is issued from a working directory that contains both the netlist_file and the

    library file (c35_CORELIB.ATPG)

    By default, the tool enters the SETUP mode. In this mode, the user can give further inputs to the tool

    regarding the design that is provided, i.e. specify the primary inputs and outputs, specify clocks etc.

    The tool is able to directly identify the primary inputs and outputs, but further inputs are required to

    specify the clocks. To check the primary inputs and outputs that the tool has identified try the

    following commands:

    report primary inputs

    report primary outputs

    Next, we present how to specify clocks.

    4.4. Circuit Setup

    To specify the clocks, issue the following command:

    add clocks off_state pin_pathname

    where off_state represents the pin value (0 or 1) that results in a scan elements clock input being at its

    inactive state (for latches) or state prior to a capturing transition (for edge-triggered devices), and

    pin_pathname represents a primary input pin that is to be assigned as a clock pin.

    Example:

    add clocks 0 CLK

    Once all clocks are added, the circuit setup is completed, and we can continue working with the tool

    and insert scan chains. To do that, we need to switch the system mode to DFT. We set the new system

    mode by issuing the following command:

    set system mode dft

    4.5. Test Synthesis

    In this section, we provide the commands that are required to insert scan chains into your design using

    DFTAdvisor. Regarding scan chain insertion, we will describe the steps to perform a full scan

    insertion, where all scannable elements are connected in a single scan chain, and partial scan

    insertion where a number of scannable elements are stitched in a single chain.

  • TDDC33 Design for Test of Digital Systems 8

    4.5.1 Full Scan Insertion

    To setup full scan insertion run the following commands:

    setup scan identification full_scan

    run

    After running these commands, in the command window you will get a brief report stating the number

    of sequential elements that were identified in your design and how many of them have been converted

    into scan cells. Next, we insert the test logic in the design by issuing the following command:

    insert test logic

    This command adds the new primary inputs and outputs to the circuit, replaces the sequential

    elements into scan cells, and connects the scan cells in a single chain. To save the modified design,

    you use the command:

    write netlist filename

    The new design has the scan chains included. To be able to run an ATPG for the scannable design,

    there are some further inputs that are to be given to the ATPG tool (FastScan in this case) so that it

    can identify the presence of the scan chains, and get to know how the scan operations are to be

    performed. This information is included in the ATPG setup files (the procedure file and the dofile).

    To save these files, use the following command:

    write atpg setup basename

    After running this command, two files are generated: basename.testproc (a file that contains the

    information of how to perform the scan operations) and basename.dofile (a file that informs the

    ATPG tool for the existence of scan circuitry in the design)

    4.5.2 Partial Scan Insertion

    To add partial scan, you need to first write a configuration file, where you explicitly select how many

    and which memory elements to be converted into scan cells and connected in a scan chain. Note that

    this you do manually, due to the lack of the tool to automatically run partial scan insertion. In the ideal

    case, when a tool supports automatic partial scan insertion, the tool can select the specified number of

    memory elements, which is given by the user as a number or maybe a percentage, by applying some

    algorithm and performing some analysis so that it selects only the most important memory elements

    to be converted into scan cells. For example, SCOAP can be used to identify which memory elements

    are the best to be converted into scan cells and connected in a scan chain, so that the fault coverage is

    maximized. Next, we describe how to write this configuration file to perform partial scan insertion.

    The configuration file is a text file that contains lines, each of them with three parameters:

    instance_pathname cell_id chain_id

    instance_pathname - A string that specifies the name of the non-scan cell that you want DFTAdvisor

    to put in the scan chain. To find instance_pathname open the netlist file and read its contents.

    cell_id - An integer that specifies the placement of the instance_pathname in relation to other

    instance_pathnames. DFTAdvisor places the instance having the smallest cell_id closest to the scan

    chain output. All instances in the same chain must have unique cell_ids.

    chain_id - An integer that specifies the scan chain in which you want DFTAdvisor to place the

    instance_pathname. DFTAdvisor places instances with the same chain_id in the same chain.

  • TDDC33 Design for Test of Digital Systems 9

    Once you have prepared the configuration file you only need to insert the test logic that is specified

    there. To do this, use the following command:

    insert test logic config_file

    where config_file stands for the configuration file that you have written. Next you need to do, is to

    write the netlist file and the atpg setup files, as described in the previous section.

  • TDDC33 Design for Test of Digital Systems 10

    5. Fault Coverage Analysis and Test Pattern Generation using FastScan

    This chapter describes the fault coverage analysis and test pattern generation process using FastScan

    from Mentor Graphics. It is assumed that the initial preparations, described in Chapter 2, have been

    made.

    5.1. Input

    A design netlist (Verilog netlist)

    Library file

    External test patterns (optional)

    Command files: dofile and testproc file (optional)

    5.2. Output

    Test patterns

    Fault coverage

    5.3. Writing test patterns

    Manually crafted test patterns should be written in a text file using the following format:

    Combinational design (c17 design)

    ASCII_PATTERN_FILE_VERSION = 2;

    SETUP =

    declare input bus "PI" = "/INP[0]", "/INP[1]", "/INP[2]", "/INP[3]",

    "/INP[4]";

    declare output bus "PO" = "/OUTP[0]", "/OUTP[1]";

    end;

    SCAN_TEST =

    pattern = 0;

    force "PI" "10010" 0;

    measure "PO" "00" 1;

    pattern = 1;

    force "PI" "10010" 0;

    measure "PO" "00" 1;

    end;

  • TDDC33 Design for Test of Digital Systems 11

    Sequential design (could be the s27 design)

    ASCII_PATTERN_FILE_VERSION = 2;

    SETUP =

    declare input bus "PI" = "/INP[0]", "/INP[1]", "/INP[2]", "/INP[3]",

    "/H";

    declare output bus "PO" = "/OUTP[0]";

    clock "/H" =

    off_state = 0;

    pulse_width = 1;

    end;

    end;

    SCAN_TEST =

    pattern = 0 clock_sequential ;

    force "PI" "01110" 0;

    pulse "/H" 1;

    force "PI" "11010" 2;

    measure "PO" "1" 3;

    pattern = 1 clock_sequential ;

    force "PI" "01010" 0;

    pulse "/H" 1;

    force "PI" "10110" 2;

    measure "PO" "1" 3;

    end;

    5.4. Starting FastScan

    To invoke FastScan use the following command:

    fastscan netlist_file lib c35_CORELIB.ATPG

    By default, the tool enters the SETUP system mode, where you can provide more inputs to the tool

    regarding the design for which you intend to perform fault simulation or want to run automatic test

    pattern generation.

    5.5. Circuit setup

    If you are about to work with a sequential design, then you are supposed to specify which of the

    primary inputs represent the clock pins. To specify clocks, use the following command:

    add clocks off_state pin_pathname

    where off_state represents the pin value (0 or 1) that results in a scan elements clock input being at its

    inactive state (for latches) or state prior to a capturing transition (for edge-triggered devices), and

    pin_pathname represents a primary input pin that is to be assigned as a clock pin.

    Example:

    add clocks 0 CLK

  • TDDC33 Design for Test of Digital Systems 12

    If you are about to work with a design that contains scan chains, and you want the ATPG tool to use

    these test feature while generating the patterns, then you need to provide the dofile to the tool by

    issuing the following command:

    dofile filename.dofile

    Once you are done with the circuit setup, you can continue further with either running fault

    simulation, in which case you should switch to the FAULT system mode, or running the ATPG

    process, in which case you should switch to the ATPG system mode. Switching the system mode is

    done by using the following command:

    set system mode $SM

    where $SM denotes one of the following system modes: SETUP, GOOD, FAULT and ATPG.

    5.6. Fault simulation

    To perform fault simulation, you need to make sure that you have set the system mode to FAULT.

    Before you run fault simulation, you need to specify the type of faults that you would like to be

    simulated and you should add those faults in the fault list which will later be used by the tool to

    identify which of them have been detected using the set of test patterns that you supply to the tool. To

    add faults in the fault list, use the following command:

    add faults -all -stuck_at 01

    The given command adds all stuck_at faults for the provided netlist, meaning that at each fault site

    (each net in the netlist) it considers both the stack_at 1 and stuck_at 0 faults. Given this fault list

    during the fault simulation the tool will try to identify which of those faults are covered by the

    supplied test pattern set. To observe which are the faults that have been added in the faults list, what is

    their type and where are the fault sites in your netlist, you can use the following command:

    report faults

    To supply your own test pattern set, you should use the following command:

    set pattern source external filename

    Note! We assume that you have already created a test pattern file, using the instructions presented

    earlier in this tutorial (see 5.3. Writing test patterns).

    Once you have added the required faults in the fault list and have supplied a set of test patterns, you

    perform the fault simulation by using the following command:

    run

    To get a detailed report about the fault coverage, use the following command

    report statistics

    5.7. Test pattern generation

    To perform test pattern generation, you need to make sure that you have set the system mode to

    ATPG. The next step is to add all the faults in the fault list, so that the tool can later generate test

    patterns for detecting the faults that are present in the fault list. Here is the set of commands that you

    should issue in order to generate test patterns.

    add faults -all -stuck_at 01

    create patterns

    In the reported statistics you will be able to see what is the fault coverage for the generated test

    patterns.

  • TDDC33 Design for Test of Digital Systems 13

    5.8. Results and analysis

    The following metrics are reported after running test pattern generation or fault simulation. Here is a

    brief description for each of them.

    Test Coverage - percentage of all testable faults that are detected by the patterns.

    Fault Coverage - percentage of all faults both testable and untestable that are detected by the

    patterns.

    ATPG effectiveness percentage - a measure of the ability of the ATPG tool to either provide a test

    to detect a fault, or prove that a test cannot be created.

  • TDDC33 Design for Test of Digital Systems 14

    6. Test point insertion in VHDL

    This chapter describes how the testability of a design can be improved by inserting test points. It is

    assumed that the VHDL description of a design is available.

    6.1. Input

    A design described in VHDL

    6.2. Output

    A new design with test points.

    6.3. Inserting test points

    Add the new input and output ports in the ENTITY block

    Add new signals in the ARCHITECTURE block (if needed)

    Modify the design (introduction of new gates may be required) such that the new ports are

    used to control and observe the hard-to-test parts of the design.

    Please refer to Appendix A for an example of VHDL code with inserted test points.

  • TDDC33 Design for Test of Digital Systems 15

    7. Board test using Boundary Scan (IEEE 1149.1)

    This chapter describes the boundary scan board test methodology. For the board test programming

    and test, a program called Trainer1149 from Testonica Lab is used.

    7.1. Input

    A board design, which consists of one bsdl-file for each chip and another file that contains a list of

    connections between the chips.

    7.2. Output

    A test program.

    7.3. Starting Trainer1149

    Verify that the current installed version of java is 1.6 or higher

    java version

    module add prog/jdk/1.6

    Start the Trainer1149 program

    java jar trainer1149.jar &

    Select an existing project or make a new project

    7.4. How to use Trainer1149

    The Trainer1149 program has three different modes, Project Mode, Debug Mode, and Board Edit

    Mode. The Trainer1149 program will start in the project mode, which allows you to view and modify

    the board layout. In Figure 3, the twochips.nl netlist has been chosen in the Project Explorer.

  • TDDC33 Design for Test of Digital Systems 16

    Figure 3 Trainer1149 in Project mode

    Select appropriate item in the Mode menu to change the working mode. Another way is to use the

    toolbar buttons illustrated in Figure 4.

    Figure 4 Mode selection buttons

    In Debug Mode it is possible to perform boundary scan operations on the current design. In the Board

    Edit mode the user can create and/or modify the design. In this tutorial we focus on boundary scan

    operations in Debug Mode.

    7.5. Introducing a fault

    The Trainer1149 has a trainer function where faults can be inserted in the design. The trainer function

    is used to verify whether the test program detects the faults as intended. The following instructions

    show how to insert a stuck-at 0 in net2.

    Insert a fault in the design.

    Training->Inject Fault

    The Injection Fault window, illustrated in Figure 5, will appear.

  • TDDC33 Design for Test of Digital Systems 17

    Figure 5 Inject Fault window

    Insert the stuck-at 0 fault.

    Select Stuck-at 0 in Open Fault panel.

    Select net2 in Select net panel.

    Press Inject fault button.

    7.6. Writing and verifying a test program using the Test Constructor

    The following procedure describes how to write a test program that detects if there is a stuck-at 0 fault

    present at the net2 for the design presented in Figure 3. (to identify the net, just place the cursor over

    the wire and the label of the net will appear)

    Select the Debug Mode

    Mode->Debug

    The Test Constructor panel will appear as illustrated in Figure 6.

    Figure 6 Test Constructor panel

  • TDDC33 Design for Test of Digital Systems 18

    The buttons TLR, IR, and DR are used for test logic reset, perform scan on instruction register, and

    perform scan on data register, respectively.

    Specify the instruction and test vector.

    Select the EXTEST for chip1 and chip2.

    Specify the following vectors to detect the stuck-at 0 fault:

    Chip1 : 1111111111111111

    Chip2 : 1111111111111111

    Press the RUN button, to run the test

    After applying the test vectors, the produced test responses can be compared with the expected test

    responses and thus detect if there is a fault. An example is illustrated in Figure 7 where the stuck-at 0

    fault on net2 is detected (expected responses are the values you observe in the white boxes, while the

    produced test responses are the values you observe in the green boxes).

    If you have inserted a fault as described in Section 6.3, you can check if you have successfully

    detected it.

    Check if you have detected the fault.

    Training->Check Fault

    Select the net that you suspect has a fault

    Figure 7 Stuck-at 0 fault detected

    net 2

  • TDDC33 Design for Test of Digital Systems 19

    7.7. Writing and verifying a test program using the TAP Controller

    The following procedure describes how to write a test program that detects if there is a stuck-at 0 fault

    present at the net2 in Figure 20.

    Open the TAP Controller state machine.

    Press TAP State Diagram button

    The TAP State Diagram window will appear as illustrated in Figure 8

    Figure 8 The TAP state machine

    Specify the input signals TDI and TMS by pressing the buttons TDI(0) and TMS(0). The test clock is

    toggled by pressing TCK(0).

    Load the EXTEST instruction and apply the test vector.

    The stuck-at 0 fault is detected by applying the test procedure presented in Table 2.

    TDI(Value) TMS(Value) TCK (No. of clicks) Comment

    0 0 1 Run-Test/Idle

    0 1 2 Select IR-Scan

    0 0 2 Shift-IR

    0 0 15 Shift in EXTEST for both chips

    0 1 3 Select DR-Scan

    0 0 2 Shift-DR

    1 0 35 Shift in test vector (all 1s)

    0 1 3 Select DR-Scan

    0 0 1 Capture DR (responses captured)

    0 0 15 Shift-DR (shift out results)

    0 1 2 Update-DR

    0 0 1 Run-Test/Idle

    Table 2 Test procedure

  • TDDC33 Design for Test of Digital Systems 20

    Appendix A S27_TP VHDL Description

    ---------------------------------------------------------------------------------------------

    --This file is modified by Anders Larsson

    --Increased testability by introducing a new control point.

    --More control and/or observable points should be added to further increase the testability.

    ---------------------------------------------------------------------------------------------

    library IEEE;

    use IEEE.std_logic_1164.all;

    use work.all;

    ENTITY s27_bench IS

    PORT (

    --Add a new input

    INP: in std_ulogic_vector(0 to 4);

    OUTP : out std_ulogic_vector(0 to 0);

    H : in std_ulogic

    );

    END s27_bench ;

    ARCHITECTURE structural OF s27_bench IS

    component andg

    generic (tpd_hl : time;

    tpd_lh : time);

    port (in1, in2 : std_logic;

    out1 : out std_logic);

    end component;

    component org

    generic (tpd_hl : time;

    tpd_lh : time);

    port (in1, in2 : std_logic;

    out1 : out std_logic);

    end component;

    component xorg

    generic (tpd_hl : time;

    tpd_lh : time);

    port (in1, in2 : std_logic;

    out1 : out std_logic);

    end component;

    component xnorg

    generic (tpd_hl : time;

    tpd_lh : time);

    port (in1, in2 : std_logic;

    out1 : out std_logic);

    end component;

  • TDDC33 Design for Test of Digital Systems 21

    component nandg

    generic (tpd_hl : time;

    tpd_lh : time);

    port (in1, in2 : std_logic;

    out1 : out std_logic);

    end component;

    component norg

    generic (tpd_hl : time;

    tpd_lh : time);

    port (in1, in2 : std_logic;

    out1 : out std_logic);

    end component;

    component invg

    generic (tpd_hl : time;

    tpd_lh : time);

    port (in1 : std_logic;

    out1 : out std_logic);

    end component;

    component buffg

    generic (tpd_hl : time;

    tpd_lh : time);

    port (in1 : std_logic;

    out1 : out std_logic);

    end component;

    -- ******* Portes generiques sur le nombre d'entr

    component andg_n

    generic (n : integer ;

    tpd_hl : time ;

    tpd_lh : time);

    port (inp : std_logic_vector(0 to n-1);

    out1 : out std_logic) ;

    end component;

    component nandg_n

    generic (n : integer ;

    tpd_hl : time ;

    tpd_lh : time );

    port (inp : std_logic_vector(0 to n-1);

    out1 : out std_logic) ;

    end component;

    component org_n

    generic (n : integer ;

    tpd_hl : time ;

    tpd_lh : time) ;

    port (inp : std_logic_vector(0 to n-1);

    out1 : out std_logic) ;

    end component;

  • TDDC33 Design for Test of Digital Systems 22

    component norg_n

    generic (n : integer ;

    tpd_hl : time ;

    tpd_lh : time) ;

    port (inp : std_logic_vector(0 to n-1);

    out1 : out std_logic) ;

    end component;

    component xorg_n

    generic (n : integer ;

    tpd_hl : time ;

    tpd_lh : time) ;

    port (inp : std_logic_vector(0 to n-1);

    out1 : out std_logic) ;

    end component;

    component xnorg_n

    generic (n : integer ;

    tpd_hl : time ;

    tpd_lh : time) ;

    port (inp : std_logic_vector(0 to n-1);

    out1 : out std_logic) ;

    end component;

    component DFFC

    generic (tpd_hl : time;

    tpd_lh : time);

    port (DFFC,H,C : std_logic;

    Q : out std_logic);

    end component;

    component DFF

    generic (tpd_hl : time;

    tpd_lh : time);

    port (D,H : std_logic;

    Q : out std_logic);

    end component;

    component TFFC

    generic (tpd_hl : time;

    tpd_lh : time);

    port (T,H,C : std_logic;

    Q : out std_logic);

    end component;

    signal INTERP : std_ulogic_vector(0 to 11):=(others=>'0') ;

    signal OUTPI : std_ulogic_vector(OUTP'range):=(others=>'0') ;

  • TDDC33 Design for Test of Digital Systems 23

    BEGIN

    DFF0 : DFF generic map (1 ns,1 ns)

    port map (

    D => INTERP(1),

    H => H,

    Q => INTERP(0));

    DFF1 : DFF generic map (1 ns,1 ns)

    port map (

    D => INTERP(3),

    H => H,

    Q => INTERP(2));

    DFF2 : DFF generic map (1 ns,1 ns)

    port map (

    D => INTERP(5),

    H => H,

    Q => INTERP(4));

    INV0 : INVG generic map (1 ns,1 ns)

    port map (

    in1 => INP(0),

    out1 => INTERP(6));

    INV1 : INVG generic map (1 ns,1 ns)

    port map (

    in1 => INTERP(3),

    out1 => OUTPI(0));

    AND0 : ANDG_N generic map (2,1 ns,1 ns)

    port map (

    inp(0) => INTERP(6),

    inp(1) => INTERP(2),

    out1 => INTERP(7));

    OR0 : ORG_N generic map (2,1 ns,1 ns)

    port map (

    inp(0) => INTERP(9),

    inp(1) => INTERP(7),

    out1 => INTERP(8));

    OR1 : ORG_N generic map (2,1 ns,1 ns)

    port map (

    inp(0) => INP(3),

    inp(1) => INTERP(7),

    out1 => INTERP(10));

    NAND0 : NANDG_N generic map (2,1 ns,1 ns)

    port map (

    inp(0) => INTERP(10),

    inp(1) => INTERP(8),

    out1 => INTERP(11));

  • TDDC33 Design for Test of Digital Systems 24

    NOR0 : NORG_N generic map (2,1 ns,1 ns)

    port map (

    inp(0) => INTERP(6),

    inp(1) => INTERP(3),

    out1 => INTERP(1));

    NOR1 : NORG_N generic map (2,1 ns,1 ns)

    port map (

    inp(0) => INTERP(0),

    inp(1) => INTERP(11),

    out1 => INTERP(3));

    NOR2 : NORG_N generic map (2,1 ns,1 ns)

    port map (

    inp(0) => INP(1),

    inp(1) => INTERP(4),

    out1 => INTERP(9));

    NOR3 : NORG_N generic map (2,1 ns,1 ns)

    port map (

    inp(0) => INP(2),

    inp(1) => INTERP(9),

    out1 => INTERP(5));

    BUFFER_OUT : OUTP '0') ;

    signal OUTPI : std_ulogic_vector(OUTP'range):=(others=>'0') ;

    BEGIN

    REGVECT : BLOCK (H='1' AND NOT H'STABLE)

    BEGIN

    DFF3 : INTERP(0)

  • TDDC33 Design for Test of Digital Systems 25

    References

    [1] http://asic.austriamicrosystems.com/databooks/c35/databook_c35_33/, April 2006.