単に配列のインスタンスを間違って宣言しているだけです。代わりに
type bit2_t is array (0 to 1) of bit;
type record0 is record
bit2 : array (0 to 1) of bit;
end record;
のあなたは、あなたが
type bit2_t is array (0 to 1) of bit;
type bit2_array_t is array (integer range <>) of bit2_t;
type record0 is record
bit2 : bit2_array_t(0 to 7); -- '7' or whatever your range needs to be
end record;
を使用するビットの2ビット配列の配列を、望んでいた場合は、これはもう少し汎用的にすることができ
type bit2_t is array (integer range <>) of bit;
type record0 is record
bit2 : bit2_t(0 to 1);
end record;
を使用する必要があります7
を定数に変更すると、bit2 : bit2_array_t(0 to BIT2_ARRAY_LENGTH-1);
のようになります。
私が知る限り、何らかの形でパラメータ化されたレコードタイプを使用したい場合は、this answerで説明されているように、パッケージジェネリックを使用してのみこれを達成できます。あなたのコードは記述されているようにパッケージを使用し、このパッケージはgeneric
パラメータに基づいて配列サイズでレコードタイプを宣言します。それぞれgeneric
の異なる値を持つパッケージをインスタンス化することにより、record
は異なる場合に異なる要素サイズを持つことができます。
パッケージジェネリックスが合成ツールで広くサポートされているとは思われません。
私はよく分かりませんが、2番目の例ではまだ 'bit2_t'型が定義されています。これは避けたいものです。 –
そうですね。ちょうど少なく書く。私たちはCでできるのと同じように。 –