v64 setup version 0 1 0; /******************************************************************/ /* */ /* This is a template file for .msa file. It sets up a test on the*/ /* lv514 tester (the one with the three-quadrant head). It is set */ /* up for testing an 84-pin PGA CMOS chip from MOSIS using the */ /* cs5710 DUT card. */ /* */ /******************************************************************/ /******************************************************************/ /* config section */ /******************************************************************/ resolution = 500ps; dev_supply_voltage = 5.00v; dev_supply_current = 1.00a; term_supply_voltage = 3.00v; force_high_family_u = 2.40v; force_low_family_u = 0.50v; compare_family_u = 1.40v; force_high_family_v = 4.50v; force_low_family_v = 0.50v; compare_family_v = 2.50v; /* The "v" parameters are appropriate for CMOS */ sector_logic_family = { v, v, v, v, v, v, v, v, v, v, v, v }; /******************************************************************/ /* group section */ /******************************************************************/ /* All signals should be defined as part of a group */ /* Each group has a radix and default settings for */ /* radix,force format, compare format, and phase */ /* */ /* Choices for radix are: hex, oct, and bin */ /* */ /* Choices for force_fmt are: */ /* dnrz_l - delayed nrz, leading edge */ /* dnrz_t - delyaed nrz, trailing edge */ /* r1 - return to 1 */ /* r0 - return to 0 */ /* ri - return to inhibit */ /* */ /* Choices for compare_fmt are: */ /* edge_l - leading edge */ /* edge_t - trailing edge */ /* window - compare during whole window */ /* */ /* Choices for phase are: quadrant-phase where */ /* quadrant is 0,1,2,3 and phase is A,B,C,D. */ /* The "lv514" tester (the one the 5710 DUT card */ /* is designed for) uses quadrants 1 and 2. */ /* Quadrant 1 = sectors 4,5,6,7 */ /* Quadrant 2 = sectors 8,9,A,B */ /* There are four phase per quadrant (A,B,C,D) */ /* So, a valid phase is 1A or 2C for example */ /* */ /* All chip signals need to be part of some group. */ /* Group names can be up to 14 characters long. */ /* Each group will be Force or Compare or Mask. */ /* Each group will be attached to one phase. */ /* The Force/Compare/Mask and phase definitions */ /* are in the template section... */ /* */ /* Signal names can be up to 16 characters */ /* */ /* The dut field of a signal is the pga chip pin number */ /* It's just a comment, so this can also be the pad */ /* number if that makes more sense to you. */ /* See the DUTmap.txt file for pad/pin/sec.chan map. */ /* */ /* The sector says what sector is connected to that pin */ /* (valid sectors for our DUT card are 4,5,6,7,8,9,A,B) */ /* the channel says what channel in that sector is */ /* connected to that pin (0-f in hex) */ /* */ group "groupname" { radix = bin; force_fmt = dnrz_l; compare_fmt = edge_t; phase = 1a; signal "signame" { dut = "b02"; sector = 0h6; channel = 0hC; } /* add more signals here for group "groupname" */ } /* add more groups here... */ /******************************************************************/ /* template section */ /******************************************************************/ /* This section defines each template that the tester uses */ /* when performing a test. The tester can have 15 templates */ /* at the ready at any time. You can define more, but the test */ /* will pause before using those additional templates */ /* */ /* A template defines one set of operations on the groups. */ /* That is, for template_0 the cycle is set, the phases are */ /* defined (phase timing), and each of the groups is defined */ /* in terms of whether that group is force/compare/mask */ /* */ /* If you wans a group to be Force on one cycle, and Compare */ /* on another cycle (A bidirectional bus, for example), you'll */ /* need different templates. */ /* */ /* Each template can have different timing on cycle and */ /* all phases. */ /* */ /* You can "lock" a template into memory so it doesn't delay */ /* using the keyword locked after the template name */ /* for this example, you want to force the address, enable, */ /* and latch-enable, and see which output is asserted (low) */ template "template_0" { cycle = 100ns; phase 0a {delay = 0ns; width = 90ns;} group "groupname" { function = force; } /* add more groups here */ } /******************************************************************/ /* schmoo define section */ /******************************************************************/ /* */ /* This defines the schmoo. You can schmoo in 2 dimensions */ /* and defined what parameter you want to vary in each dimension. */ /* You can vary the voltages in the config section, or the */ /* times in the cycle or a phase of a template. */ /* */ /* If you don't want a schmoo, make both variables not_selected */ /* */ /* If you want to vary a voltage, your choices are: */ /* dev_supply_voltage */ /* term_supply_voltage */ /* force_high_voltage_[u,v] */ /* force_low_voltage_[u,v] */ /* compare_voltage_[u,v] */ /* dev_supply_current */ /* */ /* If you want to vary timing, your choices are: */ /* cycle_length (of a given template) */ /* phase_delay (delay time of a phase inside a template) */ /* phase_width (width of a phase inside a template) */ /* */ /* An example of each type follows: */ /* */ /* schmoo_var_x = dev_supply_voltage { */ /* from=1.00v; to=2.00v; by=0.10v; */ /* }; */ /* */ /* schmoo_var_y = phase_width { */ /* template="template_0"; */ /* clock_phase="0a"; */ /* from=20ns; to=150ns; by=10ns; */ /* }; */ /* */ schmoo_var_x = not_selected; schmoo_var_y = not_selected; /******************************************************************/ /* macro section */ /******************************************************************/ /* */ /* The lv500 allows macros in pattern definitions, but I've never */ /* looked at how to use them... */ macro macro_0() { * ""; } /******************************************************************/ /* define format info */ /******************************************************************/ /* */ /* This allows you to change how things look when they're */ /* printed to the screen. I've never messed with it... */ define_format { keymap = lf_cr_addline; } /******************************************************************/ /* pattern section */ /******************************************************************/ /* */ /* This is where you define your pattern data. Each line is a */ /* line of pattern data as it would appear on the lv500 display. */ /* Each line is terminated with a ";". A "*" in the first column */ /* means a comment. A template name means a "normal" pattern line.*/ /* I assume that the groups are listed in the order in which they */ /* are defined in the groups section. You can also use label, jmp,*/ /* and all the rest of the possible pattern lines from the lv500 */ /* pattern command set. */ /* */ /* This section must (I think) be the last section in the .msa */ /* file. */ pattern * "test pattern data begins here"; "template_0" 0; /* add more pattern data here */