Real-Time Workshop® 7.1
Latest Features
Version 7.1
Released: 01 Mar 2008Version 7.1, part of Release 2008a, includes the following enhancements:
- Removed static libraries rtwlib_* to simplify code integration
- New API for registering hardware device vendor and type
- More cases supported for automatic Rate Transition Block insertion
- Removed limitations for number of referenced models built
- Enhanced BuildInfo API to contain a composite Model Reference description
- MATLAB Editor syntax highlighting for Target Language Compiler (TLC) code
- Context-sensitive help available for Configuration Parameters dialog box
See the Release Notes for details.
Update Now
- Download the latest version if your software maintenance service is current.
- Purchase or request a renewal quote if your maintenance service has lapsed.
- Try the latest version by downloading or requesting trial software.
Version 7.0.1
Released: 08 May 2008Version 7.0.1, part of the Simulink product family update for Release 2007b, resolves several key customer-reported issues.
Read about the latest bug fixes for:
- Fixed-Point Toolbox 2.1.1
- Real-Time Workshop 7.0.1
- Real-Time Workshop Embedded Coder 5.0.1
- Simulink 7.0.1
- Simulink Fixed Point 5.5.1
- Stateflow 7.0.1
- Stateflow Coder 7.0.1
- Simulink Verification and Validation 2.2.1 (represented in Simulink 7.0.1 reports)
Version 7.0
Released: 01 Sep 2007Version 7.0, part of Release 2007b, includes the following enhancements:
- New
emlccommand-line function for generating C code from Embedded MATLAB, including Embedded MATLAB code that spans multiple M-files - Support for Stateflow animation with Simulink External Mode
- Auto insertion of asynchronous Rate Transition blocks handled for more cases
- New configuration parameters for controlling compiler optimization level and specifying custom optimization settings
- Additional microprocessors and enhanced graphical interface for selecting code generation target hardware
- Improved code integration for Stateflow local data by inheriting Simulink signal object properties
- Enhanced efficiency in generated code of Iterator-Selector-Assignment patterns
See the Release Notes for details.
Version 6.6.1
Released: 03 May 2007Real-Time Workshop 6.6.1 resolves several key customer-reported issues. It is part of a Simulink product family update for Release 2007a. See the Release Notes for details.
In addition to Real-Time Workshop, seven other products were included in this update:
- Real-Time Workshop Embedded Coder 4.6.1
- Simulink 6.6.1
- Simulink Accelerator 6.6.1
- Simulink Fixed Point 5.4.1
- Simulink Verification and Validation 2.1.1
- Stateflow 6.6.1
- Stateflow Coder 6.6.1
Version 6.6
Released: 01 Mar 2007Version 6.6, part of Release 2007a, includes the following enhancements:
- Static file dependencies reduced for improved integration and builds
- Enhanced code efficiency, including Merge and Concatenate block optimizations
- Enhanced checking and reporting for identifier conflicts
- Support for multidimensional signals
- Support for indexed tunable parameters used in tunable expressions
- Support for Simulink Legacy Code Tool enhancements
- New TLC tutorial
See the Release Notes for details.
Version 6.5
Released: 01 Sep 2006Version 6.5, part of Release 2006b, includes the following enhancements:
- Support for Simulink Report Generator to create code generation reports
- New packNGo function for relocating static and generated code files for a model
- Support for new Simulink.SubSystem.getChecksum method for determining why subsystem code is not reused
- Merge block enhancement that supports storage classes for input signals
- Consistency improvements to formatting of generated code
- Support for Simulink Legacy Code Tool, which speeds creation of S-functions from legacy C/C++ code
Version 6.4.1
Released: 20 Apr 2006Real-Time Workshop 6.4.1 resolves many customer-reported issues. It is part of a Simulink product family update for Release 2006a. See the Release Notes for details.
In addition to Real-Time Workshop, seven other products were included in this update:
- Real-Time Workshop Embedded Coder 4.4.1
- Simulink 6.4.1
- Simulink Accelerator 6.4.1
- Simulink Fixed Point 5.2.1
- Simulink Report Generator 3.0.1
- Stateflow 6.4.1
- Stateflow Coder 6.4.1
Version 6.4
Released: 01 Mar 2006Version 6.4, part of Release 2006a, includes the following enhancements:
- Support for Visual Studio 2005 (MSVC8.0) on 32-bit Windows platforms
- New application programming interface (API) for managing model build information
- Switch block optimization for wide control port signals
- Support for Simulink signal object initialization
- Support for Simulink parameters of all numeric data types, including fixed-point, user-defined, and alias data types
See the Release Notes for details.
Version 6.3
Released: 01 Sep 2005Version 6.3, part of Release 14 with Service Pack 3, includes the following enhancements:
- Embedded MATLAB block support for fixed-point code generation
- C++ target language support for Real-Time Windows Target and External Mode
- Code efficiency improvements, including optimized vector selection for Data Store Memory
rtw_precompile_libsfunction for optimizing builds involving S-Function libraries- MATLAB desktop window no longer superimposed on the Simulink model window during code generation
- Additional documentation topics, including profiling generated code
See the Release Notes for details.
Version 6.2.1
Released: 26 May 2005Real-Time Workshop 6.2.1 resolves many customer-reported issues. It is part of a Simulink product family update for Release 14 with Service Pack 2. See the Release Notes for details on version 6.2.1.
In addition to Real-Time Workshop, six other products were included in this update:
- Real-Time Workshop Embedded Coder 4.2.1
- Simulink 6.2.1
- Simulink Accelerator 6.2.1
- Simulink Fixed Point 5.1.1
- Stateflow 6.2.1
- Stateflow Coder 6.2.1
Version 6.2
Released: 07 Mar 2005- C++ target language support to facilitate integration of generated code with legacy or custom user code written in C++
- Model Advisor enhancements including several new checks and the grouping of checks based on their application for simulation or code generation
- Rate Transition block enhancements including support for automatic insertion of transitions to or from asynchronous tasks, automatic insertion for single-tasking execution mode, and asynchronous rates when no priority is specified
- Optimized code generated for the Data Store Read block to eliminate the use of temporary variables, when possible.
Version 6.2, part of MathWorks Release 14 with Service Pack 2, also includes the latest bug fixes. See the Release Notes for details.
Version 6.1
Released: 22 Sep 2004Version 6.1 of the Real-Time Workshop contains minor enhancements and latest bug fixes. It is fully compatible with MathWorks Release 14 products.
Version 5.1.1
Released: 29 Apr 2004Real-Time Workshop 5.1.1 resolves many customer-reported issues.
For additional information about Real-Time Workshop 5.1.1, see the Release Notes.
Version 6
Released: 02 Jun 2004Model Referencing, Model Blocks, and Incremental Code Generation
Model Referencing lets a model include references to other models using Model blocks. The advantages include modular development,
inclusion by reference (instead of wasteful copies), faster loading and updates, and incremental code generation.
Embedded MATLAB Functions block
The Embedded MATLAB Functions block lets you include MATLAB code in Simulink and Stateflow models for simulation and code
generation.
Code Generation Unification
Real-Time Workshop Embedded Coder fully extends the set of features provided by Real-Time Workshop. Both products now share
a common code format.
Bus Creator Blocks Now Can Emit Structures
Bus signals can be made non-virtual using the Bus Editor and occupy contiguous memory in the generated code.
Model Explorer
The Model Explorer lets you quickly navigate, view, create, configure, search, and modify all data and properties of a Simulink
model or Stateflow chart.
Data Dictionary Support
Real-Time Workshop generates code according to attributes defined for data within a data dictionary established by the Model
Explorer and Simulink Data Objects.
Configuration Sets
Configuration sets let you easily define and manage all simulation and code generation parameters. You can create multiple
configuration sets for a given model.
Hardware Characteristics
Hardware configuration sets make it easy to specify word sizes and other target hardware characteristics. A handy Device type
menu provides pre-set default hardware configuration values for dozens of well known target processors.
Code Reports
You can browse files generated by Real-Time Workshop directly in the Model Explorer.
Model Advisor
The Model Advisor helps you quickly configure a model for code generation and identify aspects of your model that impede deployment
or limit code efficiency.
New C-API for Accessing Model Block Outputs and Parameters Data
The new C-API is more efficient and capability than before, plus provides support for referenced models, fixed point, complex
data, and reusable code.
External Mode Enhancements
External Mode includes a number of enhancements such as support for Floating Scope blocks and serial communication mode.
Custom Code Block Library
The Custom Code Block library contains 10 blocks that insert custom code into the generated model files and functions.
Combining User C++ Files with Generated Code
Real-Time Workshop lets you incorporate user C++ files into a Real-Time Workshop build. The Real-Time Workshop itself does
not generate C++ code but simply enables it to be called.
Designating Target-Specific Math Functions
You can specify ISO-C/C99 or GNU floating-point math libraries, in addition to ANSI-C. This makes the code more efficient
because it can use single-precision operations.
New Asynchronous Block Library
This asynchronous block library targets a particular RTOS (VxWorks Tornado) and provides full source code and documentation
so that you can support event handling for your target RTOS.
Rate Transition Block Improvements
The updated Rate Transition block automatically detects whether transitions must be slow-to-fast or fast-to-slow, and acts
appropriately. Simulink can also now auto-insert rate transitions.
Enhanced Absolute and Elapsed Time Computation
The Real-Time Workshop now provides more efficient time computation services to blocks that request absolute or elapsed time.
Improved Single Tasking Code Generation
Code is more efficient for Single Tasking mode since it no longer test for base rate sample hits.
Real-Time Workshop Now Supports Intel Compiler
Real Time Workshop now supports the Intel compiler (version 7.1 for Microsoft Windows).
ASAP2 File Generation Changes
ASAP2 file generation is now generally available to all Real-Time Workshop targets.
Version 5.1
Released: 22 Sep 2003Version 5.1, included the latest bug fixes and the following:
Model Assistant Tool
The Model Assistant Tool lets you configure a model quickly for code generation. It also helps identify aspects of your model
that impede production deployment or limit code efficiency. Designed primarily for Real-Time Workshop, the Model Assistant
Tool also operates with other targets.
Version 5.0.1
Released: 26 Sep 2002Expanded Hook File Options
This update adds new options for specifying target characteristics via hook files.
During its build process, Real-Time Workshop checks for <target>_rtw_info_hook.m, where <target> is the base file name of the active system target file. For example, if your system target file is grt.tlc, then the hook file name is grt_rtw_info_hook.m. If the hook file is present (i.e., is on the MATLAB path), the API in this file extracts the target-specific information.
Otherwise, the host computer is the assumed target.
Three hook file keyword options have been added since release 13:
TypeEmulationWarnSuppressLevel: Suppresses warnings about emulation of word sizes. The default value is 0, which gives full warnings. This is the preferred setting when generating code for the production target. Increasing the value gives fewer warnings. When generating code for a rapid prototyping system, emulation may not be a concern and a suppression level of 2 may be desirable.PreprocMaxBitsSint: Specifies limitations of the target C preprocessor to perform math with signed integers. This prevents errors in the preprocessor phase.PreprocMaxBitsUint: Specifies limitations of the target C preprocessor to perform math with unsigned integers. This is just likePreprocMaxBitsSintexcept that it pertains to unsigned integer operations.
Hook Files for Customizing Make Commands
Custom targets may require a target-specific hook file to generate an appropriate make command when you are using a nondefault
compiler. Such M-files should be located on the MATLAB path and be named <target>_wrap_make_cmd_hook.m, e.g. MPC555pil_wrap_make_cmd_hook.m for the MPC555 PIL target. When such a file exists, and returns an appropriate make command, Real-Time Workshop will override
its default (e.g., LCC) batch file wrapping code. For an example make command hook file, see matlabroot/toolbox/rtw/rtw/wrap_make_cmd.m. Note that such hook files are distinct from the target-specific hook files that describe hardware characteristics (see above).
Version 5
Released: 05 Aug 2002Code Generation Infrastructure Enhancements
Code for Nonvirtual Subsystems Is Now Reusable
Real-Time Workshop 5 alters certain aspects of generated code to implement the capability to reuse code for nonvirtual subsystems.
You have the ability to select or override this feature, as well as to specify function and file names from the Real-Time
Workshop GUI.
In prior releases, each nonvirtual subsystem in a model generated a separate block of code. In some circumstances— for example,
when a library block is used multiple times in the same fashion— it is possible to generate a single shared function for the
block and call that function multiple times. Consolidating code in this fashion can significantly improve the size and efficiency
of generated code.
To implement code reuse, the Real-Time Workshop must pass in appropriate data elements (as function arguments) for each caller
of a reused subsystem. Code generated by Real-Time Workshop 5 enables such arguments for functions generated for nonvirtual
subsystems.
Reusable code will also be generated, when feasible, when you set Real-Time Workshop system code to Auto. Then, if only one
instance of the subsystem exists, it will be inlined. Otherwise a reusable function will be generated if other characteristics
of the model allow.
Certain conditions may make it impossible to reuse code, causing Real-Time Workshop to revert to another Real-Time Workshop
system code option even though you specify the Reusable function.
See Nonvirtual SubsystemCode Generation in the Real Time Workshop documentation for further details.
Packaging of Generated Code Files Simplified
The packaging of generated code into .c and .h files has changed. The following table summarizes the structure of source code
generated by the Real-Time Workshop. All code modules described are written to the build directory.
Table 1-1: Real-Time Workshop File Packaging
| model.c |
Contains entry points for all code implementing the model algorithm (MdlStart, MdlOutputs, MdlUpdate, MdlInitializeSizes, MdlInitializeSampleTimes). Also contains model registration code |
| model_private.h | Contains local defines and local data that are required by the model and subsystems. This file is included by subsystem .c files in the model. You do not need to include model_private.h when interfacing handwritten code to a model. Note that model_private.h is sub-included by model.h. |
| model.h | Defines model data structures and a public interface to the model entry points and data structures. Also provides an interface to the real-time model data structure (model_rtM) via accessor macros. model.h is included by subsystem .c files in the model. If you are interfacing your handwritten code to generated code for one or more models, you should include model.h for each model to which you want to interface. |
| model_data.c(conditional) |
model_data.c is conditionally generated. It contains the declarationsfor the parameters data structure and the constant block I/O data structure. If these data structures are not used in the model, model_data.c is not generated. Note that these structures are declared extern in model.h. |
| model_types.h | Provides forward declarations for the real-time model data structure and the parameters data structure. These may be needed by function declarations of reusable functions. model_types.h is included by all subsystem .h files in the model. |
| rtmodel.h | Contains #include directives required by static main program modules such as grt_main.c and grt_malloc_main.c. Since these modules are not created at code generation time, they include rt_model.h to access model-specific data structures and entry points. If you create your own main program module, take care to include rtmodel.h. |
| model_pt.c (optional) | Provides data structures that enable a running program to access model parameters without use of external mode. To learn how to generate and use the model_pt.c file, see C API for Parameter Tuning. |
| model_bio.c (optional) | Provides data structures that enable your code to access block outputs. To learn how to generate and use the model_bio.c file, see Signal Monitoring via Block Outputs. |
If you have interfaced handwritten code generated by previous releases of the Real-Time Workshop, you may need to remove dependencies on header files that are no longer generated. Use #includemodel.h directives, and remove #include directives referencing any of the following:
- model_common.h (replaced by model_types.h and model_private.h)
- model_export.h (replaced by model.h)
- model_prm.h (replaced by model_data.c)
- model_reg.h (subsumed by model_.c)
Most Targets Use rtModel Instead of Root SimStruct
The GRT, GRT-Malloc, ERT, and Tornado targets now use the rtModel data structure to store information about the root model. In prior releases, this information was stored in the SimStruct data structure. Since the SimStruct data structure was also used by non-inlined S-functions, it contained a number of S-function-specific fields that were not
needed to represent root model information. The new rtModel is a lightweight data structure that eliminates these unused fields
in representing the root model. Fields in the rtModel capture model-wide information pertaining to timing, solvers, logging,
model data (such as block I/O and Dwork parameters), etc. To generate code for the ERT target, the rtModel data structure
is further pruned to contain only those fields that are relevant to the model under consideration.
Hookfiles for Communicating Target-Specific Word Characteristics
In order to communicate details about target hardware characteristics, such as word lengths and overflow behavior, you now
need to supply an M-file named <target>_Real-Time Workshop_info_hook.m. Each system target file needs to implement a hook
file. For GRT (grt.tlc), for example, the file must be named grt_Real-Time Workshop_info_hook.m, and needs to be on the MATLAB
path. If the hookfile is not provided, default values based on the host's characteristics will be used, which may not be appropriate.
For an example, see toolbox/Real-Time Workshop/Real-Time Workshopdemos/example_Real-Time Workshop_info_hook.m. In addition,
note that the TLC directive %assign DSP = 1 no longer has any effect. You need to provide a hook file instead.
Code Generation Unified for Real-Time Workshop and Stateflow
In earlier releases, code generated from Stateflow charts in a model was written to source code files distinct from the source
code files (such as model.c, model.h, etc.) generated from the rest of the model. Now, by default, Stateflow no longer generates any separate files from Real-Time
Workshop. In addition, Stateflow generated code is seamlessly integrated with other generated code. For example, all Stateflow
initialization code is now inlined.
You can override the default and instruct Real-Time Workshop to generate separate functions, within separate code files, for
a Stateflow chart. To do this, use the Real-Time Workshop system code options in the Block parameters dialog of the Stateflow
chart (see Nonvirtual Subsystem Code Generation in the Real-Time Workshop documentation). You can control both the names of
the functions and the code files generated.
Conditional Input Branch Execution Optimization
This release introduces a new optimization called conditional input branch execution, speeding simulation and execution of
code generated from the model. Previously, when simulating models containing Switch or Multiport Switch blocks, Simulink executed
all blocks required to compute all inputs to each switch at each time step. In this release, Simulink, by default, executes
only the blocks required to compute the control input and the data input selected by the control input at each time step.
Likewise, stand-alone applications generated from the model by Real-Time Workshop execute only the code needed to compute
the control input and the selected data input. To explore this feature, look at the coninputexec demo.
Custom storage classes are now ignored if Real-Time Workshop Embedded Coder is not licensed
To use custom storage classes, you must obtain a license for Real-Time Workshop Embedded Coder and install the product. If
you load a model that uses custom storage classes, but you are not licensed for Real-Time Workshop Embedded Coder, the custom
storage class is ignored, the storage class reverts to auto, and a warning is displayed.
Version 4.1.1
Released: 08 Jan 2002This release included the latest bug fixes.
Real-Time Workshop Embedded Coder 2.1 was also included in that release.
Version 4.1
Released: 02 Jul 2001Real-Time Workshop Embedded Coder 2 is also available.
Code Generation Enhancements
- Block reduction option is turned on by default, resulting in faster model execution.
- Complete documentation for the parameter tuning C API is now available.
- Enhancements have been made to the readability of the generated code, including elimination of redundant parenthesis, splitting of long C statements across multiple lines, and generation of more informative block comments.
- New expression-folding code optimization improves the efficiency and readability of generated code.

This model demonstrates "expression folding" performed by Real-Time Workshop. In this model, each block (gain, lookup tables,
relational operator, logic, and constant) is folded into the switch block operation to improve the code efficiency and readability.
Note that the branches of the switch block are conditionally executed, increasing CPU throughput.
- Subsystem code generation and rapid simulation targets support inline parameters.
- Generate comments option lets you specify whether comments are written in the generated code.
- Buffer reuse option is now available in the Code Generation Options section of the Real-Time Workshop graphical user interface.
- Build Subsystem and Generate S-function windows display additional information about block parameters referenced by the subsystem.
- Include System Hierarchy in Identifiers option inserts system identification tags in the generated code to help identify the nesting level of the block within your source model that generated a given line of code.
- Wrap lines option for the MATLAB Command Window lets you control whether text displayed in the Command Window is wrapped to the window or displayed as one continuous line.
- For certain block types, you can control how block states in your model are stored and represented in the generated code.
- Control-flow blocks (if, for, while, switch-case) produce very efficient, readable code.

Real -Time Workshop Embedded Coder generates production code for Simulink's software constructs: if, case, for, and while.
This example demonstates the code generated for the if-then-else construct. Note that analysis determines that the outputs
of the if-else systems can be stored in a temporary variable when exclusively merged.
External Mode Enhancements
- Support for inline parameters enables you to improve overall code efficiency while retaining the flexibility of run-time tuning for selected parameters.
- The simulation time is now displayed and updated while Simulink is connected to a running external mode target.
Support for New Blocks
- Support is now provided for the control flow blocks implemented in Simulink 4.1, including the If, SwitchCase, For Iterator, and While Iterator blocks.
Target Language Compiler 4.1
- The TLC debugger helps you identify programming errors in your TLC code. The debugger lets you set breakpoints in your TLC code, execute TLC code line by line, examine and change variables, and perform many other useful operations.
Version 4
Released: 02 Nov 2000- Significantly faster Target Language CompilerTM (TLC) code generation process
- TLC Profiler report for debugging TLC programs
- New optimizations in generated code, including improved signal storage reuse, block reduction, and parameter pooling
- User Interface improvements, including a redesigned Real-Time Workshop page and Model Parameter Configuration (tunable parameters) dialog
- Support for additional Simulink blocks, including Look-Up Table blocks with highly efficient generated code
- S-function target support for variable-step solvers and parameter tuning
- Support for frame-based processing for DSP Blockset blocks and matrix operations for most Simulink blocks
- External mode now supports additional blocks for signal uploading, including Dials & Gauges Blockset, Display, and To Workspace blocks
- Support for code generation from subsystems
- Simulink data objects control how signals and parameters are represented in the generated code
- Support for generation of ASAP2 data definition files
- Tunable expressions are now supported during simulation and in the generated code
- New build directory stores generated source code and other files created during the build process
- Nonvirtual subsystem code generation enables you to control how many files are generated from a subsystem as well as the file and function names
- Support for Version 5.4 of the Borland C/C++ compiler
Store