Vivado HLS错误记录——IP冲突:[filemgmt 20-1741] File 'xxx.v' is used by one or more modules,but with...

1 报错类型

[filemgmt 20-1741] File ‘xxx.h’ is used by one or more modules;
[filemgmt 20-1741] File ‘xxx.v’ is used by one or more modules, but with different contents, and may lead to unpredictable result

相关的问题(都说是软件版本问题,没有给出实际的解决方法):
(1)https://www.origin.xilinx.com/support/answers/65783.html
(2)https://www.xilinx.com/support/answers/69459.html

2 解决方式

2.1问题分析

目前在做的一个项目,里面用HLS分别实现了OFDM通信系统中的加扰interleaver和星座映射constellation等多个模块并在Vivado中调用,在没加入星座映射模块时工程正常,加入constellation后综合时报错,提示加扰和星座映射同时调用了同样的模块(module),删除加扰或者星座映射中的其中之一就没问题,经过分析给出的报错和警告信息,发现两个模块在HLS中都用了两个for循环,综合成Verilog后都存在Loop_2_proc.v文件,Vivado调用时没有区分这两个不同模块下的同名文件(两者实际上也都存在Loo_1_proc,但是默认做了区分,在生成.v文件时换了不同的名字,不知道为什么Loop_2_proc区分不了)。

2.2解决方法

(1)尝试了直接更改Vivado的IP核目录下的.v文件,将名称全部换掉,发现不行,只要一综合就会恢复成没改之前的;
(2)在Vivado HLS中更改生成的.v文件之后再打包IP去Vivado调用,发现还是不行,在打包之前就会被恢复成没改之前的状态;
(3)考虑在最初的地方做约束,使得HLS综合时就能综合成指定的特殊名称的文件。观察HLS综合信息,对于下图中的两个for循环,默认为第一个for循环的名称为为Loop_1,第二个为Loop_2,综合后即为Loop_1_proc.v和Loop_2_proc.v,
在这里插入图片描述
在这里插入图片描述
考虑指定for循环的名称,在for循环之前加上标签Label:
在这里插入图片描述
综合后变为Loop_constel_1_Loops.v和Loopconstel_2_Loop_s.v等,这样就能和其他文件的for循环区分开,不再冲突。
在这里插入图片描述

发布了27 篇原创文章 · 获赞 54 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/DengFengLai123/article/details/102148299
今日推荐