Action
Overview
This operator performs an Action when it is either called by an ACTIONSEQUENCE action of another object, or triggered by another Action operator that is connected at one of its inputs.This operator does not do mathematical calculations.
Operator ports
Input action: Specific sample type, see below.Input action: Specific sample type, see below.
Output action: Action sequence blobs
Properties
Find more information about changing properties here: "Properties Viewer"Action
type: Select from the listSelect the code of the Action that is performed when this action operator is pulsed.
Select one of those presets:
Value
type: See descriptionFill in a parameter value, if one is needed for the Action or to set a value in Address.
Address
type: Address, starts with '$' sign (see "Address - how to address objects and variable parameters")Fill in the address of the object that should receive the Action.
You may type or paste the address, or you may press the small button on the right to open the Address Constructor ("Address Constructor")
Caption
type: Word or phraseThe name of the object in the project. This name must not contain '.', '$' nor '@' characters.
For more information about the rules and usage of the Caption property, please refer to "Caption property - background and usage".
Documentation
type: See descriptionOptional documentation of this object. If this object is an operator, the Documentation text is displayed below the operator symbol.
Variable Parameters
Find more information about Variable Parameters here: "Variable Parameters"Value
type: See descriptionFill in a parameter value, if one is needed for the Action or to set a value in Address.
Address
type: Address, starts with '$' sign (see "Address - how to address objects and variable parameters")Fill in the address of the object that should receive the Action.
You may type or paste the address, or you may press the small button on the right to open the Address Constructor ("Address Constructor")
Note that if you let another object write an address into this variable, that you have to use two '$' characters, or '$$'.
For example: you want to change the Address of $Design.Action 1. You will do that using another Action operator with the following settings: Action=SET_PARAMETER, Address=$Design.Action 1.Address, Value=$$New Address.
If you would write only one '$', then Polybench will replace the address text with the contents of that address, which is probably 'xxxxxx'.
Note that if you let another object write an address into this variable, that you have to use two '$' characters, or '$$'.
For example: you want to change the Address of $Design.Action 1. You will do that using another Action operator with the following settings: Action=SET_PARAMETER, Address=$Design.Action 1.Address, Value=$$New Address.
If you would write only one '$', then Polybench will replace the address text with the contents of that address, which is probably 'xxxxxx'.
Blocked
type: See descriptionIndicates if this Action operator is currently blocked. 1 means blocked, 0 means the action and all subsequent actions are executed.
Skipped
type: See descriptionIndicates if this Action operator is currently skipped. 1 means skipped, 0 means the action is executed.
Functions
Find more information about Functions here: "Operator Functions"Block
Blocks the action sequence once from here, including this Action operator. The next action sequence call the blockade is removed again.Skip
Skips this Action operator once. The next action sequence call, this Action operator is used again
Details
The next figure shows an example of two action sequences on the page 'Design'. An action that would call the second action sequence would have the following settings:Action = ACTIONSEQUENCE
Value = (empty)
Address = $Design.Init Sequence
Blocking the Action operator
If this Action operator is blocked, then this operator and all Action operator that are connected to the output of this operator will not be executed. You can use this feature to change the program sequence.If the Blocked variable parameter is set to 1, then this action operator is blocked and stays blocked until the Blocked value is set to 0.
If the Block function has been called, then the next time this Action operator is triggered in an action sequence, it is blocked. For the subsequent call to the action sequence, the blockade is released, and this action operator and all that follow will be executed again. So, this is a one-time blocking function.
Note that the Block variable parameter is not changed if the Block function is called!
Skipping the Action operator
If this Action operator is skipped, then this operator is skipped, but all Action operator that are connected to the output of this operator will be executed. You can use this feature to temporarily leave out certain actions in an action sequence.If the Skipped variable parameter is set to 1, then this action operator is skipped and stays skipped until the Skipped value is set to 0.
If the Skip function has been called, then the next time this Action operator is triggered in an action sequence, it is skipped. For the subsequent call to the action sequence, the skipping is released again, and this action operator will be executed again. So, this is a one-time skipping function.
Note that the Skip variable parameter is not changed if the Skip function is called!
Also note that blocking wins over skipping, so if an Action operator is set to both blocked and skipped, then it will be blocked.
Merging action sequences
There are two ways action sequences can be merged to one action operator. The most common method is by using the lower input of the Action operator or the Action Sequence Start operator, as is shown in the next image.The other method is by using the Channel Merger. Normally the Channel Merger merges different sample streams in a way that all signal channels are put together in a new channel bus. In the case of action sequences, the output of the Channel Merger will not have multiple channels, but always one, because there is not something like parallel actions. As shown in the next image, the actions are merged over time and the result is equal to as shown in the above image.
Please note that using the Channel Merger in this fashion was NOT possible in Polybench 1.30 and earlier!
Examples
Example: Action Sequence Demo
Simple demonstration of the Action operator. Multiple Action operators are connected in a sequence. If you now perform a ACTIONSEQUENCE action and choose one of the Action operators as start action, then all actions that follow the Action operator that is addressed are executed.Examples\DF0600013_001_Action_Sequence_Demo.xmc
Example: Action operator Block function Demo
Demonstrates the Block function of the Action operator. Using the Block function, selectively branches in a tree of actions can be blocked. Note that the blockade is removed after the next action sequence call.Examples\DF0600013_002_Action_Sequence_Block_Demo.xmc
Example: Action operator Skip function Demo
Demonstrates the Skip function of the Action operator. The Skip function is used to selectively skip one Action operator in an action sequence. Note that the action is skipped only once, the next action sequence call the action is performed again.Examples\DF0600013_003_Action_Sequence_Skip_Demo.xmc
Example: Action Sequence Calling Order Demo
Demonstrates the order in which Actions are performed in action sequences. There are two kinds of actions: ones that are performed synchronously with the data processing, and ones that are performed asynchronously. In the latter case, you never know exactly when the action is performed. For example SHOWPAGE, which is called in both shown sequences. Note that they are both called at the end, allthough the sequence from Action 11 is called earlier than actions 3 and 4.Examples\DF0600013_004_Action Sequence_Calling_Order_Demo.xmc