对于 Vivado 2022.1 和更低版本,您可使用随附的 fixHDIO.tcl 脚本来评估影响,并且可能通过布线来修复此问题。
此脚本将检查 IOBUF 或 OBUFT 的设计,并检查三态与数据之间的延迟,确认在有问题的窗口内是否发生切换。
【资料图】
如果发生了切换,此脚本将通过set_data_check 置位来取消这些信号线的布线,重新布线,并报告结果。要运行该脚本,请打开已实现的设计或 DCP。在 Tcl 控制台中,使用 source 命令找到该脚本:
找到 Tcl 脚本后,可运行多个过程来分析设计:
getHDIOTristateBuffers- 列出以 2.5 V 或 3.3 V 上电的 HDIO bank 中含三态控制的所有缓冲器,这些缓冲器可能会受到三态/数据争用问题的影响。
reportHDIOTristateBuffers- 报告以 2.5 V 或 3.3 V 上电的 HDIO bank 中含三态控制的所有缓冲器(可能受三态/数据争用问题影响),并描述用于报告这些缓冲器的原因的机制。
validateHDIOTristateBuffers- 该命令将分析设计,查看是否有足够的时序裕度能在尚未运行 fixHDIOTristateBuffers 时就避免出现争用条件。如果发生违例,则必须运行 fixHDIOTristateBuffers 来解决问题。
waiveHDIOTristateBuffers
fixHDIOTristateBuffers
timeHDIOTristateBuffers
分析结果:
fixHDIOTristateBuffers 和 timeHDIOTrisateBuffers 将报告所提供的缓冲器上的时序。裕量值为正表示脚本已成功完成 Data (I) 和 Tristate 控制 (T) 的重新布线。在此场景下为了正确定时,将对数据或三态给予 1000 ns 的要求。预计将有一条信号线存在较大的偏差要求。 只要信号线均为正,就不会发生 HDIO 三态冲突。出现如下消息表示,如果 Tcl 脚本无法通过新的布线解决该问题,那么布线器就无法以充足的偏差完成设计的重新布线。
注释:在此场景中,如果报告的裕量为正值,那么即使出现该警告也没问题。
该脚本将标记 IOB 触发器对数据和三态进行寄存的情况,但不会尝试解决。这些管脚需实现与上述逻辑等效的电路更改,并对驱动 IOB 数据寄存器的输入管脚的数据和三态信号线执行 OR 逻辑。
如果 Tcl 脚本以避免出现该问题的方式成功完成数据和三态管脚的重新布线,则将需要修改设计。围绕此问题常见的修改包括:. 寄存数据和三态控制信号,对数据控制和三态控制执行 OR 逻辑,如上所述. 调整设计,使三态和数据断言偏移一个周期
如果出现该脚本无法解决此问题的罕见情况,请评估选项 1“将三态和数据切换偏移一个周期”和选项 2“对数据和三态执行逻辑 OR”,并对设计执行必要的更改。
如需进一步帮助,请联系技术支持。
文章来源:AMD Xilinx开发者社区