From: Jim Mosley [mosley@san-jose.tt.slb.com] Sent: Thursday, March 21, 2002 4:34 PM To: bill_chown@ims.com; daniel@san-jose.tt.slb.com; dave_dowding@agilent.com; don.organ@inovys.com; wahl@aloft.agere.com; Gordon_Robinson@3mts.com; gwilder@dal.asp.ti.com; gmaston@qwest.net; h.ehrenberg@att.net; jason_doege@inovys.com; mosley@san-jose.tt.slb.com; jim_oreilly@agilent.com; jim.showman@inovys.com; jose.santiago@philips.com; larry.moran@teradyne.com; stuart.h.nelson@teradyne.com; Tom.Micek@motorola.com; tonyt@synopsys.com Subject: P1450.4 Test Flow - Example to Clarify previous submission. To attempt to clear up some of the confusion with my last example, I took Don Organ's example of the OddEven.still STILUS program and reformated the syntax to demonstrate how the binning could be set with more flexiblity than the "End on a Bin Node" scheme. Instead of Ending the flow in a Bin Node, the Flow now ends in an end node. The End node uses the variable "mySoftBin" to determine where to bin the part. This is the simpliest example. Both the "Exec" directive in the "Exit" section of the TestNodes Segments and the "BinTo" directive in the EndNode segments can contain more complex strings, which could represent equations or functions. Since it is not likely during a port that one test system language will match directly with another test system language, the fact that this info is stored as a string will allow the original binning setup to remain for documentation purposes. Flow "MAIN_FLOW" { Segment BEGIN { Type 'BeginNode'; Title "Contact; Exit { Result 'PASS'; Goto 'SEGMENT_2'; } } Segment SEGMENT_2 { Type 'TestNode'; Test 'TestContinuity'; Title "Contact"; Exit { Result 'PASS'; Goto 'SEGMENT_3'; } Exit { Result 'FAIL'; Set 'mySoftBin = 2'; Goto 'END_2'; } } Segment SEGMENT_3 { Type 'TestNode'; Test 'TestOddEvenFuncMin'; Title "OddEven Min"; Exit { Result 'PASS'; Goto 'SEGMENT_4'; Exit { Result 'FAIL'; Exec 'mySoftBin = 3'; Goto 'END_2'; } } Segment SEGMENT_4{ Type 'TestNode'; Test 'TestOddEvenFuncMax'; Title "OddEven Max"; Exit { Result 'Fail'; Goto 'SEGMENT_10'; } Exit { Result 'Pass'; Goto 'SEGMENT_6'; } } Segment SEGMENT_10 { Type 'FlowNode'; Title "Block segment <>"; Flow 'Seq005'; Exit { Result 'PASS'; Goto 'SEGMENT_11'; } Exit { Result 'FAIL'; Goto 'END_2'; } } Segment SEGMENT_6 { Type TEST; Test LeakHigh; Title "Leakage High"; Exit { Result 'PASS'; Goto 'SEGMENT_7'; } Exit { Result = 'FAIL'; Exec 'mySoftBin = 6'; Goto 'END_2'; } } Segment SEGMENT_7 { Type 'TestNode'; Test 'LeakLow'; Title "Leakage Low"; Exit { Result 'FAIL'; Exec 'mySoftBin = 7'; Goto 'END_2'; } Exit { Result = 'PASS'; Exec 'mySoftBin = 1'; Goto 'END_1'; } } Segment SEGMENT_11 { Type 'BranchNode'; Title "Branch segment <>"; TestOption 'MyTestOption'; Exit { Result 'TRUE'; GoTo SEGMENT_6; } Exit { Result 'FALSE'; Goto 'END_1'; } Segment END_1 { Type 'EndNode'; Test 'PowerDown'; BinTo 'mySoftBin'; } Segment END_2 { Type 'EndNode'; Test 'PowerDown2'; BinTo 'mySoftBin'; } } } Flow Seq005 { Segment SEGMENT_5 { Type TEST; Test TestOddEvenFuncNom; Title "OddEven Nom"; Position 400,320; Exit { Result = ' FAIL'; Exec 'mySoftBin = 4'; Return 1; // Return through first Exit Port of Node for Seq005 } Exit { Result = 'PASS'; Exec 'mySoftBin = 8'; Goto SEGMENT_8; } } Segment SEGMENT_8 { Type TEST; Test FuncMaxLog; Title "Failed Max, Passed Nom"; Position 400,440; Exit { Result 'PASS'; Return 0; } Exit { Result 'FAIL'; Exec 'mySoftBin = 8'; Return 1; // Return through 2nd Exit port of Node for Seq005 } } }