Display diagnostic information about Simulink system


[txtRpt, sRpt] = sldiagnostics('sys')
[txtRpt, sRpt] = sldiagnostics('sys', options)
[txtRpt, sRpt] = sldiagnostics('sys', 'CompileStats')
[txtRpt, sRpt] = sldiagnostics('sys', 'RTWBuildStats')


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 strings. 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.


Valid Inputs



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 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.


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.


The following command counts and lists each type of block used in the sldemo_bounce model that comes with Simulink software.

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.

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.

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')
Was this topic helpful?