我使用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
中。
我尝试了三件事:
只需将.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.