问题描述
我经常收到错误消息
警告:[RTGEN 206-101]端口'xy'没有扇入或扇出,并且处于悬空状态。请使用C模拟,以确保可以读取或写入此函数参数。
C模拟和综合通过。有时端口悬空的一般原因是什么?我该如何调试?解决这些问题重要吗?
解决方法
如果某些端口(即函数参数)从不在您的 C/C++ 代码中使用,则通常会出现该警告。可能会发生编译器/Vivado HLS 只是优化掉从未访问过参数/端口或从未到达的部分代码。
最后一个条件实际上可能有助于找到有缺陷的算法。例如:if-else
语句只能在始终执行的一个分支中解析,从而忽略在另一个分支中处理的参数(因此会生成悬空端口)。
一般来说,警告会导致生成的 RTL 仍然具有定义的端口,但只是让它们与任何东西断开连接。 它们在后期生成步骤中通常不是问题,因为它们可能会被进一步优化并移除(在合成或优化期间,在生成比特流之前)。