Virtualized Output Ports Optimization

The virtualized output ports optimization lets you store the signal entering the root output port as a global variable. Clearing the MAT-file logging option and setting the TLC variable FullRootOutputVector to 0, both defaults for Embedded Coder®, eliminate code and data storage associated with root output ports.

Consider the model in the following block diagram. The signal exportedSig has exportedGlobal storage class.

In the default case, the output of the Gain block is written to the signal storage location, exportedSig. The code generator does not generate code or data for the Out1 block, which has become a virtual block.

/* Gain Block: <Root>/Gain */
  exportedSig = rtb_PulseGen * VirtOutPortLogOFF_P.Gain_Gain;

In cases where you enable MAT-file logging or set FullRootOutputVector = 1, the generated code represents root output ports as members of an external outputs vector.

The following code fragment was generated with MAT-file logging enabled. The output port is represented as a member of the external outputs vector VirtOutPortLogON_Y. The Gain block output value is copied to exportedSig and to the external outputs vector.

/* Gain Block: <Root>/Gain */
  exportedSig = rtb_PulseGen * VirtOutPortLogON_P.Gain_Gain;

/* Outport Block: <Root>/Out1 */
  VirtOutPortLogON_Y.Out1 = exportedSig;

Data maintenance in the external outputs vector can be significant for smaller models that perform benchmarks.

You can force root output ports to be stored in the external outputs vector (regardless of the setting of MAT-file logging) by setting the TLC variable FullRootOutputVector to 1. Add the statement

%assign FullRootOutputVector = 1

to the Embedded Coder system target file. Alternatively, you can enter the assignment from the MATLAB® command line using the set_param command, the model parameter TLCOptions, and the TLC option -a. For more information, see Specify TLC for Code Generation and Configure TLC.

For more information on how to control signal storage in generated code, see How Generated Code Stores Internal Signal, State, and Parameter Data and C Code Generation Configuration for Model Interface Elements.

Related Topics