记录DFT见闻
Bridging Fault
What are not bridging fault
1. BF does not consider shorts to power and group
2. BF does not consider defect resistance value
3. BF does not consider Intra-cell(intra-gate) defects
BF is gate-level, not transistor-level fault model
4. BF does not distinguish between fanout stem and branches
5. BF is not transient fault
Need to identify pairs of neighbor signals from layout
Fault extraction
Like below:
I_ORCA_TOP/I_PCI_READ_FIFO/U164/A1 I_ORCA_TOP/I_PCI_READ_FIFO/U164/A2
I_ORCA_TOP/I_PCI_READ_FIFO/U164/A1 I_ORCA_TOP/I_PCI_READ_FIFO/U164/Z
I_ORCA_TOP/I_PCI_READ_FIFO/U164/A2 I_ORCA_TOP/I_PCI_READ_FIFO/U164/
One pattern test for stuck-at fault, two-pattern test for delay test(one pattern for initialize circuit state; second pattern for launch transition, propagate fault effect to output)
Example 1 Script for Bridging Faults
# read netlist and libraries, build, run_drc
read_netlist design.v -delete
run_build_model design
run_drc design.spf
# bridging faults
set_faults -model bridging
# allow instance input pins to be valid victim sites
set_faults -bridge_input
# to optimize strengths during atpg
set_atpg -optimize_bridge_strengths
# read in fault list
add_faults -node_file nodes.txt
# run atpg with merging
set_atpg -merge high
run_atpg -auto_compression
# write the bridging patterns out
write_patterns bridge_pat.bin -format binary -replace
# now fault simulate bridge patterns with stuck-at faults
# this part is intended to reduce the set of patterns by not generating
# patterns for stuck-at faults detected by the bridging patterns
remove_faults -all
set_faults -model stuck
add_faults -all
# read in bridging pattern
set_patterns -external bridge_pat.bin
# fault simulate
run_fault_sim
# generate additional stuck-at patterns
set_atpg -merge high
set_patterns -internal
run_atpg -auto_compression
Untestable faults
examples of untestable faults:
1. redundant circuitry
2. unused output or tied input
3. hazard control circuitry
4. error control circuitry
5. ATPG constraints
report_nofaults -all #Use this command to report faults that have the nofault attribute
TEST> add_nofaults -module MUX2H -stuck 1 SL
4 faults were added to nofault list.
TEST> report_nofaults -all
sa1 ** mux0/SL
sa1 ** mux1/SL
sa1 ** mux2/SL
sa1 ** mux3/SL
TEST> report_nofaults mux2
sa1 ** mux2/SL
Example Script for Combining Multiple Fault Models in a Single Run
########################################################################################
#
# Example script for running TetraMAX performing multi-fault ATPG
# -Script is for use in Tcl mode TetraMAX
# -Script is for system clock launch Transition/SDD fault ATPG
# -Script includes Power Aware ATPG settings
# -Script for use with TetraMAX 2008.09-SP1 or later
#
# Script performs the following steps
# 1. Runs Path Delay ATPG and stores patterns stand-alone
# 2. Runs combined SDD/Transition ATPG
# 3. Fault grades SDD/Transition patterns against Dynamic Bridge model
# 4. Generates additional Dynamic Bridge fault patterns
# 5. Fault grades all at-speed patterns against stuck-at model
# 6. Generates additional stuck-at patterns
# 7. Fault grades at-speed and stuck-at patterns against bridging fault model
# 8. Generates additional bridging fault patterns
########################################################################################
# Define a logfile for run
set_messages -log multi_fault_atpg.log -replace
# Read Libraries
read_netlist my_cell_lib.v
read_netlist my_tmax_ram_lib.v
# Read netlist
read_netlist my_design.v
# If working with Fault coverage, do not remove unused gates during build
# by removing comment from following command
# set_build -nodelete_unused_gates
# Build image of design in memory
run_build_model MY_TOP_LEVEL
# Optionally Enable low power shift
set_atpg -fill adjacent
set_atpg -chain_tes