| 
              
               
                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.
 
               
               
               
              
           |