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循環區分開,不再衝突。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章