本文對(duì)Vivado編譯時(shí)常見的錯(cuò)誤或者關(guān)鍵警告做一些梳理匯總,便于日后歸納總結(jié)。
1. 普通IO引腳約束為時(shí)鐘時(shí)報(bào)錯(cuò)。
原因:Xilinx Vivado開發(fā)環(huán)境編譯HDL時(shí),對(duì)時(shí)鐘信號(hào)設(shè)置了編譯規(guī)則,如果時(shí)鐘由于硬件設(shè)計(jì)原因分配到了普通IO上,而非_SRCC或者_(dá)MRCC專用時(shí)鐘管腳上時(shí),編譯器就會(huì)提示錯(cuò)誤。
措施:可在XDC引腳約束中添加一條語句:
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets adc_clk]
2. [Synth 8-1751] cannot index into non-array adc_data。
原因:數(shù)據(jù)位寬不對(duì),定義數(shù)據(jù)時(shí)定義了一位位寬,實(shí)際需要16位位寬。
措施:修改位寬為16位。
3. [Synth 8-2715] syntax error near。
原因:此類錯(cuò)誤大多是語法問題,如逗號(hào),括號(hào),冒號(hào)之類。
措施:根據(jù)錯(cuò)誤信息提示,定位到錯(cuò)誤的行數(shù),仔細(xì)查看是否存在上述問題。
4. [Synth 8-3352] multi-driven net Q with 2nd driver pin 'GND。
原因:信號(hào)被多處驅(qū)動(dòng),在多個(gè) always 語句塊中被賦值。
措施:程序設(shè)計(jì)應(yīng)避免此類情況的發(fā)生,此時(shí)應(yīng)該考慮重新設(shè)計(jì)程序。
5. [Opt 31-67] Problem: A LUT2 cell in the design is missing a connection on input pin I0, which is used by the LUT equation. This pin has either been left unconnected in the design or the connection was removed due to the trimming of unused logic. The LUT cell name is: logic_[0]_i_1
原因:某個(gè)input沒有上層數(shù)據(jù)的輸入。
措施:set_property DONT_TOUCH true [get_cells <lut1_name>]。
6. [Synth 8-3352] multi-driven net count[9] with 2nd driver pin 'cnt_reg[9]/Q'。
原因:在程序設(shè)計(jì)過程中出現(xiàn)了變量的重復(fù)定義。
措施:把重復(fù)定義的變量去除即可。
7. [Synth 8-1031] cnt is not declared。
原因:信號(hào)沒有被聲明,多出現(xiàn)在中間信號(hào)。
措施:給中間信號(hào)添加聲明,如 reg、wire。
8. The debug port ‘u_ila_0/probe4’ has 1 unconnected channels (bits). This will cause errors during implementation。
原因:使用ILA時(shí)常見的錯(cuò)誤,意思是有一些接口沒有連接。
措施:檢查ILA的例化,
1)是不是全部的probe都連到了信號(hào)上。
2)每一個(gè)probe和連接的信號(hào)位寬是否一致,不一致的話也會(huì)出現(xiàn)這個(gè)錯(cuò)誤。
9.[Synth 8-2576] procedural assignment to a non-register data is not permitted。
原因:信號(hào)沒有被聲明,多出在輸出信號(hào)下。
措施:信號(hào)在 always 語句塊中,被賦值的信號(hào)應(yīng)該添加類型 reg。
10. [Common 17-680] Path length exceeds 260-Byte maximum allowed by Windows。
原因:文件路徑太長。
措施:縮短工程路徑。
11. [Synth 8-7023] instance 'u_count' of module 'count' has 7 connections declared, but only 6 given。
原因:信號(hào)位寬多余。
措施:給與信號(hào)正確的位寬,或不管也可以,Vivado 會(huì)自動(dòng)優(yōu)化多余的位線。
12. ordered port connections cannot be mixed with named port connections。
原因:語法錯(cuò)誤。
措施:例化模塊時(shí)符號(hào)錯(cuò)誤,檢查 “.” 和 “,” 有沒有多和少,最后例化的參數(shù)后面沒有 “,”。
13. [Common 17-39] 'open_hw_target' failed due to earlier errors。
原因:無法找到下載鏈。
措施:查看下載器連接,連接是否牢固,或開發(fā)板是否上電。
14. [[DRC BIVC-1] the following port in this bank have conflicting VCCOs: sys_clk (LVCMOS18,requiring VCCO=1.800)。
原因:管腳未做約束。
措施:可以在XDC約束文件中加入時(shí)鐘約束:set_property IOSTANDARD LVCMOS33 [get_ports sys_clk] set_property PACKAGE_PIN R4 [get_ports sys_clk]。
15. [Common 17-55] 'set_property' expects at least one object。
原因:XDC約束文件中存在一個(gè)無用的管腳約束,可能是上個(gè)設(shè)計(jì)遺留或者疏忽造成。
措施:刪除該管腳約束即可。
16. [Opt 31-67] Problem: A LUT4 cell in the design is missing a connection on input pin l1, which is used by the LUT equatoin. This pin has either been left unconnected in the design or the connection was removed due to the trimming of unused。
原因:存在port沒有連接。
措施:error會(huì)指出出問題cell的path,去追一下就可以了,一般來說不用追到最底層,在前面幾級(jí)就能發(fā)現(xiàn)有些port沒連。