报告进出端口的时序 - 2023.2 简体中文

Versal 自适应 SoC 硬件、IP 和平台开发方法指南 (UG1387)

Document ID
UG1387
Release Date
2023-11-15
Version
2023.2 简体中文

无论端口是否已约束,均可使用 report_timing 命令识别设计中端口的相关时钟。定义完所有时序时钟后,即可报告进出 I/O 端口的最差路径、创建与报告的时钟相关的 I/O 延迟约束,并为进出设计的其他时钟重新运行相同的时序报告。如果发现端口与多个时钟相关,请创建对应的约束并重复此过程。

例如,din 输入端口与设计中的 clk1 时钟和 clk2 时钟相关:

report_timing -from [get_ports din] -sort_by group

此报告显示 din 端口与 clk1 相关。输入延迟约束为(同时适用于该示例中的最小和最大延迟):

set_input_delay -clock clk1 5 [get_ports din]

使用先前所用的命令重新运行时序分析,并观察发现 dinclk2 同样有关,原因在于 -sort_by group 选项,该选项针对每个端点时钟报告 N 条路径。您可添加对应的延迟约束并重新运行报告以确认 din 端口与其他时钟无关。

您还可使用“Timing Summary”(时序汇总)报告并选中 -report_unconstrained 选项来运行同样的分析。设计中仅有时钟约束的情况下,“Unconstrained Paths”(未约束的路径)部分显示结果如下:

------------------------------------------------
| Unconstrained Path Table
------------------------------------------------
Path Group   From Clock   To Clock   
----------   ----------   --------   
(none)
(none)     clk1
(none)     clk2
(none)             clk1
(none)             clk2

不含时钟名称(或者在 Vivado IDE 中显示 <NONE>)的字段表示一组路径,这组路径的起点(源时钟)或端点(目标时钟)与时钟无关联。未约束的 I/O 端口归为此类别。您可浏览报告其余部分以检索其名称。例如,在 Vivado IDE 中,通过选择“clk1 to NONE”类别的“Setup”路径,即可在“To”列中看到由 clk1 驱动的端口:

图 1. 获取未约束的输出端口的列表

在存储器中添加并应用新约束后,必须重新运行报告以确定哪些端口仍处于未约束状态。对于大多数设计来说,必须增加报告路径的数量,以确保报告中已列出所有 I/O 路径。