Documente Academic
Documente Profesional
Documente Cultură
• Quality
– Address voltage drop issue by reducing overall switching activity
during test
– Increases test quality by ensuring each core is tested with guaranteed
coverage at top-level
– Allows different cores to be tested under different test conditions
• Productivity
– Results in more deterministic schedule by eliminating last minutes
issues that often trigger full chip iterations
– Lowers test cost by reducing overall vector count and potentially faster
shift speed
– Provides better post-silicon debug resolution
– Provides framework to adopt different DFT solutions for targeted cores
Context
• By the end of this set of slides, reader should
– Have a general idea of chip-level CBDFT architecture
– Know the steps performing CBDFT implementation at chip-level
– Know the steps of static & transition-test ATPG at chip-level
targeting all CBDFT partitions
Training Outline:
28
Global inpipe
28
TDI
Inpipe/updt stg
28 28 28
Pipe/updt
Inpipe/updt stg Inpipe/updt stg Inpipe/updt stg
UNCOMP CHAIN
Core Core CBDFT Core Core
CBDFT
core
Partition
logic
pipe
Local outpipe 28 28 28
28
XOR
TDO
Global outpipe
28
Core 1
Core 2
Core 3
Core 4
Core 5
Core 6
Core 7
Core 8
Core 1
Core 2
Core 3
Core 4
Core 5
Core 6
Core 7
Core 8
0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0
Core 1
Core 5
Core 1
Core 1
Core 5
Core 1
ib chains ob chains
Edt (lfsr, controller, etc)
ib_scan_in ob_scan_in
[bus] [bus]
Small Small
Combo Combo
logic logic
Wrapper cells
Func. are auto- Func.
Input
Ports
inserted at Output
gate-level by Ports
script-ware
ib_scan_out ob_scan_out
[bus] [bus]
compressor
Edt (compactor)
scan_en_ib scan_en_ob
ctcm_ib_isolate_tdr scan_en_int ctcm_ob_isolate_tdr
ctcm_compress_en_tdr
ctcm_toptest_en_tdr
ctcm_test_mode_tdr
ctcm_*_cgc_atpg_ctrl
Part of CTCM
Propg si/so decode
so_core_pipe_clk
tcb_jtag_tck
tap_cbdft_setup_chn_async_reset
tap_cbdft_setup_chn_shift
tap_cbdft_setup_chn_bsen
tap_cbdft_setup_chn_update
tap_cbdft_setup_chn_in
tap_cbdft_setup_chn_out tap_atpg_shift
CBDFT CORE
Bit 5: scan_en_int_extern_drv_en 0
tap_test_mode_tdr
CBDFT Architecture Overview
IB chains OB chains
Functional Functional
PIs POs
Comb. Comb.
Logic Logic
Helper flops
(to be put on
OB chains)
Training Outline:
• Flow has a setup script that populates all utilities, scripts &
datafiles to prepare for DFT impl, FV and ATPG
automation. Follow the steps below:
1. cd into your working directory
2. mkdir cbdft
3. cd cbdft
4. /prj/qct/dft/sandiego/release/cbdft_top/edt_v1.0.1/src/gen_topcbdft_impl.t
cl . -compress_tech MENTOR |& tee gen_topcbdft_impl.log
5. Examine gen_topcbdft_impl.log for Error messages and further
instruction
Post CBDFT softcores are merged back into chip_top during top-
level CBDFT impl (desicribe in the next few slides)
… cont.
Mentor-edt top-level CBDFT impl flow
• cont …
• # -------------
• # post CBDFT FV
• # -------------
• Dc_shell -f gen_fv_setup.tcl | & tee gen_fv_setup.log
• ./Invoke.fv
• Dc_shell -f sanitycheck_fv_scanpin_constraints.tcl | & tee sanitycheck_fv_scanpin_constraints.log
• Identical to FV flow using snps-based CBDFT implementation
CBDFT Chip-level Implementation
• dftc.tcl purpose:
Read design and remove soft CBDFT cores
Perform CBDFT connections (SI, SO, pipeline, CTCM link-up)
Hook up uncomp chain between tdi and tdo
Connect cgc:test_en
Perform scan stitch of raw stumps in chip-top CBDFT partition
• dftc.tcl output:
cgc_hookup.rpt
top.test_assume.rpt
top.dft_signal.rpt
top.pre_stitch_drc.rpt use this to judge DFT DRC violations
top.preview_stitching.rpt use this to examine chain make-up
(cont.)
CBDFT Chip-level Implementation
• dftc.tcl output (cont.’ed):
top.raw_stumps.spf
adjust_design.log log for reading design and carve soft cores
cbdft.log log for CBDFT connections
dftc.log main log for dftc.tcl run
top.adjusted.v initial preDFT netlist with soft cores carved out
top.cbdft.v netlist with CBDFT logic added, pre-scan-stitch
top.ready_for_edt.v netlist with raw stumps, for edt insertion
top_only.scan.def scandef corresponding to top partition only
edt_create_ip.dofile.tcl for next step
CBDFT Chip-level Implementation
• edt_create_ip.dofile.tcl purpose:
Create skeleton design to generate EDT logic
• edt_create_ip.dofile.tcl output:
edt_create_ip.log
edt_skeleton/edt_created_edt.v EDT rtl
Other files in edt_skeleton
CBDFT Chip-level Implementation
• integrate_edt.tcl purpose:
Synthesize edt rtl
Insert edt block into chip top
Include hardware to support combo-lpc mode
• integrate_edt.tcl output:
integrate_edt.log contains ‘NODFT’ violation msgs, if any
top.blasted.v bitblasted post-scan-stitch netlist
top.bussed.v bussed post-scan-stitch netlist
CBDFT Chip-level Implementation
• merge.tcl purpose:
Combine post-scan-stitch top with post-CBDFT soft cores
Combine scandefs of softcores with top_only.scan.def
Remove unwanted LULs on SO of large HMs (design & scandef)
Insert mode-ctrl pin clamping to enable LPC IDDQ
Insert IB/OB bypass flops to enhance LPC IDDQ
Insert power clamps on DFT and LV output ports of GDFS HMs
Check known HV/AO pins to ensure no DFT logic on them
• merge.tcl output:
merge.log contains ‘NODFT’ violation msgs, if any
top.merged.blasted.v final post CBDFT netlist (bussed)
top.merged.fully.blasted.v final post CBDFT netlist (bitblasted)
combined.nolul.def final scandef
CBDFT Chip-level Implementation
• gen_fv_setup.tcl purpose:
Create DFT FV constraint file on scan-in and shift of blackboxes
Scan_ins become ignore points
Shift pins become constant 0
Blackboxes are defined by fecad FV flow through liblist
parsing
Create fecad FV setup
Create FV invocation script
• gen_fv_setup.tcl output:
blackbox_fv Standard fecad FV dir
blackbox_fv/dft_fv_cons.blackbox_fv.tcl DFT FV constraints
./Invoke.fv FV invocation script
CBDFT Chip-level Implementation
• Invoke.fv purpose:
Runs pre-DFT vs. post-DFT FV using fecad flow
• Invoke.fv output:
In dir: blackbox_fv/fv/pre_dft_post_dft/fv_<top>
FV_PASS/FV_FAIL pass/fail FV results
hm_list.tcl list of FV blackboxes. These will have scan-in
and shift constraints
lec.run.log log
All files are standard to fecad flow. Ping fecad.help for FV
tool related issues
CBDFT Chip-level Implementation
• sanitycheck_fv_scanpin_constraints.tcl purpose:
Another sanity-checks to ensure the scan-in/shift constraints are
applied on actual scan-in/shifts
Scan-in: examine fanin-cone to confirm DFT related logic
Shift: use TEST-394 message to confirm shift pin:
Warning: Disconnecting pin 'u_chip_core_top/u_rpm_wrapper/u_rpm/tap_atpg_shift'
to route scan enable. (TEST-394)
• sanitycheck_fv_scanpin_constraints.tcl output:
sanitycheck_fv_scanpin_constraints.log log file. Search for
“CHECK THIS” in the log. It lists out pins that script can’t confirm
to be scan-in/shift
CBDFT Chip-level Implementation
• intepreting results:
Examine checklist_instructions.txt file for key QOR checks
7. Rerun step 3 to update all testproc files with new inclusions in the
static_tk/testproc_fragments directory
The optional arguments further restricts the scripts on what files to generate.
“patt1/2…” are glob patterns that match filenames. Note that single quotes ‘’
surround patt is required. Ex: ‘*testproc’
CBDFT Chip-level Static ATPG
Existing testproc_fragments:
test_setup.100.allpartitions.allmodes.autogen.tap_test_mode_tdr_chn_initial_uncompress_programming_testpro
cseq
test_setup.100.allpartitions.lpc.autogen.tap_test_mode_tdr_chn_initial_programming_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_coretestlpc_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_coretestlpu_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_ctt_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_othercore_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_toptest_testprocseq
test_setup.900.allpartitions.allmodes.autogen.tap_test_mode_tdr_chn_final_uncompress_programming_testproc
seq
test_setup.900.allpartitions.lpc.autogen.tap_test_mode_tdr_chn_final_programming_testprocseq
CBDFT Chip-level Static ATPG
Sample testproc_fragments after some are manually created:
signal_group.100.q6_2.allmodes.manual.copied_from_waveriderV1_officialsetup
test_setup.030.allpartitions.allmodes.manual.startup_sequence
test_setup.050.allpartitions.allmodes.manual.lpddr2pad_programming_to_avoid_contention
test_setup.060.q6_1.lpc.manual.cji_intest_programming
test_setup.060.q6_1.lpu.manual.cji_intest_programming
test_setup.060.q6_2.lpc.manual.cji_intest_programming
test_setup.060.q6_2.lpu.manual.cji_intest_programming
test_setup.060.q6_3.lpc.manual.cji_intest_programming
test_setup.060.q6_3.lpu.manual.cji_intest_programming
test_setup.060.top.allmodes.manual.cji_extest_programming
test_setup.100.allpartitions.allmodes.autogen.tap_test_mode_tdr_chn_initial_uncompress_programming_testpro
cseq
test_setup.100.allpartitions.lpc.autogen.tap_test_mode_tdr_chn_initial_programming_testprocseq
test_setup.200.allpartitions.allmodes.manual.spare2_programming_to_setup_3rd_tcb_clkmux
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_coretestlpc_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_coretestlpu_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_ctt_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_othercore_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_othercore_togglereset_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_toptest_testprocseq
(cont.)
CBDFT Chip-level Static ATPG
Sample testproc_fragments after some are manually created:
(cont…)
test_setup.550.allpartitions.allmodes.manual.ring_osc_programming
test_setup.600.allpartitions.allmodes.manual.pll_programming
test_setup.900.allpartitions.allmodes.autogen.tap_test_mode_tdr_chn_final_uncompress_programming_test
procseq
test_setup.900.allpartitions.lpc.autogen.tap_test_mode_tdr_chn_final_programming_testprocseq
waveform_table.100.q6_2.allmodes.manual.copied_from_waveriderV1_officialsetup
Example location:
/prj/qct/dft/sandiego/flows/cbdft/testcases/top/elessar_edt_trial.beta_release/h18
- testproc_fragments
- build
Feel free to look at contents of the fragments. You’ll notice they are simply chunks of testproc
files. Build dir contains the dofiles and scripts mentioned in the previous slides
CBDFT Chip-level Static ATPG
The optional arguments further restricts the scripts on what files to generate.
“patt1/2…” are glob patterns that match filenames. Note that single quotes ‘’
surround patt is required. Ex: ‘*testproc’
CBDFT Chip-level TDF/PDF ATPG
/prj/qct/dft/sandiego/release/cbdft_top/edt_v1.0.1/src/tk/setup_transitio
ntest_tk.tcl ./cbdft_config.tcl tk_transition | & tee gen.transitiontk.log
/prj/qct/dft/sandiego/release/cbdft_top/edt_v1.0.1/src/tk/setup_pathdela
y_tk.tcl ./cbdft_config.tcl pathdelay_tk | & tee gen.pathdelaytk.log
• For example:
/prj/qct/dft/sandiego/flows/cbdft/testcases/top/elessar_edt_trial.beta_release/tdf6/a4x_cx_elessar
edtlpc.pll0.trans.f34.565MHz.L56_M1_N2.div2/
edtlpc.pll0.trans.f37.320MHz.L64_M0_N1.div4/
edtlpc.pll0.trans.f90.565MHz.L56_M1_N2.div2/
lpu.pll0.trans.f34.565MHz.L56_M1_N2.div2/
lpu.pll0.trans.f37.320MHz.L64_M0_N1.div4/
lpu.pll0.trans.f90.565MHz.L56_M1_N2.div2/
CBDFT Chip-level TDF/PDF ATPG
test_setup.100.allpartitions.allmodes.autogen.tap_test_mode_tdr_chn_initial_uncompress_programming_testpro
cseq
test_setup.100.allpartitions.lpc.autogen.tap_test_mode_tdr_chn_initial_programming_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_coretestlpc_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_coretestlpu_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_ctt_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_othercore_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_othercore_togglereset_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_toptest_testprocseq
test_setup.700.allpartitions.allmodes.autogen.pll_frequency_setup_testprocseq
test_setup.800.allpartitions.allmodes.autogen.tcr_ctrl_chn_programming_testprocseq
test_setup.900.allpartitions.allmodes.autogen.tap_test_mode_tdr_chn_final_uncompress_programming_testproc
seq
test_setup.900.allpartitions.lpc.autogen.tap_test_mode_tdr_chn_final_programming_testprocseq
CBDFT Chip-level TDF/PDF ATPG
Sample testproc_fragments after some are manually created:
test_setup.030.allpartitions.allmodes.manual.startup_sequence
test_setup.040.allpartitions.allmodes.manual.tap_test_mode_tdr_chn_first_programming_testprocseq_for_sdf
test_setup.050.allpartitions.allmodes.manual.lpddr2pad_programming_to_avoid_contention
test_setup.060.q6_1.lpc.manual.cji_intest_programming
test_setup.060.q6_1.lpu.manual.cji_intest_programming
test_setup.060.q6_2.lpc.manual.cji_intest_programming
test_setup.060.q6_2.lpu.manual.cji_intest_programming
test_setup.060.q6_3.lpc.manual.cji_intest_programming
test_setup.060.q6_3.lpu.manual.cji_intest_programming
test_setup.060.top.allmodes.manual.cji_extest_programming
test_setup.100.allpartitions.allmodes.autogen.tap_test_mode_tdr_chn_initial_uncompress_programming_testpro
cseq
test_setup.100.allpartitions.lpc.autogen.tap_test_mode_tdr_chn_initial_programming_testprocseq
test_setup.200.allpartitions.allmodes.manual.spare2_programming_to_setup_3rd_tcb_clkmux
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_coretestlpc_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_coretestlpu_testprocseq
(cont.)
CBDFT Chip-level TDF/PDF ATPG
Sample testproc_fragments after some are manually created:
(cont…)
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_ctt_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_othercore_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_othercore_togglereset_testprocseq
test_setup.500.allpartitions.allmodes.autogen.DONT_TOUCH_toptest_testprocseq
test_setup.550.allpartitions.allmodes.manual.ring_osc_programming
test_setup.700.allpartitions.allmodes.autogen.pll_frequency_setup_testprocseq
test_setup.800.allpartitions.allmodes.autogen.tcr_ctrl_chn_programming_testprocseq
test_setup.900.allpartitions.allmodes.autogen.tap_test_mode_tdr_chn_final_uncompress_programming_testproc
seq
test_setup.900.allpartitions.lpc.autogen.tap_test_mode_tdr_chn_final_programming_testprocseq
Example location:
/prj/qct/dft/sandiego/flows/cbdft/testcases/top/elessar_edt_trial.beta_release/tdf6
Feel free to look at contents of the fragments. You’ll notice they are simply chunks of testproc files
CBDFT Chip-level TDF/PDF ATPG
test_setup.700.allpartitions.allmodes.autogen.pll_frequency_setup_testpro
cseq
- The PLL programming sequence is different for every chip. So create your
own PLL programming testproc fragment based on the above convention
- Call you file the name below, so to overwrite the example file:
test_setup.700.allpartitions.allmodes.manual.pll_frequency_setup_testpro
cseq
Closing…
Thank you