Main Content

slbuild

Build standalone executable file or model reference target for model

Description

example

slbuild(model) builds a standalone Simulink® Coder™ binary executable file from the specified model, using the current configuration parameter settings. If the model is not loaded, slbuild loads the model before starting the build process.

slbuild(model,buildSpec) builds a standalone Simulink Coder binary executable file from the model according to the specified code generation action.

example

slbuild(model,Name,Value) builds a standalone Simulink Coder binary executable file from the model as specified by one or more name-value arguments.

example

blockHandle = slbuild(subsystem) generates subsystem code and builds a Simulink Coder binary executable file by using the current configuration parameter settings of your model. If the selected system target file creates an S-Function block, the function returns a non-empty block handle to an autogenerated S-Function wrapper. Before you run the command, you must open or load the parent model.

example

blockHandle = slbuild(subsystem,'Mode','ExportFunctionCalls') generates code from the subsystem that includes function calls that you can export to external application code. This command requires Embedded Coder®. If the Create block configuration parameter is set to SIL, the function returns the handle to a SIL block. You can then use the SIL block for numerical equivalence testing.

example

blockHandle = slbuild(subsystem,Name,Value) generates subsystem code and builds a Simulink Coder binary executable file as specified by one or more name-value arguments.

Examples

collapse all

Generate C code for model rtwdemo_rtwintro.

slbuild('rtwdemo_rtwintro')
% Same operation as ...
% slbuild('rtwdemo_rtwintro','StandaloneCoderTarget') 

For the generic real-time (GRT) target, the coder generates these code files and places them in folders rtwdemo_rtwintro_grt_rtw and slprj/grt/_sharedutils.

Model FilesShared FilesInterface FilesOther Files

rtwdemo_rtwintro.c

rtwdemo_rtwintro.h

rtwdemo_rtwintro_private.h

rtwdemo_rtwintrotypes.h

rtwtypes.h

multiword_types.h

builtin_typeid_types.h

rtmodel.h

none

If the following model configuration parameters settings apply, the coder generates additional results.

Parameter SettingResults
Code Generation > Generate code only pane is clearedExecutable file rtwdemo_rtwintro.exe
Code Generation > Report > Create code generation report is selectedReport appears, providing information and links to generated code files, subsystem and code interface reports, entry-point functions, inports, outports, interface parameters, and data stores

This example shows how to use slbuild to generate executable code for two models, sldemo_mdlref_depgraph and rtwdemo_counter. sldemo_mdlref_depgraph is a top model that references models. The example also shows how to build the referenced models in parallel.

Create a local folder.

if exist(fullfile('.','myTempFolder'),'dir')
    rmdir('myTempFolder','s')
end
mkdir myTempFolder
cd myTempFolder

Copy sldemo_mdlref_depgraph, which references models, to the local folder.

src_dir = fullfile(matlabroot, ...
                   'toolbox', ...
                   'simulink', ...
                   'simdemos', ...
                   'simfeatures', ...
                   'modelreference');
copyfile(fullfile(src_dir, ...
                  'sldemo_mdlref_depgraph.slx'), ...
                  '.');

Enable parallel building of models referenced by sldemo_mdlref_depgraph.

load_system('sldemo_mdlref_depgraph')
set_param('sldemo_mdlref_depgraph', ...
'EnableParallelModelReferenceBuilds', 'on');

Initialize MATLAB® workers for parallel building of referenced models.

set_param('sldemo_mdlref_depgraph', ...
          'ParallelModelReferenceMATLABWorkerInit', ...
          'Copy Base Workspace');

Build the models.

slbuild({'sldemo_mdlref_depgraph', 'rtwdemo_counter'})

In myTempFolder, the build process creates standalone executable files, sldemo_mdlref_depgraph.exe and rtwdemo_counter.exe.

For each model, in the Command Window, the build process displays a build summary.

Generate code and build an executable file for rtwdemo_mdlreftop, which refers to model rtwdemo_mdlrefbot, regardless of model checksums and parameter settings.

slbuild('rtwdemo_mdlreftop','StandaloneCoderTarget', ...
    'ForceTopModelBuild',true)

Generate C code for subsystem Amplifier in model rtwdemo_rtwintro.

rtwdemo_rtwintro
slbuild('rtwdemo_rtwintro/Amplifier')

The code generator produces code files in the Amplifier_grt_rtw and slprj/grt/_sharedutils folders.

In your current working folder, the build process creates an executable file (Amplifier.exe).

To export function calls to external application code, build an executable file from a function-call subsystem.

rtwdemo_exporting_functions
set_param('rtwdemo_exporting_functions','GenCodeOnly','off');
slbuild('rtwdemo_exporting_functions/rtwdemo_subsystem','Mode','ExportFunctionCalls')

The executable file rtwdemo_subsystem.exe appears in your working folder.

From a function-call subsystem, create a SIL block that you can use to test the code generated from a model.

Open subsystem rtwdemo_subsystem in model rtwdemo_exporting_functions and set the Create block configuration parameter to SIL.

Create the SIL block.

mysilblockhandle = slbuild('rtwdemo_exporting_functions/rtwdemo_subsystem',...
'Mode','ExportFunctionCalls')

The code generator produces a SIL block for the generated subsystem code. You can add the block to an environment or test harness model that supplies test vectors or stimulus input. You can then run simulations that perform SIL tests and verify that the generated code in the SIL block produces the same result as the original subsystem.

Input Arguments

collapse all

If you specify the model name as a handle or character vector, the build process creates a standalone executable file or model reference target.

If you specify multiple models through a cell array of handles or character vectors, the build process applies buildSpec to each model in the cell array.

Example: gcs

Name of subsystem from which you want to generate code or build an executable file, specified as a handle or character vector representing the subsystem name or the full block path.

You can specify multiple subsystems through a cell array of handles or character vectors

Example: 'rtwdemo_exporting_functions/rtwdemo_subsystem'

buildSpec directs the code generator to perform the selected build action for the model and the build process:

  • Honors the setting of the Rebuild parameter on the Model Referencing pane of the Configuration Parameters dialog box.

  • Requires a Simulink Coder license only if you build a model reference Simulink Coder target, not if you build a model reference simulation target only.

The buildSpec argument must be one of the following.

buildSpecBuild Action

'StandaloneCoderTarget'

Builds a standalone Simulink Coder binary executable file for the specified model, using the current model configuration settings. It also builds model reference coder targets for the referenced models.

If the specified model is not loaded, slbuild loads it before initiating the build process.

'ModelReferenceSimTarget'

Builds a model reference simulation target (does not require a Simulink Coder license).

'ModelReferenceCoderTarget'

Builds a model reference Simulink Coder target and the corresponding model reference simulation target.

'ModelReferenceCoderTargetOnly'

Builds only a model reference Simulink Coder target.

'CleanTopModel'

Cleans the model build area enough to trigger regeneration of the top model code at the next build.

Example: 'ModelReferenceSimTarget'

Name-Value Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: 'UpdateThisModelReferenceTarget','Force'

Conditional rebuild option for the model reference build, specified as the comma-separated pair consisting of 'UpdateThisModelReferenceTarget' and 'Force', 'IfOutOfDateOrStructuralChange', or 'IfOutOfDate'.

This option applies only to the specified model, not to any models referenced by the specified model.

'UpdateThisModelReferenceTarget' ValueEquivalent Rebuild OptionRebuild Action

'Force'

Always

Unconditionally rebuilds the model.

'IfOutOfDateOrStructuralChange'

If any changes detected

Rebuilds the model if the build process detects any changes.

'IfOutOfDate'

If any changes in known dependencies detected

Rebuilds the model if the build process detects any changes in known dependencies of this model.

For more information on the different rebuild options, see Rebuild.

Example: 'UpdateThisModelReferenceTarget','Force'

Dependencies

To use this option, set buildSpec to 'ModelReferenceSimTarget', 'ModelReferenceCoderTarget', or 'ModelReferenceCoderTargetOnly'.

Data Types: char | string

Option to force the top model of the model hierarchy to build, specified as the comma-separated pair consisting of 'ForceTopModelBuild' and true or false.

Setting the value to true directs the code generator to generate code and build an executable file for the top model of the model hierarchy, regardless of model checksums and parameter settings.

Example: 'ForceTopModelBuild',true

Dependencies

To use this option, set buildSpec to 'StandaloneCoderTarget'.

Data Types: logical

If you do not specify a value, the Generate code only (GenCodeOnly) option on the Code Generation pane controls build process behavior.

If you specify a value, the argument overrides the Generate code only (GenCodeOnly) option on the Code Generation pane:

  • true –– Generate code only.

  • false –– Generate code and build executable file.

  • 'ExportFunctionCalls' –– If you have Embedded Coder, generates code from subsystem that includes function calls that you can export to external application code.

  • 'Normal' –– Does not export function calls.

Name the exported function for the specified subsystem.

Example: slbuild(subsystem,'Mode','ExportFunctionCalls','ExportFunctionFileName', fcnname)

Option to display the build information, specified as the comma-separated pair consisting of 'OpenBuildStatusAutomatically' and true or false.

To display build information in the Build Status window, specify true. The default is false. For more information about using the status window, see Monitor Parallel Building of Referenced Models (Simulink Coder).

The Build Status window supports parallel builds of referenced model hierarchies. Do not use the Build Status window for serial builds.

Dependencies

To use this option, set buildSpec to 'StandaloneCoderTarget'.

Data Types: logical

Specify whether to generate obfuscated C code:

  • true –– Generate obfuscated C code that you can share with third parties with reduced likelihood of compromising intellectual property.

  • false –– Generated C code is not obfuscated.

Option to build model reference simulation targets, specified as the comma-separated pair consisting of 'IncludeModelReferenceSimulationTargets' and true or false.

Dependencies

To use this option, set buildSpec to 'StandaloneCoderTarget'.

Data Types: logical

Output Arguments

collapse all

Block handle to an autogenerated S-Function wrapper block.

Compatibility Considerations

expand all

Behavior changed in R2020b

Not recommended starting in R2019a

Extended Capabilities

Introduced before R2006a