Тело пакета.
Тело пакета необходимо приводить в паре с объявлением пакета, если в последнем объявлены подпрограммы или отложенные константы. Оно имеет синтаксис:
\объявление пакета\::= package body \идентификатор\ is
{объявление в теле пакета}
end [package body][\идентификатор\];
В объявлениях тела пакета должны быть приведены полные спецификации процедур и функций, присваивания константам, которые задекларированы в объявлении этого пакета.
Ниже приведен пример пакета функций и констант, который удобно применять для сокращения работы по программированию логики с булевскими типами.
package short_boolean is
constant b0:boolean:=false;
constant b1:boolean:=true;
function b(x:bit) return boolean ;
function "not"(x:bit) return boolean ;
function "and"(x1,x2:bit) return boolean ;
function "or"(x1,x2:bit) return boolean ;
end package;
package body short_boolean is
function b(x:bit) return boolean is
begin
return x ='1';
end;
function "not"(x:bit) return boolean is
begin
return x ='0';
end;
function "and"(x1,x2:bit) return boolean is
begin
return (x1 and x2) ='1';
end;
function "or"(x1,x2:bit) return boolean is
begin
return (x1 or x2) ='1';
end;
end package body;
Теперь, если данный пакет присоединить к объекту проекта с помощью описаний library и use, то подстановка констант и функций этого пакета во многих местах, например, в операторах if , when сокращает запись программы.
Пакеты пользователя, если они соответствуют синтезируемому стилю и не содержат функции разрешения конфликтов выходов источников сигнала, обычно без труда подключаются к проекту для синтеза.