Vivado错误提示可能的解决方法

时间 版本 内容
2024/03/20 V0 初版

只记录实际造成影响的报错。实际上Vivado项目编译后不可能没有Warning,很多都是不用处理的。

Simulator

Error

[Simulator 45-1] A fatal run-time error was detected. Simulation cannot continue.

此错误表示仿真时间出了问题。最常见的问题就是,出现了类似always #0 clk=~clk;这样的0延时循环。

Synthesize

Critical Warning

[Synth 8-196] conditional expression could not be resolved to a constant

此警告直接指向某个generate块。但是这不代表generate有错,错误往往是被generate的模块内部出了问题。

[Synth 8-3352] multi-driven net

此警告表示某个变量有多个驱动源。可能有如下情况:

  1. 一个变量在多个always块中充当左值(被赋值的)变量。这样的Verilog有问题,应该给予纠正。
  2. 端口的方向定义错误。比如在底层模块中定义a是input,但是顶层调用时给它接了b端口,定义是output。这样方向不匹配就会出现该问题。
  3. 某些IP可能就是会导致这样的问题[1]

[Vivado 12-1815] setting property 'IOSTANDARD' is not allowed for GT terminals

此警告表示对不允许定义电平的管脚定义了电平。这种管脚往往是开发板上已存在的特殊管脚,比如时钟。

此警告只会出现在通过xdc编写管脚约束的情况下。如果在Synthesized Design中修改管脚约束并由此生成xdc文件是不会出错的。

Implement

Error

[IP_Flow 19-3805] Failed to generate and synthesize debug IPs. error copying "xxx": no such file or directory

此错误表示创建ila即debug core时出现错误,具体不详。

以下是网上给出的几种可能原因:

  1. 路径名称过长(排除)
  2. debug网络太多,资源不够(有可能)
  3. Vivado某种bug,restore重启即可[2](不太可能,因为短时间内反复出现了)
  4. ip文件在编译过程中被动了(看看自己有没有用类似于git的同步软件)
  5. Vivado软件有问题

在我用笔记本电脑时会反复出现该问题,用其他电脑不会有问题。因此我怀疑Vivado程序有错误,于是重装软件,没有再遇到这个问题。

这很可能是因为我之前对电脑进行了磁盘合并操作,将D+E并为D,尽管Vivado装在D盘,还是受到了影响。

[chipscope 16-331] dcp file did not get generated for instname : dbg_hub

此错误表示没有生成某个ip的dcp网表文件。

可能有如下原因:

  1. IP out of context
  2. PC性能不足(尤其是内存不足),尝试重启PC或降低IP规模

[Place 30-574] Poor placement for routing between an IO pin and BUFG. If this sub optimal condition is acceptable for this design, you may use the CLOCK_DEDICATED_ROUTE constraint in the .xdc file to demote this message to a WARNING. However, the use of this override is highly discouraged. These examples can be used directly in the .xdc file to override this clock rule

此错误表示一个时钟管脚被接到了一个普通IO上,从而使得布局布线出现问题。解决方法:

  1. 将时钟信号换到时钟专用管脚上[3]

  2. 强行将Error降级为以完成implement。语法为< set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets xxx_IBUF] >

  3. 通过FPGA内部的某种BUF将该信号在FPGA内部接到时钟专用网络上。

    实际上,只要Vivado识别了这是一个时钟信号,就会用各种方式将时钟连到全局时钟网络上。所以如果时钟信号连接到了普通IO管脚上,Vivado也会通过BUFG(参看ug472)将时钟链接到全局网络上。因此是否显式地将BUFG写出来似乎没有影响,结果是一样的。
    Vivado综合给出的结构一般是:pin->IBUF->BUFG,可以手工插入以上结构,并配合dont_touch属性可以定义网络名称。get_nets对应的网络是IBUF之后、BUFG之前的网络名称。

Run

Warning

[Labtools 27-3413] Dropping logic core with cellname:'u_ila_0' at location...

此警告表示实际上ila IP核没找到,ila也就是debugcore[4]

最可能的情况就是给ila的时钟是不存在的,是一个需要条件才出现的时钟,或者是一个外部input管脚输入的时钟却没有输入。

Error

[Labtools 27-3733] Error during cs_server initialization: Failed to connect cs_server at TCP:localhost:3042 to hw_server at TCP:localhost:3121

此错误[5]出现在Open Target的时候。

首先检查JTAG连线和电源,如果没问题不应该连不上。

错误的发生原因未知,重启localhost(即PC)之后解决。

[Labtoolstcl 44-513] HW target shutdown... 尽管FPGA开发板是打开并完好连接的

此错误出现在某次修改逻辑,生成新的bit文件并尝试烧入新的bit文件时。之后每次尝试烧写都会错误,但是实际上板子并没有掉电。

原因未知,重启PC后解决。

[Labtools 27-3361] hw_server failed during internal command

该错误说明hw_server无法通过JTAG连接。根据[6]的提示,该问题很可能是来源于:debug core的时钟频率不比JTAG频率高太多。根据Vivado的建议,debug core时钟频率至少要是JTAG的2.5倍以上。

可以通过手动Connect New Target来改变JTAG频率,这是不修改逻辑情况下的最佳办法。JTAG慢一点意味着要等更长时间才能加载完成debug core波形,但这并没有什么影响。


  1. 2022.1 - Vivado_Synthesis - HBM - CRITICAL WARNING: [Synth 8-6859] multi-driven net on pin hbm_ref_clk0_0_clk_n[0] (xilinx.com) ↩︎

  2. [IP_Flow 19-3805] Failed to generate and synthesize debug IPs. (xilinx.com) ↩︎

  3. Vivado 报错:[Place 30-574] Poor placement for routing between an IO pin and BUFG.-CSDN博客 ↩︎

  4. vivado----fpga硬件调试 (五) ----找不到ila核问题及解决_xicom 50-38-CSDN博客 ↩︎

  5. [Labtools 27-3733] Error during cs_server initialization: Failed to connect cs_server at TCP:localhost:3042 to hw_server at TCP:localhost:3121. Getting this issue. How to connect target automatically. I was able to auotconnect and program before. (xilinx.com) ↩︎

  6. 【vivado】ILA调试报错 The debug hub core was not detected 以及 Data read from hw_ila [hw_ila_1] is corrupted. Unable to upload waveform. - KevinChase - 博客园 (cnblogs.com) ↩︎

posted @ 2024-03-20 16:25  白发戴花君莫笑  阅读(886)  评论(0编辑  收藏  举报