Я использую скрипт xtclsh для управления синтезом изображения FPGA с помощью цепочки инструментов Xilinx ISE. Скрипт основан на стоковой.
Одним из конкретных аспектов этого является восстановление файлов HDL IP ядра. Код для этого выглядит следующим образом:
if { ! [ file exists "ipcore_dir/ClockMan25.v" ] } {
puts "$myScript: Regenerating ClockMan25"
file mkdir ipcore_dir
cd ipcore_dir
run_cg_regen "ClockMan25" xc6slx9-2tqg144 VERILOG CURRENT
cd ..
}
xfile add "ipcore_dir/ClockMan25.xco"
Это хорошо, если файл конфигурации ядра IP ClockMan25.xco
уже находится в каталоге ipcore_dir
. Однако я хотел бы изменить это так, чтобы исходный файл ClockMan25.xco
находился в другом каталоге, но выходные артефакты все равно заканчивались бы на ipcore_dir
.
Я пробовал три вещи:
Просто переместите файл .xco
в другое место:
xfile add "src-hdl/ClockMan25.xco"
Это приводит к сообщению об ошибке, предлагающем разрешение имени ядра IP. ClockMan25
терпит неудачу:
CHIP8.tcl: Regenerating ClockMan25
ERROR:sim:709 - Unable to migrate project from 'ipcore_dir/ClockMan25.xco'.
File does not exist.
Итак, давайте попробуем обратиться к компоненту с каталогом:
run_cg_regen "../src-hdl/ClockMan25" xc6slx9-2tqg144 VERILOG CURRENT
Скорее всего, это не получится, потому что это не имя файла, а имя компонента, которое должно быть передано run_cg_regen
:
CHIP8.tcl: Regenerating ClockMan25
ERROR:sim:737 - Unable to setup project from file 'src-hdl/ClockMan25.xco'
Details: 'Invalid identifier xilinx.com:projects:../src-hdl/ClockMan25:1.0'.
Копирование файла .xco
в ipcore_dir
перед запуском run_cg_regen
:
if { ! [ file exists "ipcore_dir/ClockMan25.v" ] } {
puts "$myScript: Regenerating ClockMan25"
file mkdir ipcore_dir
cd ipcore_dir
file copy "../src-hdl/ClockMan25.xco" "."
run_cg_regen "ClockMan25" xc6slx9-2tqg144 VERILOG CURRENT
cd ..
}
Это все еще не работает, потому что теперь сгенерированный файл Verilog находится в ipcore_dir/ClockMan25.v
(это то, что я хотел бы), но затем последующие шаги сборки не ищут его там:
Running 'Implement Design'
ERROR:The required file src-hdl/ClockMan25_synth.v for the IP core ClockMan25.xco
was not found in the project directory. You should either regenerate the IP core
or copy the required file into the project directory before continuing.