![]() |
![]() |
![]() |
![]() |
![]() |
Tool Limitations
SDL Suite and TTCN Suite Limitations
Operating System and Windowing Environment
- On Windows 7 the SDL Suite considers some directories that have limited access for other users as being write protected. This happens for example if you try to open a new template project and try to create the folder in c:\users\nameofuser\desktop. A work around is to use a directory with access for all users.
- On Linux Redhat 5 when using the console as display the existing windows do not popup automatically, for example when double clicking on an SDL diagram in the Organizer or choosing Show Organizer from an editor. What happens is that the window in the status bar will start blinking and showing the balloon text `requesting attention'.
- On Linux Redhat 5 when using the console as display the Organizer will be placed in the top left corner of the screen. When clicking on the menu bar for the first time after starting SDL Suite the Organizer window will be moved down a bit and a menu command will be chosen unintentionally.
- When you run SDL Suite and TTCN Suite on X terminals or PCs with X server software, mouse-clicks are sometimes not transmitted quickly enough for SDL Suite and TTCN Suite to recognize it.
- The X resource *multiClickTime can be used to change the default threshold of 250 ms if you have a UNIX terminal with the DISPLAY environment variable set to your local X server. You can write:
xrdb -merge*multiClickTime: 1000^D- The appropriate value (in milliseconds) may depend on your hardware/network.
On-Line Help and Documentation
- When links are followed from the index in the on-line help, the positioning in the HTML help file may not always be exact. In some cases, the positioning is made a few lines down in the describing text. In the case of tables, the positioning may be after the table.
- In SOMT Tutorial, it is assumed that you have basic knowledge of the Link Manager. However, this tool is not covered in the earlier tutorials. For information about the Link Manager, see Implinks and Endpoints.
- There are no tutorials on the State Chart and HMSC Editors.
- In the MSC Editor, the appearance of some MSC symbols and lines has been updated but all MSC diagrams depicted in the documentation have not been updated accordingly.
- All dialogs and diagrams in the documentation containing the previous release versions in paths, etc. have not been updated to reflect SDL Suite 6.3.
- If the last instance of Netscape was an application other than the browser, help files will not open. The work around is to change the preference for Help*NetscapeCommand to netscape -noraise -remote 'openURL(URLTOOPEN,new-window)'.
ASN.1 Utilities
The ASN.1 Utilities handle all constructs of ASN.1 as defined in ITU-T recommendation X.680 with extensibility features, X.681 and X.682. Some of the X.683 construct are also supported. See restrictions below for unsupported constructs. There is no support for features defined in the old ASN.1 version X.208.
Restrictions to X.680
ASN.1 Utilities handle all constructs defined in X.680, the following semantic concepts of X.680 are not supported:
- Modules are distinguished from each other only by module name. Object identifier following the module name in GlobalModuleReference is ignored and module name is always considered definitive.
- Values can not be assigned to EmbeddedPDVType, ExternalType and UnrestrictedCharacterStringType, these types can not be constrained.
- The contents of character strings representing GeneralizedTime and UniversalTime types is not checked.
Restrictions to X.681
- Object class references (X.681, 7.1) can contain lower-case letters. Object class reference consist of a sequence of characters as specified for a type reference.
- Lower-case letters and digits can be included to Word item (X.681, 7.9). Word consists of a sequence of characters as specified for a type reference.
Restrictions to X.682
- At-notation is not checked when assigning values to the types with component relations.
- Multiple table constraints on one type are not allowed, for example "MY-CLASS.&TypeField ({MY-SET1}) ({MY-SET2})" is not allowed.
Restrictions to X.683
- Parameterized object classes, objects and object sets and value set types are not supported; only parameterized types and values can be specified, though all of the above entities can be used as parameters themselves.
- Dummy governors are not supported.
Restrictions to X.690 and X.691
- Only one reference to identifier component is supported by ASN.1 coders. For the components restricted by two or more component relations in the AtNotationList (see X.681, 10.7), only the first restriction will be handled by the ASN.1 coders.
- X.690 8.11.3 restriction. The order of data values in a set value decoding restricted by canonical order (X.680 8.4) as default compile configuration. Use CODER_BER_CANONICAL_OFF compile switch to avoid of this restriction.
- The following ASN.1 types defined in X.680 are NOT supported by ASN.1 encoders and decoders:
Restrictions to Z.105
The following concepts of Z.105 are not supported by the ASN.1 Utilities:
- ASN.1 definitions can not be put in text symbols in SDL diagrams; they can only be placed in separate ASN.1 modules, whereas Z.105 allows free mixing of SDL and ASN.1 definitions.
- Value notations for types defined in another module are not supported. For example; val X ::= 3 is only allowed if X is defined in the same module. External value references should be used instead.
- Use of the ASN.1 value notation within SDL expressions is not supported for bit string, octet string, set, set of, sequence, and sequence of.
- Value notation for SEQUENCE/SET where optional/default components have been assigned a value cannot be mapped to SDL unless SDL optional support in make operator is switched ON.
- UniversalString, GraphicString, and EXTERNAL are translated to SDL types with the same name, but no implementation for these types is available (have to be provided by you). The reason is that IBM Rational considers the mapping in Z.105 as insufficient (does not really allow extended character sets).
- There are some restrictions to use of type REAL. REAL values can be used in constraints, not however REAL values in value range. Example:
SDL_REAL1 ::= REAL ( 0 ) -- OKSDL_REAL2 ::= REAL ( { mantissa 2, base 10, exponent 1 } ) -- OKSDL_REAL3 ::= REAL ( 0 .. PLUS-INFINITY ) -- FAILSDL_REAL4 ::= REAL ( MINUS-INFINITY .. v4 ) -- FAIL- PLUS-INFINITY and MINUS-INFINITY are translated to some large numbers. If these are not large enough for a specific platform/application, you must define these SDL synonyms yourself.
- If there are name clashes between named bits, named numbers or ASN.1 values, only the first occurrence of the synonym will be generated to SDL, for example, for ASN.1 definitions T1 ::= BIT STRING { a(3) }, b INTEGER ::= 11 and T2 ::= INTEGER { a(4), b(5) } only synonyms a from BIT STRING and b for INTEGER value will be generated to SDL with warning messages because generation of all synonyms according to the Z.105 standard will result in an SDL analyzer error.
- In SDL (Analyzer) literals and synonyms with the same name will clash if they have the same name. So, for the following ASN.1 definitions T ::= ENUMERATED {x, y} x INTEGER ::= 15 val T ::= x generated SDL newtype T literals x,y operators ordering; endnewtype; synonym x Integer = 15; synonym val T = x; will not compile: ERROR 375 Type mismatch for synonym or literal: synonym val T = ? x INFO 352 x is one of the visible definitions. Although a simple workaround for this problem is to add a qualifier before value x to the generated SDL : synonym val T = <<type T>>x; .
- When printing to EPS files (one per page) the files will be named after the page in a case sensitive way. On Windows, when pages have the same name only differed by case, only one file will be printed containing the last page, due to the limitation in Windows concerning case.
- Colors are not supported for FrameMaker or Interleaf printing.
SDL Suite Tool Limitations
All Editors
MSC Editor
- The inline expressions always cover all instance axis. The reason for this limitation is that gates (and specifically inline gate interfaces) are not supported.
- The column-form of instances and coregions is not supported, only the line-form.
- A syntax error occurs when logging to MSC if an SDL page name contains two consecutive underscores, like "pg__name". Error message should begin, `MSCE: Service INSERTOBJECT failed.'
OM Editor
- Use Browse&Edit Class dialog with care if the symbol contains syntax errors.
- The syntax checker on attributes and operations have error recovery functionality, and can sometimes "recover" in an unwanted way. Use the Browse&Edit Class dialog for editing purposes only with special care if a syntax error is detected. In the drawing area, syntax errors are highlighted with a red underlining in the symbol's corresponding text compartments. The browsing functionality of the Browse&Edit Class dialog can however be used without considerations even if syntax errors are detected.
UML2SDL utility
- Currently there is no special recognition of the use of an SDL predefined type in the UML diagrams. Thus when having an attribute of type Pid in the UML Suite an (erroneous) newtype definition for the type Pid will be generated.
Text Editor
- When you edit large portions of text containing many endpoints, updates can become slow in the Text Editor.
- On Windows, when using double-click to select words and then typing something to replace the selected word, a mismatch will occur between the text shown in the window and the actual text handled internally in the editor. The space shown after the new word is not recognized internally and is therefore missing when the text is saved and later reopened. The same happens if any text selected ends by the newline character. When replacing the selected characters with new text the ending newline will be gone when the text is saved.
Chinese characters can not be used using an English Windows installation. By using an English Windows installation with Chinese language support it is possible to enter Chinese characters in the Text Editor. However when the textfile is reopened the original text has been modified and are not displayed correctly.
Organizer
- On the Japanese version only ASCII input is supported when using the Quick Search functionality (pressing Ctrl + f).
- The commands "Pack Archive" and "Unpack Archive" will only work if the SDL Suite can access the external tar and gzip programs. Archivers gzip (version 1.2.4 or later) and tar (version 1.11.2 or later) are used to perform "Pack Archive" and "Unpack Archive" commands. On Windows, when using later Cygwin versions of these tools it might be needed to set the environment variable CYGWIN to "nontsec" to avoid permissions problems. Also on Windows, the tar command must allow an absolute Windows path as parameter, example tar xvfh c:\temp\nnn.tar. Some later Cygwin versions do not support this.
SDL Editor
- Diagram names may not exceed 255 characters.
- If the colors red and blue are used for some symbols, you may find it hard to interpret the graphical view resulting from the Diff operation, as these colors are used for highlighting the differences between two diagrams. To avoid this problem, do not use the colors red and blue on symbols when you compare diagrams.
- The special graphical symbols for internal input and output are not available, as the use of them is explicitly discouraged in Z.100. The same behavior can be achieved with the normal input and output symbols.
- Graphical macros (macro diagrams) can only contain flow symbols in one single flow, without branches. Graphical macro calls are not allowed in a higher scope than process (system, block, etc.).
- The option symbol (dashed polygon) is not available.
- Nested diagrams are not supported, that is, diagrams must contain reference symbols to diagrams at lower levels. For instance, a system with a block must be drawn as two diagrams, where the system diagram contains a block reference symbol to the block diagram.
- When the preference Editor*AlwaysNewWindow is used and for example the search command is used, new windows can be shown. As long as the dialog are still opened the menu bar for the new window should be dimmed but some commands are available. Choosing these commands should be avoided when the dialog is shown.
- The FrameMaker or Interleaf integration do not support colors.
- It is only possible to change the font used to print text files by using the preference SDT*PrintFontFamily.
- When printing to html, diagram page names containing `\' are not supported.
Emacs Integration (UNIX only)
- To function properly, the SDL Suite assumes GNU Emacs 19.31 or later.
- Undo is not supported for the link handling commands.
- If Emacs is started from SDL Suite and TTCN Suite and SDL Suite and TTCN Suite is shut down, but not Emacs, the Emacs session cannot be re-connected to another SDL Suite and TTCN Suite session.
Microsoft Word Integration (Windows only)
- Microsoft Word Integration does not work with MS Word 2003. The installation will fail with error 6068, Programmatic access to Visual Basic Project is not trusted.
- When a MS Word document becomes modified, its icon is not marked as "modified" in the Organizer.
- A new MS Word document is always named "Document<x>", where <x> is an integer, independently of what name it was given in the Organizer.
- Undo is not supported for the link handling commands.
- Endpoints in MS Word documents sometimes need to be synchronized with the Link Manager manually: Use the Update menu choice.
- In the Organizer, multiple instances of MS Word cannot be handled.
- Due to problems with recognizing read/write security permissions on NTFS files/directories, some odd behavior in the communication with MS Word may occur. This shows up as two error boxes with almost the same contents, one in MS Word and one in the Organizer. In the Organizer, the access rights on such files are incorrectly marked as "rw".
- Since part of the implementation is done with MS Word macros, conflicts may arise when combined with other templates/macros. This must be considered on a case-to-case basis and possibly the different macros may have to be merged. The implementation does not work with for example "Macro Virus Protection Tool" from Microsoft.
- If MS Word is started from SDL Suite and TTCN Suite and SDL Suite and TTCN Suite is shut down, but not MS Word, the MS Word session cannot be re-connected to another SDL Suite and TTCN Suite session.
SDL Analyzer
Generic functions
The default way of generating code for SDL operators was changed in SDL Suite 4.2. This method replaces generated functions for assignments, equal test, free and predefined operators in generators with generic functions.
This means that parameter passing has changed. Parameters are passed as addresses not as values, and data structures describing the data types are needed.
This method is backward incompatible with SDL systems that uses inline C code. The function calls must be manually changed.
Implementation Restrictions
The present version of the Analyzer is an SDL-92 analyzer. The restrictions and the implementation limits are described in this section. When possible, a work-around is described.
- Macros and macro calls are transformed to PR and expanded in PR form. This restricts the usability of macros, for instance the number of inlets and outlets must be 0 or 1. A common case that fails is a macro with states that is called from a branch of a decision. It fails because the GR to PR converter does not know the contents of the macro and treats the call like a task symbol. Other things not supported because of this, are variable declarations and type definitions.
- The Analyzer assumes the layout of external properties to follow the example below. That is, each external formalism name should be on the same line as the alternative keyword and the external data descriptions should be on lines of their own.
alternative a,b;abc abc t5;abc abc t5-2;endalternative;b;The PR to GR Converter
- The PR system will be changed to have all its definitions referenced to match the way the SDL Suite handles diagrams. A referenced definition needs a qualifier if name and type are not unique in the system. Such qualifiers are not supplied automatically: use the Update Heading command in the Organizer.
- Comments in PR files /* comment text */ may sometimes be skipped during conversion into GR format.
Restrictions on Syntactic Analysis
- Check is not done for task symbol with only comments. As a consequence, you can get compile errors when having task symbols that only holds comments (/* ... */) in them.
- The Analyzer cannot handle spaces in names (a space is a shorthand for an underline). Replace spaces with explicit underlines.
Restrictions on Semantic Analysis
- The semantics of virtual types is unclear.
- Gate constraints on implicit signal routes are not checked.
- Implicit gate connections are not checked.
- Signals of global procedures are not properly checked.
- Only limited tests on output via.
- It is not checked that instantiated types have signals in the gate constraints.
- Context parameters are not implemented.
- Conditional equations are not implemented.
- Some checks may be lost in nested virtual definitions.
- Package interfaces and definition selection list in USE statements are not implemented.
- Remote procedure calls are not checked against imported procedure specifications.
- Imported procedure specifications are not checked against exported procedures.
- Import expressions are not checked against imported variable specifications.
- Imported variables are not checked against exporting processes.
- The check that substructure name in subtype and supertype must be the same is not implemented, since it would make the use of "block in block" useless for inheritance.
- Operator definitions are not checked against operator signatures.
- Name class literals in user defined data types cannot be handled in the Semantic Analyzer. A nameclass literal is a shorthand for writing a (possibly infinite) set of literal names defined by a regular expression. List the literals explicitly or use inheritance from the predefined data types.
- Question and answers in decisions are always considered formal, that is, informal text is considered to be a character string.
- Inheritance from data type definitions containing qualifiers referencing that type definition is not allowed, since qualifiers are copied and not changed during the expansion of inheritance.
- When analyzing part of a system, checks depending on the omitted parts will not be performed.
- When a substructure contains both processes and blocks, it should be possible to select which implementation that is preferred. This is not possible; the process definitions will not be analyzed.
- Signal refinement is not supported.
Semantic Checks that are not Performed
Analysis of the following semantic SDL rules is not performed:
- The consistent partitioning subset must be a consistent refinement subset.
- The decision answers must be mutually exclusive. This is not tested for all possible data types.
- An exported variable must exist for each imported variable.
- The type check and the evaluation and check of the equivalence classes in axioms is not performed.
- Generator names and generator formal parameters must not be used in a qualifier, qualified, followed by an exclamation, or used in a default assignment.
Cadvanced SDL to C Compiler
- If you have a block type or a process type, with user defined separation; all other block/process types that do inherit from that block/process type also needs to have user defined separations. If they do not, the order in which the h files are included can get mixed up.
- Compilation Error if user defined separation and XFREESIGNALFUNCS defined. The signal s_c2b_1 is defined in the file BlockB.h since user defined separation is used. The definition of cm_Free_Signal in the system.c file uses the signal s_c2b_1 which is not known since it is defined in a file which is not included.
- Channel substructures are not allowed.
- Signal refinements are not supported.
- Context parameters are not supported.
- Timer active expressions for timers with parameters are not allowed.
- In generated code there will be no difference between a channel with delay and a channel with NODELAY.
- Integer and Real are restricted in range and precision, as they are implemented using the C int (32 bit integers) and double types. Charstrings may not contain the character NUL, as Charstring is implemented using char * in C, and char * is terminated by NUL (=0).
- Axioms and literal mappings may be part of an abstract data type definition, but that information is not used in any way by the SDL to C Compiler.
- In abstract data types, the following concepts cannot be handled:
- A sort definition may not refer to itself, directly or indirectly.
- A component of a struct will, in the generated code, have the same name as in SDL. Characters that are not letters, numerals or underscore characters will, however, be removed. The remaining part of the name must be a valid C identifier to be accepted by the C compiler, that is:
- Multiple paths from a decision for a certain decision expression value are not checked. A simulation program will simply choose one of the existing paths.
- Overflow of integer and real values are checked at the C level if the actual C system performs these checks.
- A process that exports procedures cannot call (directly or indirectly) a global procedure containing states.
- Output VIA ALL C, where C leads to a block instance set, is not handled correctly. One signal should be sent to each block instance, but only a single signal will be sent.
- The .ifc file contains #define definitions for the kind of SDL units for which this is possible. All the SDL to C Compilers follow this principle. This can, depending on the C compiler, lead to compilation errors/warnings or to runtime errors in some cases. The following example shows how the problem may occur:
newtype xliterals green, blue;endnewtype x;newtype yliterals blue, green;endnewtype y;/* For newtype x */#define green 0#define blue 1/* For newtype y */#define blue 0#define green 1
- The C compiler then usually complains that the macros blue and green are redefined with a different value. Some C compilers will continue in any case and produce an executable. Runtime errors are the consequence on this, because when green and blue are used together with the first newtype x, the literal values from the second newtype y are used by the C compiler. In order to avoid this problem, a prefix for each literal should be manually added, like this:
newtype xliterals x_green, x_blue;endnewtype x;newtype yliterals y_blue, y_green;endnewtype y;
- The green and blue example is not a good one, because it is possible to avoid the problem by using the inherit construct. The literals from the newtype x could be inherited into the newtype y. More problems will occur if several entity classes are mixed up from the C compiler, like if there would for example be a signal called green, which is also created as a #define. You are strongly recommended to avoid name conflicts in the .ifc file by manually adding prefixes.
- any(Sort) where Sort is a syntype is only implemented if the syntype contains at most one range condition which is of the form a:b, that is one limited range. If it is a syntype of a real type, e.g. Real or Time, with a range condition it is not implemented.
- any(Real) does not generate random decimal values, only whole numbers.
- When the preference SDT*RelativeSDTREF is on, and Edit Separation is used with a separate file name, compile errors may occur requesting a file that does not exist. This can be resolved by either not using a separate name or turning the Relative SDT References off.
Targeting Expert
- When you use Targeting Expert to generate code based on a Deployment diagram the "User defined separation" information from the Organizer is disregarded.
- The name of the generated C file is different if you have a space in the path for the source SDL or not. If the path contains a space, the name will be <systemname>.c otherwise the name will be component.c.
- The automatic and manual configuration/scaling for the Cadvanced libraries will not be used per default in all pre-defined integrations. The compiler flag -DUSER_CONFIG must be set to use configurations.
- There is a memory leak in function GenBag_Take2 when a SET OF is used.
CPP2SDL
- The following C/C++ dialects are supported by the tool:
- The tool performs a complete syntactic analysis of the input C/C++ program, but only parts of the semantic analysis is done.
- C++ exceptions are not supported.
- C++ template declarations are not translated to SDL directly. Instead, instantiations of the templates must be provided, and these will be translated.
- The support for function pointers is limited. Function pointer types are represented in SDL (as untyped pointers), but it is for example not possible to call the functions pointed at.
- Expressions containing usages of the sizeof operator are not always correctly evaluated.
- C++ cast expressions are not fully supported.
- Members inherited from a virtual base class are sometimes not accessible in the SDL translation.
- Classes that inherit from multiple template instantiations of the same template are not fully supported.
- "sizeof" is not correctly handled under certain conditions cause problems.
- There can be problems when using anonymous types for example:
typedef struct {int i;float f;}mess;typedef struct mess {int i;float f;}mess;SDL Simulator
- Use of the add-macro feature in combination with passing an array or aggregate as an actual parameter can in some cases cause the execution to lose or misinterpret parameter information. Parameters are not accurately passed to input scripts. This is also the case when passing multiple characters (enclosed in single quotation marks). A possible workaround is to parameterize any input script by passing explicit parameters rather than to use macros.
- There is a limitation in the simulators way of handling qualifiers. This results in that the analyzer may not detect that two instances of blocks have the same name. As a consequence it is possible to build a simulator executable without problem, and it may for example not be possible to inspect variables due to ambiguous name on the instances.
- If you have already generated an SDL simulator from the Organizer, and want to generate a new one with other options or with another selection, you should perform a Full Make, as changes in options or selection is not handled by the build process. Otherwise compilation or link errors might be the result of the build process.
- There are no range checks implemented for general arrays. General arrays are implemented as linked-lists because the code generator can not determine whether or not it can be implemented as an ordinary array. This occurs if a synonym translated to a variable is used in a range condition of a syntype and the syntype is used as an index sort in an array or powerset instantiation. The reason for this is that the length of the array cannot depend on a variable in C.
SDL Explorer/Autolink
- When using the Verify MSC command the MSC file cannot have spaces in the filename or pathname.
- Bitfields in struct that also contains pointers are not handled.
- C unions are not allowed to contain pointers.
- Encoding/Decoding functionality cannot be used together with the SDL Explorer kernel.
- Validation of MSCs containing a signal sending a parameter of type ptr_char, or Charstar will give the following error: "No reference to dynamically allocated memory."
Examples
- On UNIX, the phone example cannot be used together with the graphical SimUI if the Phone application is compiled and linked with the ApplicationDebug kernel.
Real-Time Operating System Support
Light Integration
The same restrictions as for the SDL to C Compiler apply. See Cadvanced SDL to C Compiler.
Threaded Integration
The same restrictions as for the SDL to C Compiler apply. See Cadvanced SDL to C Compiler
- Threaded Integration can only be generated with the Deployment Editor and Targeting Expert i.e. the make feature in the Organizer can NOT be used.
- The Threaded Integration for VxWorks uses POSIX library functions i.e. the VxWorks kernel must be compiled with the POSIX libraries.
- In a Threaded Integration, the xInEnv function is invoked when a state transition occurs in the SDL system. This means that intervals between the xInEnv calls are irregular and depend on the properties of the running SDL system. When writing external code for input into an SDL system, it is recommended that the code is run in a thread of its own, using xGetSignal and SDL_Output for inserting signals into the system.
- On-line MSC trace under VxWorks softkernel does not work.
TCP/IP Communication Module
- On VxWorks, the TCP/IP communication module has been tested on a softkernel running on Solaris. In order to connect to a Vxworks softkernel application, the loopback IP address of the host machine must be used. In most cases, this IP address is "127.0.1.0".
- On OSE, the TCP/IP communication module has been tested on a softkernel running on Solaris. In order to connect to a remote component from an OSE softkernel application, the IP address of the remote host must be given explicitly. A regular hostname, e.g. "the_computer.the_company.com", will not suffice.
Tight Integration
- The tight integrations in the SDL Suite are only applicable for Cadvanced - not for Cmicro.
- Only Solaris (Posix 4), Win32, VxWorks, and OSE delta integrations are available as downloads.
- Priority input is not handled.
- Continuous signals are not handled.
- Services are not handled.
- An RPC call of value returning procedure without parameters does not work.
- The SDL ANY construct is not properly implemented.
- The timer set construct SET(5,T1) is not supported. Instead use SET(NOW+5,T1)
- ADT Library files located in $telelogic/sdt/include/ADT:
- Support for Kernighan & Ritchie C is discontinued.
- The integration code does not check the upper limit for the number of process instances as declared in the SDL system.
- The same data type is used to represent TIME and DURATION; in most operating system this is an unsigned integer. Thus TIME or DURATION expressions may not evaluate to negative values. This also applies to intermediate expression results.
- The SDL error term is not supported in Cadvanced Tight Integrations. E.g. "return error;" can not be used in Cadvanced Tight Integrations.
- REVEAL and VIEW are not supported. Applications using this concept may crash or behave in an undefined way due to concurrency problems.
- EXPORT and IMPORT are not supported. Applications using this concept may crash or behave in an undefined way due to concurrency problems.
- In addition, the same restrictions as for the SDL to C Compiler also apply. See Cadvanced SDL to C Compiler.
SDL C Compiler Driver (SCCD)
Cmicro SDL to C Compiler
- The names of processes in different blocks must not be the same. The reason for this restriction is the missing symbol tree in Cmicro. It is impossible to address for example two processes with the same name in the same C module (in the SDL environment). As a work-around, you should always have different names for the different processes in the system. You can easily accomplished this by adding a prefix to each process name.
- Predefined sort carray:
- Timers with parameters and the preemptive Cmicro Kernel do not work together.
- If a procedure returns a value of a sort that is passed as address, an assignment like call prd(invar, retvar); is not supported. Instead use retvar := call prd(invar); .
- You shouldn't have syntypes named as the following:
intunsigned_intlong_intunsigned_long_intshort_intunsigned_short_intcharsigned_charunsigned_charfloatdoubleptr_voidboolwchar_tCextreme SDL to C Compiler
The following are not supported in the Cextreme SDL to C compiler:
- Services
- Procedures with states
- Access to outer procedure dcl or fpar
- View / Reveal
- Continuous signal
- Priority input and output
- Priority for process (#PRIO) for processes
- Channel substructure
- Timers with more than one parameter
- Timers with another parameter than sort integer
- Remote procedure call in procedure or operator
- Use of qualifier when calling a virtual procedure
SDL Target Tester
- When the target system is suspended (by sending the suspend command), any signal that is sent to the target will be discarded.
- When, with the Output-PAR/NPAR command, you want to send a signal to the target system, a list with all the signals that are defined in the system is presented. You should keep in mind that you always have to address the right process instance when specifying the parameters of the SDL Target Tester's output command.
- It is not possible to send charstrings or pointers with the Output-PAR command to the target.
- Several compilers, e.g. the Tasking 80166, are giving incorrect information about the message length.
- The SDL Target Tester should only be started from the Targeting Expert's Tools menu since there may be problems when the SDL Target Tester is invoked standalone.
- Page file and convert file in SDL Target Tester does not work.
- On Unix: The Cmicro Postmaster leaves temporary files below /tmp. You should remove these files from time to time by hand (rm /tmp/.sdt.cmicro.*)
- It is impossible to specify a breakpoint on a timer input.
- If the debug mode of Cmicro Postmaster is used, there might be too long messages, in which case the Postmaster will crash with a core dump.
- If the line numbering in the SDL Target Tester is switched on and off again, sometimes the first columns in the text area are split. As a work around and to prevent this, line numbering always should be switched on at the beginning and never switched off again.
- The context sensitive help sometimes indicates that a command may be used, though the command cannot be used in current context (setting a breakpoint is allowed although no target system is connected and running).
- On UNIX: If the sdtmt.btn file contains too many entries that are marked as ":MENU", the SDL Target Tester is not able to scale its window size when it is invoked. If you resize the window manually, the size will be correct.
- The Parametertrace is restricted to Predefined Sorts, Syntypes, Enums, Newtype Structs and Newtype Array.
If the SDL Target Tester encounters an unknown data type, the rest of the parameters is shown as hex-buffer.
Limitations:
It is not possible to show the contents of a Charstring.
If you use wrong values for LENGTH_, ALIGN_ and ENDIAN_ in the file sdtmt.opt it is possible that the Tester decodes all parameters, but the shown values are wrong.- Searching the Text trace in the Target Tester with regular expressions is disabled by default. The Tester crashes if reaching the end of the trace, i.e. there is no more regular expression found in the trace.
The feature can be enabled by setting the environment variable TT_REGEXP to 1 before starting the Target Tester.Application Generation with Cmicro
- Not all possible errors are checked by the Targeting Expert. In most cases, a compilation error is the result you will get from an incorrect configuration. The on-line help will support you to configure correctly.
- If you try to #include "systemname.ifc" in ml_typ.h, or for some other reason, there may be further naming conflicts, for example during preprocessing:
sctpred.c: In function `yAss_SDL_Object_Identifier':ml_pred.c:2109: parse error before `0'ml_pred.c:2109: parse error before `0'
- The reason for the error above (and other behavior that is impossible to foresee) was that there was a signal named "SIn". This will be generated as a #define SIn 0. In the sctpred.c file, there is a variable called SIn (in the macro yAss_SDL_Object_Identifier). The C preprocessor then replaces the variable name with the #define value of SIn, which ended up in the parse error above.
- In order to avoid that, you should never include code generated header or .ifc files in any part of the Cmicro Library itself or in the generated C code. The .ifc file should only be included in the SDL environment files (like env.c).
- In the generated C code, the following warning is repeated for each variable that is unused:
"Unused Variable : <variablename>"
- These warnings in generated C code are not that easy to remove because it is difficult to calculate this during code generation. These warnings should not produce real problems (except that it is sometimes impossible to read the large C compiler output). The following variables are sometimes referred:
warning: unused variable `yOutputSignal'warning: unused variable `yVarP'warning: unused variable `ySVarP'
- The same warning as above is thrown from C compilers when signals without parameters are used.
- This warning is accepted in the mk_outp.c module:
mk_outp.c:warning: unused variable `P_Parameter'mk_stim.c:warning: `SystemTime' defined but not used- Warnings like: "Control reaches end of non-void function"
- As the SDL to C Compiler basically creates a switch() construct in C, and every return from the process activity description function (PAD function) occurs in all the case branches of that switch, the PAD function contains no return statement after the switch. This is the reason why some C compilers complain that the "Control reaches end of non-void function". This is an accepted warning. It is possible for you to remove that warning in the ml_typ.h or user_cc.h file by modifying the END_PAD macro like this:
#define END_PAD(PrsNameWithPrefix) return (SDL_DASH_NEXTSTATE);- Warnings: missing braces around initializer for xSTATE_INDEX_zyyyy_xxxxxxx[0]
- Some C compilers fail in preprocessing of very long macro definitions (like all the C Compilers available on the market for the 8051 family of CPU's). Such long macro calls occur in the predefined generators (String, Powerset, Bag).
- It could also be impossible for some C compilers for embedded systems to compile recursive macro calls. Recursive macro calls appear for SDL statements like for example:
a:=b and c and d;
- If such a problem occurs, it is strongly recommended to avoid such statements for example with the following work around:
tmp:=b and c, a := tmp and d;- When it comes to target applications, you always have to specify how memory is allocated (see C module mk_cpu.c in the template directory) and what should happen if there is no more memory available. As the template C files does not know what you want to do, there is a C macro called NO_MORE_MEMORY that you must define. Any reaction on such a fatal error might be appropriate, like "Hang up the program", or "Reset", or "Print out an error message". Printing out error messages may however fail as well, if the print function allocates memory.
- The default values for variables are not set in a procedure when XMK_USE_KERNEL_INIT is defined. This is a problem which cannot be solved easily.
- Do not define XMK_USE_KERNEL_INIT
- Do not use default values for variables in a procedure, e.g. this is forbidden in a procedure (in a process it does work very well):
DCL a integer;DCL b integer;task b:=a+b; /* non deterministic results */DCL a integer = 0;DCL b integer = 0;task b:=a+b; /* deterministic result ! */Use of ADTs from the SDL Suite in Cmicro
The packages and ADTs delivered with the SDL Suite are mainly to be used in Cbasic/Cadvanced applications. Some of these ADTs may however also be useful for Cmicro applications. Others cannot be used together with Cmicro as they contain references to C code from Cbasic/Cadvanced. A list of restrictions and recommendations can be found in Abstract Data Types.
Combining Cadvanced / Cmicro Code
Mixing C code from different SDL to C compilers is not possible as they use their own runtime model and runtime data structures. Trying to mix up the C code will sooner or later lead to compilation errors. This restriction is true for any kind of combination of C code, including sdth2sdl.
TTCN Suite Tool Limitations
Color Problems on Solaris
- On computers where the display hardware limits the number of concurrent displayed colors, the TTCN Suite might run out of colors. It will in this case start to use what appears to be random colors. This should have no effect on the usability of the TTCN Suite, but can be somewhat annoying.
Table Editor on Solaris
- The Table Editor can only display up to approximately 1000 rows. This limitation is only present in the Table Editor, so conversion to or from MP, printing, analysis, etc. is not affected.
Analyzer
- The types BMPString and UniversalString are not supported.
- The Analyzer does not support encoding/decoding variations.
- ASN.1 enumerated type identifiers are allowed to start with both upper and lower case characters. This applies only for the TTCN Suite tool and not for the ASN.1 utilities tool.
- Defect 4980: The analyzer will make an incomplete analysis when there is an empty behavior line following a (possibly erroneous) send or receive statement.
- Type lookup:
Due to how the type lookup mechanism is implemented, the context where a type is referenced have to be seen before encountering the value to look up.
This has the effect that constructs like:
[{a 2} = variable_with_sequence_as_type]
is going to fail looking up the type of the sequence value.
Work-around: Rewrite that construct to reference the variable first:
[variable_with_sequence_type = {a 2}]- When checking the type restrictions, INTEGER calculations are limited to have result in range -(2^64-1)..(2^64-1). When overflow occurs, a warning is reported, and restriction is not checked.
External ASN.1 Reference
The definition of the ASN.1 type that is referred is limited:
- References of the form Module.Type are not allowed in the definition.
- References to types/values in the same or other ASN.1 module is not allowed in the definition, unless separately defined.
- The limitations for the types and values referenced from TTCN also include those described in ASN.1 Utilities.
- When using ASN.1 PDU Type Definitions By Reference, you cannot employ BER or PER ASN.1 encoding/decoding if you are mapping the PDU names to other names local to the test suite. (The PDU names will not be recognized by the runtime system.)
TTCN ASN.1 BER Encoding/Decoding
The TTCN to C Compiler
The language supported by the TTCN to C compiler is a subset of the language covered by the Analyzer. This means that in some cases, constructions that have been analyzed correctly are not supported in the code generation phase. The following list describes the known limitations in the current TTCN to C compiler.
- The INTEGER data type is restricted in range and precision, as it is implemented using the C unsigned int (usually 32 bit) data type plus sign attribute.
- The MIN/MAX and the inclusive/exclusive (that is <) syntax in ASN.1 value range sub types are not supported.
- INFINITY, in all its uses, is not supported.
- Selection type and their values are not supported.
- Values of the REAL data type is not supported.
- Encoding/decoding variations are not supported.
- If two identifiers in the TTCN differ by a final letter, D, TestCase (Test Suite Variable and TestCaseD) then TTCN Suite could generate code with name conflicts. Example:
Name of Test Suite Variable: TestCaseName of Test Case: TestCaseDMSC Logging
The MSC generation part of an ETS is limited in scope and applicability to some particular applications. This list of limitations may be circumvented by manually editing the code in the files mscgen.h, mscgen.c, static.c and gci.c. Such edits are not supported by IBM Rational, though suggestions of improvements are welcome.
- Distributed concurrent test component logs are not supported.
- The reason for this is that it would require additional communication in-between the distributed test components. The required features for a common log of any kind are not available through the architecture of TTCN or the GCI Interface. The result of applying MSC logs for truly distributed ETSs is not defined. Note that the Composed mode may work but it will produce logs only of one component at a time.
- The internal concurrency mode of the TTCN Suite is fully supported by the MSC Generator.
- Re-start of test components
- Concurrent test suites in which one given component is created more than once, will result in MSC/PR that may not be supported by the MSC Editor.
- The generated MSC log will contain multiple instances with the same name, though presumably not at the same time. It is conceivable to write a text processing script which renames instances that are created multiple times. The limitation applies only to the Decomposed mode.
- Value notation limitations
- These are limitations to the value encoding for MSC/PR form. For information on how the value encoding can be completely disabled, see Compiling an ETS with MSC Generation.
- Some types may not be supported for the logging of values with the events of the MSC log. If they are encountered, a warning message will be appended to the event log. See the mscgen.c:MscEncodeValue function for details.
- Some minor type encodings may differ from the one produced by the SDL Simulator. These differences can be fixed by editing the mscgen.c:MscEncodeValue function. Note that such changes are not supported by IBM Rational.
- Some types that are not supported by the SDL Suite are handled. The HEXSTRING and derived TTCN types are not recognized by the SDL Suite.
- The tool has a fixed size buffer for MSC value encoding. The result is that some values may be truncated (values that print to strings longer than approximately 4000 characters). See Compiling an ETS with MSC Generation for a description of the definitions that need be changed for increasing the buffer size. If the buffer is filled up, syntactic errors in the generated MSC/PR may be the result.
- The use of message types that have names equal to MSC keywords may result in incorrect MSCs. There is no functionality for detection of this in the MSC Generator or TTCN Analyzer. The MSC Editor will detect the problem if trying to read MSC/PR form files where the problem is present. It is recommended to avoid ASP, PDU and CM names that are such names. Examples of these names include "reset", "RESET", "stop", "msc", "TimeOut" etc.
- Concurrent TTCN configurations
- The MSC Editor logging lacks some error control and may also result in excessive memory consumption by the MSC Editor in long test runs. Also, it slows down the tester significantly since it performs an extra 2 RPCs for each event that is logged. It is recommended to use this option only when developing or testing test scripts.
- It is possible to "reverse" the components used in the "composed mode" by editing the MscIn and MscOut functions such that they in the composed mode do not switch the "from" and "to" parameters. The reversed view may be conceptually more natural, though it may not be possible to process with some of the other tools of the SDL Suite and TTCN Suite family.
- There is an additional compile-time definition that is for debugging purposes: DEBUG_POST_COMMUNICATION. If set, there will be printouts to stderr of messages sent and received from the SDL Suite and TTCN Suite Postmaster. See also POSTDEBUG. If events seem to be missing in an MSC Editor log, these may be used to determine if there is an unhandled error condition.
- The MSC Editor has a built-in maximum number of simultaneously open diagrams. Since each test case generates a separate MSC diagram, this limit may eventually be reached when large numbers of test cases are run. The result of reaching this limit is not defined. As a consequence, it is recommended not to use MSC Editor logging when running large numbers of test cases.
TTCN Simulator
The entire list of SDL to C Compiler limitations applies also to the Simulator, see TTCN ASN.1 BER Encoding/Decoding.
- Monitoring of other test components can only be viewed together in the main screen log.
- Test suite variables and timers cannot be modified or viewed.
- The contents of channels cannot be modified.
- An entire test suite cannot be selected for execution. You have to do this manually, for example by selecting all test groups or all test cases.
- If you abort the execution of the SDL and TTCN Integrated Simulator when the SDL Simulator is running, further communication may be inhibited. Always restart the SDL Simulator when you abort the execution of the SDL and TTCN Integrated Simulator.
SDL and TTCN Integrated Simulator
- ASN.1 modules that have been joined/merged within the SDL system will not always work for SDL and TTCN Integrated Simulation, as the same join/merge functionality does not work the same way on the TTCN side. This means that name clashes will be solved differently on the SDL and the TTCN sides respectively.
TTCN Exerciser
Timer Duration Limitations
- If a timer has a duration exceeding approximately 2000000000 (2^31-1) time units - as defined with the timer declaration - the condition may not be noticed, and it may result in erroneous behavior.
- If a timer duration exceeds the theoretical maximum period, the condition may not be noticed, and it may result in erroneous behavior.
Value Encoding and Decoding Limitations
In general, the value encoding and decoding has been designed to be a general mechanism for reading and writing almost any value, including ones that are not part of the type system of a generated test suite. This is for being able to input totally unexpected or irregular messages. The consequence of this is also that it may be easy to "break" test suites or even the kernel by providing wildly unexpected message contents. In order to get valuable results of the simulation runs, there may be a bit of effort needed to specify the messages. While doing that, the following notes and limitations may be helpful to avoid some pitfalls:
- There is limited error checking in the value encoding and decoding, which may result in ambiguous messages being encoded or decoded, or even possibly crashes if some invalid combinations are used.
- For example, if asp1 is an ASP (base type is sequence), then these value encodings are likely to cause a runtime error or crash if fed into the kernel:
asp1 24IA5String TRUE- This error situation is not handled, since in general the kernel is designed to allow for arbitrary objects to be input. In the general case, the situation above will be created if assigning a refined type to an object with a different base type.
- For simple types, the actual type name is not part of the encoding. This particular choice of implementation was made to improve the readability of encoded values, but it may result in ambiguities when decoding the same message.
- ENUMERATED values are not encoded or decoded by name, but rather as integer values.
- CHOICE values must be possible to distinguish by value, rather than by tag since tagging is not incorporated in the encodings and decodings of the TTCN Exerciser.
- The type OBJECT IDENTIFIER is not supported.
Concurrent TTCN
- There is a built-in limit in the TTCN Exerciser to how many concurrent test components may be simultaneously active. The limit is more than 10 but less than 25. The reason for this limit is the implementation of thread scheduling in which there is a built-in overhead which grows by the number of threads. There should be no problems running up to maybe 6-8 simultaneous test components, but more may seriously degrade the performance of the kernel. To work around this for real-time testing, do consider an alternative adaptation strategy at this time (using a deterministic and fair real-time system scheduler).
- Cancelling a test case from the context of a parallel test component may lead to unexpected behavior (such as hanging or livelocked PTC threads). It is recommended to always run a concurrent test case to a SNAPSHOT state before cancelling.
- The result of terminating the MTC prior to all PTCs have terminated is undefined. The condition should be reported by the TTCN Exerciser, but the test result may be invalid. Terminating the MTC prior to all MTCs are terminated is illegal according to TTCN.
- There is no way to list the contents of a CP with the TTCN Exerciser.
TTCN Link
- Encoding/Decoding functionality cannot be used together with the TTCN Link kernel.
- ASN.1 modules that have been joined are not supported by TTCN Link.
Auto Link
Storage Format Compatibility
System Files
The file format for system files (.sdt) changed in SDL Suite 6.3 and TTCN Suite 6.3 as compared to 6.2. SDL Suite 6.3 and TTCN Suite 6.3 can read older system files (3.0X - 5.1), but versions earlier than 4.4 cannot read the new system files.
When saving older system files with the Organizer, a conversion to the new format is performed.
SDL/GR and MSC/GR
The storage format for SDL diagrams did change in 4.1. This means that diagrams created with 4.1 cannot be opened in previous versions. SDL Suite 4.1 can still read all previous formats.
The storage format for SDL diagrams did change in 4.0. This means that diagrams created with 4.0 cannot be opened in previous versions.
The storage format for SDL and MSC diagrams did change in SDT 3.1X as compared to SDT 3.0X (and SDT 2.X). SDT 3.1X and later versions of SDL Suite and TTCN Suite can read older files, but previous versions of SDT cannot read the new format introduced in the 3.1X version.
In addition, the storage format for MSC diagrams was changed in version 3.5. Version 3.5 and 3.6 of the MSC Editor can handle the same formats as version 3.4 of the editor, but version 3.4 and earlier of the MSC Editor cannot read the new MSC format.
SDL and MSC diagrams stored in SDT 2.X and SDT 3.0X format may be opened as is into SDT 3.1X and later versions of the editors (using commands such as the SDL Editor's Open). To preserve the original diagram structure, you must however import them into the Organizer, by using the command Import SDL to build a diagram structure that may be stored on a system file.
When saving the opened SDT 2.X or 3.0X diagrams on file with SDT 3.1X and later versions of the editors, a conversion to the 3.1X format is performed. Conversion to the 3.1X format may also be performed automatically when importing the diagrams into the Organizer. The option Save imported diagrams in SDT 3.X format is used for this purpose.
Generated SDL Simulators and Explorers
Simulators and Explorers should be generated with the same version of the SDL Suite as they are supposed to be executed in. They might not execute as expected when executed under a SDL Simulator Graphical User Interface of a different version. To re-generate, use the Full Make facility to make sure all C files are re-generated properly.
The SDL/GR trace in the SDL Editor requires the SDL diagrams to be saved in order to function properly. (The reference mechanism in SDT 3.X assumes the existence of information that is not stored in SDT 2.X files.)
Deployment Diagrams
The 4.2 Deployment Diagram file format (*.sdp) was extended. The 4.2 Deployment Editor can read and convert .sdp files created with older versions of the Deployment Editor. However, older Deployment Editor versions can not read diagrams created with this new version.
In the 4.1 release, the Deployment Diagram file format (*.sdp) was extended. The Deployment Editor in the 4.1 release can read and convert .sdp files created with older versions of the Deployment Editor. However, older Deployment Editor versions can not read Deployment Diagrams created with the 4.1 version.
Buildscript generation is no longer supported by the Deployment Editor since the 4.1 release. Buildscripts are replaced by a feature which translates Deployment Diagrams into the Partitioning Diagram Models, which are used by the Targeting Expert. This makes it possible to utilize a partitioning configuration in a Deployment Diagram when building SDL systems using the Targeting Expert.
As buildscript generation is no longer supported, build settings on node and component level are ignored when an old Deployment Diagram is converted into 4.1 format. Qualifier data on object level is automatically translated.
The TTCN Suite Database Compatibility
This section describes the different versions of the TTCN Suite database formats and how they are converted to each other. The following table shows the what formats are used in each TTCN Suite version:
The Database Upgrade
When the TTCN Suite opens an old database, it checks if it is possible to convert the database to the current version via the TTCN Suite TTCN-MP format. A conversion program for this old database version must be available. The name of this program has a suffix which indicates the version number of the database. For example the program which is used to convert a database of version 4 is called mp-output-old4.
This program is installed in the TTCN Suite 6.3 release. It is used to convert databases of version 4 to MP format. The resulting MP file is then converted to GR format as usual. This mechanism solves the problem of backward compatibility. The TTCN Suite or a newer TTCN Suite version can open an old version of the TTCN Suite database.
Forward Compatibility
A special problem occurs when an old TTCN Suite version needs to open a new version of the TTCN Suite database (forward compatibility). This problem is not relevant between database versions 0, 1 and 2 since the transfer format (MP) is the same. But the MP format which is used in 3.1 and later releases have extensions. Another problem occurs because the 3.1 and later databases are stored in a single file (compound format) with extension .itex instead of the .itex/.itex-tables combo of previous versions.
In the TTCN Suite 6.3, the database contains documents of one of these types:
Conversion of a new database of type Module to an old 3.0x or earlier database is not possible. The only forward compatibility which is supported is for the databases of type Test Suite or Modular Test Suite.
This conversion mechanism is possible to retrofit into an older existing 3.X installation by copying the programs mp-output-old6 and
convert-to-old6 from the 6.3 installation's binary directory for the architecture(s) installed and put these copied files into the corresponding directory in the old 3.X installation tree (these files are present in the current release for primarily this reason).To make a 3.0x version able to convert from 6.3 databases it also needs the companion file with the extension .itex-tables to exist beside the 3.6 database file. Fortunately this file may be a dummy file containing nothing at all.
http://www.ibm.com/rational |
![]() |
![]() |
![]() |
![]() |