将run_cg_regen移到与源目录不同的目标目录中

时间:2019-06-22 04:12:01

标签: build tcl xilinx-ise

我使用xtclsh脚本通过Xilinx ISE工具链来驱动FPGA映像的合成。该脚本基于一个库存。

它的一个特定方面是重新生成IP核心HDL文件。这样做的代码如下:

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.
    

0 个答案:

没有答案