问题描述
Vvado综合和布局布线都通过了但是无法生成bit文件,提示Combinatorial Loop Alert,错误如下图。在RTL图中可以看到LUT的输出连接到了输入上,这个就是错误的原因组合逻辑输出接输入了。在代码中我并未找到导致这种情况发生的地方,如果遇到类似的问题先检查自己的代码是不是存在组合逻辑连接出现了问题,如果没问题再考虑通过设置去解决问题。
问题解决
在错误提示中已经提示如何解决了,需要在XDC文件中添加
set_property ALLOW_COMBINATORIAL_LOOPS TRUE [get_nets <myHier/myNet>]
<myHier/myNet> 改为报错的loop
例如:示例的loop在如图中提示的位置(在错误提示中可以找到)
则在XDC文件中添加
set_property ALLOW_COMBINATORIAL_LOOPS TRUE [get_nets tsbdd_i/bdds_0/inst/U_acc/U_phasemod/OUTPHASE_reg[14]_0]
注: 有时候错误提示显示不全所有的错误位置,可以自己找到多个loop的位置统一在XDC中配置好,避免多次编译找bug浪费时间。