Simple STIL.4 Syntax Example (First Draft) TestProgram SimpleTestProgram { Device "SimpleDevice"; OnInstall InstallFlowGroup; OnInit InitFlowGroup; OnStart BeginFlowGroup; OnPowerDown PowerDownFlowGroup; OnAlarm AlarmFlowGroup; } FlowGroup InstallFlowGroup { FlowNode EntryNode { Ports { Pass { PortActions { Decision = Pass; } Next = InstallPatternsNode; } } } FlowNode InstallPatternsNode { Execute LoadPatterns; Ports { Pass { PortActions { Decision = Pass; } Next = GoodExit; } Fail { PortActions { Decision = Fail; } Next = BadExit; } } } FlowNode GoodExit { ExitFlowGroup; } FlowNode BadExit { ExitFlowGroup; } } FlowGroup InitFlowGroup { FlowNode EntryNode { Ports { Pass { PortActions { Decision = Pass; } } Next = InitTPNode; } } FlowNode InitTPNode { Execute InitTP1; Ports { Pass { PortActions { Decision = Pass; } Next = GoodExit; } Fail { PortActions { Decision = Fail; } Next = BadExit; } } } FlowNode GoodExit { ExitFlowGroup; } FlowNode BadExit { ExitFlowGroup; } } FlowGroup BeginFlowGroup { Category NominalLevels; Selector Max; FlowNode EntryNode { Ports { Pass { PortActions { Decision = Pass } } Next = SpeedTimingNode; } } FlowNode SpeedTimingNode { Category SpeedTiming; Selector Typ; Execute SpeadSortFtest; Ports { Pass { PortActions { Decision = Pass; SoftBin = SpeedPass; } Next = GoodExit; } Fail { PortActions { Decision = Fail; } Next = LooseTimingNode; } } } FlowNode LooseTimingNode { Category LooseTiming; Selector Typ; Execute SpeedSortFtest; Ports { Pass { PortActions { Decision = Pass; SoftBin = LoosePass; } Next = GoodExit; } Fail { PortActions { Decision = Fail; SoftBin = TimingFail; } Next = BadExit; } } } FlowNode GoodExit { ExitFlowGroup; } FlowNode BadExit { ExitFlowGroup; } } FlowGroup AlarmFlowGroup { Category NominalLevels; Selector Typ; FlowNode EntryNode { Ports { Exit { PortActions { Decision = Pass } } Next = PowerDownNode; } } FlowNode PowerDownNode { Execute PowerDown1; Ports { Pass { PortActions { Decision = Pass; } Next = ResetAlarmNode; } Fail { PortActions { Decision = Fail; } Next = BadExit; } } } FlowNode ResetAlarmNode { Execute ResetAlarm; Ports { Pass { PortActions { Decision = Pass; } Next = GoodExit; } Fail { PortActions { Decision = Fail; } Next = BadExit; } } } FlowNode GoodExit { ExitFlowGroup; } FlowNode BadExit { ExitFlowGroup; } } FlowGroup PowerDownFlowGroup { Category NominalLevels; Selector Typ; FlowNode EntryNode { Ports { Exit { PortActions { Decision = Pass } } Next = PowerDownNode; } } FlowNode PowerLowerNode { Execute PowerDown; Ports { Pass { PortActions { Decision = Pass; } Next = GoodExit; } Fail { PortActions { Decision = Fail; } Next = BadExit; } } } FlowNode GoodExit { ExitFlowGroup; } FlowNode BadExit { ExitFlowGroup; } } TestObject SpeedSortFtest { execute { In PatternExec = "SpeedSortPatternExec"; In SignalGroup = "AllSignals"; In Timing = "SpeedSortTiming"; In DcSequence = "PowerRaise"; In DcLevels = "Levels1"; In PatBurst = "PatBurst1"; Out Result; } } TestObject PowerDown { execute { In TestType = "PowerDown"; In DCSequence = "EndOfProgram"; In DcLevels = "PowerDownLevels"; Out TestDecision; } } TestObject ResetAlarm { execute { } }