Difference between Procedure, Function and Impure Function
| Criteria | Procedure | Function | Impure Function |
|---|---|---|---|
| Purpose | Perform tasks without returning a value. | Return a value from a calculation. | Produce an unpredictable value or one that depends on external factors. |
| Arguments | Can have input and/or output arguments. | Can have input arguments only. | Can have input arguments only. |
| Return Value | Does not return a value (void). | Returns a value from a calculation. | Returns a value from a calculation. |
| Usage | Used to organize tasks or operations. | Used for calculations or data processing. | Used when the function's result depends on external factors. |
| Example | vhdl procedure SetFlag(flag: out boolean); |
vhdl function Add(a, b: integer) return integer; |
vhdl function RandomNumber return integer; |
| Synthesis | Can be synthesized if it is deterministic and synchronous. | Can be synthesized if it is deterministic and synchronous. | Not suitable for synthesis because the result is unpredictable or depends on external factors. |