The control terminals and stages perform specific operations when activated. It will be convenient if the content and the object of the operation can also be specified with activation. Arguments are used for this purpose.
Arguments are classified into:
Dummy arguments are used to predefine "what terminals and registers are to be used as relay points for the data specified for each of control terminals and tasks". The actual argument is the "specified data" itself and is described when a control terminal or stage is activated.
Example of describing arguments
Since stage data is relayed via a register, the dummy argument of a task is a register. Since control terminal data is relayed via a data terminal, the dummy argument of a control terminal is a data terminal.
For example:
1: instr_arg abc ( xyz );
2: ...
3: state st1 {
4: ...
5: abc ( lmn );
6: ...
7: }
8: ...
9: instruct abc par {
10: opq := xyz;
11: }
The first line defines the dummy argument of the control terminal "abc" as the data terminal "xyz". In the fifth line, the control terminal "abc" is activated with the actual argument "lmn". This activation sets the actual argument "lmn" into the dummy argument "xyz" and the value set in the dummy argument "xyz" during the operation of the control terminal "abc" in the 10th line is written into the register "opq".
Points of caution in using arguments
The number of dummy arguments and the number of actual arguments must be the same, and corresponding arguments must also have the same bit widths. The maximum number of arguments allowed is 13.
The dummy argument of a control terminal is defined in the module in which the control terminal is activated. For example, since a control input terminal is activated by an outside module, its dummy argument is defined either in an outside module or in the module declaration (declare ...) defining how the module is used. That is, two formats are provided for specifying the same thing. In a module, declaration applies to the relevant component class. The definition of a dummy argument in a module applies to each instance. If a dummy argument is defined in both ways, both definitions must be the same.