sldiagnostics
Display diagnostic information about Simulink system
Syntax
sldiagnostics('
sys
')
[txtRpt, sRpt] = sldiagnostics('sys')
[txtRpt, sRpt] = sldiagnostics('sys', options
)
[txtRpt, sRpt] = sldiagnostics('sys', 'CompileStats')
[txtRpt, sRpt] = sldiagnostics('sys', 'RTWBuildStats')
Description
sldiagnostics('
displays
the following diagnostic information associated with the model or
subsystem specified by sys
')sys
:
Number of each type of block
Number of each type of Stateflow® object
Number of states, outputs, inputs, and sample times of the root model.
Names of libraries referenced and instances of the referenced blocks
Time and additional memory used for each compilation phase of the root model
If the model specified by sys
is not loaded,
then sldiagnostics
loads the model before performing
the analysis.
The command sldiagnostics('
displays
only the diagnostic information associated with the specific operations
listed as sys
', options
)options
character vectors. The
table below summarizes the options available and their corresponding
valid input and output.
With sldiagnostics
, you can input the name
of a model or the path to a subsystem. For some analysis options, sldiagnostics
can
analyze only a root model. If you provide an incompatible input for
one of these analyses, then sldiagnostics
issues
a warning. Finally, if you input a Simulink® Library, then sldiagnostics
cannot
perform options that require a model compilation (Update
Diagram). Instead, sldiagnostics
issues
a warning.
During the analysis, sldiagnostics
will follow
library links but will not follow or analyze Model References. See find_mdlrefs
for more information on
finding all Model blocks and referenced models in a
specified model.
Option | Valid Inputs | Output |
---|---|---|
| root model, library, or subsystem | Lists all unique blocks in the system and the number of occurrences of each. This includes blocks that are nested in masked subsystems or hidden blocks. |
| root model, library, or subsystem | Lists all unique Stateflow objects in the system and the number of occurrences of each. |
| root model | Lists the number of states, outputs, inputs, and sample times, as well as a flag indicating direct feedthrough, used in the root model. |
| root model, library, or subsystem | Lists all unique libraries referenced in the root model, as well as the names and numbers of the library blocks. |
| root model | Lists the time and additional memory used for each compilation phase of the root model. This information helps users troubleshoot model compilation speed and memory issues. |
| root model | Lists the same information as the You must explicitly specify this option, because it is not part of the default analysis. |
| not applicable | Performs all diagnostics. |
Note
Running the CompileStats
diagnostic before
simulating a model for the first time will show greater memory usage.
However, subsequent runs of the CompileStats
diagnostic
on the model will require less memory usage.
[txtRpt, sRpt] = sldiagnostics('sys')
returns
the diagnostic information as a textual report txtRpt
and
a structure array sRpt
, which contains the following
fields that correspond to the diagnostic options:
blocks
stateflow
sizes
links
compilestats
[txtRpt, sRpt] = sldiagnostics('sys',
returns
only the specified options. If your chosen options specify just one
type of analysis, then options
)sRpt
contains the results
of only that analysis.
[txtRpt, sRpt] = sldiagnostics('sys', 'CompileStats')
returns
information on time and memory usage in txtRpt
and sRpt
.
[txtRpt, sRpt] = sldiagnostics('sys', 'RTWBuildStats')
includes Simulink
Coder build
statistics in addition to the information reported for CompileStats
in
the sRpt
output.
txtRpt
contains the formatted textual output of time spent in each of the phases in Simulink and Simulink Coder (if you specifiedRTWBuildStats
), for example:Compile Statistics For: rtwdemo_counter Cstat1: 0.00 seconds Model compilation pre-start Cstat2: 0.00 seconds Stateflow compile pre-start notification Cstat3: 0.10 seconds Post pre-comp-start engine event Cstat4: 10.00 seconds Stateflow compile start notification Cstat5: 0.00 seconds Model compilation startup completed
sRpt
is a MATLAB® structure containing time and memory usage for each of the phases, for example:The size of thesRpt = Model: 'myModel1' Statistics: [1x134 struct]
sRpt.Statistics
array indicates the number of compile and build phases executed during the operation. Examine the Statistics fields:sRpt.Statistics(1) = Description: 'Phase1' CPUTime: 7.2490 WallClockTime 4.0092 ProcessMemUsage: 26.2148 ProcessMemUsagePeak: 28.6680 ProcessVMSize: 15.9531
CPUTime
andWallClockTime
show the elapsed time for the phase in seconds.ProcessMemUsage
,ProcessMemUsagePeak
andProcessVMSize
show the memory consumption during execution of the phase in MB.
Examine these key metrics to understand the performance:
WallClockTime
—The real-time elapsed in each phase in seconds. Sum theWallClockTime
in each phase to get the total time taken to perform the operation:ElapsedTime = sum([statRpt.Statistics(:).WallClockTime]);
ProcessMemUsage
—The amount of memory consumed in each phase. Sum theProcessMemUsage
across all the phases to get the memory consumption during the entire operation:TotalMemory = sum([statRpt.Statistics(:).ProcessMemUsage]);
ProcessMemUsagePeak
—The maximum amount of allocated memory in each phase. Get the maximum of this metric across all the phases to find the peak memory allocation during the operation:PeakMemory = max([statRpt.Statistics(:).ProcessMemUsagePeak]);
Note
Memory statistics are available only on the Microsoft® Windows® platform.
Examples
The following command counts and lists each type of block used
in the sldemo_bounce
model that comes with Simulink software.
openExample('simulink_general/sldemo_bounceExample') sldiagnostics('sldemo_bounce', 'CountBlocks')
The following command counts and lists both the unique blocks
and Stateflow objects used in the sf_boiler
model
that comes with Stateflow software; the textual report returned
is captured as myReport
.
openExample('stateflow/BangBangControlUsingTemporalLogicExample') myReport = sldiagnostics('sf_boiler', 'CountBlocks', 'CountSF')
The following commands open the f14
model
that comes with Simulink software, and counts the number of blocks
used in the Controller
subsystem.
openExample('simulink_aerospace/AircraftLongitudinalFlightControlExample') sldiagnostics('f14/Controller', 'CountBlocks')
The following command runs the Sizes
and CompileStats
diagnostics
on the f14
model, capturing the results as both
a textual report and structure array.
[txtRpt, sRpt] = sldiagnostics('f14', 'Sizes', 'CompileStats')
Version History
Introduced in R2006a