====== Resolution function ======
===== Definition =====
A resolution function determines a signal`s value if this signal receives assignments from more than one source at a time. This is necessary if the following concurrent assignments to the **unresolved** signal Z exist.
Examples:
Z <= A;
Z <= B;
If there is no resolution function for Z it is not clear which value Z receives if A='0' and B='1'. In the [[.:Signal declarations|signal declaration]] signal and resolution function are linked. It is also possible to declare a [[.:Subtype declarations|subtype]] which links a type to a resolution function.
===== Example =====
A //resolution function// is declared which resolves multiple signal assignments according to the principle of the //wired_or// .
The constant //floatvalue// is declared as //Bit// and initialized with '0'. If there is no source driving a signal ( //inputs//' //length// =0) the value of //floatvalue// , i.e. '0' is transferred
If one of the inputs drives a '1' the value `1` and otherwise the value `0` is transferred.
FUNCTION wired_or ( inputs : Bit_vector )
RETURN Bit IS
CONSTANT floatvalue : Bit := '0' ;
BEGIN
IF inputs'Length = 0 THEN
RETURN floatvalue ;
ELSE
FOR i IN inputs'Range LOOP
IF inputs(i) = '1' THEN
RETURN '1' ;
END IF ;
END LOOP ;
RETURN '0' ;
END IF ;
END ;