在时钟信号线上使用 USER_CLOCK_ROOT 属性 - 2023.2 简体中文

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

Document ID
UG1387
Release Date
2023-11-15
Version
2023.2 简体中文
USER_CLOCK_ROOT 属性可用于强制限制时钟缓冲器所驱动的时钟的时钟根位置。指定 USER_CLOCK_ROOT 属性会影响设计布局,因为它会修改时钟布线,从而影响插入延迟和偏差。USER_CLOCK_ROOT 值对应时钟区域,并且必须在高扇出时钟缓冲器所驱动的信号线段上直接设置该属性。下面给出 1 个示例:
set_property USER_CLOCK_ROOT X3Y2 [get_nets -of [get_pins clkgen/BUFG_clkout2_inst/O]]
图 1. 应用于由时钟缓冲器驱动的信号线段上的 USER_CLOCK_ROOT

完成布局后即可使用 CLOCK_ROOT 属性来查询实际时钟根,如以下示例所示。CLOCK_ROOT 会报告由用户分配的根和由 Vivado 工具自动分配的根。

get_property CLOCK_ROOT [get_nets -of [get_pins clkgen/BUFG_clkout2_inst/O]]
=> X3Y2

复查已实现的设计的时钟根分配的另一种方法是使用 report_clock_utilization Tcl 命令。例如:

report_clock_utilization -clock_roots_only

下图显示了此报告。

图 2. report_clock_utilization 时钟根分配