====== Concurrent procedure call ====== ===== concurrent_procedure_call ===== [ label : ] [ postponed ] procedure_call ; ===== Parents ===== * entity_statement_part * architecture_statement_part * block_statement_part ===== Further definitions ===== ==== procedure_call ==== ''procedure _[[.:bnf#name]] [ ( [[.:bnf#actual_parameter_part]] ) ]'' ===== Comment ===== For any concurrent procedure call statement, there is an equivalent process statement. The equivalent process statement of a concurrent procedure call statement including the keyword **POSTPONED** is a postponed process. A concurrent procedure call within the statement-part of an **ENTITY** has to be a passive concurrent procedure call. ===== Examples ===== Procedure call without transfer parameters a_proc ; ---- Named procedure call with transfer parameters which are linked by position. lab : my_proc( sig_1, sig_2, sig_3 ) ; ---- Procedure call with transfer parameters which are linked by explicit assignment. register_proc( ck => clock, d => reg_in, q => reg_out ) ; ---- Procedure call with transfer parameters which are linked either by position or by explicit assignment. another_proc( sig_1, sig_2, q => sig_3); ---- This example shows that a concurrent procedure call is equal to a process which has a statement part which only contains the procedure call. check_timing( tplh, tphl, clk, d, q ) ; -- concurrent procedure call PROCESS -- corresponding process BEGIN check_timing( tplh, tphl, clk, d, q); WAIT ON clk, d, q ; END PROCESS ;