La définition d'un sous programme VHDL appartient à une zone déclarative ou à une bibliothèque d'objets ressources. La fonction peut être définie dans :

Dans la dernière méthode, qui est de loin la meilleure, la déclaration de la fonction (sa signature, ou l'équivalent d'un prototype du langage C) appartient à l'en-tête de paquetage (package header) tandis que la définition (le code) de la fonction appartient au corps (pacqkage body) du paquetage.