Linking Simulation and ATPG Vectors To ATE With VTRAN and VCAP Source III, Inc. www.sourceiii.com Background: Logic Simulators and ATPG programs are used extensively for chip design, validation and to create high fault-coverage test vectors. Simulators generate event-based vector data (VCD, EVCD, …) during simulation. ATPG programs generate standard cyclebased, tester oriented vectors (WGL, STIL). The Problem: All of this vector data needs to be translated into test programs for specific ATE so that the device can be tested. There are 2 flows depending on whether vector data is event-based or cycle-based. 1 VCD File EVCD File $timescale 1ps $end $scope module test_fed $end $var wire $var wire $var wire $var wire $var wire $var wire ....... $upscope $end 1 1 1 4 1 1 ! " # $ % & $enddefinitions $end #0 $dumpvars 0& x% bxxxx $ x# x" 0! ........ $end #4879 0" #5000 1" #5606 1# b0011 $ #7060 1A #10000 0+ 0/ 1* ........ p_mrdy_ $end p_mintr_ $end p_tclk $end p_rxd [3:0] $end p_rclk $end p_crs $end $timescale 1 ns $end $scope module $var port $var port $var port $var port $var port $var port $var port $var port . . . . . . $upscope $end top $end 1 ! clki $end 1 " clk2x $end 1 # vcxo_ctrl $end 1 $ bclko $end 1 % test $end 1 & bopt $end [3:0] A devid $end 1 ( dsp_only $end $enddefinitions $end #0 $dumpports pa 6 6 ! pX 6 6 " pX 6 6 # pX 6 6 $ pa 6 6 % pb 6 6 & pXXXX 6666 6666 A pa 6 6 ( $end #1 pT 0 0 " pD 6 0 ) #5 pD 6 0 % pU 0 6 & pDDDD 5555 0000 A pD 6 0 ( pH 0 0 0 pD 6 0 4 ........ 2 Flow 1: event-based (VCD/EVCD) data to ATE Simulator VCD EVCD Translator ATE Test Program Event-based vector characteristics Event entry when any signal transitions No signal direction information for VCD Timing is embedded in event data Translation requirements: Cyclizing Required (convert event-based to cycle-based) State character translations Identify/Specify Timing Determine Signal Direction Bidirectional Signal I/O data separation Significant User input required 3 STIL File STIL 1.0 ; Signals { out0 Out; SDI0 In { ScanIn; } SDO1 Out { ScanOut; } BCK0 In; . . . . . . SignalGroups { Group_1 = 'in0 + in1 + in2 + clk1 + clk2 + SDI0 + SDI1 + ACK0 + BCK0'; . . . . . Timing { WaveformTable TS1 { Period '90ns' ; Waveforms { out0 { HLXT { '0ns' X; '10ns' H/L/X/T; } } out1 { HLXT { '0ns' X; '10ns' H/L/X/T; } } BCK0 { 10 { '0ns' D; '60ns' U/D; '70ns' D; } } . . . . . ScanStructures { ScanChain Chain1 { ScanLength 4 ; ScanIn SDI0 ; ScanOut SDO0 ; ScanCells ........ ; . . . . . MacroDefs { "_scan_op_" { Shift { V { SDI0 = #; SDO0 = #; SDO0 = #; SDO1 = #; } } . . . . . . Pattern "_pattern_" { W TS4; V { // 0 Group_1 = NNN00NN00; Group_3 = XXXXX; } C { // 100 Group_1 = NNN000011; } Macro "_scan_op_" { SDI0 = 0010; SDO0 = XXHL; SDI1 = 0001; SDO1 = XXLL; } V { // 500 Group_1 = 010001100; } W TS1; V { // 600 Group_1 = 100000100; } Loop 12 { W TS4 V { // 690 Group_1 = NNN00NN01; Group_3 = XXXXX; } } . . . . . . . } 4 WGL File waveform design signal "si" : input; "se" : input; "pi1" : input; "pi2" : input; "pi3" : input; "ck_Epulse" : input; "ck_Ppulse" : input; "po" : output; "so" : output; end timeplate "_default_WFT_" period 100ns "si" := input [0ps:S]; "se" := input [0ps:S]; "ck_Ppulse" := input [0ps:Z, 50ns:D, 60ns:S, 80ns:D]; "ck_Epulse" := input [0ps:D, 20ns:S, 40ns:D, 50ns:Z]; "po" := output [0ps:X, 35ns:Q'window, 55ns:X]; "so" := output [0ps:X, 10ns:Q'edge]; . . . . . . end scancell "Flop1"; "Flop2"; ccG ["Flop2", "Flop1" ]; end scanstate { non_tester_ready_master_data } { scan_test } ccU0 := ccG(XX); ccL0 := ccG(01); ccU1 := ccG(10); ccL1 := ccG(01); . . . . . pattern group_ALL ("si", "se", "pi1", "pi2", "pi3", "ck_Epulse", "ck_Ppulse", "po", "so") { test_setup } vector("_default_WFT_") := [ X X X X X 0 0 X X ]; vector("_default_WFT_") := [ X X X X X 0 0 1 0 ]; vector("_default_WFT_") := [ 1 0 X X X 0 0 X 1 ]; repeat 25 vector("_default_WFT_") := [ X X X X X 0 0 X X ]; { scan_test } { pattern 0 } { load_unload } scan("_default_WFT_") := [ - 1 X X X 0 1 X - ], output [cc:ccU0], input [cc:ccL0]; { vector_capture } vector("_other_WFT_") := [ 1 0 1 1 1 1 1 X X ]; . . . . . end end scanchain cc ["si", "Flop1", "Flop2", "so" ]; end 5 Flow 2: cycle-based (WGL/STIL) data to ATE ATPG WGL STIL Translator ATE Test Program Cycle-based vector characteristics All signal name and direction information included All timing and waveform information included High-level language constructs may be used Possible scan data defined Translation requirements: Flatten or maintain scan State character translations Minimal User input required 6 VTRAN Vector data translation for Simulation & Test 7 VTRAN overview • Bridging simulation & test formats Simulation & ATPG-generated translations Comprehensive vector processing options • Large number of canned readers STIL, WGL, VCD/EVCD, TDL_91, TSTL2, FSDB, FTDL nanosim, VCL, … + User-Programmed Reader • Numerous formatters for testers & EDA STIL, WGL, Verigy, Credence, Teradyne, Advantest, IMS, Verilog testbench, VHDL testbench, TSTL2, …. • Nearly 20 years of success in hundreds of customer applications OEM’ed by Synopsys and Cadence for over 15 years Used by Qualcomm, TI, Broadcom, Apple, Microsoft, Marvell, TSMC, Xilinx, Nvidia, Micron, AMD, AMI, Cisco, … 8 VTRAN basic Flow VTRAN Tools ATPG Simulators Vector Formats VCD/EVCD WGL STIL … OVF TVF Original Vector File Target Vector File Test Program Verigy Advantest Teradyne . . . Circuit Simulator SPICE, HSPICE Synopsys TimeMill PowerMill NanoSim . . . Processing Command File Logic Simulation/ verification VerilogTestbench VHDL Testbanch STIL WGL TSTL2 … 9 VCD/EVCD-to-ATE VTRAN FLOW (errors) VTRAN Simulation VCD/ EVCD •Cyclize vectors •State Trans •Define Timing •Signal Direction •Masking •other processing Virtual Test Program Verification VTRAN ReadBack ATE-to-Testbench ATE Test Program & Timing Verilog Verification Testbench OK ? ATE Verification Simulation 1. Simulation of final design generates VCD/EVCD file. 2. VTRAN performs cyclization, state mapping, makskng and other optional processing to generate ATE test program 3. In Virtual Test Program Verification, VTRAN ReadBack translates ATE test program to verification testbench. 4. Verification Simulation verifies test program – can be run with varying parameter corners. 5. If OK, then ATE test program is ready for tester. 6. If errors, then correlate to design or adjust VTRAN parameters. 10 VTRAN – cyclizing event vector data (vcd/evcd): For single timeset data – use align_to_cycle - User specifies cycle time - User specifies signal sample points - User specifies timing for output file - VTRAN translates event- to cycle-based For multiple timeset data use template_cyclization - User specifies cycle time, sample points, and timing for each timeset - User specifies matching criteria for each timeset - VTRAN matches timeset criteria to event data to select the appropriate timesets and performs event- to cycle-based translation 11 VTRAN Vector Processing template_cyclization example: TEMPLATE_CYCLIZATION CYCLIZATION_SKEW = "0.5" , TERMINATE_ON_DEFAULTS = "20", MATCH_REPORT = "designfile.rpt", MATCH_TRACE_START = 1 ; MATCH_TRACE_STOP = 8 ; VIEW_OUTPUT = "designfile.view" ; TIMESET SCAN_SHIFT CYCLE 3.2; PINTYPE NRZ * @ 0.5, 0.1; PINTYPE -PRIMARY RZ cpref_clk @ 1.0, 2.0; PINTYPE STB * @ 3.0, 3.1; IDENTIFIER (scan_load=1)&(scan_enb=1) ; ENDTIMESET; TIMESET CAPTURE CYCLE 6.4; PINTYPE NRZ * @ .8, .1; PINTYPE -PRIMARY RZ cpref_clk @ 2.0, 4.5; PINTYPE -PRIMARY -ACTIVE_ONLY RO ubf_clk @ 1.5, 4.8; PINTYPE STB * @ 6.1, 6.2; IDENTIFIER (scan_load=0)&(scan_enb=1) ; ENDTIMESET; TIMESET RUN CYCLE 4.0; WEIGHT 1 ; SAMPLE_POINT all_inputs @ 2.5; PINTYPE NRZ * @ .4, .1; PINTYPE -PRIMARY RZ cpref_clk @ 2.0, 3.0; PINTYPE -PRIMARY RO ubf_clk @ 1.0, 3.2; PINTYPE STB * @ 3.5, 3.6; IDENTIFIER scan_enb = 0 ; ENDTIMESET; 12 VTRAN Vector Processing Add_Pin examples: ADD_PIN newpin INPUT = 0; ADD_PIN IOX BIDIRECT = ZX ; ADD_PIN notclk input = 1 WHEN clk = 0 : = 0 OTHERWISE ; ADD_PIN ORpin input = = = = 1 1 1 0 WHEN pin1 WHEN pin2 WHEN pin3 OTHREWISE = 1 : = 1 : = 1 : ; ADD_PIN newclk INPUT = 1 ; PINTYPE RZ newclk @ 25, 50 ; { creates constant clock } 13 VTRAN Vector Processing mask_pins examples: Very useful for debugging and cleaning-up test vector sets in translations from VCD/EVCD event files. Remove spurrious glitches, mask high-speed transitions, force initialization states. MASK_PINS gpio1 @ 0, 700 ; // cycle time = 100ns gpio1 input state stream: 1100010111000000 gpio1 output state stream: XXXXXXX111000000 MASK_PINS mask_character=1 gpio1 @ CONDITION err0=0 ; err0 input state stream: 1111110000011111 gpio input state stream: 1110000000000000 gpio output state stream: 1110001111100000 MASK_PINS gpio1 @ TRANSITION 0->1, -4, +2 ; gpio1 input state stream: 0000000011111111 gpio1 output state stream: 0000XXXXXX111111 MASK_PINS gpio1 @ SEQUENCE “00011111000”, “00XX1111XX0” ; gpio1 input state stream: 1111000111110001 gpio1 output state stream: 111100XX1111XX01 14 VTRAN Vector Processing mask_pins examples (continued): MASK_PINS gpio1 @ CONTROL_TRANSITION ctrl1 0->1, -2, +3 ; ctrl1 input state stream: 0000000011111111 gpio1 input state stream: 0011000011000111 gpio1 result state stream: 001100XXXXXX0011 MASK_PINS gpin1 @ TIMESET tset1 ; MASK_PINS mask_character = “~pinA” pinX @ 1 ; pinA input state stream: 0001110001110000 pinX result state stream: 1110001110001111 MASK_PINS pinA @ CONDITION (err0=0)&(rel(-1)=0)&(err0(+1)=1) ; err0 input state stream: 1111110000011111 rel input state stream: 1111111100000000 pinA input state stream: 0001110001110000 pinA input state stream: 0001110001X10000 15 VTRAN Vector Processing Using Registers: The REGISTER command supports the concept of a memory, or register, element that can be used in a compound logic expression. The basic idea is to provide a means whereby the occurance of an event (logic condition or time) can be remembered and used as part of a logic expression for other vtran statements. REGISTER R1 init=0, set @ TIME 0 : clear @ CONDITION (Reset=0)&(Run=1); REGISTER Rmask init = 0, set @ CONDITION Pak=1 : clear @ CONDITION (Pak=0)&(enb=1) ; MASK_PINS all_outputs @ CONDITION Rmask=1 ; 16 VTRAN Vector Processing bidirect_control examples: For VCD translations, it is necessary to provide a mechanism by which VTRAN can determine the direction of state data on bidirectional signals. This is not necessary for EVCD, WGL or STIL files. BIDIRECT_CONTROL gpio[12:0] = input WHEN dirctl = 0 ; gpio bus is in input mode when dirctl is a logic 0 BIDIRECT_CONTROL gpio[6:0] = output WHEN (enb=1)&(dirctl=1) ; gpio bus is in output mode when both enb and dirctl are logic 1 BIDIRECT_CONTROL gpio[8:5] = input WHEN dir = 0, DEFAULT_INPUT = N ; gpio bus is in input mode when dir is logic 1, when in output mode input track is N state. 17 Example VTRAN command script OVF_BLOCK BEGIN { Specify how to read input file } orig_file = "sbc2.vcd"; SCRIPT_FORMAT verilog_vcd; BIDIRECTS PAD_ICE_DATA[7:0]; INPUTS PAD_ICE_ADDR[15:0]; INPUTS PAD_ICE_EN_B; BIDIRECTS PAD_PORTA; BIDIRECTS PAD_PORTB[4:0]; OUTPUTS PAD_ICE_RST_O; OUTPUTS PAD_ICE_IRQ_O; INPUTS PAD_ICE_DATA[7:0]; INPUTS PAD_PORTB_ctl[4:0]; . . . . PROC_BLOCK BEGIN { Processing to be done on vectors } cycle 100; {10 MHz cycle} BIDIRECT_CONTROL PAD_PORTA=input WHEN PAD_PORTA_ctl=1; BIDIRECT_CONTROL PAD_ICE_DATA=input WHEN PAD_ICE_DATA_ctl=1; BIDIRECT_CONTROL PAD_PORTB[4]=input WHEN PAD_PORTB_ctl[4]=1; BIDIRECT_CONTROL PAD_PORTB[3]=input WHEN PAD_PORTB_ctl[3]=1; . . . . TVF_BLOCK BEGIN { specify output file format } tester_format HP93000 , -auto_group, -DVC_OUTPUTS_FNZ, XMODE = "ts1 3", XMODE_MAP = "sbc2.map", PIN_CONFIG_FILE = "sbc2.pin", PINSCALE = "128", TIME_STAMPS = "ON", DVC_FILE = "sbc2.dvc" REPEAT_THRESHOLD = "4" ; TARGET_FILE = "sbc2.avc"; {output file } END; END; ALIGN_TO_CYCLE 100, ALL_INPUTS @ 10, ALL_OUTPUTS @ 95 , PAD_XIN @ 40, PAD_XCIN @ 30; PINTYPE PINTYPE PINTYPE PINTYPE NRZ * @ 10 ; STB * @ 95 ; RO PAD_XIN @ 30, 50; SBC PAD_XCIN @ 20, 40; STATE_TRANS outputs '0'->'L', '1'->'H', '-'->'X', 'x'->'X', 'z'->'X' 'Z'->'X'; STATE_TRANS pure_inputs 'X'->'0', 'x'->'0', 'z'->'Z'; STATE_TRANS bidir_inputs 'X'->'0', 'x'->'0', 'z'->'Z'; END; 18 VTRAN ReadBack modules: This is an important feature for all tester interfaces, particularly for translations from event-based vector files like VCD and EVCD. • Significant user input can result in errors • Validates the VTRAN-generated test program • Uses Virtual ATE testbench simulation • Debug test program before silicon • Saves costly ATE test time VTRAN-generated ATE test program OK ? Virtual Test Program Verification VTRAN ReadBack ATE-to-Testbench Verilog Verification Testbench Verification Simulation 19 STIL/WGL-to-ATE VTRAN FLOW (errors) VTRAN ATPG Synopsys Cadence Mentor STIL/ WGL •Scan data •Multiple timesets •ATE parameters Virtual Test Program Verification VTRAN ReadBack ATE-to-Testbench ATE Test Program & Timing Verilog Verification Testbench OK ? ATE Verification Simulation 1. ATPG run on final design generates STIL/WGL file. 2. VTRAN handles scan data and multiple timesets to generate ATE test program. Minimal user input required. 3. For Virtual Test Program Verification, VTRAN ReadBack translates ATE test program to verification testbench. 4. Verification Simulation verifies test program – can be run with varying parameter corners. 5. If OK, then ATE test program is ready for tester. 6. If errors, then correlate to design or ATPG for remedies. 20 VTRAN Support for Verigy 9300 Generates ASCII format file (for v2b utility) Supports scan data (can also flatten scan) Supports multiple timesets Full support forRepeats and Loops from STIL/WGL files. Also discovers Repeats and Loops in VCD/EVCD files for compression. • Repeat_Threshold feature • Loop_Threshold feature X-mode support • Up to 8X • Selectable by individual timeset • Cumulative timing and pin-maps for multiple vector files • Pinscale support • Padding via default or padding file • Create Signal Groups 21 VTRAN Support for Verigy 93000 (cont.) File merging • Can merge parallel vector files with overlapping or non-overlapping signals • Can merge sequential vector files ReadBack module for test program validation via Verilog or VHDL testbench. Actively adding new support features. 22 VTRAN Support for Terdyne testers Catalyst, J750, J971/973, UltraFLEX supported Support for scan data and multiple timesets Full support Repeats and Loops from STIL/WGL files. Also discovers Repeats and Loops in VCD/EVCD files for compression. For J750 and uFLEX supports Basic Timing and Formulas as well as standard tsets/esets files. File merging ReadBack modules for test program verification via Verilog testbench. uFLEX supports dual mode and x2/x4/x8/extended scan types. 23 VTRAN Support for other testers Advantest T66xx, T33xx and T2000 Credence (SWAV) and Saphire (STIL) Q-Star IDDQ tester HP94000 IMS Trillium LTX Schlumberger ITS9000 ASIC formats: TDL_91, TSTL2, FTDL Others under development per customer requests. 24 VTRAN Additional Processing Features Merging Multiple Input Files: Multiple input files can be merged using VTRAN with the MERGE_FILE directive in the OVF_BLOCK : OVF_BLOCK BEGIN TABULAR_FORMAT WGL –cycle ; MERGE_FILE –concatenate ORIG_FILE = “SET1.wgl”; END_MERGE; MERGE_FILE ORIG_FILE = “SET2.wgl”; END_MERGE; MERGE_FILE ORIG_FILE = “SET3.wgl”; END_MERGE; END; PROC_BLOCK BEGIN . . . 25 VTRAN Additional Processing Features IDDQ Control & Vector Insertion: A general-purpose IDDQ vector insertion capability which provides for the insertion of up to 3 control/data signals and any number of IDDQ vectors into WGL or STIL files that have been generated with IDDQ markers. IDDQ IDDQfile = "iddqfname", Keyword = "measureIDDQ" Q_CLK = "1", { optional } Q_MD = "1" { optional } ; 26 VTRAN comparison to competitors: VTRAN/VCAP Wavewizard TSSI User Interface script GUI GUI Learning Curve 1-2 days 1-2 weeks 2 weeks Readers > 20 3 or 4 3 or 4 Vector Conditioning Excellent Fair Good Timing Analysis Tool Yes Yes Yes Virtual Test Included Extra Extra Cost Low Medium High 27 VTRAN SUMMARY Comprehensive Translation Support - VTRAN™ supports over 30 vector and ATE formats including WGL, STIL, TDL_91, VCD/EVCD, Teradyne, Verigy, Cadence, LTX, Advantest, IMS and many more. Ease of Use - VTRAN™ has a typical learning time of 2-6 hours for many translation applications. Text/Srcipt Based - VTRAN™ is a batch compiler that is driven by a command script created by the user. User maintains full control over the process. Over 25 Years in Business - VTRAN™ was introduced in 1990. Thousands of successful translations done. Large Customer Base - Texas Instruments, AMD, Apple, Microsoft, Broadcom, Synopsys (OEM), Cadence (OEM), Infineon, Honeywell, Marvell, NXP, Qualcomm,... Excellent Documentation - Vtran™ User's Guide , INTERFACES directory with numerous example translations, Extensive Application Notes - all available online. 28 VTRAN SUMMARY (continued) Powerful Editing Features - Adding/Deleting signals, Masking signals (equation-based, sequence-based, time-based), name aliasing,.... Powerful Vector Processing Features - Repeat count control (expansion, accumulation, max count), Loop control (expension, accumulation, max count), File Merging, Insert Statements, Data Shifting, Event Registers, Cyclization,.... Blazing Speed - VTRAN™ can translate GigaByte files in minutes. Outstanding Technical Support - Source III is highly responsive to all customer needs. New features are often added within days to meet customer needs. We provide you with personlized technical support. Low Cost!! - VTRAN™ is the lowest cost, full-feature, validated vector translation program on the market. 29 VCAP Vector Analysis Program VCAP Extracts edge timing, waveform behavior and statistical information from event-based files like VCD and EVCD. It can serve as a front-end to VTRAN for cyclization. Reports VCD/ EVCD VCAP Timing file for VTRAN 30 VCAP Analysis Features: Handles wide variety of event-based vector formats •VCD, EVCD •Nanosim, Novas FSDB, Mentor Log files, tabular, … Checks for Max Delays Analyses signal timing & behavior for single timeset Checks for signal glitches Illegal state checking Checks for simultaneous transitions Checks for output signal stability Generate timing file for direct import into VTRAN 31 Thank You for your attention ! QUESTIONS ? 32