如何用GHDL仿真带COE文件的Xilinx FIR Compiler核?
解决GHDL无法找到Xilinx FIR Compiler MIF系数文件的问题
我之前在迁移Xilinx核到GHDL仿真时也碰到过一模一样的问题——ISim能正常识别文件,但GHDL死活找不到,给你几个实用的解决思路:
1. 检查并修正Coregen生成的VHDL中的文件路径
Xilinx Coregen在生成FIR核时,有时候会把系数文件的绝对路径或者生成时的相对路径硬编码到VHDL代码里,哪怕你把MIF复制到当前运行目录也没用:
- 打开
fir_compiler_v6_3.vhd,定位到报错的第1648行附近的fn_read_mif_file函数调用 - 看看传入的文件名参数是不是类似
"D:/project/ipcore/decimator_7fold.mif"或者"../ipcore_dir/decimator_7fold.mif" - 把它改成纯文件名
"decimator_7fold.mif",保存后重新编译仿真
2. 重新配置Coregen生成核(更稳妥的方法)
如果不想手动修改生成的VHDL,可以回到Xilinx Coregen重新配置FIR核:
- 打开你的FIR Compiler工程,找到系数设置的选项
- 选择COE文件时,确保使用当前项目目录的相对路径(或者直接输入文件名,不要带上级目录)
- 重新生成VHDL核文件,这样新生成的代码里就会用正确的相对路径,GHDL运行时就能在当前目录找到MIF文件
3. 确认GHDL运行时的工作目录
GHDL读取外部文件时默认是从你执行仿真命令的当前目录查找,所以要确保:
- 你确实把
decimator_7fold.mif复制到了执行ghdl -r命令的目录下 - 如果你的仿真命令是在Makefile里执行的,要确认Makefile的工作目录和你预期一致(可以在Makefile里加
pwd命令打印当前目录验证)
4. 更新GHDL到最新版本
部分旧版本的GHDL对Xilinx Coregen生成的VHDL代码兼容性较差,尤其是文件读取逻辑。建议你更新到GHDL的最新稳定版,很多这类路径问题在新版本里已经修复了
按照上面的步骤操作后,重新执行编译和仿真命令,应该就能解决文件找不到的问题了。
内容的提问来源于stack exchange,提问作者T0eJam
相关产品推荐
相关产品推荐

