Unsigned_4
est un "type modulaire" prenant les valeurs 0, 1, .. 14, 15, et autour d'enveloppement.
U : Unsigned_4;
begin
U := Unsigned_4'Last; -- 15
U := U + 1; -- 0
Vous avez seulement besoin 4 bits pour mettre en œuvre le type, il est donc OK pour indiquer que sa taille (je pense que cela peut être simplement une spécification de confirmation, puisque le compilateur sait clairement que déjà, si vous espériez adaptez-le en 3 bits et dites for Unsigned_4'Size use 3;
le compilateur vous dirait que vous aviez tort).
La plupart des compilateurs voudront stocker les valeurs du type dans au moins un octet, pour un accès efficace. La taille minimale entre en jeu lorsque vous utilisez le type dans un enregistrement condensé (Pack pragma).