Versal:HDIOOBUFT和IOBUF三态时序影响

日期:2023-06-27 05:27:05 来源:面包芯语

对于 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- 该命令应仅用于为下列已寄存的缓冲器豁免 DRC 违例:此类缓冲器在三态/数据管脚之间实现 OR 门控,或者已知不受影响(即,在设计中,数据和三态控制已偏移)。运行 fixHDIOTristateBuffers 后,应自动禁止显示这些缓冲器的 DRC 违例。仅限在已知不存在问题的缓冲器上运行该过程。fixHDIOTristate 缓冲器将通过更改时序来解决此问题,应将其用于有问题场景的所有缓冲器。

fixHDIOTristateBuffers- 为没有足够数据和三态偏差的缓冲器的数据和三态信号线执行重新布线。此命令不修复在三态/数据管脚之间需要 OR 门控的已寄存的缓冲器。此过程结束时会报告时序关系。此过程结束时,应在 Tcl 中运行“report_route_status”以验证脚本确实能够成功完成信号线的重新布线。 如不执行此操作,可能导致该脚本误报所有时序路径都已满足。

timeHDIOTristateBuffers- 报告数据与三态管脚之间的时序关系。应在 fixHDIOTristateBuffers 插入必要的时序约束后运行此命令。如果该工具能够找到布线解决方案,那么应仅存在正时序裕量。

分析结果:

fixHDIOTristateBuffers 和 timeHDIOTrisateBuffers 将报告所提供的缓冲器上的时序。裕量值为正表示脚本已成功完成 Data (I) 和 Tristate 控制 (T) 的重新布线。在此场景下为了正确定时,将对数据或三态给予 1000 ns 的要求。预计将有一条信号线存在较大的偏差要求。 只要信号线均为正,就不会发生 HDIO 三态冲突。出现如下消息表示,如果 Tcl 脚本无法通过新的布线解决该问题,那么布线器就无法以充足的偏差完成设计的重新布线。

注释:在此场景中,如果报告的裕量为正值,那么即使出现该警告也没问题。

该脚本将标记 IOB 触发器对数据和三态进行寄存的情况,但不会尝试解决。这些管脚需实现与上述逻辑等效的电路更改,并对驱动 IOB 数据寄存器的输入管脚的数据和三态信号线执行 OR 逻辑。

如果 Tcl 脚本以避免出现该问题的方式成功完成数据和三态管脚的重新布线,则将需要修改设计。围绕此问题常见的修改包括:. 寄存数据和三态控制信号,对数据控制和三态控制执行 OR 逻辑,如上所述. 调整设计,使三态和数据断言偏移一个周期

如果出现该脚本无法解决此问题的罕见情况,请评估选项 1“将三态和数据切换偏移一个周期”和选项 2“对数据和三态执行逻辑 OR”,并对设计执行必要的更改。

如需进一步帮助,请联系技术支持。

文章来源:AMD Xilinx开发者社区

标签:

聚焦
科技