У меня есть VHDL дизайн, который нужно адаптировать к различным вариантам.
Было бы неплохо иметь возможность генерировать конфигурации из make-файла. Makefile для генерации одного проекта готов и работает.
Я хочу, чтобы у разных проектов не было разных очень похожих файлов.
Единственные различия между проектами - это пара строк где-то, и одна из них включает в себя кучу vhdl-файлов (и компонентов), которые другой не нужны.
Я хочу избежать, например, двух разных VHD-файлов верхнего уровня. Вместо этого я хочу использовать условные обозначения внутри верхнего файла, чтобы включить (или нет) другие VHDL-файлы и компоненты, в зависимости от проекта.
Есть ли у вас какие-либо предложения о том, как это сделать?
Я пытался использовать внешний прекомпилятор (gcc), но не смог заставить его работать. Более того, я не хочу заставлять других разработчиков устанавливать gcc или файлы vhdl, которые нельзя использовать из среды IDE Xilinx.
Редактировать: Добавление примера
У меня есть два продукта, A и B. Я хочу использовать одни и те же файлы для обоих продуктов, с условными исключениями для некоторых компонентов для продукта B, генерацией конфигураций для различных частей HW и, конечно, для других вещей.
Я хочу сгенерировать конфиги из командной строки:
make product_A
и make product_B
.
Если я добавлю generates
в свой vhdl для включения / исключения кода в зависимости от цели, тогда xst должен знать, какая цель создается. Вопрос в том, как передать текущую цель из make-файла в xst.
В C-коде, компилируемом с помощью gcc, я бы добавил исходный код:
#if defined(product_B)
...
#elsif defined(product_A)
...
#endif
, затем установите определение в make-файле:
product_A: source.c
gcc -Dproduct_A source.c
product_B: source.c
gcc -Dproduct_B source.c