Simulink Major Bug Fixes

This document describes major bug fixes in this release. Click on a problem area listed below to read how it has been fixed.

Bias Block Does Not Support Some Fixed-Point Data Types
Bus Consistency Checks Not Performed
Bus Objects No Longer Required in Some Cases
Cannot Build SIM Target for Referenced Model That Uses Global Variables
Cannot Linearize Unit Delay Blocks With Nondouble or Complex States
Cannot Resolve Masked Subsystem Reference to Bus Object
Cannot Simulate Model with Global Tunable Parameters and Model Arguments
Cannot Use Bus Assignment Block in a Triggered Subsystem
Changes from Refreshing Model Blocks May Not Be Saved
Changing a Subsystem I/O Port Number Can Corrupt a Model
Changing Rate Transition Initial Condition Crashes Matlab
Changing Some Block Settings Can Cause Incorrect Results
Compiled Attributes of Duplicate Inport Blocks Incorrectly Displayed
Creating a Subsystem with Duplicate Inports Can Cause a SegV
Data Type Alias Not Propagated
Editing Simulink.NumericType Object Can Cause Loss of Precision
Enabling Signal Logging in a Library Has No Effect
Excessive Line Branching May Prevent Model From Loading
Function-Call Loop Diagnostic
Grounding Nonscalar Block Inputs Can Produce Incorrect Results
Incorrect Error Message for Multiple Function-Call Triggers
Integrator and Discrete-Time Integrator Blocks Incorrectly Linearized
Internally Unconnected Triggered Subsystem Input Can Cause SegV
Interpolation n-D Using Prelookup Block Fails to Propagates Dimensions
Large Annotation Can Cause a Segmentation Error
Model Explorer Allows Editing of Read-Only Model Workspace Variables
Model Reference Can Cause an Invalid Sample-Time Mismatch Error
Model Reference Signal Logging Dialog Box Does Not Display Library Signals
Multitasking Data Store Diagnostic
Mux Limitation on a Chained Bus Connected to a Model Block
Nested For Iterator Subsystems in Referenced Models Can Give Incorrect Results
Rate Transition Block Incorrectly Inherits Continuous Sample Time
Referencing a Model with Constant Output Causes an Error
Reusable Function-Call Subsystems Can Cause SIM Target to Fail to Compile
Sample-Time Check Fails for Signal Connected to a Bus Creator Block
Saving Model Can Crash MATLAB
Signal Resolution Conversion Script Cannot Handle Single Quotes
Specifying a Bus Object for Duplicated Inports Causes a Segmentation Violation
Switch Case Block Does Not Support Integer Data Types
Variable Transport Delay Block Can Give Wrong Results
Zooming Clips Labels on Scope's Y-Axis

Bias Block Does Not Support Some Fixed-Point Data Types

In Simulink 6.0, connecting a fixed-point signal with a nonzero scaling bias to the input of a Bias block causes a simulation error and generation of incorrect code from the model. This release fixes the problem.

Bus Consistency Checks Not Performed

Simulink 6.0 can fail to check that buses satisfy constraints specified by bus objects. This can happen for buses that pass through bus-capable blocks. Simulink 6.1 correctly performs bus consistency checks in these cases.

Bus Objects No Longer Required in Some Cases

In Simulink 6.0 (R14FCS), models that contain referenced models to which buses are connected must meet the following requirements.

In this release, only the root level Inport and Outport blocks of the reference model must specify bus objects. Bus Creator blocks that generate virtual buses connected to Model block input ports or that generate buses connected to root level Outport blocks in referenced models do not need to specify bus objects.

Cannot Build SIM Target for Referenced Model That Uses Global Variables

Simulink 6.0 can generate code for a referenced model simulation target that contains undefined identifiers (starting with mdlref_MODEL_NAME_global) and hence cannot be compiled. This can occur if the referenced model contains S-functions that use global variables. This release fixes the problem.

Cannot Linearize Unit Delay Blocks With Nondouble or Complex States

In previous releases, Simulink could not correctly linearize blocks with complex-valued states or states whose data type was other than double. This release fixes this problem.

Cannot Resolve Masked Subsystem Reference to Bus Object

Simulink 6.0 might not be able to resolve a reference in a masked subsystem to a bus object in the base workspace. This release fixes the problem.

Cannot Simulate Model with Global Tunable Parameters and Model Arguments

Simulink 6.0 (Release 14) did not allow simulation of model references that use both global tunable parameters and model arguments. This release fixes the problem.

Cannot Use Bus Assignment Block in a Triggered Subsystem

In Simulink 6.0, using a Bus Assignment block in a triggered subsystem could incorrectly cause an invalid sample time error during model compilation. This release fixes the problem.

Changes from Refreshing Model Blocks May Not Be Saved

Simulink 6.0 may not save changes to a model that result from refreshing Model blocks to reflect changes in the properties of the models that the Model blocks reference, such as model version number, signal names, port names, and bus names. This can happen if you do not make any other changes to the top model before closing it. This release fixes the problem.

Changing a Subsystem I/O Port Number Can Corrupt a Model

In previous releases, changing the number of an input or output port number in a subsystem can cause an extra port to be added to the subsystem block in the parent system. Simulink 6.1 (R14SP1) fixes this problem.

Changing Rate Transition Initial Condition Crashes Matlab

In Simulink 6.0, changing the initial condition of a Rate Transition block while a simulation is running can crash MATLAB. This occurs if the transition is from a faster to a slower rate, a case where initial conditions do not apply. Simulink 6.1 fixes this problem.

Changing Some Block Settings Can Cause Incorrect Results

In previous releases, changing the Latch (buffer) input of an Inport block in a subsystem can lead to incorrect results or memory access errors during simulation. This can happen in particular if you enable the Latch (buffer) input option on a subsystem Inport block, update the model's diagram, then disable the option and update the diagram again. In this case, Simulink fails to assign a constant sample time to blocks in the subsystem that should have constant sample time, potentially leading to incorrect simulation results. A similar problem exists with the Output as nonvirtual bus option on the Bus Creator block. If you enable this option, update the model diagram, then disable the option and reupdate the diagram, Simulink fails to assign a constant sample time to blocks that should inherit a constant sample time via their connections to the bus, e.g., via a Signal Selector block. This release fixes these problems.

Compiled Attributes of Duplicate Inport Blocks Incorrectly Displayed

After model compilation, Simulink 6.0 incorrectly displays the attributes, e.g., data type, dimensionality, of Inport blocks that are duplicates of other Inport blocks. The duplicate blocks should display the same attributes as the blocks of which they are duplicates. This release fixes this problem.

Creating a Subsystem with Duplicate Inports Can Cause a SegV

In Simulink 6.0, creating a subsystem from a block selection can cause a segmentation violation if the selection includes duplicate Inport blocks and the Inport block names exceed 32 characters in length. This release fixes the problem.

Data Type Alias Not Propagated

In Simulink 6.0, it is possible for Simulink to propagate the base type specified by a Simulink.AliasType object to a port that should inherit the alias type specified by the object. This does not affect the results of simulating the model or executing code generated from the model. However, it is potentially confusing to someone expecting to see the alias type on the block diagram or in the generated code. This release fixes the problem.

Editing Simulink.NumericType Object Can Cause Loss of Precision

The Simulink 6.0 version of the Model Explorer may not display the slope and bias settings of a Simulink.NumericType object to their full precision. This can lead to truncation of the values if you edit them. The Simulink 6.1 version of the Model Explorer avoids this problem by displaying slope and bias settings to their full precision.

Enabling Signal Logging in a Library Has No Effect

In Simulink 6.0, enabling signal logging for signals in a block library has no effect. In particular, it does not cause Simulink to log instances of those signals included in a model. This release fixes this problem, i.e., it does log instances of logging-enabled signals included from a block library.

Excessive Line Branching May Prevent Model From Loading

Simulink 6.0 (R14FCS) may not be able to load a model containing a line that has more than 128 branch levels. Attempting to load such a model can cause MATLAB to crash. This release increases the line branch level limit to 1024 branches. Attempting to load or save a model with excessive branches causes Simulink to display an error message.

Function-Call Loop Diagnostic

This release adds a diagnostic that issues a warning if one or more of the outputs of a function-call subsystem is connected directly or indirectly to its inputs, such that its inputs depends on its outputs and hence must be computed in the same execution context. Such loops can, in some cases, cause simulation results to be unexpectedly and incorrectly sensitive to the sorted order of blocks in the function-call subsystem's execution context. See sl_subsys_semantics for examples of such cases. This diagnostic is off by default. You can enable the diagnostic globally by selecting Warn if function-call inputs arise inside called context on the Configuration Parameters dialog box or for a specific subsystem by selecting the same option on the subsystem's parameter dialog box. See the online Simulink documentation for more information.

Grounding Nonscalar Block Inputs Can Produce Incorrect Results

In previous releases, using Ground blocks to terminate a block input that expects a vector or matrix signal could produce incorrect simulation results. This release fixes this problem.

Incorrect Error Message for Multiple Function-Call Triggers

Simulink 6.0 may fail to detect or report the wrong error message when it detects that a function-call subsystem has multiple triggers and some of the triggers are periodic. (Simulink allows a function-call subsystem to have multiple triggers only if all of the triggers are generated by asynchronous S-functions.) This release correctly reports an error if all triggers are not asynchronous.

Integrator and Discrete-Time Integrator Blocks Incorrectly Linearized

In previous releases, Simulink can incorrectly linearize models that limit the output of Integrator and Discrete-Time Integrator blocks when the operating point is outside the limits. This release fixes the problem by including analytical Jacobeans for the blocks.

Internally Unconnected Triggered Subsystem Input Can Cause SegV

Using Simulink 6.0 to simulate a model containing a triggered subsystem that contains an internally unconnected Inport block can cause a segmentation violation. This can occur if the external signal connected to the input has a sample time that differs from the triggered subsystem's sample time and the model's Automatically handle rate transition option is selected. This release fixes this problem.

Interpolation n-D Using Prelookup Block Fails to Propagates Dimensions

Simulink 6.0 can fail to propagate dimensions from the Interpolation n-D Using Prelookup block in some cases where the block is configured for 1-D interpolation. This can cause dimension propagation errors reported by other blocks. The resulting error messages are misleading because they can point to the other blocks rather than the true source of the error, which is the n-D interpolation block. This release fixes the problem.

Large Annotation Can Cause a Segmentation Error

In previous releases, a model with a large annotation could cause a segmentation error during autorouting. This has been fixed.

Model Explorer Allows Editing of Read-Only Model Workspace Variables

In Simulink 6.0, you are supposed to be able to change model workspace variables defined by a MAT file or M code only by changing the MAT file or M code itself. This is intended to prevent you from losing changes to these variables when you close the model. Accordingly, Simulink 6.0 does not allow you to change such variables at the MATLAB command line and designates them as "read-only" in the Model Explorer. Despite this, you can change the value of a "read-only" variable by editing the value displayed in the Model Explorer.

This release does not attempt to prevent you from changing the value of any workspace variable in any way. It considers all model workspace variables to be writable, regardless of their source. It allows you to edit any model workspace variable at the MATLAB command line. Also the Model Explorer no longer labels variables defined by MAT files or M code as read-only.

These changes require that you keep model workspaces in sync with their MAT files and M code sources and vice versa. In other words, if you change a variable at the command line or in the model workspace, you must edit the corresponding data source to make the change permanent. Similarly, if you change a data source while a model is open, you must reload the data source to make the change effective in the current session. This release adds a button to the Model Explorer for loading data sources. See the online Simulink documentation for more information.

Model Reference Can Cause an Invalid Sample-Time Mismatch Error

In Simulink 6.0, with inline parameters enabled, referencing a model that connects a Width block to a root-level Inport block can cause Simulink to report an error stating incorrectly that the sample times of the Inport block and the Width block do not match. Simulink 6.1 fixes this problem.

Model Reference Signal Logging Dialog Box Does Not Display Library Signals

In Simulink 6.0, the model reference signal logging dialog box shows all signals in the model reference hierarchy except those that are instances of signals defined in block libraries. This release shows the library instances as well, allowing you to enable or disable logging for any signal in the model reference hierarchy.

Multitasking Data Store Diagnostic

This release adds a diagnostic that detects modeling scenarios in which one task updates a Data Store Memory block that is being read by another task. Such a situation is safe only if one of the tasks cannot interrupt the other, e.g., the updating task uses an atomic copy operation to update a scalar store or the target does not allow the tasks to preempt each other. You should therefore disable this diagnostic, i.e., set it to none, only if the application warrants it, e.g. the application uses a cyclic scheduler that prevents tasks from preempting each other. For more information, see "Multitask data store" in the "Sample Time Diagnostics" section of the online Simulink documentation. This release also introduces the use of sample time colors to indicate that different tasks are updating and reading from a Data Store Memory block. In this case, Simulink colors the Data Store Memory block yellow when sample time colors is enabled. Otherwise, Simulink colors the block the sample time color of the task that updates and reads the block, assuming the task is periodic.

Mux Limitation on a Chained Bus Connected to a Model Block

Simulink 6.0 does not allow a model to connect a bus created by a chain of Bus Creator blocks to a Model block if a Mux block precedes the chain of Bus Creator blocks. If the model violates this rule, Simulink 6.0 reports an error. This release removes this limitation.

Nested For Iterator Subsystems in Referenced Models Can Give Incorrect Results

In Simulink 6.0, a model that contains a For Interator Subsystem that references a model that itself contains a For Iterator Subystem can give incorrect results at the start of simulation. This can happen if the nested For Iterator Subsystem resets states at the start of an iteration. Simulink 6.1 fixes this problem.

Rate Transition Block Incorrectly Inherits Continuous Sample Time

In Simulink 6.0, the output port of a Rate Transition block connected to a block having a continuous sample time inherits that sample time. This is an error because the Rate Transition block is a discrete block and hence does not support continuous solutions of its output that entail taking minor time steps. In this release, the Rate Transition block inherits the model's fundamental discrete sample time if the model uses a fixed-step solver and a fixed-in-minor-time-step sample time if the solver is a variable-step solver.

Referencing a Model with Constant Output Causes an Error

Simulink 6.0 can incorrectly report an error if you attempt to update or simulate a model that references another model that contains a rootlevel Outport block whose sample time is constant (inf). This can occur if, in the referenced model, the block connected to the Outport block has a nonconstant (e.g., triggered) sample time. Simulink 6.1 does not report an error in this case.

Reusable Function-Call Subsystems Can Cause SIM Target to Fail to Compile

Simulink 6.0 can generate a simulation target for a referenced model that contains undefined identifiers of the form rty_* (where * is an integer) and hence fails to compile. This can occur if the referenced model contains a nonreusable subsystem that calls a reusable function-call subsystem. This release fixes the problem.

Sample-Time Check Fails for Signal Connected to a Bus Creator Block

Simulink 6.0 can incorrectly report that the sample time of a signal connected to a Bus Creator block does not match the sample time specified by the Bus Creator block's bus object. This can happen if the bus object specifies a sample time other than inherited (-1) and the source of the signal is a block that resides in a triggered subsystem. Simulink 6.1 does not report an error in this case.

Saving Model Can Crash MATLAB

In Simulink 6.0, saving a model containing an open subsystem whose PaperPositionMode parameter is set to manual can crash MATLAB. This release fixes the problem.

Signal Resolution Conversion Script Cannot Handle Single Quotes

In Simulink 6.0, the disableimplicitsignalresolution script aborts if it encounters a signal label containing a single quotation mark ('). This release fixes the problem.

Specifying a Bus Object for Duplicated Inports Causes a Segmentation Violation

In Simulink 6.0, simulating a model that specifies a bus object for an Inport block that has a duplicate results in a segmentation violation. This release fixes the problem.

Switch Case Block Does Not Support Integer Data Types

In Simulink 6.0 (R14FCS), the Case conditions parameter of the Switch Case block accepts integer values of type double only. In this release, the parameter accepts any integer data type as well as type double.

Variable Transport Delay Block Can Give Wrong Results

In Simulink 6.0 (Release 14) and previous releases, the Variable Transport Delay block can give incorrect results for models having the following characteristics:

This bug has been fixed.

Zooming Clips Labels on Scope's Y-Axis

In previous releases, zooming the Y-axis on the Scope block's display can clip the most significant digits of the Y-axis tick labels. This occurrs when the labels contained more than 6 digits. This release fixes the problem.