Next: System Tasks & Functions,
Main: Supported Constructs,
Previous: Compiler Directives
User-defined tasks and functions are used extensively in behavioral Verilog. They encapsulate blocks
of sequential statements and are invoked from within the module. Additionally, arguments can be passed
and exchanged through these calls. Though VHDL has equivalent procedures known as `Subprograms', they
differ from Verilog tasks and functions in the following ways:
- To execute a signal assignment in a VHDL subprogram, it is necessary for the signal to
be available in the list of interface elements of the subprogram. This is not a requirement in Verilog.
Hence, Verilog2VHDL adds signals that are driven from within a Verilog task or function as interface
elements to the corresponding VHDL subprogram.
- In VHDL, it is not possible to read a signal inside a subprogram if it is an interface
element of the subprogram of mode `OUT'. For this reason, an intermediate temporary signal is created
in the VHDL architecture.