STIL P1450.4: A Standard for Test Flow Specification Jim O’Reilly, Ajay Khoche, Ernst Wahl, Bruce Parnas IEEE P1450.4 Working Group Paul Reuter, Mentor Graphics 2010 International Test Conference Outline • Motivation • Scope, Key attributes • STIL TestFlow Components • Extensions to Existing STIL constructs • Standard definitions • Advanced features • Current Status, Future Work Motivation • Allow generation of complete test program in STIL • Facilitate reuse of test program components • Provide common base for process automation (one dialect) • Extend STIL use into emerging application areas – adaptive test – enabling mechanisms for testcell control Scope, Key Attributes, and Limitations • Scope: To provide – Common description language for test flow components of a test program. – Common interface between flow, test program components – Flow variables – definition and use – Binning – Mechanisms for component reuse Scope, Key Attributes, and Limitations • Key Attributes – Alignment with Existing STIL standards – Object Oriented Approach – Extensibility – Coverage for existing ATE environments – Standard Test Method Interface – Ease of use. – Support for emerging test techniques. Scope, Key attributes, and Limitations • Limitations (exclusions) – Definition of Test Methods – Multi-site Handling – Full tester runtime support Simple Test Program Component Diagram STIL TestFlow Test Program Prober/Handler Interfaces Test Flow Tests Processing Code Patterns Existing STIL standards Timing, DC Setup STIL TestFlow Components • TestProgram • EntryPoints • TestBase • TestType and FlowType • Tests and Flows • Bin Definitions and Bin Maps • Extensions to Existing STIL Constructs STIL TestFlow components, relationships Test Program SignalGroup Variables ChannelMap EntryPoints Test Base TestType OR Flow Test func_1 FlowType OR Test HardBinDefs Test Base FlowNode FunctionDefs SoftBinDefs BinMap (Sub)Flow Existing STIL Constructs 1450.0 1450.1 1450.2 1450.3 1450.6 • TestFlow components contain references to existing STIL constructs • TestType, FlowTypes are type definitions. They MUST be instantiated as Tests or Flows in order to be used. STIL TestFlow Components • TestProgram and Entry Points – Top-level construct – one per STIL file. – Contains the following: • • • • • ChannelMap Variables BinMap SignalGroups (optional) EntryPoints – Specifies Test or Flow to execute in response to externally-triggered events. Standard does not specify HOW these events are triggered. – Available events: Load, Start, Reset, WaferStart/End, LotStart/End, User-defined. TestBase, TestType, and FlowType Structure Entry Definition Parameters Definition Variables Definition PreActions Execution Test Execution PostActions Arbiter FailActions PassActions Exit STIL TestFlow Components: TestBase • TestBase – Definition of all common elements of Tests or Flows. – Standard provides a minimum default definition. Can be extended, but MUST include the default definition. – If no explicit definition provided, the default is implicitly used. – Parameters use keyword/value pairs. – Paper shows detail of default definition STIL TestFlow Components: Types • TestType, FlowType – Type definitions – must be instantiated into Tests/Flows in order to be used – Based on TestBase, or previously-defined Test/FlowType (inheritance) • Key mechanism for enabling user-defined tests/flows, and allowing component re-use – TestType/FlowType parameters have default values – can be overridden upon instantiation. – Standard provides default definitions for FlowType, some TestTypes. Test/FlowType Bypass paths Entry P r e A c t i o n s Test Base Test, Function, or subflow execution Test/Flow Type P o s t A c t i o n s A r b i t e r PassActions Exit FailActions • Test result chooses pass or fail actions • Actions: – Operations on flow variables; Binning; Flow control. STIL TestFlow Components: Flows, Tests • Flows, Tests – Named object. Instantiated from predefined FlowType or TestType – Executed from an EntryPoint or FlowNode • Differences: – Test • Can execute Test (itself), FlowNode sequence, or TestMethod call (FunctionDefs) – Flow • Can only execute FlowNodes (but those can execute tests or complete flows) STIL TestFlow Components: Flows STIL Flow: directed graph of FlowNodes Test_1 Flow_1 A B Entry Test_2 C D Test_3 E F • Flow nodes A and D point to the same test. • Exit Test_4 Changing Test_1 affects execution at both flow nodes. Flow nodes B, C, E, and F each point to separate tests (or flows). Changing the test called by node B will NOT affect execution at flow nodes C, E, or F FlowNode Entry P r e A c t i o n s Bypass paths Test or flow execution FlowNode P o s t A c t i o n s ExitPorts A r b i t e r ExitPort portlabel1 Port Actions ExitPort portlabel2 Port Actions ExitPort portlabelN Port Actions • Differences between FlowNode and Test/Flow: • Test/Flow has only one exit path • FlowNode can branch (more than one exit path) • Arbiter is sequence of logical expressions. STIL TestFlow Components: Binning • Bin Definitions and Bin Maps – SoftBin and HardBin definitions – Only SoftBins are assignable (Actions blocks) – BinMap maps SoftBins to HardBins • SoftBins – Group (Pass/Fail) • Axis – Bins • HardBins (single axis only) – Group (Pass/Fail) • Bins STIL TestFlow Components: Binning • Bin Attributes – Color, number, descriptive strings – Enable flag (useful with multi-axis bin definitions) – Retest flag (hard bins only) STIL TestFlow Components: Binning • Multi-Axis and Single-Axis SoftBins (syntax) SoftBinDefs multi_axis_softbindefs { Pass { BinAxis ClockSpeed { Bin "3GHz"; Multi-Axis Pass bins Bin "2.9GHz"; Bin "2.6GHz" { Enable False; } } BinAxis CacheSize { Bin "8Mb"; Bin "4Mb"; } } } Fail { Bin ContactOpens Bin ContactShorts Bin Functional Bin Timing } Single-Axis Fail bins { Verbose "Opens"; } { Verbose "Shorts"; } { Verbose “Functional"; } { Verbose "Tight Timing"; } STIL TestFlow Components: Binning • Multi-Axis SoftBins (and BinMap) 3.00 GHz 2.93 GHz 2.66 GHz ClockSpeed 8Mb 1 1 3 4Mb 2 2 4 CacheSize Hard bins (by number) • Single-Axis SoftBins (and BinMap) Opens Shorts Functional Timing 5 5 6 7 Unnamed Axis Extensions to Existing STIL Constructs • Signals, Signal Groups – additional attributes – Open, Analog • Effect: Pattern-related setup data is ignored. • Variables - expanded list of variable types – Most STIL block types - Parameters, Variables. • Exclusions: MacroDefs, Procedures, ScanStructures – Separate namespaces for 1450.1, 1450.4 • 1450.4 allows access any 1450.1 variable (by name) – Additional Attributes – ReInitializeAt: Load, Reset, Start, LotStart, WaferStart, User-defined (externally-triggered events). – Optional Parameters with value None are ignored – Units (Specify expected units for Compound variables) Extensions to Existing STIL Constructs • Variables – Local variables for TestType, FlowType blocks • Not visible outside block – TestProgram variables • Visible to all levels of hierarchy (named global blocks) – Arrays of Variables • Any legal STIL variable type. • Single-dimension arrays only. • Uninitialized, initialized (one value for all elements, individual values per element) • <var_name>.Size operator – Enumerated types Extensions to Existing STIL Constructs • Spec block – Spec block name now has meaning • <spec>.<cat>.<var>.(Min | Typ | Max | Meas) • .Meas field: read/write. All others: read-only once defined (useful in Test/Flow Actions blocks) – Indexing operators • .Size, .Name, Categories[I], Variables[J] – Expanded spec variable types (any legal STIL data type) in addition to time_expr, dc_expr • PatternExec – Can include Spec block name Standard and default Definitions • TestBase – Defined by standard – can be superceded by ATE vendor or user. See paper for details • Standard Functional Test – Two types • Single Parameter – PatternExec • Multiple Parameters – elements of PatternExec • Standard FlowType • Should be suitable for most uses • Additional types can be defined as needed. Standard and default Definitions • Default FlowNode – Allows simpler syntax for flows if using default – Execution is IDENTICAL Default FlowNode structure // Example which specifies the FlowNodes explicitly. Flow mainFlow_w_explicit_flownodes { FlowNode node1 { TestExec testFunctional; ExitPorts { Port FAIL CurrentExec.failed !=0 { failed = CurrentExec.failed; SetBinStop CurrentExec.FailBin } Port PASS True { Next; } } } } // Example which relies on the default FlowNode. Flow mainFlow_w_default_flownode { TestExec testFunctional; } Advanced Features • Inheritance – Derive new TestTypes or FlowTypes from existing types • All must eventually trace back to TestBase • Single Inheritance only. • Parameters are cumulative – Derived types contain all Parameters of base types • Variables – Base type variables not accessible. • Actions – If specified, REPLACE base type actions – Each Action block handled individually • PreActions, PostActions, Pass Actions, FailActions Advanced Features • Dynamic Flow Execution and Reordering – Bypass – Specification of next FlowNode (ExitPort Actions) • By sequence order (default) – Next; • By explicit FlowNode name – Next <flow_node_name>; • By name, from variable (scalar or array element) – Next FlowSequence[ i ]; Current Status, Future Work • Draft standard for ballot being prepared – Expect to have draft complete, ready for ballot, by 12/2010 – Will be forming balloting group soon. • Anyone interested is welcome to participate – Working group or ballot group – Contact P1450.4 WG Chair • Jim O’Reilly, jim_oreilly@ieee.org – See website • P1450.4: Extensions to STIL for Test Flow Specification • http://grouper.ieee.org/groups/1450/dot4/index.html