116 lines
5.3 KiB
Tcl
116 lines
5.3 KiB
Tcl
set trep_persistence TRUE
|
|
set test_enable_dft_drc TRUE
|
|
set test_disable_enhanced_dft_drc_reporting false
|
|
set test_setup_additional_clock_pulse true
|
|
|
|
set hdlin_infer_mux all
|
|
##########################################################################################################################
|
|
set rm_num_scan_chains
|
|
set rm_use_scan_comp
|
|
set rm_max_length
|
|
set rm_comp_enable
|
|
set rm_clock_ports [list ]
|
|
set rm_dft_const [list ]
|
|
set rm_reset_ports [list ]
|
|
set rm_scan_enable [list ]
|
|
set rm_scan_data_in
|
|
set rm_scan_data_out
|
|
##########################################################################################################################
|
|
set_scan_configuration -add_lockup true \
|
|
-power_domain_mixing true \
|
|
-reuse_mv_cells true \
|
|
-style multiplexed_flip_flop \
|
|
-clock_mixing mix_clocks \
|
|
-chain_count $rm_num_scan_chains \
|
|
-internal_clocks multi \
|
|
-test_mode all
|
|
|
|
set_dft_configuration -scan_compression enable \
|
|
-connect_clock_gating enable
|
|
|
|
set_dft_drc_configuration -clock_gating_init_cycles 1 \
|
|
-static_x_analysis enable
|
|
|
|
set_dft_insertion_configuration -preserve_design_name true \
|
|
-synthesis_optimization none
|
|
|
|
set_scan_compression_configuration -min_power true \
|
|
-static_x_chain_isolation true \
|
|
-xtolerance high \
|
|
-max_length $rm_max_length
|
|
|
|
|
|
source -e -v $svars(dir,scripts)/read_ctl.tcl
|
|
##########################################################################################################################
|
|
set_dft_signal -view existing_dft -type ScanClock -timing {45 55} -port $rm_clock_ports -test_mode all_dft
|
|
|
|
set_dft_signal -type ScanEnable -port $rm_scan_enable -view spec -active_state 1 -test_mode all_dft
|
|
set_dft_signal -type ScanEnable -port $rm_scan_enable -view existing_dft -active_state 1 -test_mode all_dft
|
|
|
|
set_dft_signal -view existing_dft -port [get_ports ${rm_reset_ports}] -type Reset -active_state 0 -test_mode all_dft
|
|
|
|
set_dft_signal -view existing_dft -type Constant -active_state 1 -port {te} -test_mode all_dft
|
|
set_dft_signal -view existing_dft -type Constant -active_state 0 -port {bist_en} -test_mode all_dft
|
|
set_dft_signal -view existing_dft -type Constant -active_state 0 -port {zsp_iso_en} -test_mode all_dft
|
|
|
|
if { ${rm_use_scan_comp} } {
|
|
set_dft_signal -view spec -type TestMode -active_state 1 -port ${rm_comp_enable}
|
|
}
|
|
|
|
for { set i 0 } {$i < ${rm_num_scan_chains} } {incr i} {
|
|
set_dft_signal -view spec -port ${rm_scan_data_in}[$i] -type ScanDataIn -test_mode all_dft
|
|
set_dft_signal -view spec -port ${rm_scan_data_out}[$i] -type ScanDataOut -test_mode all_dft
|
|
}
|
|
|
|
set_scan_path -view spec -scan_data_in -scan_data_out
|
|
# -----------------------------------------------------------------------------------
|
|
# Perform DFT DRC
|
|
# -----------------------------------------------------------------------------------
|
|
create_test_protocol -capture_procedure multi_clock
|
|
|
|
dft_drc -verbose -pre_dft > $svars(dir,reports)/$svars(top_design)_prescan.dft
|
|
dft_drc -pre_dft > $svars(dir,reports)/$svars(top_design)_prescan.dft.summary
|
|
|
|
source -e -v /DDB04/Project/lc1812/User/lc1812_brite/Analyze/dft/tyrekes/scan/zsp/dft_vio.fix.tcl
|
|
# -----------------------------------------------------------------------------------
|
|
# Insert Scan structures
|
|
# -----------------------------------------------------------------------------------
|
|
create_test_protocol -capture_procedure multi_clock
|
|
dft_drc -pre_dft > $svars(dir,reports)/$svars(top_design)_prescan.dft.summary
|
|
preview_dft -show all > $svars(dir,reports)/$svars(top_design)_prescan_preview.dft
|
|
|
|
# -----------------------------------------------------------------------------------
|
|
# Do not run incremental compile as a part of insert_dft
|
|
# -----------------------------------------------------------------------------------
|
|
report_dft_insertion_configuration
|
|
insert_dft
|
|
|
|
check_mv_design > $svars(dir,reports)/$svars(top_design)_mv_check_dft.reports
|
|
|
|
change_names -rules verilog -hier
|
|
|
|
current_test_mode Internal_scan
|
|
|
|
dft_drc > $svars(dir,reports)/$svars(top_design)_InternalScan.dft
|
|
|
|
report_dft_drc_violations
|
|
|
|
report_scan_path -view existing_dft -chain all > $svars(dir,reports)/$svars(top_design).scanpath_chain.internal
|
|
report_scan_path -view existing_dft -cell all > $svars(dir,reports)/$svars(top_design).scanpath_cell.internal
|
|
|
|
write_test_protocol -test_mode Internal_scan -out $svars(dir,outputs)/$svars(top_design)-InternalScan.spf
|
|
write_test_protocol -test_mode ScanCompression_mode -out $svars(dir,outputs)/$svars(top_design)-ScanCompression.spf
|
|
|
|
current_test_mode ScanCompression_mode
|
|
|
|
report_scan_path -view existing_dft -chain all > $svars(dir,reports)/$svars(top_design).scanpath_chain.scancomp
|
|
report_scan_path -view existing_dft -cell all > $svars(dir,reports)/$svars(top_design).scanpath_cell.scancomp
|
|
|
|
# Write out SCAN DEF file
|
|
write_scan_def -output $svars(dir,outputs)/$svars(top_design).scandef
|
|
check_scan_def -file $svars(dir,outputs)/$svars(top_design).scandef
|
|
|
|
# Write out test model
|
|
write_test_model -format ctl -output $svars(dir,outputs)/$svars(top_design).ctl
|
|
write_test_model -format ddc -output $svars(dir,outputs)/$svars(top_design).ctlddc
|