我有一个需要适应不同变体的 vhdl 设计。能够从 makefile 生成配置会很好。用于生成一个项目的 makefile 已准备好并可以正常工作。
我想避免为不同的项目使用不同的非常相似的文件。项目之间的唯一区别是某处的几行,其中一个包含一堆 vhdl 文件(和组件),另一个不需要。
例如,我想避免拥有两个不同的顶级 vhd 文件。相反,我想在顶层文件中使用条件来包含(或不包含)其他 vhdl 文件和组件,具体取决于项目。
你对如何做到这一点有什么建议吗?
我曾尝试使用外部预编译器(gcc),但无法使其工作。此外,我真的不想强迫其他开发人员安装 gcc,或者在 Xilinx IDE 中无法使用 vhdl 文件。
编辑:添加示例
我有两个产品,A 和 B。我想对这两个产品使用相同的文件,使用条件来排除产品 B 的某些部件,生成不同硬件部件的配置,当然还有其他东西。
我想从命令行生成配置:
make product_A
和make product_B
.
如果我generates
根据目标在我的 vhdl 中包含/排除代码,那么 xst 需要知道正在构建什么目标。问题是关于如何将当前目标从 makefile 传递给 xst。
在使用 gcc 编译的 C 代码中,我会放入源代码:
#if defined(product_B)
...
#elsif defined(product_A)
...
#endif
,然后在makefile中设置define:
product_A: source.c
gcc -Dproduct_A source.c
product_B: source.c
gcc -Dproduct_B source.c