Vivado错误提示可能的解决方法
| 时间 | 版本 | 内容 |
|---|---|---|
| 2024/03/20 | V0 | 初版 |
Simulator
Error
A fatal run-time error was detected. Simulation cannot continue.
此错误表示仿真时间出了问题。最常见的问题就是,出现了类似always #0 clk=~clk;这样的0延时循环。
Synthesize
Critical Warning
conditional expression could not be resolved to a constant
此警告直接指向某个generate块。但是这不代表generate有错,错误往往是被generate的模块内部出了问题。
multi-driven net
此警告表示某个变量有多个驱动源。可能有如下情况:
- 一个变量在多个always块中充当左值(被赋值的)变量。这样的Verilog有问题,应该给予纠正。
- 端口的方向定义错误。比如在底层模块中定义a是input,但是顶层调用时给它接了b端口,定义是output。这样方向不匹配就会出现该问题。
- 某些IP可能就是会导致这样的问题。该链接是Vivado Forum提供的一个例子。
setting property 'IOSTANDARD' is not allowed for GT terminals
此警告表示对不允许定义电平的管脚定义了电平。这种管脚往往是开发板上已存在的特殊管脚,比如时钟。
此警告只会出现在通过xdc编写管脚约束的情况下。如果在Synthesized Design中修改管脚约束并由此生成xdc文件是不会出错的。
Implement
Error
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上,从而使得布局布线出现问题。解决方法:
- 将时钟信号换到时钟专用管脚上。参考网址。
- 强行将Error降级以完成implement。语法为
< set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets xxx_IBUF] > - (可能)通过FPGA内部的某种BUF将该信号在FPGA内部接到时钟专用网络上。没有试验过。