Function-Call Split

Provide junction for splitting function-call signal


Ports & Subsystems


The Function-Call Split block allows a function-call signal to be branched and connected to several function-call subsystems and models.

Several Function-Call Split blocks may be cascaded one after another to create multiple branches for a function-call signal. An advantage of the Function-Call Split block is that in some cases, using this block eliminates the need for the initiator block to create multiple function-call signals for invoking a set of function-call subsystems or models.

Function-call subsystems or models connected to the output port of the Function-Call Split block marked with a dot execute before the subsystems or models connected to the other output port. If any data dependencies between these subsystems (or between models) do not support the specified execution order, then an error occurs. This implies that an error will always occur when you create a data-dependency loop involving function-call subsystems or models connected to branches of the same function-call signal. To eliminate this error, consider turning on the Latch input for feedback signals of function-call subsystem outputs on one or more Inport blocks of the function-call subsystems (or models) involved in the loop. Setting this option to on has the effect of delaying the corresponding input signal, thereby eliminating the data-dependency loop.

In order for a model to contain Function-Call Split blocks, you must set the following diagnostic to error: Model Configuration Parameters > Diagnostics > Connectivity > Invalid function-call connection.

If you turn on the model option Format > Block Displays > Sorted Order, then the execution order of function-call subsystems connected to branches of a given function-call signal displays on the blocks . Each subsystem has an execution order of the form S:B#{C}. Here, # is a number that ranges from 0 to one less than the total number of subsystems (or models) connected to branches of a given signal. The subsystems execute in ascending order based on this number.

The Function-Call Split block supports signal label propagation.


The Function-Call Split block has these limitations:


All function-call subsystems and models connected to a given function-call signal must reside within the same nonvirtual layer of the model hierarchy.

Branched function-call subsystems (or models) and their children cannot be connected directly back to the initiator.

Function-call subsystems and models connected to branches of a function-call signal cannot have multiple (muxed) initiators.

A Function-call split block cannot have its input from a signal with multiple function-call elements.

Data Type Support

The Function-Call Split block accepts periodic and asynchronous function-call signals only.

Parameters and Dialog Box

The Function-Call Split block dialog box appears as follows:


The following model shows how to apply the Latch input for feedback signals of function-call subsystem outputs parameter to work around a data-dependency error caused by using a Function-Call Split block. By turning this parameter on in the f1 subsystem Inport block, the Function-Call Split block ignores the data dependency of signal b and thus breaks the loop of data dependencies between subsystems f1 and g1. The model thus achieves the desired behavior of consistently calling f1 to execute before g1. For a given execution step, subsystem f1 uses the g1 output computed at the previous execution step.


Data Types


Sample Time

Inherited from the block driving the function-call split

Multidimensional Signals


Variable-Size Signals


Code Generation


Introduced in R2010a

Was this topic helpful?