Итак. Что-то похожее на то, что мне нужно я получил:
Можно создать файл с расширением .qip и в нем описать все файлы проектов.
Допустим у меня есть отдельный проект, который называется "TMDS_RECEIVER".
В проект входят следующие файлы:
Код
"TMDS_RECEIVER.vhd"
"TMDS_DECODER.vhd"
"OUT_FIFO.vhd"
"KAA_RESET_BRIDGE.vhd"
"KAA_PULSE_GENERATOR.vhd"
"DDR_REG.vhd"
"LVDS_RX.vhd"
Я хочу проект "TMDS_RECEIVER" применить в проекте более высокого уровня, например в проекте "DVI_RECEIVER".
Для этого я в проекте "TMDS_RECEIVER" создал файл
TMDS_RECEIVER.qipкоторый содержит описание всех, входящих в него файлов:
Код
set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "TMDS_RECEIVER.vhd" ]
set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "TMDS_DECODER.vhd" ]
set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "OUT_FIFO.vhd" ]
set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "KAA_RESET_BRIDGE.vhd" ]
set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "KAA_PULSE_GENERATOR.vhd" ]
set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "DDR_REG.vhd" ]
set_global_assignment -library "TMDS_RECEIVER" -name VHDL_FILE [file join $::quartus(qip_path) "LVDS_RX.vhd" ]
И в проект "DVI_RECEIVER" мне достаточно просто добавить файл
TMDS_RECEIVER.qip.
Список файлов, из которых состоит проект можно посмотреть в файле .rpt, который автоматически генерируется Quartus'ом.
К примеру у меня найти его можно по пути ...\TMDS_RECEIVER\output_files\TMDS_RECEIVER.map.rpt
Из явных преимуществ - это то, что
qip файл пишется очень быстро и просто. И если, например у меня подключается несколько проектов, которые содержат файлы с одинаковыми именами, то никаких конфликтов не происходит( это основная проблема была, т.к проекты содержат большое количество повторяющихся библиотечных элементов собственной разработки).
Из недостатков - требуется на VHDL в явном виде описать,подключаемый компонент в области декларации архитектуры, поскольку direct instantiation не работает...