[Previous] [Next] [Contents] [Index]


    The SDT Validator

This chapter is a reference to the validator user interface and a reference for the terminology used in validation.

For a guide to how to use the validator, see Validating a System.

Table of Contents 

The Validator Monitor

A validator generated by SDT is similar to a simulator in that it contains an interactive monitor system. The validator monitor looks and behaves very similar to the simulator monitor; the only real difference is the set of available commands.

Monitor User Interfaces

Two different user interfaces are provided for the validator monitor, a textual and a graphical.

The textual interface only allows commands to be entered from the keyboard, in the same way as for the simulator monitor.

The graphical interface still allows commands to be entered from the keyboard in the same way, but also provides buttons, menus and dialogs for easy access to commands and other features.

The textual interface is invoked by executing the generated validator directly from the operating system prompt. This is called running a validator in textual mode. When started, the validator responds with the following text:

Another prompt may appear if the SDL system contains external synonyms. For more information, see Supplying Values of External Synonyms.

Note: 

Before a validator can be run in textual mode on UNIX, a command file must be executed from the operating system prompt. The file is called telelogic.sou or telelogic.profile and is located in the SDT binary directory that is included in the user's path.
For csh-compatible shells: source <bin dir>/telelogic.sou
For sh-compatible shells: . <bin dir>/telelogic.profile

The graphical interface, known as the Validator UI, runs in a separate window. It is started from the Organizer by selecting SDL > Validator UI from the Tools menu. The graphical interface is basically the same as for the simulator monitor. However, some special windows and menus have been added; see Graphical User Interface for more information.

Activating the Monitor

Commands can be issued to the interactive monitor system when it becomes active. The validator's monitor system becomes active:

Note: 

No other characters may be typed before <Return> is pressed.

Monitor Commands

This section provides an alphabetical listing of all available commands in the validator monitor. The syntax of commands and data type literals in the validator monitor is the same as for the simulator monitor. Commands may be abbreviated, as well as most command parameters. All input to the monitor is case insensitive. For more information, see Syntax of Monitor Commands and Input and Output of Data Types.

Alphabetical List of Commands

? (Interactive Context Sensitive Help)

The monitor will respond to a `?' (question mark) by giving a list of all allowed values at the current position, or by a type name, when it is not suitable to enumerate the values. After the presentation of the list, the input can be continued.

? (Command Execution)

Executes the monitor command given as a parameter. This is a convenience function for the Validator UI. Entering `?' as parameter gives a list of all possible command names.

Assign-Value

The new value is assigned to the specified variable in the process instance, service instance, or procedure given by the current scope. Sender, Offspring, and Parent may also be changed in this way, but their names may not be abbreviated.

After the command is given, the root of the behavior tree is set to the current system state.

It is, in a similar way as for the command Examine-Variable, possible to handle components in structured variables (struct, strings, array, and Ref) by appending the struct component name or a valid array index before the value to be assigned. Nested structs and arrays can be handled by entering a list of index values and struct component names.

If a PId is given within parenthesis, the scope is temporarily changed to this process instance instead.

Bit-State-Exploration

Starts an automatic state space exploration from the current system state using the bit state space algorithm. When the exploration is started, the following information is printed:

The exploration will continue until either the complete state space to the defined depth is explored, <Return> is pressed from the command prompt, or the Break button is pressed in the graphical user interface. The system is then returned to the state it was in before the exploration was started.

If a bit state exploration already has been started, but has been stopped, this command asks if the exploration should continue from where it was stopped, or restart from the beginning again.

A status message is printed for every 20,000 transitions that are executed.

When the exploration is finished or stopped, the Report Viewer is by default opened (this can be changed with the command Define-Report-Viewer-Autopopup). The following statistics are also printed:

Bottom

Go down in the behavior tree to the end of the current path.

Cd

Change the current working directory to the specified directory.

Clear-Autolink-Configuration

Clears the current Autolink configuration.

Clear-Constraint

Removes the constraint specified by the parameter. If `-' is given instead of a constraint name, all constraints are cleared.

Note: Only constraints that are not used by any generated test case can be cleared. Constraints used by one or more test cases are cleared automatically if the corresponding test cases are cleared.

Clear-Coverage-Table

Clears the test coverage information.

Clear-Generated-Test-Case

Removes the generated test case specified by the parameter from memory. However, the corresponding MSC test case on disk is preserved. If `-' is given instead of a test case name, all generated test cases are cleared.

Clear-Instance-Conversion

Clears all defined instance conversions. See also the command Define-Instance-Conversion.

Note that this command will not change an already loaded MSC.

Clear-MSC

Clears the currently loaded MSC and sets the current state to the current root of the behavior tree.

Clear-MSC-Test-Case

Removes the MSC test case specified by the parameter from disk. If `-' is given instead of a file name, all test cases are cleared.

Clear-MSC-Test-Step

Removes the MSC test case specified by the parameter from disk. If `-' is given instead of a file name, all test steps are cleared.

Clear-Observer

Defines all process instances of the given type to be usual SDL processes, not observer processes.

Clear-Parameter-Test-Values

The test value described by the value parameter is cleared for the signal parameter given as the parameter to the command. If the specified value parameter is `-', clears all test values for the signal parameter given as the parameter to the command. If `-' is given instead of the parameter number then the test values for all parameters of the signal are cleared. If `-' is given instead of the signal name then all test values for all parameters to all signals are cleared.

Regenerates the set of signals that can be sent from the environment during state space exploration.

Clear-Reports

Delete the current reports from the latest state space exploration.

Clear-Rule

The currently defined rule is deleted.

Clear-Signal-Definitions

Clears all currently defined test values for the signal given by the parameter. If `-' is given, the test values for all signals are cleared.

Note: 

The signals cleared by this command may be regenerated if any of the commands for defining test values for sorts or parameters are used.

Clear-Test-Values

Clears all test values for the sort given as parameter. If the specified sort parameter is `-', all test values for all sorts will be cleared. If the value parameter is `-', all test values for the specified sort will be cleared.

Regenerates the set of signals that can be sent from the environment during state space exploration.

Command-Log-Off

The command log facility is turned off; see the command Command-Log-On for details.

Command-Log-On

The command enables logging of all the commands given in the monitor. The first time the command is entered a file name for the log file has to be given as parameter. After that any further Command-Log-On commands, without a file name, will append more information to the previous log file, while a Command-Log-On command with a file name will close the old log file and start using a new file with the specified name.

Initially the command log facility is turned off. It can be turned off explicitly by using the command Command-Log-Off.

The generated log file is directly possible to use as a file in the command Include-File. It will, however, contain exactly the commands given in the session, even those that were not executed due to command errors. The concluding Command-Log-Off command will also be part of the log file.

Continue-Until-Branch

First go to the system state node which is the child with the specified number to the current system state. Same as the Next command. Then go down as long as there is only one child, i.e. a branch is found.

Continue-Up-Until-Branch

Go up in the behavior tree as long as there is only one child, i.e. a branch is found.

Default-Options

Resets all options in the Validator to their default values and clears all reports. It also sets the current state to the current root. Compare with the command Reset.

Define-Autolink-Configuration

Defines an Autolink configuration which might consist of:

  1. Rules for the handling of constraints and signal parameter values (naming, replacement and parameterization).
  2. Rules for the arrangement of test cases (test suite structure).
  3. Functions used by the rules above.

If any rule or function is already defined, Autolink prompts the user to decide whether to add the new rules or to clear the existing Autolink configuration. If Define-Autolink-Configuration is part of a command file, the existing configuration is always replaced.

Rules beginning with TRANSLATE are evaluated when a constraint is created during test case generation. A translation rule specifies the name and the parameters of a constraint for a given SDL signal. In addition, it allows to replace signal parameter values by wildcards in a constraint declaration table (TTCN matching mechanism). Translation rules can also be used to introduce test suite parameters and constants.

Test suite structure rules are evaluated when a test suite is saved. A test suite structure rule specifies a test group reference for test cases and/or test steps.

An Autolink configuration has to obey the syntax rules described in Autolink Configuration Syntax.

For a detailed description of the semantics, see Syntax and Semantics of the Autolink Configuration.

Define-Autolink-Depth

Sets the maximum depth of the state space exploration for test case generation to the given value. The default value is 1000.

Define-Autolink-Hash-Table-Size

Sets the size of the hash table used for test case generation to <Size> bytes. The default value is 1,000,000 bytes.

Define-Autolink-State-Space-Options

Determines whether Autolink sets its own default state space options before generating test cases. If "On', the state space options are automatically set when Generate-Test-Case is invoked and reset to the previous options when the command is completed. The default value is"On".

Note that in general, the Validator's default options are too strict to find all inconclusive events. Also be aware that for Autolink to work correctly, the priority of "Input from ENV" has to be higher than the priority of all other event classes, and the queues for all channels to the environment have to be activated.

Define-Bit-State-Depth

The parameter is the maximum depth of bit state exploration, i.e., the number of levels to be reached in the behavior tree. If this level is reached during the exploration, the current path is8 truncated and the exploration continues in another node of the behavior tree. The default value is 100.

Define-Bit-State-Hash-Table-Size

Sets the size of the hash table used to represent the generated state space during bit state exploration. The default value is 1,000,000 bytes.

Define-Bit-State-Iteration-Step

The Bit-State-Exploration algorithm includes a feature to automatically make a number of explorations with an increased depth for each exploration. The iteration continues until the search depth is greater than the maximum depth search as defined by Define-Bit-State-Depth command or one exploration terminates without any truncations.

This command activates the feature and defines how much the depth is increased for each iteration. If <Step> is set to 0 the iterative exploration is deactivated, otherwise <Step> defines how much the maximum depth is increased for each exploration.

The default value is 0, i.e. the feature is not activated.

Define-Channel-Queue

Adds or removes a queue for the specified channel. If a queue is added for a channel, it implies that when a signal is sent that is transported on this channel, it will be put into the queue associated with the channel. By default no channels have queues.

Define-Constraint

Defines a new constraint, which is automatically written to the test suite if the user enters the Save-Test-Suite command later.

Define-Exhaustive-Depth

The parameter defines the depth of the search when performing exhaustive exploration. The default value is 100.

Define-Instance-Conversion

Adds an entry into an instance conversion table. If a string contains spaces, it must be quoted.

When reading instances in an MSC diagram and the name textually match a <From string> in the conversion table, it will be replaced by the <To string>. This is useful if you want to verify some, but not all, instances in an MSC, in which case you can convert the unwanted instances to be considered as environment.

Note that this command will not change an already loaded MSC.

Define-Integer-Output-Mode

Defines whether integer values are printed in decimal, hexadecimal or octal format. In hexadecimal format the output is prepended with "0x", in octal format the output is prepended with `0' (a zero).

On input: if the format is set to hexadecimal or octal, the string determines the base as follows: After an optional leading sign a leading zero indicates octal conversion, and a leading "0x" hexadecimal conversion. Otherwise, decimal conversion is used.

The default is "dec", and no input conversion is performed.

Define-Max-Input-Port-Length

The maximum length of the input port queues is defined. If this length is exceeded during state space exploration, a report is generated (see Max Queue Length Exceeded). The default value is 3.

Define-Max-Instance

Defines the maximum number of instances allowed for any particular process type. If this number is exceeded during state space exploration, a report is generated (see Create Errors). The default value is 100.

Define-Max-Signal-Definitions

This command defines the maximum no of signals that will be added to the list of signals from the environment for any particular signal. The default value is 10.

Define-Max-State-Size

Sets the size of an internal array used to store each system state when computing the hash value for the system state. The default size is 100,000 bytes.

Define-Max-Test-Values

This command defines the maximum no of test values that will be generated for a particular data type or signal parameter. The default value is 10.

Define-Max-Transition-Length

The maximum number of SDL symbols allowed to be executed during the performance of a behavior tree transition is defined. If this number is exceeded during state space exploration, a report is generated (see Transition Length Error). The default value is 1,000.

Define-MSC-Ignore-Parameters

Defines whether the parameters of signals (and timers) will be ignored (i.e. set to default values) when reading MSC diagrams. The default is "Off".

Note that this command will not change an already loaded MSC.

Define-MSC-Search-Mode

Defines options for MSC verification depending on the purpose of the exploration. "Verification" mode should be used if the intention with the exploration is to verify all MSC alternatives. "Violation" mode should be used if the intention is to check if the SDL system can violate the MSC.

The difference between "Verification" and "Violation" mode is that in "Verification" mode the validator will:

The synchronization in "Verification" mode implies that the validator will try to execute all events in one MSC before continuing with the events in a subsequent MSC. The special MSC action is executed when all events in one MSC has been executed and it is time to start with the subsequent MSC. Note that if there are more than one subsequent MSC (e.g. due to an HMSC alternative or an inline expression) each MSC action will select one of the MSCs. In the trace output (and in the Navigator) the MSC actions will be presented as "Enter MSC XXX" where XXX is the name of the MSC that the validator will try to execute next.

A simple way to get hands-on experience with the difference between "Verification" and "Violation" mode is to load an MSC that includes alternatives (either an HMSC or an MSC with inline expressions) using the Load-MSC command. Then set up the MSC search mode and use the Navigator to manually explore the state space.

Note that in "Verification" mode the par operator is not supported.

The default search mode is "Violation" mode.

Define-MSC-Test-Cases-Directory

Defines the directory in which the MSC test cases are stored. If `-' is provided instead of a directory name, the test cases directory becomes undefined.

Define-MSC-Test-Steps-Directory

Defines the directory in which the MSC test steps are stored. If `-' is provided instead of a directory name, the test steps directory becomes undefined.

Define-MSC-Trace-Action

This command defines whether actions like tasks, decisions, etc. are shown in the MSC trace. The default value is "Off".

Define-MSC-Trace-Autopopup

This command defines whether an MSC Editor automatically will pop up and show an MSC trace when going to a report. The default value is "On".

Define-MSC-Trace-State

This command defines if the SDL process graph states are shown in the MSC trace. If "On", a condition symbol will be shown in the MSC trace each time a process performs a nextstate. The default value is "On".

Define-MSC-Trace-Channels

Defines whether the env instance should be split into one instance for each channel connected to env in the MSC trace. The default is "Off".

Define-MSC-Verification-Algorithm

Defines the search algorithm that is used for MSC verification. Two options are available, the tree search algorithm and the bit state algorithm. The default is "BitState".

Note that this command only defines what search algorithms that is used by the Verify-MSC command. It is possible to use other search algorithms, like Power-Walk and Exhaustive-Exploration, by manually loading the MSC with the Load-MSC command and then starting the desired search algorithm.

Define-MSC-Verification-Depth

The parameter defines the depth of the search when performing MSC verification using the Verify-MSC command. The default value is 1,000.

Define-Observer

Defines all process instances of the given type to be observer processes.

Define-Parameter-Test-Value

The parameter test value described by the command parameters is added to the current set of test values. The list of signals that can be sent from the environment is regenerated based on the new set of test values.

Define-Power-Walk-Abort-Conditions

Sets the thresholds for the three termination criteria of the Power-Walk command. Each parameter has to be specified as a natural number with the following meaning:

If `-' is given instead of a parameter value, the corresponding threshold remains unchanged. The thresholds are checked after each separate state space exploration. If any of them is exceeded, the Power-Walk command is stopped.

Define-Power-Walk-Continuation-Depth

Sets the maximum number of transitions which the power walk algorithm performs randomly in the behavior tree in order to increase the symbol coverage (see the command Power-Walk). The default value is 100.

Define-Power-Walk-Max-Depth

Sets the total maximum depth of the power walk exploration to the value given by the parameter. The default value for max depth is 500.

Define-Power-Walk-Tree-Depth

Sets the depth up to which the power walk algorithm performs a full tree search in order to find a transition increasing the symbol coverage (see the command Power-Walk). The default value is 3.

Define-Priorities

Defines the priorities for the different event classes. The priorities can be set individually to 1, 2, 3, 4 or 5. For more information about event classes and priorities, see Event Priorities.

The default priorities are:

Note that the priorities of events processed in the validator also is affected by the command Define-Symbol-Time.

Define-Random-Seed

Defines the seed for a sequence of pseudo-random numbers, which is used by the commands Random-Walk and Power-Walk. If a seed value is reused, then the resulting sequence of pseudo-random numbers is identical. The default value is 1.

Define-Random-Walk-Depth

The parameter defines the depth of the search when performing random walk exploration. The default value is 100.

Define-Random-Walk-Repetitions

The parameter defines the number of times the search is performed from the start state when performing random walk exploration. The default is 100.

Define-Report-Abort

Defines that the state space exploration will be aborted whenever a report of the specified type is generated.

The available report types are listed with the command Show-Options. They are also described in Rules Checked During Exploration. If the parameter is specified as `-', all report types will be defined in the same way.

Define-Report-Continue

Defines that a state space exploration will continue past a state where a report of the specified type is generated. With this definition, the exploration of the behavior tree is not affected by a report being generated.

The available report types are listed with the command Show-Options. They are also described in Rules Checked During Exploration. If the parameter is specified as `-', all report types will be defined in the same way.

Define-Report-Log

Defines how many reports of a specified type will be stored in the list of found reports when they are encountered during state space exploration. Default for all report types is "One".

If "Off" is specified for a report type, reports of this type will not be stored, which implies for example that they will not be listed by the List-Reports command. However, the reports will be generated and the appropriate action taken as specified by the commands Define-Report-Abort, Define-Report-Continue and Define-Report-Prune.

If "One" is specified only one occurrence of each reported situation is stored.

If "All" is specified then all occurrences of a reported situation that have different execution paths is stored in the list.

The available report types are listed with the command Show-Options. They are also described in Rules Checked During Exploration. If the parameter is specified as `-', all report types will be defined in the same way.

Define-Report-Prune

Defines that a state space exploration will not continue past a state where a report of the specified type is generated. Thus, the part of the behavior tree beneath the state will not be explored. Instead, the exploration will continue in the siblings or parents of the state. This is also known as "pruning" the behavior tree at the state. This is the default behavior for all report types.

The available report types are listed with the command Show-Options. They are also described in Rules Checked During Exploration. If the parameter is specified as `-', all report types will be defined in the same way.

Define-Report-Viewer-Autopopup

This command defines whether the Report Viewer automatically will pop up when an automatic exploration is finished. The default is "On".

Define-Root

Defines the root of the behavior tree to be either the current system state or the original start state of the SDL system.

Note: 

When the root is redefined, all paths, e.g. MSC traces or report paths, will start in the new root, not in the original start state.

Define-Rule

A new rule is defined that will be checked during state space exploration.

Define-Scheduling

Defines which process instances in the ready queue are allowed to execute at each state. The parameter defines the scheduling as follows:

The default is "First".

Define-Signal

A signal that is to be sent to the SDL system from the environment is defined. The signal is defined by its name and optionally the values of its parameters. Multiple Define-Signal commands may be used to define the same signal, but with different values for the parameters.

Note: 

The signals defined by this command will be destroyed if the signals are regenerated, i.e., if any of the commands defining test values for sorts or signal parameters are used.

Define-Spontaneous-Transition-Progress

Defines whether a spontaneous transition (input none) is considered as progress when performing non-progress loop check. Default is that spontaneous transition is considered to be progress, i.e. "On". See Non Progress Loop Error.

Define-Symbol-Time

The time it takes to execute one symbol, e.g. an input, task or decision, in an SDL process is defined either to be zero or undefined. If it is set to zero, it is assumed that all actions performed by process instances take are infinitely fast compared to the timer values that are used in the system. If the symbol time is set to undefined, no assumption is made about how long time it takes for processes to execute symbols. Consider for example a situation where a process sets a timer with a duration 5 and then executes something that may take a long time, e.g. a long loop, and the sets a timer with duration 1. If symbol time is set to zero then the second timer will always expire first. If symbol timer is set to undefined then both timers can potentially expire first.

Note that when symbol time is set to zero, no timer will expire if an internal action is possible, even if internal and timer events have the same priority as set by the command Define-Priorities.

The default value of the symbol time options is "Zero".

Define-Test-Value

The test value described by the parameters is added to the current set of test values. The list of signals that can be sent from the environment is regenerated based on the new set of test values.

Note: 

When regenerating the set of signals, all signals that have been manually defined using the Define-Signal command will be lost.

Define-Timer-Check-Level

The action taken during MSC verification when checking timer statements (set, reset and timeout) is defined. The possible values for the specified number are:

The default value is 1.

Define-Timer-Progress

Defines if the expiration of a timer is considered as progress when performing non-progress loop check. Default is that timer expiration is considered to be progress, i.e. "On". See Non Progress Loop Error.

Define-Transition

Defines the semantics and length of the transitions in the behavior tree. The parameter defines the transitions as follows:

The default is "SDL".

Define-Tree-Search-Depth

Defines the maximum search depth for tree search.

The default value is 100.

Define-TTCN-Compatibility

Determines whether Autolink generates the declarations part of a TTCN test suite. If set to "Standard", Autolink creates declarations with ASN.1 data field names being constructed of the form "data type+parameter number" (e.g. "Integer2"). If set to "ITEX", no declarations are created. In this case, ASN.1 data field names used in constraint definitions are represented by `#' characters. This allows to merge the test suite with declarations generated by Link in ITEX. The default value is "Standard".

This command exists for backward compatibility reasons only.

Define-TTCN-Signal-Mapping

Determines whether the constraints are stored as ASN.1 ASP constraints or ASN.1 PDU constraints. By default, signals are mapped onto ASPs.

Define-TTCN-Test-Steps-Format

Defines how test steps are written in a TTCN test suite. "Global" is the default value.

If set to "Global", each test step is saved in a separate behaviour description table. If a test step is used in more than one test case, then only one behaviour description table is generated.

If set to "Local", each test step is saved as a local tree in the behaviour table of the corresponding test case. If a test step is used several times in a single test case, then only one behaviour description is generated.

If set to "Inline", all test step trees are directly inserted into the test case descriptions.

Note that a test step which is used in several places may lead to trees with different inconclusive events or different verdicts. In this case, the test steps are stored in separate tables with unique names.

Define-Variable-Mode

This command defines how a specific variable is treated when comparing two system states during state space exploration. If the value for a variable is "Compare", this variable will be taken into account when comparing two system states. If the value is "Skip", this variable will not be taken into account, i.e. if the only difference between two system states is that values of variables in "Skip" mode differs, then the system states will be considered equal.

The purpose of the "Skip" mode for variables is to optimize the state space search. There are two different situations where this command can be used:

The benefit with constant variables in "Skip" mode is that the Validator will ignore these variables when computing hash values. This can for large data structures like arrays mean that the performance of the validator can be considerably improved.

Down

Go down the specified number of levels in the behavior tree, each time selecting the child of the current system state that is part of the current path. If the parameter is too large, Down will stop at the end of the current path.

Evaluate-Rule

The currently defined rule is evaluated with respect to the current system state. The command prints whether or not the rule is satisfied.

Examine-Channel-Signal

The parameters of the signal instance at the position equal to the entry number in the queue of the specified channel are printed. The entry number is the number associated with the signal instance when the command List-Channel-Queue is used.

Examine-PId

Information about the process instance given by the current scope is printed (see the Set-Scope command for an explanation of scope). This information contains the current values of Parent, Offspring, Sender and a list of all currently active procedure calls made by the process instance. The list starts with the latest procedure call and ends with the process instance itself.

If the process instance contains service(s), information about all services is also printed.

Examine-Signal-Instance

The parameters of the signal instance at the specified position in the input port of the process instance given by the current scope are printed (see the Set-Scope command for an explanation of scope). The entry number is the number associated with the signal instance when the command List-Input-Port is used.

Examine-Timer-Instance

The parameters of the specified timer instance are printed. The entry number is the number associated with the timer when the List-Timer command is used.

Examine-Variable

The value of the specified variable or formal parameter in the current scope is printed (see the Set-Scope command for an explanation of scope). Variable names may be abbreviated. If no variable name is given, all variable and formal parameter values of the process instance given by the current scope are printed. Sender, Offspring, and Parent may also be examined in this way. Their names, however, may not be abbreviated and they are not included in the list of all variables.

Note: 

If a variable is exported, both its current value and its exported value are printed.

It is possible to examine only a component of a struct, string or array variable, by appending the struct component name or a valid array index value as an additional parameter. The component selection can handle structs and arrays within structs and arrays to any depth by giving a list component selection parameters. SDL syntax with `!' and "( )" as well as just spaces, can be used to separate the names and the index values.

It is also possible to print a range of an array by giving "FromIndex : ToIndex" after an array name. Note that the space before the `:' is required if FromIndex is a name (enumeration literal), and that no further component selection is possible after a range specification.

To see the possible components that are available in the variable, the variable name must be appended by a space and a `?' on input. A list of components or a type name is then given, after which the input can be continued. After a component name, it is possible to append a `?' again to list possible sub components.

To print the value of the data referenced by a Ref pointer it is possible to use the SDL syntax, i.e. the "*>" notation. If, for example, Iref is a Ref(Integer) variable, then Iref*> is the integer referenced by this pointer. If Sref is a Ref of a struct, then Sref*> ! Comp1 is the Comp1 component in the referenced struct. The sequence *> ! can in the monitor be replaced by -> (as for example in C).

If a PId is given within parenthesis, the scope is temporarily changed to
this process instance instead.

Exhaustive-Exploration

Starts an automatic state space exploration from the current system state, where the entire generated state space is stored in primary memory. This is only recommended for SDL systems with small state spaces.

The exploration will continue until either the complete state space to the defined depth is explored, <Return> is pressed from the command prompt, or the Break button is pressed in the graphical user interface. The system is then returned to its initial system state. The maximum depth of the exploration can be set with the command Define-Exhaustive-Depth.

If an exhaustive exploration already has been started, but has been stopped, this command asks if the exploration should continue from where it was stopped, or restart from the beginning again.

A status message is printed every 50,000 states that are generated. When the exploration is finished or stopped, the same information as for a bit state exploration is printed.

Exit

The executing validator is terminated. If the command is abbreviated, the monitor asks for confirmation. If any of the Validator options have been changed, the monitor will ask if the changed options should be saved. If so, the changed options are saved in a file .valinit (on UNIX), or valinit.com (in Windows), in the directory from where SDT was started. This file is automatically loaded the next time a Validator is started from the same directory, thus restoring the previously saved options.

This is the same command as Quit.

Extract-Signal-Definitions-From-MSC

Extracts all signals from an MSC which are to be sent from the environment into the SDL system and adds them to the list of active signals. This command is only applicable to basic MSCs in textual format, i.e. to those MSCs stored with file extension .mpr. If `-' is given instead of a file name, signal definitions from all MSCs in the specified directory are extracted.

Generate-Test-Case

Starts the state space search algorithm which constructs an internal data structure for the MSC test case specified by the parameter. Additionally, constraints for all signals occurring in the test case are generated. At the end all constraints with identical signal definitions are merged. If the command parameter is specified as `-', test cases are generated for all MSC test cases in the current test cases directory. If the previous generation of a test case has been interrupted, Autolink prompts the user to decide whether to continue the interrupted generation or to abort it. No file name is needed if the test case generation is to be continued.

Note that this command requires a TTCN Link license in addition to the Validator license.

Goto-Path

Go to the system state specified by the path. For details about paths, see the command Print-Path.

Goto-Report

Go to the state in the behavior tree where the report with the corresponding number has been found. The last behavior tree transition that was executed before the reported situation is printed, with the same information as for a full trace during simulation. The report number is the number associated with the report when the command List-Reports is used. If only one report exists, the report number is optional.

Help

Issuing the Help command without a parameter will print all the available commands. If a command name is given as parameter, this command will be explained.

Include-File

This command provides the possibility to execute a sequence of monitor commands stored in a text file. The Include-File facility can be useful for including, for example, an initialization sequence or a complete test case. It is allowed to use Include-File in an included sequence of commands; up to five nested levels of include files can be handled.

List-Channel-Queue

A list of all signal instances in the specified channel queue is printed. For each signal instance an entry number, the signal type, and the sending process instance is given. The entry number can be used in the command Examine-Channel-Signal.

List-Constraints

Lists all currently defined constraints.

List-Generated-Test-Cases

Lists all test cases which have been generated either by Generate-Test-Case or Translate-MSC-Into-Test-Case, or which have been loaded with the Load-Generated-Test-Cases command.

List-Input-Port

A list of all signal instances in the input port of the process instance given by the current scope is printed (see the Set-Scope command for an explanation of scope). For each signal instance an entry number, the signal type, and the sending process instance is given. A `*' before the entry number indicates that the corresponding signal instance is the signal instance that will be consumed in the next transition performed by the process instance. The entry number can be used in the command Examine-Signal-Instance.

If a PId is given within parenthesis information about this process instance is printed instead.

List-Instance-Conversion

Lists all defined instance conversions. See also the command Define-Instance-Conversion.

List-MSC-Test-Cases-And-Test-Steps

Lists all MSC test cases and test steps currently stored in the test cases and test steps directories.

List-Next

A list of the possible behavior tree transitions that can follow from the current system state is printed.

Note: 

The number of possible transitions depends on the selected state space options.

List-Observers

List all process types which are defined to be observer processes.

List-Parameter-Test-Values

Lists all currently defined test values for signal parameters.

List-Process

A list of all process instances with the specified process name is printed. If no process name is specified all process instances in the system are listed. The list will contain the same details as described for the List-Ready-Queue command.

If the process contains services, information about the currently active service is also printed. To get information about all services use the Examine-PId command.

List-Ready-Queue

A list of process instances in the ready queue is printed. For more information, see the Simulator command List-Ready-Queue.

List-Reports

All situations that have been reported during state space exploration are printed. For each report, the error or warning message describing the situation is printed, together with the depth in the behavior tree where it first occurred. Only one occurrence of each reported situation is printed; the one with the shortest path from the root of the behavior tree. The report numbers printed can be used in the command Goto-Report.

List-Signal-Definitions

A list of all currently defined signals is printed.

List-Test-Values

Lists all test values that currently are defined.

List-Timer

A list of all currently active timers is printed. For each timer, its corresponding process instance and associated time is given. An entry number will also be part of the list, which can be used in the command Examine-Timer-Instance.

Load-Constraints

Loads all constraints stored in the file specified by the parameter. The suggested file extension is .con.

Load-Generated-Test-Cases

Loads all generated test cases stored in the file specified by the parameter. The suggested file extension is .gen.

Load-MSC

The specified Message Sequence Chart is loaded into the Validator. Loading an MSC always resets the state space and sets the current state to the root of the behavior tree.

Load-Signal-Definitions

A command file with Define-Signal commands is loaded and the signals are defined. This command exists for backward compatibility reasons only.

Log-Off

The command Log-Off turns off the interaction log facility, which is described in the command Log-On.

Log-On

The command Log-On takes an optional file name as a parameter and enables logging of all the interaction between the Validator and the user that is visible on the screen. The first time the command is entered, a file name for the log file has to be given as parameter. After that any further Log-On commands, without a file name, will append more information to the previous log file, while a Log-On with a file name will close the old log file and start using a new file with the specified file name.

Initially the interaction log facility is turned off. It can be turned off explicitly by using the command Log-Off.

Merge-Constraints

Merges the two constraints specified by the parameters. The resulting constraint has at least the formal parameters of the original constraints. If additional constraint parameters are necessary (e.g. when merging two constraints with signals S(1,1) and S(1,2)), Autolink prompts the user to enter a name for each new formal parameter. Merge-Constraints can only be applied to constraints with the same signal. The new constraint gets the name of the second constraint.

Merge-Report-File

An existing report file is opened and the reports in it are added to the current reports.

MSC-Log-File

A log file is produced containing information about the Message Sequence Chart for the trace from the root of the behavior tree to the current system state. This file can be opened in an MSC Editor; we recommend using a filename with the suffix .mpr, since that suffix is used as default.

MSC-Trace

An MSC Editor is opened, showing the Message Sequence Chart for the current execution path. The current state is shown in the MSC by the selection of some of the symbols. Whenever the current state and/or current path changes in the Validator, the MSC will be updated.

If the MSC trace is already on, this command will turn it off.

New-Report-File

A new report file for report storage is created. The current reports are deleted.

Next

Go to a system state in the next level of the behavior tree, i.e. a child to the current system state. The parameter is the transition number given by the List-Next command.

Open-Report-File

An existing report file is opened and the reports in it are loaded. The current reports are deleted.

Parameterize-Constraint

Replaces concrete values in a constraint with formal parameters. The replacement is defined by a sequence of pairs of a signal parameter number followed by the corresponding formal parameter name. The definition must be terminated with a 0.

Power-Walk

Performs a sequence of automatic explorations of the state space starting from the root system state. Power walk is a combination of a tree search and a random walk. It can be used for the generation of test cases based on the symbol coverage criteria. If the symbol coverage table is not empty when the command is started, Autolink prompts the user to decide whether to clear the table or not. The power walk search algorithm performs the following steps:

  1. Perform a Tree-Depth-bounded tree search with `root' as starting state. After the computation of each new state, check whether the current depth is less than Max-Depth or symbol coverage has increased. If the current depth equals Max-Depth then drive the system into a stable state and go to 3. If symbol coverage has increased, set `root' to the new state and go to 1. If no state with increased coverage can be found, continue with 2.
  2. Perform a Continuation-Depth-bounded random walk. After the computation of each new state, check whether the current depth is less than Max-Depth or symbol coverage has increased. If the current depth equals Max-Depth, then drive the system into a stable state and go to 3. If symbol coverage has increased, set `root' to the new state and go to 1. If no state with increased coverage can be found, continue with 2.
  3. Find a stable state by tracing back the current path to the first `input from ENV' event which follows the last state with increased coverage. Save a report with type PowerWalk for the path up to (but excluding) this event.

The exploration can be interrupted at any time by pressing <Return> at the command prompt or by pressing the Break button if the graphical user interface is used. Furthermore, Define-Power-Walk-Abort-Conditions allows to set values for several criteria to control the number of state space explorations.

Print-Autolink-Configuration

Displays the current Autolink configuration on the screen.

Print-Evaluated-Rule

The currently defined rule is printed with the values obtained from the last evaluation of the rule. The printed information is in the form of a so-called parse tree, and may require some knowledge of such structures to be interpreted correctly.

Print-File

The content of the named text file is displayed on the screen.

Print-Generated-Test-Case

Displays the internal representation of the generated test case specified by the parameter on the screen. If `-' is given instead of a test case name, all generated test cases are shown.

Print-MSC

A textual version of the currently loaded MSC is printed. The format is similar to the textual MSC format defined in ITU recommendation Z.120.

Print-Path

The path to the current system state is printed. A path is a sequence of integer numbers, terminated with a 0, describing how to get to the current system state. The first number indicates what transition to select from the root, the second number what transition to choose from this state, etc. To go to the state specified by a path, use the command Goto-Path.

Print-Report-File-Name

The name of the current report file is printed.

Print-Rule

The currently defined rule is printed.

Print-Trace

The textual trace leading to the current system state is printed. The same information as for a full trace during simulation is printed for each behavior tree transition. The parameter determines how many levels up the trace should start. For example, Print-Trace 10 will print the ten last transitions.

Quit

The executing validator is terminated. If the command is abbreviated, the monitor asks for confirmation. If any of the Validator options have been changed, the monitor will ask if the changed options should be saved. If so, the changed options are saved in the file .valinit (on UNIX), or valinit.com (in Windows),in the directory from where SDT was started. This file is automatically loaded the next time a Validator is started from the same directory, thus restoring the previously saved options.

This is the same command as Exit.

Random-Down

Go down the specified number of levels in the behavior tree, each time selecting a random child of the current system state.

Random-Walk

This command will perform an automatic exploration of the state space from the current system state. Random walk is based on the idea that if more than one transition is possible in a particular system state, one of them will be chosen at random. When the exploration is started, the following information is printed:

The exploration will continue until either it is finished, <Return> is pressed from the command prompt, or the Break button is pressed in the graphical user interface. The system is then returned to the state it was in before the exploration was started.

When the exploration is finished or stopped, the Report Viewer is by default opened (this can be changed with the command Define-Report-Viewer-Autopopup). A few statistics are also printed; see the command Bit-State-Exploration for an explanation of these.

Rename-Constraint

Renames a constraint. If a constraint with the same "new" name but a different signal definition already exists, the user is prompted to choose between one of the following operations (which can be abbreviated):

Restriction: If one of the constraints contains formal parameters, then a different name must always be chosen for the renamed constraint. Rename-Constraint in combination with its options Keep_old and Overwrite_old allows to merge two constraints, e.g. if some signal parameters are irrelevant (see also the command Merge-Constraints and consider the use of CONSTRAINT MATCH ... statements in an Autolink configuration).

Reset

Resets the state of the Validator to its initial state. This command resets all options and test values in the Validator to their initial values and clears all reports, MSCs, and user-defined rules. It also sets the current state and the current root to the original start system state.

This command reads the .valinit (on UNIX), or valinit.com (in Windows), file (see the command Exit). It is equivalent to closing the Validator and starting it again. Compare with the command Default-Options.

Save-As-Report-File

The current reports are saved in a new file. The name of the current report file is set to the new file.

Save-Autolink-Configuration

Saves the current Autolink configuration in a command file. The command name Define-Autolink-Configuration and the terminating End are written at the beginning and the end of the file in order to allow to reload the configuration with Include-File. The suggested file extension is .com.

Save-Constraint

Saves the constraint in a file identified by <File name>.If `-' is given instead of a constraint name, all currently defined constraints are saved. The suggested file extension is .con.

Save-Coverage-Table

Test coverage information is saved in the specified file. The test coverage table consists of two parts, a Profiling Information section, and a Coverage Table Details section. This is the same type of file as generated by the Simulator; for more detailed information about the file, see Print-Coverage-Table.

Save-Error-Reports-As-MSCs

Saves all reports (except those indicating an MSC verification) as MSCs in the target directory. The reports are stored as complete MSCs with file extension .mpr.

For each MSC a generic name consisting of the name of the currently loaded MSC (or "ErrorReport", if none is loaded), a four letter abbreviation of the error type and a sequence number is generated.

Save-Error-Reports-As-MSCs helps to find out what went wrong when running a batch job with a large number of MSC verifications.

Note: This command does not generate MSCs for MSC violation reports if the current MSC could be verified.

Save-Generated-Test-Case

Saves the generated test case in a file. If `-' is given instead of a test case name, all generated test cases which are currently stored in memory are saved. The suggested file extension is .gen.

This command allows to compute test cases in parallel on different machines and to merge them afterwards by using Load-Generated-Test-Cases.

Save-MSC-Test-Case

Saves a test case as a system level Message Sequence Chart in the test cases directory (with file extension .mpr). The MSC contains a separate instance axis for each channel to the environment and another axis for the system. It comprises all signals sent to and from the environment for the trace from the root of the behavior tree to the current system state. If `*' is given instead of a test case name, a generic test case name is generated.

Save-MSC-Test-Step

Saves a test step as a system level Message Sequence Chart in the test steps directory (with file extension .mpr). The MSC contains a separate instance axis for each channel to the environment and another axis for the system. It comprises all signals sent to and from the environment for the trace from the root of the behavior tree to the current system state. If `*' is given instead of a test step name, a generic test step name is generated.

Save-Options

Creates a Validator command file with the name given as parameter. The file contains commands defining the options of the Validator. If this file is loaded (using the command Include-File) the options will be restored to their saved values.

Save-Reports-as-MSC-Test-Cases

Saves all reports of a specified type as MSC test cases in the test cases directory (in system level MSC format; with file extension .mpr). The MSCs contain a separate instance axis for each channel to the environment and another axis for the system. For each MSC test case a generic name consisting of the report type and a five digit number is generated. If `-' is provided instead of a report type, all current reports are saved.

Save-State-Space

A Labelled Transition System (LTS) representing the generated state space is saved to a file. For a description of the file syntax, see section State Space Files.

Note: 

It is necessary to have executed an Exhaustive-Exploration command before the state space can be saved on a file.

Save-Test-Suite

Saves the generated test cases and all constraints in a test suite file in TTCN MP format. In addition, it generates the declarations part of the TTCN test suite. If the generation of a test case has been interrupted, Autolink prompts the user to decide whether to cancel the command or to abort the test case generation. The suggested file extension for the second parameter is .mp.

Note that this command requires a TTCN Link license in addition to the Validator license.

Save-Test-Values

A command file is generated containing Validator commands that, if loaded with the Include-File command, will recreate the current test value definitions.

Scope

This command prints the current scope. See the command Set-Scope for a description of scope.

Scope-Down

Moves the scope one step down in the procedure call stack. If the current scope is a process containing services, one of the services should be specified. See also the commands Stack, Set-Scope and Scope-Up.

Scope-Up

Moves the scope one step up in the procedure call stack. Up from a service leads to the process containing the service. See also the commands Set-Scope, Stack and Scope-Down.

SDL-Trace

This command opens an SDL Editor that will show the transition leading to the current system state. Whenever the current system state changes in the Validator, the SDL Editor will be updated.

If the SDL trace already is on, the command will turn it off.

Set-Application-All

The state space options of the Validator are set to perform state space exploration according to the semantics of an application generated by the SDT Code Generator. No assumptions are made about the performance of the SDL system compared to timeout values or the performance of the environment.

This command sets the exploration mode factors by executing the following commands:

Set-Application-Internal

The state space options of the Validator are set to perform state space exploration according to the semantics of an application generated by the SDT Code Generator. The assumption is made that the time it takes for the SDL system to perform internal actions is very small compared to timeout values and the response time of the environment.

This command sets the exploration mode factors by executing the following commands:

Set-Scope

This command sets the scope to the specified process, at the bottom procedure call. If the process contains services, one of the services can be given as parameter to the command. A scope is a reference to a process instance, a reference to a service instance if the process contains services, and possibly a reference to a procedure instance called from this process/service. The scope is used for a number of other commands for examining the local properties of a process instance. The scope is automatically set to the process that executed in the transition leading to the current system state.

See also the commands Scope, Stack, Scope-Down and Scope-Up.

Set-Specification-All

The state space options of the Validator are set to perform state space exploration according to the ITU semantics for SDL. No assumptions are made about the performance of the SDL system compared to timeout values, or the performance of the environment.

This command sets the exploration mode factors by executing the following commands:

Set-Specification-Internal

The state space options of the Validator are set to perform state space exploration according to the ITU semantics for SDL. The assumption is made that the time it takes for the SDL system to perform internal actions is very small compared to timeout values and the response time of the environment.

This command sets the exploration mode factors by executing the following commands:

Show-Coverage-Viewer

This command starts the Coverage Viewer. The current test coverage is automatically loaded and a symbol coverage tree is presented. See The Coverage Viewer for further description of the Coverage Viewer.

Show-Mode

This command displays a summary of the current execution mode and some other information about the current state of the SDT Validator.

Show-Navigator

This command starts the Navigator tool to simplify interactive navigation in the behavior tree of the SDL system. See The Navigator Tool for more details.

Show-Options

The values of all options defined for the Validator are printed, including the report action defined for each report type.

Show-Report-Viewer

This command starts the Report Viewer that presents a hierarchical view of all reports generated during state space explorations. See The Report Viewer for more details.

Show-Versions

The versions of the C Code Generator and the runtime kernel that generated the currently executing program are presented.

Stack

The procedure call stack for the PId/service defined by the scope is printed. For each entry in the stack, the type of instance (procedure/process/service), the instance name and the current state is printed. See also the commands Set-Scope, Scope-Down and Scope-Up.

Top

Go up in the behavior tree to the start of the current path (the root system state).

Translate-MSC-Into-Test-Case

Translates an MSC into an internal test case data structure without performing a state space search. Additionally, constraints for all signals occurring in the test case are generated. At the end, all constraints with identical signal definitions are merged. If the command parameter is specified as `-', all MSCs in the current test cases directory are transformed into test cases.

Translate-MSC-Into-Test-Case does not require a fully specified SDL system. However, the signals used in the MSC must be defined in the SDL specification. Additionally, the channels between the SDL system and its environment have to be specified in order to find out which MSC instances relate to PCOs and which relate to the SDL system. Therefore, a direct translation cannot be applied to MSCs which consist of only a single instance axis for the environment.

Since the translation is done statically, it is not checked whether the MSC can in fact be verified. In addition, no inconclusive events are computed.

Note that this command requires a TTCN Link license in addition to the Validator license.

Tree-Search

Performs a tree search of the state space from the current system state. A tree search is an exploration where all possible combinations of actions are executed. The tree that is explored is exactly the same tree that can manually be inspected using the Navigator feature (or manual exploration using the Next / List-Next commands).

The depth of the tree search is bounded and is defined by the Define-Tree-Search-Depth command. The default depth is 100.

The command can be aborted by the user by pressing the Break button in the Validator UI or any key if running the validator from the command prompt.

Up

Go up the specified number of levels in the behavior tree. Up 1 goes to the parent state of the current system state. Up will stop at the root of the behavior tree (the start state) if the parameter is too large.

Verify-MSC

This command will perform an automatic exploration from the current system state to search for all execution traces that are consistent with the MSC that is given as a parameter. The search algorithm is a variant of the bit state algorithm that is adapted to suite MSC verification. Before the exploration is started, the root of the behavior tree is set to the current system state.

The file can either be an basic MSC file (.msc), a textual MSC file (.mpr) or a high-level MSC file (.mrm).

When the exploration is finished, the same information as for a bit state exploration is printed. In addition, a message is printed stating whether or not the MSC was verified, i.e. if an execution path was found that satisfied the MSC, and reports for MSC verification and MSC violation are generated.

If the MSC is a high-level MSC or it contains MSC reference expressions more that one MSC verification report can be generated. There will be one report for each sequence of `leaf' MSCs that can be verified. For more information on criteria for MSC verification, see MSC Verification Errors.

If the MSC was verified and exactly one MSC verification report was generated, the system state of the Validator will be set up to the last system state in the path that satisfied the MSC. Otherwise, the system is returned to its initial state.

If the MSC contains MSC references the Validator needs to match the logical MSC names in the MSC references with MSC file names. This is done according to the following algorithm:

  1. If the Autolink test step directory is set, then the MSC file is assumed to be located in this directory and have the same name as the MSC with the suffix .msc, .mpr or .mrm.
  2. The Validator then checks if there is an MSC with the correct name in the same module in the Organizer as the parent MSC. If this is the case this MSC file is used.
  3. If none of above applies then the Validator checks if there is an MSC file in the same directory as the parent MSC with the correct name and with the suffix .msc, .mpr or .mrm. If this is the case this MSC file is used.

Graphical User Interface

This section describes the appearance and functionality of the graphical user interface to the validator monitor (ValUI). Some user interface descriptions general to all tools in Telelogic Tau can be found in User Interface and Basic Operations. These general descriptions are not repeated in this chapter.

Note: 

The ValUI looks and behaves very much like the SimUI, the graphical user interface to the simulator monitor. The differences are the set of available monitor commands and button modules, and a few additional menus and sub windows.

For an explanation of the Validator main window, depicted in Figure 467, see Graphical User Interface.

Figure 467  : The main window

Extracted pic [1]

Starting the ValUI

A new ValUI is started by selecting SDL > Validator UI from the Tools menu in the Organizer. When the ValUI is started, a number of definition files are read, controlling the contents of the main window and some status windows. See Definition Files for more information.

No validator is started automatically by the ValUI in this way. The user must start a validator by selecting Open from the File menu, as stated in the text area of the main window, or by using the Open quick button.


Extracted pic [10]

A simple way to generate a validator, start the ValUI and open the validator is to click the Validate quick button in the Organizer.

When a simulator is started, a file selection dialog may be opened if the SDL system contains external synonyms. For more information, see Supplying Values of External Synonyms.

The Default Button Modules

The following tables list the default buttons in the button modules and the corresponding monitor command. See Monitor Commands for more information.

Note: 

The buttons in the button modules are specified in the button definition file. If the default button file is not used, the button modules may be different than described here. See Button and Menu Definitions for more information.

The EXPLORE Module

Button Monitor command

Bit-State

Bit-State-Exploration

Exhaustive

Exhaustive-Exploration

Top

Top

Bottom

Bottom

Random Walk

Random-Walk

Tree Search

Tree-Search

Up

Up 1

Down

Down 1

Power Walk

Power-Walk

Verify MSC

Verify-MSC

Navigator

Show-Navigator

Break

Pressing <Return>

The VIEW Module

Button Monitor command

Scope

Scope

Set Scope

Set-Scope

Scope Up

Scope-Up

Scope Down

Scope-Down

Call Stack

Stack

Ready Q

List-Ready-Queue

Process List

List-Process

Process

Examine-PId

Input Port

List-Input-Port

Signal

Examine-Signal-Instance

Timer List

List-Timer

Timer

Examine-Timer-Instance

Variable

Examine-Variable

The TEST VALUES Module

Button Monitor command

List Value

List-Test-Values

List Par

List-Parameter-Test-Values

List Signal

List-Signal-Definitions

Clear Signal

Clear-Signal-Definitions

Def Value

Define-Test-Value

Def Par

Define-Parameter-Test-Value

Def Signal

Define-Signal

Extract Sigs

Extract-Signal-Definitions-From-MSC

Clear Value

Clear-Test-Values

Clear Par

Clear-Parameter-Test-Values

The Menu Bar

This section describes the additional menus of the ValUI's menu bar in comparison with the SimUI. The menus common to both the ValUI and the SimUI is described in The Menu Bar.

The menu bar contains the following menus:

Additional Validator Menus

In addition to the standard SimUI menus, a few special validator menus are included in the menu bar. The menu choices in these menus simply execute a monitor command, i.e. they are functionally equivalent to buttons in the button modules. If the monitor command requires parameters, they are prompted for using dialogs in the same way as the command buttons.

The following tables list the default menu choices and the corresponding monitor command. See Monitor Commands for more information.

Note: 

The additional menus in the ValUI are specified in the button definition file. If the default button file is not used, the additional menus may be different than described here. See Button and Menu Definitions for more information.

Commands Menu

Menu choice Monitor command

Toggle MSC Trace

MSC-Trace

Toggle SDL Trace

SDL-Trace

Show Report Viewer

Show-Report-Viewer

Show Coverage Viewer

Show-Coverage-Viewer

Show Navigator

Show-Navigator

Define Rule

Clear-Rule ; Define-Rule

Include Command Script

Include-File

Options1 Menu

Menu choice Monitor command

Show Options

Show-Options

Reset

Reset

Default

Default-Options

Advanced

Define-Scheduling All ; Define-Priorities 1 1 1 1 1 ; Define-Max-Input-Port-Length 2 ; Define-Report-Log MaxQueuelength Off

State Space : Transition

Define-Transition

- : Scheduling

Define-Scheduling

- : Priorities

Define-Priorities

- : Input Port Length

Define-Max-Input-Port-Length

- : Transition Length

Define-Max-Transition-Length

- : Max Instance

Define-Max-Instance

- : Timer Progress

Define-Timer-Progress

- : Channel Queues

Define-Channel-Queue

- : Max State Size

Define-Max-State-Size

- : Symbol Time

Define-Symbol-Time

Report : Continue

Define-Report-Continue

- : Prune

Define-Report-Prune

- : Abort

Define-Report-Abort

- : Report Log

Define-Report-Log

MSC Trace Auto Popup

Define-MSC-Trace-Autopopup

Report Viewer Auto Popup

Define-Report-Viewer-Autopopup

Options2 Menu

Menu choice Monitor command

Show Options

Show-Options

Bit-State : Hash Size

Define-Bit-State-Hash-Table-Size

- : Depth

Define-Bit-State-Depth

- : Iteration Step

Define-Bit-State-Iteration-Step

Random Walk : Repetitions

Define-Random-Walk-Repetitions

- : Depth

Define-Random-Walk-Depth

Power Walk : Random Seed

Define-Random-Seed

- : Tree Depth

Define-Power-Walk-Tree-Depth

- : Continuation Depth

Define-Power-Walk-Continuation-Depth

- : Max Depth

Define-Power-Walk-Max-Depth

- : Abort Conditions

Define-Power-Walk-Abort-Conditions

Exhaustive : Depth

Define-Exhaustive-Depth

Tree Search : Depth

Define-Tree-Search-Depth

MSC Ver : Timer Check Level

Define-Timer-Check-Level

- : Depth

Define-MSC-Verification-Depth

Autolink : Test Cases Directory

Define-MSC-Test-Cases-Directory

- : Test Steps Directory

Define-MSC-Test-Steps-Directory

- : Hash Table Size

Define-Autolink-Hash-Table-Size

- : Depth

Define-Autolink-Depth

- : Options

Define-Autolink-State-Space-Options

- : Signal Mapping

Define-TTCN-Signal-Mapping

- : Compatibility

Define-TTCN-Compatibility

- : Test Steps Format

Define-TTCN-Test-Steps-Format

Autolink1 Menu

Menu choice Monitor command

MSC : Save Test Case

Save-MSC-Test-Case

- : Save Reports

Save-Reports-as-MSC-Test-Cases

- : Save Error Reports

Save-Error-Reports-As-MSCs

- : Save Test Step

Save-MSC-Test-Step

- : List

List-MSC-Test-Cases-And-Test-Steps

- : Clear Test Case

Clear-MSC-Test-Case

- : Clear Test Step

Clear-MSC-Test-Step

Test case : Generate

Generate-Test-Case

- : Translate

Translate-MSC-Into-Test-Case

- : List

List-Generated-Test-Cases

- : Print

Print-Generated-Test-Case

- : Clear

Clear-Generated-Test-Case

- : Save

Save-Generated-Test-Case

- : Load

Load-Generated-Test-Cases

Test suite : Save

Save-Test-Suite

Autolink2 Menu

Menu choice Monitor command

Configuration : Define

Define-Autolink-Configuration

- : Print

Print-Autolink-Configuration

- : Clear

Clear-Autolink-Configuration

- : Save

Save-Autolink-Configuration

- : Load

Include-File

Constraint : Define

Define-Constraint

- : List

List-Constraints

- : Rename

Rename-Constraint

- : Merge

Merge-Constraints

- : Parameterize

Parameterize-Constraint

- : Clear

Clear-Constraint

- : Save

Save-Constraint

- : Load

Load-Constraints

The Command and Watch Windows

The Command window of the ValUI is identical to the SimUI (see Command Window). The only difference is that the default commands to execute are " List-Process -" and " Print-Trace 1". The set of commands to execute are stored in a command definition file (see Definition Files). The default command definition file can be changed with the Preference Manager.

The Watch window of the ValUI is identical to the SimUI (see Watch Window).

The Navigator Tool

The Navigator is a separate tool in the ValUI that is used for navigating in the behavior tree. It can be opened in the following ways:

Figure 468 : The Navigator window

Extracted pic [2]

The Navigator window consists of the tree area and the tool bar. There is no menu bar or status bar in the Navigator window.

Tree Area

The tree area of the Navigator window shows the structure of the behavior tree around the current system state. Each box, or node, represents a tree transition from one system state to another.

The text in the boxes contains the textual trace describing the tree transition. This may represent a complete or partial SDL process graph transition, depending on how the behavior tree is set up. The number of down nodes also depends on the structure of the behavior tree. This is determined by the state space options; see State Space Options.

Double-clicking a node in the Navigator executes the corresponding tree transition and moves one level up or down in the behavior tree. The current system state is changed and the Navigator window is updated to show the situation around the new system state.

Note: 

Double-clicking a collapsed node (see below) does not expand the node; it always executes the corresponding transition.

The Navigator window is also updated whenever a monitor command is executed that changes the current system state.

Popup Menus

Each node in the node area has an associated popup menu.

Up 1

On the up node: Go up one level in the tree. This is the same as double-clicking the up node.

Up to top

On the up node: Go to the top of the behavior tree.

Continue Up

On the up nodes: Go up in the tree until more than one transition is possible (see Continue-Up-Until-Branch command).

Goto

On the down nodes: Go down this branch of the tree. This is the same as double-clicking the down node.

Continue

On the down nodes: Go down this branch of the tree until more than one transition is possible (see Continue-Until-Branch command).

Expand

Expand the collapsed node to show the down nodes.
(Not applicable on a down node.)

Expand Substructure

The same as Expand.

Collapse

Collapse the node to hide the down nodes. A small triangle below the node shows that it is collapsed.
(Not applicable on a down node.)

Quick Buttons

The following quick buttons are special to the Navigator tool. The general quick buttons are described in General Quick-Buttons.


Extracted pic [3]
Close

Closes the Navigator tool.


Extracted pic [4]
Structure

Switches between a tree structure and a list structure in the node area.


Extracted pic [5]
Show Validator UI

Raises the Validator UI window.

The Report Viewer

The Report Viewer is a separate tool in the ValUI that is used for examining the reports generated during an automatic state space exploration. It is opened in one of the following ways:

Figure 469  : The Report Viewer

Extracted pic [6]

The Report Viewer window consists of the Report Area, containing Popup Menus, and the tool bar, containing Quick Buttons. There is no menu bar or status bar in the Report Viewer window.

Report Area

The report area of the Report Viewer shows the current reports from the latest state space exploration in the form of a report tree. The report tree contains three levels of nodes (see Figure 469):

Double-clicking a report node at the bottom level causes the Validator to "go to" the report, i.e., go to the system state where the report was generated. The following things happen:

Double-clicking the top node or a report type node will expand or collapse the node, depending on its state. A collapsed node hides its underlying nodes and is indicated by a small triangle below the node.

Popup Menus

Goto

Only on report nodes: Go to the report. This is the same as double-clicking the report node.

Expand

Expand the collapsed node to show the nodes in the next level of the tree. This is the same as double-clicking the collapsed node (top node or report type node).
(Not applicable on a report node.)

Expand Substructure

Expand the collapsed node to show all nodes on all levels below it.
(Not applicable on a report node.)

Collapse

Collapse the node to hide all nodes on all levels below it. This is the same as double-clicking the node (top node or report type node).
(Not applicable on a report node.)

Quick Buttons

The following quick buttons are special to the Report Viewer. The general quick buttons are described in General Quick-Buttons.


Extracted pic [7]
Close

Closes the Report Viewer.


Extracted pic [8]
Structure

Switches between a tree structure and a list structure in the report area.


Extracted pic [9]
Show Validator UI

Raises the Validator UI window.

Definition Files

In the ValUI, the syntax and contents of the definition files are the same as for the SimUI; see Definition Files. The default file names for the definition files are val_def.btns, val_def.cmds and val_def.vars, respectively.

Rules Checked During Exploration

For each system state encountered during state space exploration, a number of rules are checked to detect errors or possible problems in the SDL system. If a rule is satisfied, a report is generated to the user.

The rules that are checked by the SDT Validator are the same ones as checked and reported by the SDT Simulator, with a few additions and differences.

Apart from the predefined rules, an additional rule can be defined by the user of the validator to check for other properties of the system states encountered. See User-Defined Rules for more information.

The rules are listed below, together with the reported error messages. The rules are grouped according to the corresponding report type, used in the Report Viewer in the Validator. The names of the report types listed below are the ones to be used in the monitor commands that define the report actions.

Deadlock

All processes instances are waiting for some other process instance to act, implying that none of the processes will execute. This is referred to as a deadlock.

Implicit Signal Consumption

A signal was sent to a process that was not able to handle (or save) the signal in the current state, so it was implicitly consumed.

Create Errors

There are more static instances defined than the maximum allowed number of instances.

An attempt has been made to create a new instance of a process type of which there is already the maximum number of allowed instances active. The maximum number is either the value defined by the command Define-Max-Instance, or the value defined in the SDL diagram, whichever is smallest.

Output and Remote Procedure Call Errors

An attempt was made to output a signal to an invalid PId expression.

An attempt was made to output a signal to a PId expression. There exists, however, no path of channels and signal routes between the sender and the receiver that can convey the signal.

An attempt was made to output a signal without specifying a PId expression. When all paths or all paths mentioned in a via clause had been examined no possible receiver was found.

An attempt was made to output a signal without specifying a PId expression. When all paths or all paths mentioned in a via clause had been examined several possible receivers were found.

An attempt was made to output a signal to a PId expression that referred to a process instance which has performed a stop action.

An attempt was made to output a signal to a PId expression that was null.

An attempt was made to output a signal with the TRANSFER directive that was not the same signal as in the preceding input.

An attempt was made to call a remote procedure in a system state where there are more than one possible process instance that can provide the remote procedure.

An attempt was made to call a remote procedure in a system state where
there is no possible process instance that can provide the remote procedure.

Max Queue Length Exceeded

The length of the input port of the receiving process has exceeded the value defined by the monitor command Define-Max-Input-Port-Length.

The length of the queue of the receiving channel has exceeded the value defined by the monitor command Define-Max-Input-Port-Length.

The length of the input port of the receiving process has exceeded the value defined by the monitor command Define-Max-Input-Port-Length.

The length of the queue of the receiving channel has exceeded the value defined by the monitor command Define-Max-Input-Port-Length

Channel Output Errors

In addition to the following messages, information about the channel, signal, sender and receiver is also displayed.

An attempt was made to output a signal to an invalid PId expression.

An attempt was made to output a signal to a PId expression. There exists, however, no path of channels and signal routes between the sender and the receiver that can convey the signal.

An attempt was made to output a signal without specifying a PId expression. When all paths or all paths mentioned in a via clause had been examined no possible receiver was found.

An attempt was made to output a signal without specifying a PId expression. When all paths or all paths mentioned in a via clause had been examined several possible receivers were found.

An attempt was made to output a signal to a PId expression that referred to a process instance which has performed a stop action.

An attempt was made to output a signal to a PId expression that was null.

Operator Errors

The errors that can be found in operators defined in the predefined data types are listed below.

Range Errors

A variable of a restricted syntype is assigned a value out of its range.

Index Error

An array index is out of range.

Decision Error

The value of the expression in the SDL decision did not match any of the possibilities (answers).

Import Errors

Error during execution of an import statement. Supplementary information about remote variables and exporting processes is also given.

View Errors

Error during execution of view statement. Supplementary information about viewed variables and revealing processes is also given.

Transition Length Error

The maximum number of SDL symbols executed in one behavior tree transition is more than the value defined by the monitor command Define-Max-Transition-Length.

Non Progress Loop Error

The Validator includes a mechanism for non-progress loop detection. A report will be generated if the Validator during state space exploration finds a loop in the state space which does not contain any progress transition. A progress transition is defined as a transition that either:

Assertion Errors

A user-defined action in the SDL system has called the function
xAssertError
. See Using Assertions for more information.

User Defined Rule

A user-defined rule is evaluated to true.

Observer Errors

A process defined as an observer process has not been able to execute a transition.

MSC Verification Errors

The MSC verification report is given when a state space exploration has reached a state where the execution trace from the root of the behavior tree to the current state satisfies the loaded MSC. In this case, "satisfies" means that:

An event on the execution trace is considered to be "observable" if it is either

Note: 

Two process instances can correspond to the same MSC instance if the MSC is a system or block level MSC.

The MSC violation report is given during state space exploration for each generated execution trace that either:

REF Errors

The list of dynamically allocated data areas that is maintained by the Validator contains a data area that no SDL entity (like a variable, signal parameter etc.) references. This indicates a memory leak in the system.

The list of dynamically allocated data areas that is maintained by the Validator contains a data area that no SDL entity (like a variable, signal parameter etc.) references. This indicates a memory leak in the system. The lack of <Sort Name> in this report indicates that this is a newly allocated data area and there has been no previous system state with a reference to this data area.

A REF variable (or signal parameter, structure field etc.) has been found that references a data area that is not allocated. To avoid this report always set the REF variables to NULL after the data area has been released.

An expression XX*> has been evaluated where XX was NULL.

The UserMalloc or UserFree functions has been called with NULL as a parameter which is illegal.

UserFree has been called with a parameter that is not a pointer to one of the data areas in the list of the dynamically allocated data areas.

User-Defined Rules

User-defined rules are used during state space exploration to check for properties of the system states encountered. If a system state is found for which a user-defined rule is true, this will be listed among the other reports when giving the List-Reports command. During an exploration more that one user defined rule report can be generated. There will be one report for each value assignment that can be made to a rule. The value assignments are the values printed by the Print-Evaluated-Rule command.

A rule essentially gives the possibility to define predicates that describe properties of one particular system state. A rule consists of a predicate (as described below) followed by a semicolon (`;'). In a rule, all identifiers and reserved words can be abbreviated as long as they are unique.

Note: 

Only one rule can be used at any moment. If more than one rule is needed, reformulate the rules as one rule, using the boolean operators described below.

Predicates

The following types of predicates exist:

Parenthesis are allowed to group predicates.

Quantifiers

The quantifiers listed below are used to define rule variables denoting process instances or signals. The rule variables can be used in process or signal functions described later in this section.

This predicate is true if there exists a process instance (of the specified type) for which the specified predicate is true. Both the process type and the predicate can be excluded. If the process type is excluded all process instances are checked. If the predicate is excluded it is considered to be true.

This predicate is true for all process instances (of the specified type) for which the specified predicate is true. Both the process type and the predicate can be excluded. If the process type is excluded all process instances are checked. If the predicate is excluded it is considered to be true.

This predicate is true if there exists a signal (of the specified type) in the input port of the specified process for which the specified predicate is true. If no signal type is specified, all signals are considered. If no process instance is specified the input ports of all process instances are considered. If no predicate is specified it is considered to be true. The specified process can be either a rule variable that has previously been defined in an exists or all predicate, or a process instance identifier (<PROCESS TYPE>:<INSTANCE NO>).

This predicate is true for all signals (of the specified type) in the input port of the specified process for which the specified predicate is true. If no signal type is specified all signals are considered. If no process is specified the input ports of all process instances are considered. If no predicate is specified it is considered to be true. The specified process can be either a rule variable that has previously been defined in an exists or all predicate, or a process instance identifier (<PROCESS TYPE>:<INSTANCE NO>).

Boolean Operator Predicates

The following boolean operators are included (with the conventional interpretation):

The operators are listed in priority order, but the priority can be changed by using parenthesis.

Relational Operator Predicates

The following relational operator predicates exist:

The interpretation of these predicates is conventional. The operators are only applicable to data types for which they are defined.

Expressions

The expressions that are possible to use in relational operator predicates are of the following categories:

Process Functions

Most of the process functions must have a process instance as a parameter. This process instance can be either a rule variable that has previously been defined in an exists or all predicate, a process instance identifier (<PROCESS TYPE>:<INSTANCE NO>), or a function that returns a process instance, e.g. sender or from.

Returns the current SDL state of the process instance.

Returns the type of the process instance.

Returns the length of the input port queue of the process instance.

Returns the value of the imperative operator sender (a process instance) for the process instance.

Returns the value of the imperative operator parent (a process instance) for the process instance.

Returns the value of the imperative operator offspring (a process instance) for the process instance.

Returns the value of the imperative operator self (a process instance) for the process instance.

Returns the signal that is to be consumed if the process instance is in an SDL state. Otherwise, if the process instance is in the middle of an SDL process graph transition, it returns the signal that was consumed in the last input statement.

Returns the value of the specified variable. If <PROCESS INSTANCE> is a previously defined rule variable, the exists or all predicate that defined the rule variable must also include a process type specification.

Returns the process instance value of <RULE VARIABLE>, which must be a rule variable bound to a process instance in an exists or all predicate.

Signal Functions

Most of the signal functions must have a signal as a parameter. This signal can be either a rule variable that has previously been defined in an siexists or siall predicate, or a function that returns a signal, e.g. signal.

Returns the type of the signal.

Returns the process instance value of the receiver of the signal.

Gives the process instance value of the sender of the signal.

Returns the value of the specified signal parameter. The siexists or siall predicate that defined the rule variable must also include a signal type specification.

Returns the signal value of <RULE VARIABLE>, which must be a rule variable bound to a signal in a siexists or siall predicate.

Global Functions

Gives the length of the longest input port queue in the system.

Returns the number of instances of type <PROCESS TYPE>. If <PROCESS TYPE> is excluded the total number of process instances is returned.

Gives the depth of the current system state in the behavior tree/state space.

SDL Literals

The name of an SDL state.

The name of a process type.

A process instance identifier of the format <PROCESS TYPE>:<INSTANCE NO>, e.g. Initiator:1.

The name of a signal type.

SDL null process instance value

Returns the value of the process instance in the environment that is the sender of all signals sent from the environment of the SDL system.

Autolink Configuration Syntax

An Autolink configuration is created with the command Define-Autolink-Configuration. The syntax of an Autolink configuration is expressed below in EBNF format.

For a detailed description of the semantics, see Syntax and Semantics of the Autolink Configuration.

State Space Files

Using the command Save-State-Space, a Labelled Transition System (LTS) representing the state space generated during exhaustive exploration is saved to a file.

Syntax

The syntax of the generated LTS is (using BNF notation):

Lexical Elements

The lexical elements used above are:


Example 165 : A Generated LTS      

A simple example of a generated LTS:


Restrictions

Restrictions on the SDL System

The restrictions on the SDL system that can be validated with the SDT Validator are basically the restrictions imposed by the C Code Generator. See Restrictions for more information.

In addition to these general restrictions, the following restrictions are specific to the SDT Validator:

Restrictions on Monitor Input

There following restrictions apply to monitor input:

Restrictions on Dynamic Checks

There are a number of dynamic checks that are not performed at all or performed at the C level by the C runtime system. A C runtime error will of course lead to the validation program being terminated. The following check is not made at the SDL level.


[Previous] [Next] [Contents] [Index]