run_cg_regen в другой целевой каталог, чем исходный - PullRequest
0 голосов
/ 22 июня 2019

Я использую скрипт 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.

Я пробовал три вещи:

  1. Просто переместите файл .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.
    
  2. Итак, давайте попробуем обратиться к компоненту с каталогом:

    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'.
    
  3. Копирование файла .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.
    
...