Main Content

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('sys') displays the following diagnostic information associated with the model or subsystem specified by 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('sys', options) displays only the diagnostic information associated with the specific operations listed as 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

CountBlocks

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.

CountSF

root model, library, or subsystem

Lists all unique Stateflow objects in the system and the number of occurrences of each.

Sizes

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.

Libs

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.

CompileStats

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.

RTWBuildStats

root model

Lists the same information as the CompileStats diagnostic. When issued with the second output argument sRpt, it captures the same statistics included in CompileStats and also the Simulink Coder™ build statistics.

You must explicitly specify this option, because it is not part of the default analysis.

All

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', options) returns only the specified options. If your chosen options specify just one type of analysis, then 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 specified RTWBuildStats), 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:

    sRpt =
    Model:	'myModel1'
    Statistics:	[1x134 struct]
    
    The size of the 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 and WallClockTime show the elapsed time for the phase in seconds. ProcessMemUsage, ProcessMemUsagePeak and ProcessVMSize 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 the WallClockTime 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 the ProcessMemUsage 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