Table of Contents Previous Chapter 4 Release Notes
This chapter contains information related to the SDT 3.02 release, in terms of:
- Included components
- New features
- Corrected errors
- Known errors and limitations
- Recommendation of use
- Features not documented elsewhere.
The SDT 3.02 release features the following tools and documents:
- Organizer
- SDL Editor
- MSC Editor
- Type Viewer
- Coverage Viewer
- Cross-reference Viewer
- Search List Manager
- Print Utility
- Preference Manager
- Analyzer
- HTML Help Viewer
- C Code Generator
- Simulation Library and GUI
- Validation Library and GUI
- Application Library
- Master Library
- CHILL Code Generator
- CSDL Code Generator
- Cmicro Package (see "Cmicro Package" on page 31 for more information).
- SDL-92 examples and various samples
- Installation Guide
- Information on Release and Documentation
- Tutorials
- Methodology Guidelines
- Reference Manual
- User's Guide.
---------------------------------------------------------------------
Note:
The Product License Keys that come with SDT 3.02 are not
compatible with license keys used in earlier versions of SDT.
This means that you cannot run earlier versions of SDT (i.e. 3.0 and
3.01) using the 3.02 FEATURES in the license.dat file in the
SDT 3.02 distribution.
If you want to be able to switch between earlier versions of SDT and
SDT 3.02, you must do as follows:
1. Save the existing (3.0 / 3.01) license.dat file before updating
it with the new FEATURES that come in the Product License
Key from Telelogic Customer Support.
2. Assign the environment variable LM_LICENSE_FILE a value
that designates the appropriate license.dat file before starting
SDT.
---------------------------------------------------------------------
This section contains a list of new and changed functionality in SDT 3.02 compared to SDT 3.01 and SDT 3.0. For information on the changes in SDT 3.0 compared to SDT 2.X, see chapter 1, News in SDT 3.0.
- SDT is now available in a PC version, SDT/PC.
- SDT 3.02 supports file compatibility between Unix and PC platforms, which is controlled by the use of a new preference parameter. A new section in the system file has been introduced for this purpose, as well as a new menu choice in Organizer's File menu. Please see "MS-DOS and Unix File Compatibility" on page 1152 in the volume SDT 3.01 Reference Manual for an overview of this subject.
- A Search function has been added in the SDT Help Viewer.
- There is a fairly large cost in terms of memory for the possibility to use services. This cost does not depend on if services are actually used or not. If you do not use services and you have a Cadvance license, i.e. access to the Master Library, you may want to use the new optimization switch XNOUSEOFSERVICES when generating applications. It has been introduced to remove all code and data needed to handle services. With this switch defined, an application will become approximately of the same size as using SDT 3.01.
- The macros XCONST_CHAN, CURRENT_STATE, CURRENT_STATE_PRD are no longer used.
- There is a new macro XCONST_COMP used for a number of components in the xIdNode structs. With this macro it is possible to introduce "const" on these struct components.
- A new component is inserted in xSystemIdStruct to handle virtual procedures defined in a system type:
xPrdIdNode * VirtPrdList;
- The macro INIT_PROCESS_TYPE has an additional parameter PREFIX_PROC_NAME, which is inserted as second parameter.
- New components in PROCESS_VARS, i.e. in xPrsRec:
xSrvNode ActiveSrv;
xSrvNode SrvList;
- New type xSrvRec defined as a struct with the components defined by the macro SERVICE_VARS:
#define SERVICE_VARS ...
typedef struct xSrvStruct {
SERVICE_VARS
} xSrvRec;
- New components in the xPrsIdNode:
XCONST_COMP xIdNode *Contents;
- New IdNode type (xSrvIdStruct) for services.
- New component in xViewListRec and in xRemoteVarListRec:
xSrvIdNode SrvId;
- New enum values in xEntityClassType:
xServiceEC,
xServiceTypeEC,
- New macro xService to insert or remove components in struct values.
#ifndef XNOUSEOFSERVICE
#define xService(p) , p
#else
#define xService(p)
#endif
- The following macros are used to implement different aspects of the behavior of services.
XSRV_EXTRAS
YGLOBALSRV_YVARP
XNAMENODE_SRV
LOOP_LABEL_SERVICEDECOMP
CALL_SUPER_SRV_START(PAD)
CALL_SERVICE
START_SERVICES
CALL_PROCEDURE_STARTUP_SRV
SDL_DASH_NEXTSTATE_SRV
- In the function xIsPath in sctsdl.c the interface has been changed. The parameter SenderId is of type xIdNode instead of type xPrsIdNode, as the parameter can now also be an xIdNode representing a service.
- Note that many of the functions used to implement SDL operations (in file sctsdl.c) have been changed to handle services also. The interface of these function have, however, not been changed. For example, SDL_Stop now also handles when a service performs stop, SDL_Nextstate now handles when a service performs a nextstate operation, and so on. The easiest way to find these changes is to look for the macro XNOUSEOFSERVICE, which can be used to exclude all code for services.
- Template files have been added to make it possible to run code generated from C Code Generator using the CHORUS-V3 kernel. This means that templates for the following real-time kernels are provided: CHORUS-V3, OSE, pSOS+, VRTXsa and VxWorks.
- The SDT Cmicro Package is now available. See "Cmicro Package" on page 31 in this volume for more information. The full documentation of the Cmicro Package is now included in the SDT documentation.
- The name of the function SP, in the functional interface, has been
changed to SPConvert. Done to avoid problem when linking on Solaris when the curses package is used within the application.
This section contains a list of errors in SDT 3.01 that has been corrected in the SDT 3.02 release.
- A procedure will not be generated as a separate file when using Full Separation in the Make dialog.
- Diagrams are now marked as changed when the SDL Editor command Clear Page has been performed.
- MSC diagrams of type SubMSC are now supported in the Organizer in the same way as MSC diagrams.
- A clipped text symbol now remains clipped after a paste operation.
- Close Diagram does not close an unsaved filtered diagram without confirming anymore. This could previously happen if the original ("filter source") diagram was saved.
- It is no longer possible to generate an MSC-PR file from a diagram with messages without names.
- The error that the SDT Type Trees window did not respond to any input has been corrected.
- The search list manager can now open a search list file containing non-existing directories. In such cases the non-existing directory is shown in the tool with italics.
- Fixed bug with operators defined in types inside operator definitions not found.
- Fixed bug with PR to GR causing start instead of procedure start.
- Fixed bug with remote procedures and variables in packages ignored during PR to GR.
- Fixed bug with missing error message when making invalid procedure call in operator parameter.
- Fixed bug with Analyzer not complaining about inconsistent diagram sections in organizer.
- Print of error message if recursive use of packages, "Recursive package #1 in use clause".
- Check added that an output can be received; a new error message "No receiver found" added.
- Fixed bug with virtual priority input not being recognized in sub types.
- Fixed bug with Analyzer complaining about missing diagrams when using the block in block short hand and analyzing only a part of the system.
- Fixed bug with internal error when parsing input with two systems.
- Fixed bug with incorrect error message about start transition required when instantiating service type.
- Fixed bug with crash on substructure in blocktype where supertype has no substructure.
- Fixed bug with wrong line number in error message when input is SDL-PR.
- Fixed bug with analyzer looping when newtype inherits itself.
- Fixed bug with "Undefined package in use clause" when several use clauses on a diagram.
- Fixed bug with "Internal error" when printing error message about unexpected return value in exported procedure.
- Fixed bug in stand alone help. Generate-C replaced with Generate-Advanced-C and Generate-Basic-C.
- Fixed bug with wrong reference in unreachable statement.
- Fixed bug with "Internal error" in generator instantiation.
- Fixed bug with check-output and redefined types.
- Fixed bug with inherit in abstract data types. Operators ending in `!' should be inherited in SDL-92 and operators resulting from ordering was not inherited.
- Fixed bug with view/reveal not working with types.
- In SDT 3.01, GR to PR sometimes translated graphical connections to via instead of connections. This is now fixed.
- Fixed bug with procedure calls not required to get the return value exactly one time.
- Fixed bug with "Set-references off" on systems with types causing core dump.
- Fixed bug with "Set-System-Instance" always getting error message 269. This bug was introduced in 3.01.
- Removed test with priority input only allowed in service.
- Removed test with services having the same priority on continuous signals.
- Removed test of procedure with state in process with services.
- Fixed bug with ADT inherit only inheriting the first occurrence of operator.
- The test of only one start transition in services removed. Error 226 available.
- Fixed bug with services losing valid input signal set and timers.
- Fixed bug with operator definitions analyzed before its visible types.
- Priority input in SDL systems now works.
- MSC verification: An MSC in which a process A sends signal to process B and then immediately stops, can now be verified.
- Error -in "clear-msc" command that sometimes made the Validator crash has been corrected.
- Problem with virtual spontaneous transitions has been corrected.
- #TYPE section in #CODE now found after GateDef, ImportedProcedSpec, RemoteProcedureDef, RemoteVariableDef.
- Enabling conditions and continuous signals in global procedures do now work.
- Join in operator diagrams does now work.
- Remote variable definition in package does now work. Remote variable definition together with inheritance does now work.
- Virtual procedures was not found in all circumstances. This is now corrected.
- Heading for yRead: parameter type changed from char * to
void *.
- Create with parameters does now work if create is performed in system and the created process instantiation has a type defined in a package.
- Expr now found by code generator in Import(i,expr).
- #NAME of process does now work. Does not generates double `_' anymore.
- Save * and input * does now work in global procedures.
- Virtual procedures in system types do now work.
- Via of outer paths now ok if type and instantiation are not defined on the same level.
- Virtual procedures now work if type and instantiation are not defined on the same level.
- Output via outer paths in global procedures now works.
The following sections contain a list of known errors and limitations for the tools and parts of SDT 3.0/3.01/3.02.
Release notes for the output from other tools into the Organizer Log, for example warning and error messages from the Analyzer, are available in the sections for the tools producing the output.
- Import Diagram/Connect Diagram with a search list.
The Import Diagrams menu choice does not correctly handle diagrams with the same name and type but different virtuality (virtual, redefined, finalized). The user has to manually correct the file bindings for these diagrams afterwards. The same applies when connecting diagrams with a search list.
- Partial analyze
By default, the Organizer does only re-analyze/make the diagrams that depend on a made change. When doing such a partial analyze, the Analyzer may report that declared SDL entities are not used when they are in fact used in those part of the diagram that was not included in the partial analysis.
- Search from Organizer
During a search session in the Organizer, the user should not close diagrams in an editor or exit an editor. This might otherwise result in trouble in the communication between the Organizer and the editors.
If nothing is selected in the Organizer, Search searches only in the last searched diagram, rather than searching the system.
- Quitting SDL diagrams containing renamed reference symbols
If a reference symbol is renamed in an SDL editor and the diagram containing the renamed symbol is later quitted in the editor (Close - No Save), all reference symbols become unconnected in the Organizer, i.e. their file bindings are lost. In this situation, the system file should also be quitted or saved in a new filename in order not to loose the original system file which contains the file bindings to the reference symbols.
- Connect diagrams
When connecting a diagram/or diagram structure using a search list, found files must not be opened in an editor. If so, a message box appears telling that the file must be loaded in the editor. In order to continue the connect operation, the Connect dialog must be brought down before closing the diagram in the editor. Then the Connect dialog can be issued again.
- SDT batch Analyze/Make
The system file is not automatically updated with the "last analysis time" when a successful batch analysis/make is performed. As a result, two subsequent calls to SDT batch will always cause the same parts to be analyzed. A supplied option file with additional analyze/make options will not force a full analysis/make to be performed. Compare with the interactive mode where a change in the Analyze and Make dialogs causes a full analysis/make to be performed.
- Text outside drawing area
Under certain circumstances texts are displayed outside the drawing area of the page being edited. This is visible if the text appears to the right or below the bottom of the drawing area and the scale used is such that the whole drawing area is visible in the editor window. The situation occurs for example when text is entered into an object and the lines of text are long. If a diagram is opened and a larger font is used compared to when the diagram was last saved the text will be larger and may flow outside the drawing area.
- Not possible to Copy a single gate
If only a single gate is selected in the SDL editor the Cut or Copy menu command is not available. You have to select another symbol together with the gate to be able to Cut or Copy the gate to the clipboard. When a gate has been copied, it is not possible to paste it into the same diagram page if the old gate is still in the old position. The pasted gate will be placed at the same position and the SDL Editor will not allow two gates to be placed at the same position.
- Tidy Up problems
Doing Tidy Up on strange diagrams created without syntax check and where lines connect symbols using a bad syntax might cause the SDL editor to loop.
- Insert Paste
The Insert Paste command in the SDL editor will rearrange the symbols in a bad way in situations where two flows lay beneath each other and you order the Insert Paste in the upper flow.
- As an example assume the flow A + B + D, where A and B are connected and D is below B but unconnected.
- Copy the flow X + Y and perform the Insert Paste command having A selected. The resulting flow is shown below.
- If there had been a line connecting B and D, the Insert Paste command would have performed correctly.
- SDL Editor locked doing Update Headings in Organizer
When performing the Update Headings command in the Organizer and choosing Update for an incorrect kernel heading, the SDL Editor window shows the changed heading symbol. If the SDL editor was not started before performing this command it might happen that the SDL Editor is locked after this operation. The problem is only known to occur on the HP 9000/300-400 platform. The only way to close the SDL Editor is either to Exit the Organizer or to choose the window manager Close command in the editor window. To avoid the situation be sure that the editor has been started before doing Update Headings.
- Bad text change doing Update Headings in Organizer
In some circumstances, performing the Update Headings command in the Organizer the wrong symbol might be updated with the text containing the new heading. For this to happen, more than one SDL editor window must be opened showing different diagrams. In each window exactly one symbol must be selected such that text is shown in the text window. To avoid the situation, have only one window opened when performing the Update Headings command, or be sure that symbols are unselected in the opened windows.
- The Overview Generator may place symbols too far from each other.
- On some X servers the instance ruler is not correctly updated when scrolling. To set things right click the Zoom In and Zoom Out quick buttons.
- It is possible to edit the text field in the create event of a static instance. What will happen to this text and its position is unpredictable.
- It is not possible to Cut/Paste between two MSC Editors from different SDT sessions.
- On some X servers there may be a problem with the update of the window. You can force a refresh of the drawing area by pressing Ctrl-L. This is also possible to do in the Preference Manager.
- MSC diagrams with names longer than 50 characters cannot be saved.
- If the information server is not started and you have set the preference Editor*SignalDictionary to on and you start a simulator, the SDL Editor and the Signal Dictionary window will pop up together with a message box with the text "Organizer is busy...".
Click down the message box and toggle the selected options in the Signal Dictionary off and on again.
- If the Signal Dictionary is active and you order a Save from the Organizer, a message box may show up with the text "SDL Editor is busy - locked by Signal Dictionary".
Just click down the message box.
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 workaround is described.
- The Analyzer is subject to the following limits: A maximum of 500 characters in a name or string is allowed. A maximum of 500 characters per line in an SDL comment is allowed. Commands and file paths are limited to 500 characters.
- The commands Set-Object, Set-Separate and Set-System-Instance used when running the Analyzer stand-alone are retained mostly for backwards compatibility, they are not updated to handle SDL-92.
- The Analyzer assumes the layout of External properties to follow the example below. That is, ExternalFormalismName should be on the same line as the alternative keyword and ExternalDataDescription should be on lines of their own.
Example 2
alternative a,b;
bla bla t5;
bla bla t5-2;
endalternative;
b;
- 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 treat the call like a task symbol.
- If the error limit is reached during this pass, some debug messages may be printed in the window where SDT was started from. Raise the error limit to avoid the messages.
- The PR system will be changed to have all its definitions referenced to match SDT's way of handling diagrams. A referenced definition need 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.
- The Analyzer cannot handle spaces in names (a space is a shorthand for an underline). Replace spaces with explicit underlines.
Semantic analysis is subjected to the following restrictions and limitations:
- The semantics of virtual types are unclear.
- Gate constraints on implicit signal routes are not checked, and they are lost during GR to PR translation.
- 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.
- Some checks may be lost in nested virtual definitions.
- Package interface and definition selection list in use 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 are not implemented, since it would make the use of "block in block" useless for inheritance.
- Operator definitions are not checked against operator signatures.
- External synonyms are only allowed in a number of instances. Select definitions and external synonyms cannot be handled in the Semantic Analyzer. Select a suitable subset and remove the unused parts of the system definition.
- Nameclass 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 type definitions containing qualifiers referencing that type definition is not allowed, since qualifiers are copied and not changed during the expansion of inheritance.
- Analyzing part of a system may produce messages about unused entities that are used in parts of the system not being analyzed.
- Semantic analysis of complex expression may cause long execution time. The execution time will increase in a fashion that is exponential rather than linear. If possible, try to reduce the complexity of expressions by breaking them down into multiple expressions. Consider for instance the example below, where alternative 2 is preferable.
Example 3
Alternative 1:
DECISION
(a > b) and
(b > c) and
(c > d) and
etc...
(y > z);
(True): TASK status := 1;
(False): TASK status := 0;
ENDDECISION;
Alternative 2:
TASK
ok := ok and (a > b)
ok := ok and (b > c)
etc...
ok := ok and (y > z)
DECISION ok;
(True) : TASK status := 1;
(False) : TASK status := 0;
ENDDECISION;
- Another thing that affects the execution time is the size of the system, because the context is all the visible identifiers. If it is an option to modify your system, it might be worth wile to go through all synonyms, newtypes and syntypes at the system level and move them as far as possible down the system structure. This makes the context visible to every expression smaller and reduces the time spent in resolution by context. Doing the same thing at lower levels will also improve performance, but not as much as on higher levels. The Cross-reference Viewer might be useful in accomplishing this. Note that items accessed from C code is not included.
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.
- 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.
- Text output is very slow if another window's top edge is within the text area.
Workaround: Remove the other window from the text area.
- Time syntype in SDL system leads to compilation error for xEq_SDL_Time
Workaround: Do not use syntypes of time.
- Faulty behavior if queues are added to channels to or within block instance sets with the Define-Queue command.
- ANY in an expression is deterministic. Only one result is given.
Workaround: If possible use ANY in a decision instead. The Validator will then explore all the decision alternatives.
- The generators for general arrays, strings and powersets cannot be used together with the Validator.
- A problem with value returning procedures/operators: If the returned value is dynamically allocated, then there will be memory leaks when executing the program.
Workaround: Use IN/OUT parameter instead of return value from the procedure.
- The MSC trace of input none in the Simulator is output of none with no input. This type of MSC cannot be verified in the Validator. In the Validator there is no trace of input none.
Workaround: Remove them manually.
- When simulating/validating in Simui/Valui and regenerating the running simulator/validator in the Organizer and then choosing the Restart command in the Simui/Valui, the Simui/Valui might hang.
- Restriction: An error message is raised if the following construction is used: a process exports procedures and calls (directly or indirectly) a global procedure with state.
- Restriction: An error message is raised if the following construction is used: output VIA ALL C, where C leads to a block instance set.
- Error in .ifc file: The representation of channels in a system type is not correct in the .ifc file.
Work around: Patch the .ifc file with the correct prefix for the channel.
- Error for RPC call of a value returning procedure without parameters. The parameter SIG_PAR_TYPE last in the macro ALLOC_SIGNAL is not correct. This parameter is not used in the master library, only in some of the OS integrations.
In general, the same restrictions as for the C Code Generator apply. In addition:
- Priority input is not handled.
- Create THIS is not handled.
- Continuous signals are not handled.
- Timers with parameters are not handled.
- The sort Charstring may not be used. It will lead to memory problems.
Workaround: Use array of char instead.
- Services are not handled.
- RPC call of a value returning procedure without parameters does not work.
- The executable TeleUSE interface is only for SunOS 4 and Solaris (SunOS 5) for the Demongame simulator.
- The phone example cannot be used together with the graphical SimUI if the phone application is compiled and linked with the ApplicationDebug kernel.
- Moving a symbol with text leaves traces when moving it close to the border of a window overlapping the drawing area. This error has been identified as an X server bug (Only on SunOS 4.1.x, both X11 R5 and X11 R6). (Applicable for the SDL Editor and the MSC Editor only.)
- Applications based on Motif 1.2 will all fail if they are running under OpenWindows 3.x (SunOS 4.1.X), unless the patch 100444-66 is applied. As SDT 3.0X is based on Motif 1.2, the above mentioned patch must be applied to OpenWindows to be able to run SDT.
- Pictures of the Preference Manager have not been fully updated to the SDT 3.02 appearance; the title of the root node has changed compared to SDT 3.0/3.01.
Table of Contents Next Chapter