Professional Documents
Culture Documents
Prepostsynth Flow
Prepostsynth Flow
External flow
Internal flow
Decompressor
• The decompressor resides between the
channel inputs and the scan chain inputs
of the core.
• Decompressor will take the seed from the
ATE and decompresses the seed by giving
it to the LFSM
• The decompressor consists of a LFSM
which will provide the random sequence
patterns
• These random sequence are given to the
scan chains through phase shifters
• The phase shifter will allow change the bit
of the sequence through XOR gates to
have two different chains
Compactor
• Compacts the test responses from the scan chains in your core design into a small number of scan output
channels as they are shifted out
• The compactor resides between the core scan chain outputs and the channel outputs connected to the
tester
• It primarily consists of XOR gates
EDT Controller
• EDT logic to load capture, and/or
unload values on a specified scan
chains by inserting custom logic
between the scan chain outputs and
the compactor/decompressor.
• The custom logic (masking) allows
you to either feed the desired circuit
response (0/1) to the compactor or tie
the scan chain output to an unknown
value x.
Functionality of EDT
• The seed values from the ATE is given as a input to the decompressor through the
EDT channels
• The seed values are given to the LFSM which are present in the decompressor
which would provide a sequence of patterns to the Phase shifters
• The Phase shifters allows to have randomness in the sequence that are given from
LFSM
• These random sequence are given to the input of scan chain and the output of the
scan chain is given to the compactor
• The compactor performs XOR operations on the patterns received and gives the
compressed patterns to the EDT channel out
• The ATE compares the received compressed patterns from the EDT and verifies
for any error
• By default, Bypass circuitry is included in the EDT logic. The bypass circuitry
allows you to bypass the EDT logic and accessed uncompressed scan chains in
the design core.
Operational waveform
• Operational Waveform
Requirements:-
To Create the EDT logic during RTL
stage, we must below requirements in
our design.
• Number of external scan channels.
• Number of internal scan chains.
• Longest scan chain length range:
Pre synthesis - Sample Script
#set the context
set_context dft -rtl
#Interface
set int [get_config_element interface \
#output directory -in /$spec/EDT/controller(c1)]
set_tsdb_output_directory ../outputs/tsdb_out_two_counter_rtl_edtmodes_all foreach {prop val} {edt_clock edt_clock edt_update edt_update edt_channels_in_bus edt_channels_in
read the files edt_channels_out_bus edt_channels_out} {
read_verilog ../design/counter_top.v set_config_val $prop -in $int $val }
read_verilog ../design/period_3.v set int [get_config_element StaticExternalControls \
read_verilog ../design/two_counter.v -in /$spec/EDT/controller(c1)/interface]
#read cell library foreach {prop val} {edt_bypass edt_bypass edt_single_bypass_chain edt_single_bypass_chain} {
read_cell_library ../library/dti_tm28hpc_l30_stdcells_rev0p3p0.atpg set_config_val $prop -in $int $val }
#set the current design #Bypass chains
set_current_design counter_top set int [get_config_el BypassChains \
#design level -in /$spec/EDT/controller(c1)]
set_design_level physical_block foreach {prop val} {present on bypass_chain_count 2 single_bypass_chain on} {
#Adding DFT signals set_config_val $prop -in $int $val }
add_dft_signals test_clock scan_en edt_update -source_nodes {scan_clk scan_enable_i edt_update} #compactor
add_dft_signals edt_clock shift_capture_clock -create_from_other_signals set int [get_config_element compactor \
#For adding EDT modes -in /$spec/EDT/controller(c1)]
add_dft_signals edt_mode
foreach {prop val} {type xpress} {
add_black_boxes -auto
check_design_rules set_config_val $prop -in $int $val }
# Configuring the EDT Spec stop
set spec [create_dft_specification -sri_sib_list {occ EDT}] #display specification add the below configurations
add_config_element $spec/EDT set int [get_config_el EdtChannelsIn(1) \
#connections -in /$spec/EDT/controller(c1)/Connections]
set int [get_config_el Connections \ foreach {prop val} {port_pin_name edt_channels_in1} {
-in /$spec/EDT] set_config_val $prop -in $int $val }
foreach {prop val} {edt_update edt_update} { set int [get_config_el EdtChannelsIn(2) \
set_config_val $prop -in $int $val } -in /$spec/EDT/controller(c1)/Connections]
set int [get_config_el StaticExternalControls \ foreach {prop val} {port_pin_name edt_channels_in2} {
-in /$spec/EDT/Connections] set_config_val $prop -in $int $val }
foreach {prop val} {edt_bypass edt_bypass edt_single_bypass_chain edt_single_bypass_chain} {
set int [get_config_el EdtChannelsOut(1) \
set_config_val $prop -in $int $val }
#Controller -in /$spec/EDT/controller(c1)/Connections]
add_config_element $spec/EDT/controller(c1) foreach {prop val} {port_pin_name edt_channels_out1} {
set int [get_config_el controller(c1) \ set_config_val $prop -in $int $val }
-in /$spec/EDT] set int [get_config_el EdtChannelsOut(2) \
foreach {prop val} {longest_chain_range {150 160} scan_chain_count 100 input_channel_count 2 -in /$spec/EDT/controller(c1)/Connections]
output_channel_count 2 } { foreach {prop val} {port_pin_name edt_channels_out2} {
set_config_val $prop -in $int $val } set_config_val $prop -in $int $val }
Pre synthesis - Sample Script( cont.)