Proect-2 Async - Fifo - Sherin
Proect-2 Async - Fifo - Sherin
Async_fifo
Submitted by
Sherin C George
(sherindft5)
DFT-5 Page 1
Async_fifo
CONTENTS
TITLE PAGE.NO:
DFT-5 Page 2
Async_fifo
Atspeed-loc scan serial Simulation ................................................ 51
Atspeed-loc scan parallel Simulation ..............................................52
7. Simulation Debug ................................................................................. 54
Stuck_at chain serial Simulation ...................................................... 54
Stuck_at chain parallel Simulation .................................................... 57
Stuck_at scan serial Simulation......................................................... 58
Stuck_at scan parallel Simulation ..................................................... 63
Atspeed-loc scan serial Simulation .................................................... 66
Atspeed-loc scan parallel Simulation .................................................69
8. Conclusion ............................................................................................. 73
DFT-5 Page 3
Async_fifo
OBJECTIVE OF PROJECT
Perform Scan insertion, Scan compression, ATPG pattern generation, simulation and
simulation Debug for the Input File async_fifo.vg (netlist), async_fifo_edt.vg (Synthesized
EDT), and adk.tcelllib (ATPG Library), Adk.v (Simulation Library).
DFT-5 Page 4
Async_fifo
1. SCAN INSERTION
Tool used: Mentor Graphics- Tessent scan pro
# putty window #
# Xming window #
tessent –shell –log SCAN .log // This command is used to invoke the tool
Scan insertion:
Scan insertion involves replacing sequential elements with scannable sequential
elements (scan cells) and then stitching the scan cells together into scan registers,
or scan chains. Then use these scan cells to shift data in and out when the design is
in scan mode.
DFT-5 Page 5
Async_fifo
read_verilog async_fifo.vg
read_cell_library adk.tcelllib
set_current_design a_fifo
set_design_level physical_block
set_system_mode insertion
DFT-5 Page 6
Async_fifo
here using two clocks w_clk and r_clk
add_clocks 0 reset
#To set initial value of SCAN_EN as active high
set_scan_insertion_options -chain_length 54
#check DRC’s
check_design_rules
DFT-5 Page 7
Async_fifo
S1_1 violations:
DFT-5 Page 8
Async_fifo
Note: Clock is the issue: Clock should be controllable from the top level. Here, clock is
coming from other flop. We can fix the problem by using mux.
S1_2 violations:
Note: In this Clock is tied to (x), no connection to the clock pin. We can fix this issue by
using an MUX
DFT-5 Page 9
Async_fifo
S1_3 violations:
S1_4 violations
DFT-5 Page 10
Async_fifo
:
S1_5 violations:
Note: Here a feedback loop is presented. We can fix this by using mux.
DFT-5 Page 11
Async_fifo
S1_6 violations:
S1_7 violations:
DFT-5 Page 12
Async_fifo
Note: In this Reset is tied to (x), no connection to the Reset pin. We can fix this issue
by using MUX
S1_8 violations:
DFT-5 Page 13
Async_fifo
Note: A feedback loop is presented from Q to Clock. We can fix this issue by using a
mux.
S1_9 violations:
Note: Clock and Reset is coming from same output Y(x): Clock and Reset should be
controllable from the top level. We can fix the problem by using mux.
S1_10 violations:
DFT-5 Page 14
Async_fifo
set_system_mode insertion
DRC FIX 1:
delete_connections \ f_memory_reg[62][7]/CLK
DFT-5 Page 15
Async_fifo
DRC FIX 2:
delete_connections f_memory_reg[62][1]/CLK
create_instance DRC_MUX_FIX2 -of_module mux21
create_connections DRC_MUX_FIX2/Y f_memory_reg[62][1]/CLK
create_connections DRC_MUX_FIX2/A0 -constant {0}
create_connections DRC_MUX_FIX2/A1 w_clk
create_connections DRC_MUX_FIX2/S0 TESTMODE
DFT-5 Page 16
Async_fifo
DRC FIX 3:
delete_connections \ f_memory_reg[62][0]/CLK
DRC FIX 4:
delete_connections \ d_out_reg[4]/CLK
DFT-5 Page 17
Async_fifo
DRC FIX 5:
delete_connections \ r_b_counter/\c_out_reg[1]/CLK
DRC FIX 6:
delete_connections \ r_b_counter/\c_out_reg[2]/CLK
DFT-5 Page 18
Async_fifo
DRC FIX 7:
delete_connections r_b_counter/\c_out_reg[7]/R
create_instance DRC_MUX_FIX7 -of_module mux21
create_connections DRC_MUX_FIX7/Y r_b_counter/\c_out_reg[7]/R
DRC FIX 8:
delete_connections \ w_b_counter/\c_out_reg[0]/CLK
DFT-5 Page 19
Async_fifo
DRC FIX 9:
delete_connections \ w_b_counter/\c_out_reg[1]/R
DFT-5 Page 20
Async_fifo
set_system_mode setup
set_scan_insertion_options -
chain_length 54 check_design_rules
analyze_scan_chains
report_scan_chains
DFT-5 Page 21
Async_fifo
# Write the Test procedure file and other dofiles required for ATPG pattern
generation
write_atpg_setup SCAN_ATPG
DFT-5 Page 22
Async_fifo
2. SCAN COMPRESSION
The scan compression technique which reduces the test time and tester memory
in whole test cost without loss in the test coverage.
Working path:
/workarea/dftclass/sherindft5/GLS_PROJECT/PROJECT_2/2.SCAN_COMPRESSION
read_cell_library adk.tcelllib
set_current_design a_fifo
dofile SCAN_ATPG.dofile
tessent_scan_setup
set_edt_options -input_channels 4
set_edt_options -output_channels
2 check_design_rules
write_edt_files a_fifo
report_scan_chains
DFT-5 Page 23
Async_fifo
report_edt_instance
s report_edt_pins
report_edt_pins >
edt_pins_info.rpt
report_edt_configurations
DFT-5 Page 24
Async_fifo
= 10/2 =5x
name open_visualizer
DFT-5 Page 25
Async_fifo
i. EDT ARCHITECTURE
The components of scan compression logics are decompressor, compactor, controller and
bypass logic and they are part of scan path.
DFT-5 Page 26
Async_fifo
ATPG stands for Automatic Test Pattern Generation, this is basically the generation
of test patterns.
Tool used: Mentor-Fast scan
Working path: /workarea/dftclass/sherindft5/GLS_PROJECT/PROJECT_2/3.ATPG
DFT-5 Page 27
Async_fifo
SCRIPT FOR ATPG PATTERN GENERATION FOR
STUCK_AT FAULT MODEL:
set_context patterns –scan / / Set context
set_system_mode analysis # Set mode to setup Again to add the DFT configuration
set_fault_type stuck # Set the fault models to stuck_at
DFT-5 Page 28
Async_fifo
report_statistics -detail > stuck_at.rpt
write_patterns Sim_Debug_Files/Stuck_Chain_Patterns/stuck_chain_serial.v -
pattern_sets chain -verilog –serial // create chain-serial pattern in Verilog format
write_patterns Sim_Debug_Files/Stuck_Chain_Patterns/stuck_chain_parallel.v -
pattern_sets chain -verilog -parallel // create chain-parallel pattern in Verilog format
write_patterns Sim_Debug_Files/Stuck_Chain_Patterns/stuck_chain_serial.stil -
pattern_sets chain -stil -serial // create chain-serial pattern in stil format
write_patterns Sim_Debug_Files/Stuck_Chain_Patterns/stuck_chain_parallel.stil -
pattern_sets chain -stil -parallel // create chain-parallel pattern in stil format
write_patterns Sim_Debug_Files/Stuck_Scan_Patterns/stuck_scan_serial.v -
pattern_sets scan -verilog -serial // create scan-serial pattern in Verilog format
write_patterns Sim_Debug_Files/Stuck_Scan_Patterns/stuck_scan_parallel.v -
pattern_sets scan -verilog -parallel // create scan-parallel pattern in Verilog format
write_patterns Sim_Debug_Files/Stuck_Scan_Patterns/stuck_scan_serial.stil -
pattern_sets scan -stil -serial // create scan-serial pattern in stil format
write_patterns Sim_Debug_Files/Stuck_Scan_Patterns/stuck_scan_parallel.stil -
pattern_sets scan -stil -parallel // create scan-parallel pattern in stil format
write_flat_model
Sim_Debug_Files/Stuck_Chain_Patterns/a_fifo_netlist.flat_stuckat.gz
write_flat_model
Sim_Debug_Files/Stuck_Scan_Patterns/a_fifo_netlist.flat_stuckat.gz
read_cell_library adk.tcelllib
set_current_design a_fifo
set_edt_options off
DFT-5 Page 29
Async_fifo
dofile SCAN_ATPG.dofile
tessent_scan_setup
add_black_boxes –auto // add the blackbox
set_system_mode analysis
set_fault_type transition #Set loc fault type transition
add_faults -all
report_faults -all > faults_ATspeed.rpt
create_patterns
report_statistics -detail
write_patterns Sim_Debug_Files/Atspeed_LOC_Chain_Patterns/loc_chain_serial.v -
pattern_sets chain -verilog -serial
DFT-5 Page 30
Async_fifo
write_patterns Sim_Debug_Files/Atspeed_LOC_Chain_Patterns/loc_chain_parallel.v
-pattern_sets chain -verilog -parallel
write_patterns Sim_Debug_Files/Atspeed_LOC_Chain_Patterns/loc_chain_serial.stil
-pattern_sets chain -stil -serial
write_patterns
Sim_Debug_Files/Atspeed_LOC_Chain_Patterns/loc_chain_parallel.stil -pattern_sets
chain -stil -parallel
write_patterns Sim_Debug_Files/Atspeed_LOC_Scan_Patterns/loc_scan_serial.v -
pattern_sets scan -verilog -serial
write_patterns Sim_Debug_Files/Atspeed_LOC_Scan_Patterns/loc_scan_parallel.v -
pattern_sets scan -verilog -parallel
write_patterns Sim_Debug_Files/Atspeed_LOC_Scan_Patterns/loc_scan_serial.stil -
pattern_sets scan -stil -serial
write_patterns Sim_Debug_Files/Atspeed_LOC_Scan_Patterns/loc_scan_parallel.stil
-pattern_sets scan -stil –parallel
write_flat_model
Sim_Debug_Files/Atspeed_LOC_Chain_Patterns/a_fifo_netlist_LOC.flat.gz -replace
write_flat_model
Sim_Debug_Files/Atspeed_LOC_Scan_Patterns/a_fifo_netlist_LOC.flat.gz –replace
Note: The value of Atspeed-loc is less when compared to stuck. This is due to
the presence of false paths and multicycle paths.
DFT-5 Page 31
Async_fifo
dofile a_fifo_edt.dofile // Read dofile
set_system_mode analysis // Set mode to setup Again to add the DFT configuration
set_fault_type stuck // Set the fault models to stuck_at
write_patterns Sim_Debug_Files1/Stuck_Scan_Patterns/stuck_scan_serial.stil -
pattern_sets scan -stil -serial -replace
write_patterns Sim_Debug_Files1/Stuck_Scan_Patterns/stuck_scan_parallel.stil -
pattern_sets scan -stil -parallel –replace
read_cell_library adk.tcelllib
read verilog SCAN_INSERTED.vg
read_verilog async_fifo_edt.vg
read_verilog a_fifo_edt_top.v
set_current_design a_fifo_edt_top
set_edt_options on
dofile a_fifo_edt.dofile
set_system_mode analysis
set_fault_type transition
add_faults -all
DFT-5 Page 33
Async_fifo
create_patterns
write_patterns Sim_Debug_Files1/Atspeed_LOC_Chain_Patterns/loc_chain_serial.v
-pattern_sets chain -verilog -serial -rep
write_patterns
Sim_Debug_Files1/Atspeed_LOC_Chain_Patterns/loc_chain_parallel.v -pattern_sets
chain -verilog -parallel -rep
write_patterns
DFT-5 Page 34
Async_fifo
Sim_Debug_Files1/Atspeed_LOC_Chain_Patterns/loc_chain_serial.stil -pattern_sets
chain -stil -serial -rep
write_patterns
Sim_Debug_Files1/Atspeed_LOC_Chain_Patterns/loc_chain_parallel.stil -
pattern_sets chain -stil -parallel -rep
write_patterns Sim_Debug_Files1/Atspeed_LOC_Scan_Patterns/loc_scan_serial.v -
pattern_sets scan -verilog -serial -rep
write_patterns Sim_Debug_Files1/Atspeed_LOC_Scan_Patterns/loc_scan_parallel.v
-pattern_sets scan -verilog -parallel -rep
write_patterns Sim_Debug_Files1/Atspeed_LOC_Scan_Patterns/loc_scan_serial.stil
-pattern_sets scan -stil -serial -rep
write_patterns
Sim_Debug_Files1/Atspeed_LOC_Scan_Patterns/loc_scan_parallel.stil -pattern_sets
scan -stil -parallel -rep
Note: If don’t have ATPG DRC, then proceed for pattern generation. We can use
sim_Debug_Files1 for checking serial and parallel pattern.
DFT-5 Page 35
Async_fifo
5. PATTERN SIMULATION
Simulation is used for design verification, Generating efficient test patterns with
maximum test coverage by using ATPG, and then verifying test patterns in simulation.
vlib work //For creating new work – It keep all the compiled objects
vlog ./stuck_chain_serial.v // compile serial test bench, from this we get top
module name (ATPG pattern simulation output)
Note:
vlog-command to compile
Vsim- for elaboration and simulation
vsim –c // To know any mismatch run in command mode, then it shows “NO
error between simulated and expected pattern”
-voptargs="+acc" // Simulation Switches based on the tool
A_fifo_stuck_chain_serial_v_ctl // Top module name
-l sims_chain_serial.log // Simulation log files (Observe for simulation
mismatches). All details is recorded in the log file.
DFT-5 Page 36
Async_fifo
vsim –gui // To see the waveform in questasim window need to run in gui
mode
+nospecify +nowarmTSCALE // Additional switches for running no-timing
simulation.
Waveform:
Here we are taking compare fail, pattern count, procedure string, reset, clock, Test mode,
scan_en, si and so for generating waveform. Add some test bench signals to wave.
defined.
Si // scan input
So // scan output
Waveform:
Data will be directly loaded to ‘si’ pins, data will be loaded before scan clocks
come, then unloaded at the output.
Here, having w_clk and r_clk for loading and w_clk and r_clk for unloading
and scan_en is ‘1’ throughout.
vlib work
vlog Adk.v
vlog SCAN_INSERTED.vg
vlog ./stuck_scan_serial.v
DFT-5 Page 38
Async_fifo
vsim -c -voptargs="+acc" a_fifo_stuck_scan_serial_v_ctl -l sims_scan_serial.log
+nospecify +nowarmTSCALE -do "run -all"
vlib work
vlog Adk.v
vlog SCAN_INSERTED.vg
vlog ./stuck_scan_parallel.v
DFT-5 Page 39
Async_fifo
Waveform: Here, one loading cycle, one capture and one unloading is present.
vlog Adk.v
vlog SCAN_INSERTED.vg
vlog ./loc_chain_serial.v
DFT-5 Page 40
Async_fifo
vlib work
vlog Adk.v
vlog SCAN_INSERTED.vg
vlog ./loc_chain_parallel.v
DFT-5 Page 41
Async_fifo
Waveform: Here, w_clk and r_clk for loading and w_clk and r_clk for unloading and
scan_en is ‘1’ throughout.
vlib work
vlog Adk.v
vlog SCAN_INSERTED.vg
vlog ./loc_scan_serial.v
vsim -c -voptargs="+acc" a_fifo_loc_scan_serial_v_ctl -l
sims_scan_loc_serial.log +nospecify +nowarmTSCALE -do "run -all"
vsim -gui -voptargs="+acc" a_fifo_loc_scan_serial_v_ctl -l
sims_scan_loc_serial.log +nospecify +nowarmTSCALE &
Waveform: Here, First two pattern is reset pattern then, 2 atspeed clock pulse
presented at the capture cycle.
DFT-5 Page 42
Async_fifo
vlib work
vlog Adk.v
vlog SCAN_INSERTED.vg
vlog ./loc_scan_parallel.v
DFT-5 Page 43
Async_fifo
Waveform: Here, First two pattern is reset pattern then, atspeed clock pulse
presented at the capture cycle.
DFT-5 Page 44
Async_fifo
Scan compression is mandatory in order to significantly reduce the overall test time. It results
of two different scan modes that can be used for a given design: bypass and compress mode.
Only bypass pattern are transiting as it along the scan chain, meaning that a data shift from a
scan input can be easily followed flip-flop after flip-flop until the data is going out of the design
through a scan output. When validated that the bypass shift is working as expected, can move
to compression bypass capture simulation and other scan modes (compressed) simulation. All
those simulation are performed in serial mode; most of the patterns are then simulated in
parallel mode since only the capture phase is then to verify.
rm -rf work
vlib work
vlog Adk.v
vlog SCAN_INSERTED.vg
vlog async_fifo_edt.vg
vlog a_fifo_edt_top.v
vlog ./stuck_chain_serial.v
vsim -c -voptargs="+acc" a_fifo_edt_top_stuck_chain_serial_v_ctl -l
sims_stuck_chain_edt_serial.log +nospecify +nowarmTSCALE -do "run -all"
vsim -gui -voptargs="+acc" a_fifo_edt_top_stuck_chain_serial_v_ctl -l
sims_stuck_chain_edt_serial.log +nospecify +nowarmTSCALE
DFT-5 Page 45
Async_fifo
Note: In serial, here the chain pattern is not 0011 when compared to without EDT.
EDT compressed stimulai reached at decompressor. The pattern which reached at
decompressor is shuffled and it gives to internal chains. 8 chain pattern is presented
here.
2. Stuck_at chain parallel Simulation-EDT
rm -rf work
vlib work
vlog Adk.v
vlog SCAN_INSERTED.vg
vlog async_fifo_edt.vg
vlog a_fifo_edt_top.v
vlog ./stuck_chain_parallel.v
vsim -c -voptargs="+acc" a_fifo_edt_top_stuck_chain_parallel_v_ctl -l
sims_chain_parallel.log +nospecify +nowarmTSCALE -do "run -all"
vsim -gui -voptargs="+acc" a_fifo_edt_top_stuck_chain_parallel_v_ctl -l
sims_chain_parallel.log +nospecify +nowarmTSCALE
Note: In chain parallel input values are forced directly to the SI pin of each flip-flop
and the output is directly measured from the Q pin of each flop.
DFT-5 Page 46
Async_fifo
rm -rf work
vlib work
vlog Adk.v
vlog SCAN_INSERTED.vg
vlog async_fifo_edt.vg
vlog a_fifo_edt_top.v
vlog ./stuck_scan_serial.v
vsim -c -voptargs="+acc" a_fifo_edt_top_stuck_scan_serial_v_ctl -l
sims_scan_serial.log +nospecify +nowarmTSCALE -do "run -all"
vsim -gui -voptargs="+acc" a_fifo_edt_top_stuck_scan_serial_v_ctl -l
sims_scan_serial.log +nospecify +nowarmTSCALE
Note: here, the output does not follow the input. The output value depends the output
from the functional combinational logic.
DFT-5 Page 47
Async_fifo
rm -rf work
vlib work
vlog Adk.v
vlog SCAN_INSERTED.vg
vlog async_fifo_edt.vg
vlog a_fifo_edt_top.v
vlog ./stuck_scan_parallel.v
vsim -c -voptargs="+acc" a_fifo_edt_top_stuck_scan_parallel_v_ctl -l
sims_verilog_parallel.log +nospecify +nowarmTSCALE -do "run -all"
vsim -gui -voptargs="+acc" a_fifo_edt_top_stuck_scan_parallel_v_ctl -l
sims_verilog_parallel.log +nospecify +nowarmTSCALE
DFT-5 Page 48
Async_fifo
Waveform: Here, one loading cycle, one capture and one unloading is present.
rm -rf work
vlib work
vlog Adk.v
vlog SCAN_INSERTED.vg
vlog async_fifo_edt.vg
vlog a_fifo_edt_top.v
vlog ./loc_chain_serial.v
vsim -c -voptargs="+acc" a_fifo_edt_top_loc_chain_serial_v_ctl -l
sims_loc_chain_serial.log +nospecify +nowarmTSCALE -do "run -all"
DFT-5 Page 49
Async_fifo
vsim -gui -voptargs="+acc" a_fifo_edt_top_loc_chain_serial_v_ctl -l
sims_loc_chain_serial.log +nospecify +nowarmTSCALE
rm -rf work
vlib work
vlog Adk.v
vlog SCAN_INSERTED.vg
vlog async_fifo_edt.vg
vlog a_fifo_edt_top.v
vlog ./loc_chain_parallel.v
vsim -c -voptargs="+acc" a_fifo_edt_top_loc_chain_parallel_v_ctl -l
sims_LOC_chain_parallel.log +nospecify +nowarmTSCALE -do "run -all"
vsim -gui -voptargs="+acc" a_fifo_edt_top_loc_chain_parallel_v_ctl -l
sims_LOC_chain_parallel.log +nospecify +nowarmTSCALE
DFT-5 Page 50
Async_fifo
rm -rf work
vlib work
vlog Adk.v
vlog SCAN_INSERTED.vg
vlog async_fifo_edt.vg
vlog a_fifo_edt_top.v
vlog ./loc_scan_serial.v
vsim -c -voptargs="+acc" a_fifo_edt_top_loc_scan_serial_v_ctl -l
sims_scan_loc_serial.log +nospecify +nowarmTSCALE -do "run -all"
vsim -gui -voptargs="+acc" a_fifo_edt_top_loc_scan_serial_v_ctl -l
sims_scan_loc_serial.log +nospecify +nowarmTSCALE &
DFT-5 Page 51
Async_fifo
rm -rf work
vlib work
vlog Adk.v
vlog SCAN_INSERTED.vg
vlog async_fifo_edt.vg
vlog a_fifo_edt_top.v
vlog ./loc_scan_parallel.v
vsim -c -voptargs="+acc" a_fifo_edt_top_loc_scan_parallel_v_ctl -l
sims_scan_loc_parallel.log +nospecify +nowarmTSCALE -do "run -all"
vsim -gui -voptargs="+acc" a_fifo_edt_top_loc_scan_parallel_v_ctl -l
sims_scan_loc_parallel.log +nospecify +nowarmTSCALE &
DFT-5 Page 52
Async_fifo
DFT-5 Page 53
Async_fifo
SIMULATION DEBUG:
Most possible reasons for Simulation mismatches could be due to the DRC violations,
Library Problems, Timing violations and Netlist problem.
vlib work
vlog adk.v
vlog SCAN_INSERTED.vg
vlog ./stuck_chain_serial.v
Note: here we add top module. add log –r a_fifo_stuck_chain_serial_v_ctl/* then run
all the mismatches or give some time instance like, run 10000ns. Then it load
corresponding time instance mismatches and its shows scan chain output, chain name,
pattern number and simulated and expected values.
DFT-5 Page 55
Async_fifo
Here, we add pattern count, clocks, scan_en, so and si to the waveform. From this
waveform we can find that si is like 0011 pattern format and so is 1100 pattern
format. So there is an error occurred.
Consider so [0] with corresponding input value si [0]. Here so is ‘1’ and si is ‘0’, so a
mismatch is occurred at 2370ns. We add s0 [0] pin to schematic for tracing.
First we found a lockup latch and add lockup latch signals Q, D, CLK and check.
DFT-5 Page 56
Async_fifo
Here, Q and D is fine. It will operate the neg-edge of clock, at the neg-edge it seen 1.
Then we trace back through D and we found a FF as SFF. Add SFF signals SE, SI,
CLK, Q and we are trace back through SI path.
In SFF-57[2], SI is one at the posedge Q also one, so 1 cycle delay is there. Then trace
back through SI in schematic. We keep on the trace back and while we reach at SFF-
57[3] we found a mismatch.
vlog adk.v
vlog SCAN_INSERTED.vg
vlog ./stuck_chain_parallel.v
DFT-5 Page 57
Async_fifo
vsim -debugDB -gui -voptargs="+acc" a_fifo_stuck_chain_parallel_v_ctl -l
sims_chain_parallel.log +nospecify +nowarmTSCALE
Note: here, In stuck_at chain parallel simulation it shows that there is no error
between simulated and expected patterns. So in this case there is no need of
simulation debugging.
vlib work
vlog adk.v
vlog SCAN_INSERTED.vg
vlog ./stuck_scan_serial.v
Note: From this transcript we get scan chain output, time of mismatch in ns, pattern
number and simulated and expected value. Here I am considering 5490ns mismatch
ts_so[4] with simulated 1 and expected 0. First we adding pattern count, w_clk, r_clk,
scan_en and so[4] signals to the waveform.
DFT-5 Page 59
Async_fifo
Command for ATPG: By Using the ATPG Flat model, we compare simulated value
with expected value of ATPG.
From the ATPG scan_cells report we get Flipflop register name. At the wave we
found that mismatch happened at 23rd unloading and in scan_cells report we take
number 22 because it is starting from 0. here we have 54 loading and unloading cycle
(0-53). So from chain4-22 we get FF name as f_memory_reg[33][0].
DFT-5 Page 60
Async_fifo
open_vis
By using the visualiser Instance browser we load the f_memory_reg[33][0]. Set the
gate report, external pattern as 1.
DFT-5 Page 61
Async_fifo
Add the signals of FF to waveform. Signals like D, SI, SE, CLK, Q, and QB.
DFT-5 Page 62
Async_fifo
vlog adk.v
vlog SCAN_INSERTED.vg
vlog ./stuck_scan_parallel.v
DFT-5 Page 63
Async_fifo
Note: In parallel simulation it directly shows which flop is failing. Here consider
\f_memory_reg[63][6] at chain0, 14 th pattern. In this at Q is simulated ‘0’ and
expected ‘1’.
Note: In parallel simulation through SI we loading the data and Q we are strobing.
DFT-5 Page 64
Async_fifo
Note: At atpg we found a buffer from the SI pin but in the simulator schematic a NOT
gate is coming from corresponding SI pin. So the error is happened due to the NOT
gate.
DFT-5 Page 65
Async_fifo
Note: A NOT gate, often called an inverter is a digital logic gate. A NOT gate
performs logical negation on its input that is, if the input is true, then the output will
be false. Similarly, a false input results in a true output.
vlog SCAN_INSERTED.vg
vlog ./loc_scan_serial.v
vsim -debugDB -c -voptargs="+acc" a_fifo_loc_scan_serial_v_ctl -l
sims_scan_loc_serial.log +nospecify +nowarmTSCALE -do "run -all"
vsim -debugDB -gui -voptargs="+acc" a_fifo_loc_scan_serial_v_ctl -l
sims_scan_loc_serial.log +nospecify +nowarmTSCALE &
DFT-5 Page 66
Async_fifo
Note: From the x-terminal also we can find the mismatch
Note: Here, consider ts_so[0] at 2370ns and it shows simulated 1 at first unloading cycle.
First unloading cycle means 0 cell, because here the value is starts from 0-53 and
from this we get flop name.
DFT-5 Page 67
Async_fifo
DFT-5 Page 68
Async_fifo
vlog adk.v
vlog SCAN_INSERTED.vg
DFT-5 Page 69
Async_fifo
vlog ./loc_scan_parallel.v
DFT-5 Page 70
Async_fifo
DFT-5 Page 71
Async_fifo
Conclusion: For simulation debugging we are using different library format when
compared to atpg pattern generation. From the atpg visualizer we find a buffer in
between the top level scan input and the first flop of every scan chains but when comes to
simulation the buffer act as a NOT gate (an inverter). So the mismatch is happened due
to this NOT gate.
DFT-5 Page 72
Async_fifo
8. CONCLUSION
In this project, we will insert scan to some digital core and then stitching the scan cells together
into scan registers, or scan chains. Then use these scan cells to shift data in and out when the
design is in scan mode. Further, the scan compression technique is used to scan cells which
reduces the test time and tester memory in whole test cost without loss in the test coverage.
After that, develop an algorithm and run ATPG to create patterns. Then build a test model that
simulates scan test and test the chip with various vectors. Finally debug the simulation
mismatches.
DFT-5 Page 73
Async_fifo
THANK
YOU…
DFT-5 Page 74