Lab Instructions Design for Test of Digital Systems TDDC33

advertisement
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
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
1
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
2
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.35µm [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
Synthesis
Design for test
Test pattern generation
Boundary Scan
Boundary Scan
Tool
Leonardo Spectrum
DFTAdvisor
FastScan
Trainer1149
TSTAP-Studio
Tool vendor
(Mentor Graphics)
(Mentor Graphics)
(Mentor Graphics)
(Testonica)
(SAAB Aerotech)
Table 1 Covered tools
TDDC33 Design for Test of Digital Systems
3
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
4
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
5
Figure 1 Synthesis Setup (Quick Tab)
Figure 2 Synthesis setup (Advanced Tab)
TDDC33 Design for Test of Digital Systems
6
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 element’s 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
7
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
8
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
9
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
10
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 element’s 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
11
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
12
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
13
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
14
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
15
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
16
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
17
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
net 2
Figure 7 Stuck-at 0 fault detected
TDDC33 Design for Test of Digital Systems
18
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)
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
1
0
0
1
0
0
1
0
1
2
2
15
3
2
35
3
1
15
2
1
Comment
Run-Test/Idle
Select IR-Scan
Shift-IR
Shift in EXTEST for both chips
Select DR-Scan
Shift-DR
Shift in test vector (all 1’s)
Select DR-Scan
Capture DR (responses captured)
Shift-DR (shift out results)
Update-DR
Run-Test/Idle
Table 2 Test procedure
TDDC33 Design for Test of Digital Systems
19
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
20
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
21
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
22
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
23
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 <= OUTPI;
END structural ;
ARCHITECTURE rtl OF s27_bench IS
--Increase the number of signal wires (from 11 to 12)
signal INTERP : std_ulogic_vector(0 to 12):=(others=>'0') ;
signal OUTPI : std_ulogic_vector(OUTP'range):=(others=>'0') ;
BEGIN
REGVECT : BLOCK (H='1' AND NOT H'STABLE)
BEGIN
DFF3 : INTERP(0) <= GUARDED INTERP(12) after 1 ns;
DFF4 : INTERP(2) <= GUARDED INTERP(3) after 1 ns;
DFF5 : INTERP(4) <= GUARDED INTERP(5) after 1 ns;
END BLOCK ;
INV2 : INTERP(6) <= NOT(INP(0)) after 1 ns;
INV3 : OUTPI(0) <= NOT(INTERP(3)) after 1 ns;
AND1 : INTERP(7) <= INTERP(6) AND INTERP(2) after 1 ns;
OR2 : INTERP(8) <= INTERP(9) OR INTERP(7) after 1 ns;
OR3 : INTERP(10) <= INP(3) OR INTERP(7) after 1 ns;
NAND1 : INTERP(11) <= NOT(INTERP(10) AND INTERP(8)) after 1 ns;
NOR4 : INTERP(1) <= NOT(INTERP(6) OR INTERP(3)) after 1 ns;
NOR5 : INTERP(3) <= NOT(INTERP(0) OR INTERP(11)) after 1 ns;
NOR6 : INTERP(9) <= NOT(INP(1) OR INTERP(4)) after 1 ns;
NOR7 : INTERP(5) <= NOT(INP(2) OR INTERP(9)) after 1 ns;
-- Add the control point
OR4 : INTERP(12) <=INP(4) OR INTERP(1) after 1 ns;
BUFFER_OUT : OUTP <= OUTPI;
END rtl ;
TDDC33 Design for Test of Digital Systems
24
References
[1] http://asic.austriamicrosystems.com/databooks/c35/databook_c35_33/, April 2006.
TDDC33 Design for Test of Digital Systems
25
Download