引言:本文对Vivado编译时常见的错误或者关键警告做一些梳理汇总,便于日后归纳总结。 原因:Xilinx Vivado开发环境编译HDL时,对时钟信号设置了编译规则,如果时钟由于硬件设计原因分配到了普通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。 原因:数据位宽不对,定义数据时定义了一位位宽,实际需要16位位宽。 措施:修改位宽为16位。 3. [Synth 8-2715] syntax error near。 原因:此类错误大多是语法问题,如逗号,括号,冒号之类。 措施:根据错误信息提示,定位到错误的行数,仔细查看是否存在上述问题。 4. [Synth 8-3352] multi-driven net Q with 2nd driver pin 'GND。 原因:信号被多处驱动,在多个 always 语句块中被赋值。 措施:程序设计应避免此类情况的发生,此时应该考虑重新设计程序。 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没有上层数据的输入。 措施: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'。 原因:在程序设计过程中出现了变量的重复定义。 措施:把重复定义的变量去除即可。 7. [Synth 8-1031] cnt is not declared。 原因:信号没有被声明,多出现在中间信号。 措施:给中间信号添加声明,如 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和连接的信号位宽是否一致,不一致的话也会出现这个错误。 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。 原因:文件路径太长。 措施:缩短工程路径。 |
|