本文對Vivado編譯時常見的錯誤或者關鍵警告做一些梳理匯總,便于日后歸納總結。
1. 普通IO引腳約束為時鐘時報錯。
原因:Xilinx Vivado開發(fā)環(huán)境編譯HDL時,對時鐘信號設置了編譯規(guī)則,如果時鐘由于硬件設計原因分配到了普通IO上,而非_SRCC或者_MRCC專用時鐘管腳上時,編譯器就會提示錯誤。
措施:可在XDC引腳約束中添加一條語句:
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets adc_clk]
2. [Synth 8-1751] cannot index into non-array adc_data。
原因:數(shù)據(jù)位寬不對,定義數(shù)據(jù)時定義了一位位寬,實際需要16位位寬。
措施:修改位寬為16位。
3. [Synth 8-2715] syntax error near。
原因:此類錯誤大多是語法問題,如逗號,括號,冒號之類。
措施:根據(jù)錯誤信息提示,定位到錯誤的行數(shù),仔細查看是否存在上述問題。
4. [Synth 8-3352] multi-driven net Q with 2nd driver pin 'GND。
原因:信號被多處驅動,在多個 always 語句塊中被賦值。
措施:程序設計應避免此類情況的發(fā)生,此時應該考慮重新設計程序。
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
原因:某個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'。
原因:在程序設計過程中出現(xiàn)了變量的重復定義。
措施:把重復定義的變量去除即可。
7. [Synth 8-1031] cnt is not declared。
原因:信號沒有被聲明,多出現(xiàn)在中間信號。
措施:給中間信號添加聲明,如 reg、wire。
8. The debug port ‘u_ila_0/probe4’ has 1 unconnected channels (bits). This will cause errors during implementation。
原因:使用ILA時常見的錯誤,意思是有一些接口沒有連接。
措施:檢查ILA的例化,
1)是不是全部的probe都連到了信號上。
2)每一個probe和連接的信號位寬是否一致,不一致的話也會出現(xiàn)這個錯誤。
9.[Synth 8-2576] procedural assignment to a non-register data is not permitted。
原因:信號沒有被聲明,多出在輸出信號下。
措施:信號在 always 語句塊中,被賦值的信號應該添加類型 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。
原因:信號位寬多余。
措施:給與信號正確的位寬,或不管也可以,Vivado 會自動優(yōu)化多余的位線。
12. ordered port connections cannot be mixed with named port connections。
原因:語法錯誤。
措施:例化模塊時符號錯誤,檢查 “.” 和 “,” 有沒有多和少,最后例化的參數(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約束文件中加入時鐘約束: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約束文件中存在一個無用的管腳約束,可能是上個設計遺留或者疏忽造成。
措施:刪除該管腳約束即可。
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會指出出問題cell的path,去追一下就可以了,一般來說不用追到最底層,在前面幾級就能發(fā)現(xiàn)有些port沒連。