本文對(duì)Vivado編譯時(shí)常見(jiàn)的錯(cuò)誤或者關(guān)鍵警告做一些梳理匯總,便于日后歸納總結(jié)。
1. 普通IO引腳約束為時(shí)鐘時(shí)報(bào)錯(cuò)。
原因:Xilinx Vivado開(kāi)發(fā)環(huán)境編譯HDL時(shí),對(duì)時(shí)鐘信號(hào)設(shè)置了編譯規(guī)則,如果時(shí)鐘由于硬件設(shè)計(jì)原因分配到了普通IO上,而非_SRCC或者_(dá)MRCC專(zhuān)用時(shí)鐘管腳上時(shí),編譯器就會(huì)提示錯(cuò)誤。
措施:可在XDC引腳約束中添加一條語(yǔ)句:
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。
原因:此類(lèi)錯(cuò)誤大多是語(yǔ)法問(wèn)題,如逗號(hào),括號(hào),冒號(hào)之類(lèi)。
措施:根據(jù)錯(cuò)誤信息提示,定位到錯(cuò)誤的行數(shù),仔細(xì)查看是否存在上述問(wèn)題。
4. [Synth 8-3352] multi-driven net Q with 2nd driver pin 'GND。
原因:信號(hào)被多處驅(qū)動(dòng),在多個(gè) always 語(yǔ)句塊中被賦值。
措施:程序設(shè)計(jì)應(yīng)避免此類(lèi)情況的發(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沒(méi)有上層數(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ì)過(guò)程中出現(xiàn)了變量的重復(fù)定義。
措施:把重復(fù)定義的變量去除即可。
7. [Synth 8-1031] cnt is not declared。
原因:信號(hào)沒(méi)有被聲明,多出現(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í)常見(jiàn)的錯(cuò)誤,意思是有一些接口沒(méi)有連接。
措施:檢查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)沒(méi)有被聲明,多出在輸出信號(hào)下。
措施:信號(hào)在 always 語(yǔ)句塊中,被賦值的信號(hào)應(yīng)該添加類(lèi)型 reg。
10. [Common 17-680] Path length exceeds 260-Byte maximum allowed by Windows。
原因:文件路徑太長(zhǎng)。
措施:縮短工程路徑。
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。
原因:語(yǔ)法錯(cuò)誤。
措施:例化模塊時(shí)符號(hào)錯(cuò)誤,檢查 “.” 和 “,” 有沒(méi)有多和少,最后例化的參數(shù)后面沒(méi)有 “,”。
13. [Common 17-39] 'open_hw_target' failed due to earlier errors。
原因:無(wú)法找到下載鏈。
措施:查看下載器連接,連接是否牢固,或開(kāi)發(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è)無(wú)用的管腳約束,可能是上個(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沒(méi)有連接。
措施:error會(huì)指出出問(wèn)題cell的path,去追一下就可以了,一般來(lái)說(shuō)不用追到最底層,在前面幾級(jí)就能發(fā)現(xiàn)有些port沒(méi)連。