さまざまなバリアントに適応する必要がある vhdl 設計があります。メイクファイルから構成を生成できると便利です。1 つのプロジェクトを生成するためのメイクファイルが準備され、機能しています。
プロジェクトごとに非常によく似たファイルが異なることは避けたいと思います。プロジェクト間の唯一の違いは、いくつかの行がどこかにあり、そのうちの 1 つには、もう 1 つには必要のない一連の vhdl ファイル (およびコンポーネント) が含まれていることです。
たとえば、2 つの異なる最上位レベルの vhd ファイルを作成することは避けたいと考えています。代わりに、プロジェクトに応じて、他の vhdl ファイルとコンポーネントを含める (または含めない) ために、トップ ファイル内で条件を使用したいと考えています。
これを行う方法について何か提案はありますか?
外部のプリコンパイラ (gcc) を使用しようとしましたが、機能しませんでした。さらに、他の開発者に gcc のインストールを強制したり、ザイリンクス IDE 内から vhdl ファイルを使用できないようにしたりしたくありません。
編集:例の追加
A と B の 2 つの製品があります。両方の製品に同じファイルを使用し、製品 B の一部のパーツを除外する条件、異なる HW パーツの構成を生成する条件、およびその他のものを使用したいと考えています。
コマンドラインから構成を生成したい:
make product_A
、およびmake product_B
.
ターゲットに応じてコードを含めたり除外したりするためgenerates
に vhdl を挿入した場合、xst はどのターゲットがビルドされているかを知る必要があります。問題は、現在のターゲットを makefile から xst に渡す方法についてです。
gcc でコンパイルする C コードでは、ソース コードを次のように記述します。
#if defined(product_B)
...
#elsif defined(product_A)
...
#endif
、次に makefile で定義を設定します。
product_A: source.c
gcc -Dproduct_A source.c
product_B: source.c
gcc -Dproduct_B source.c