以前の VHDL では、データ型およびサブタイプをデータ型の宣言部で完全に制約する必要がありました。VHDL-2008 では、これらを制約せずにおくことができ、制約はそのデータ型のオブジェクトで実行されます。これにより、データ型およびサブタイプの用途が広くなります。次に例を示します。
subtype my_type is std_logic_vector;
signal my_reg1 : my_type (3 downto 0);
signal my_reg2 : my_type (4 downto 0);
以前のバージョンの VHDL では、上記の例を記述するのに 2 つのサブタイプが必要でした。VHDL-2008 では、、これを 1 つのサブタイプで記述できます。これは、次の例に示すように配列に対しても可能です。
type my_type is array (natural range <>) of std_logic_vector;
signal : mytype(1 downto 0)(9 downto 0);