侵权投诉

Vivado IDE全面了解XDC文件的约束顺序

39度创意研究所 2020-11-13 10:53 次阅读

由于XDC约束是按顺序应用的,并且基于明确的优先级规则进行优先级排序,因此必须仔细检查约束的顺序。

如果多个物理约束发生冲突,则最新约束将获胜。 例如,如果通过多个XDC文件为I / O端口分配了不同的位置(LOC),则分配给该端口的最新位置优先。

Vivado IDE可全面了解您的设计。 要逐步验证您的约束:
1.运行相应的报告命令。
2.查看Tcl控制台或“消息”窗口中的消息。

推荐的约束顺序

建议:无论是为设计使用一个还是多个XDC文件,都按以下顺序组织约束。

## Timing Assertions Section
# Primary clocks
# Virtual clocks
# Generated clocks
# Clock Groups
# Bus Skew constraints
# Input and output delay constraints

## Timing Exceptions Section
# False Paths
# Max Delay / Min Delay
# Multicycle Paths
# Case Analysis
# Disable Timing

## Physical Constraints Section
# located anywhere in the file, preferably before or after the timing constraints
# or stored in a separate constraint file

时钟定义开始。 必须先创建时钟,然后才能将它们用于任何后续约束。 声明之前对时钟的任何引用都会导致错误,并忽略相应的约束。 在单个约束文件中以及设计中的所有XDC文件(或Tcl脚本)中都是如此。

约束文件的顺序很重要。 您必须确保每个文件中的约束不依赖于另一个文件的约束。 如果是这种情况,则必须最后读取包含约束依赖项的文件。 如果两个约束文件具有相互依赖关系,则必须将它们手动合并到一个包含正确序列的文件中,或者将文件分成几个单独的文件并正确排序。

编辑约束顺序

Vivado IDE约束管理器将任何已编辑的约束保存回XDC文件中的原始位置,但不会保存在Tcl脚本中。 任何新约束都保存在标记为目标的XDC文件的末尾。 在许多情况下,当约束集包含多个XDC文件时,目标约束文件不是列表中的最后一个文件,并且在打开或重新加载设计时不会最后加载。 因此,保存在磁盘上的约束序列可能与之前在内存中的约束序列不同。

重要信息:您必须验证存储在约束文件中的最终序列是否仍按预期工作。 如果必须修改序列,则必须通过直接编辑约束文件来修改它。 这对时序约束尤为重要。

约束文件顺序

在没有任何IP的项目流程中,所有约束都位于约束集中。 默认情况下,Vivado IDE中显示的XDC文件(或Tcl脚本)的顺序定义了将elaborated design或synthesized design加载到内存时工具使用的读取顺序。 首先读取列表顶部的文件,最后读取底部的文件。 您只需在IDE中选择文件并将其移动到列表中的所需位置即可更改顺序。

例如,在图1中,使用拖放操作将文件wave_gen_pin.xdc移动到文件wave_gen_timing.xdc之前。

Figure 1: Changing XDC File Order in the Vivado IDE Example

The equivalent Tcl command is:
reorder_files -fileset constrs_1 -before [get_files wave_gen_timing.xdc] [get_files wave_gen_pins.xdc]

在非项目模式下,read_xdc调用的顺序决定了约束文件的计算顺序。

Constraint Files Order with IP Cores

许多IP内核随附一个或多个XDC文件。 在RTL项目中生成此类IP内核时,还会在各种设计编译步骤中使用其XDC文件。

例如,图2显示项目中的一个IP核带有一个XDC文件。

Figure 2: XDC Files in the IP Sources

默认情况下,在用户XDC文件之前读入IP XDC文件。 以这种方式处理它允许IP创建可在XDC中引用的时钟对象。 它还允许您覆盖由IP内核设置的物理约束,因为在IP之后评估用户约束。 对于依赖于由用户或其他IP创建的时钟对象的IP核,此顺序有一个例外(例如,get_clocks -of_objects [get_ports clka])。 在这种情况下,在用户文件之后读取IP XDC。

此行为由PROCESSING_ORDER属性控制,为每个XDC文件设置:
•EARLY:必须先读取的文件
•NORMAL:默认
•LATE:必须最后读取的文件

IP XDC将其PROCESSING_ORDER属性设置为EARLY或LATE。 没有哪个IP提供属于NORMAL约束组的XDC文件。 对于属于同 一PROCESSING_ORDER组的用户XDC(或Tcl)文件,Vivado IDE中显示的相对顺序决定了它们的读取顺序。 可以通过移动Vivado IDE约束集中的文件或使用reorder_files命令来修改组中的顺序。

对于属于同一PROCESSING_ORDER组的IP XDC文件,顺序由IP内核的导入或创建顺序确定。 创建项目后,无法更改此顺序。

最后,用户组和IP XDC PROCESSING_ORDER组之间的相对顺序如下:
1.标记为EARLY的用户约束
2.标记为EARLY的IP约束(默认)
3.标记为NORMAL的用户约束
4.标记为LATE的IP约束(包含时钟依赖性)
5.标记为LATE的用户约束

注意:将其PROCESSING_ORDER设置为LATE(以便在用户约束后进行处理)的IP XDC文件命名为 _clocks.xdc。

下图显示了如何设置PROCESSING_ORDER属性的示例:

Figure 3: Setting the XDC File PROCESSING_ORDER Example

The equivalent Tcl command is:
set_property PROCESSING_ORDER EARLY [get_files wave_gen_pins.xdc]

建议:使用Tcl控制台中的report_compile_order -constraints命令报告由工具根据上述属性确定的XDC文件读取顺序,包括IS_ENABLED,USED_IN_SYNTHESIS和USED_IN_IMPLEMENTATION。

Changing Read Order

要在约束集中更改XDC文件或非托管Tcl脚本的读取顺序,请执行以下操作:
1. 在“源”窗口中,选择要移动的XDC文件或Tcl脚本。
2. 将文件拖放到约束集中的所需位置。

对于图1中所示的示例,等效的Tcl命令是:
reorder_files -fileset constrs_1 -before [get_files wave_gen_timing.xdc] [get_files wave_gen_pins.xdc]

在非项目模式下,read_xdc或source命令的顺序决定了约束文件的读取顺序。

如果使用带有约束的IP内核,则会自动处理两组约束,如下所示:
•不依赖于时钟的约束被分组到XDC文件中,PROCESSING_ORDER设置为EARLY,
•依赖于时钟的约束在PROCESSING_ORDER设置为LATE的XDC文件中分组。

默认情况下,用户XDC文件属于PROCESSING_ORDER NORMAL组。 它们在EARLY XDC文件之后和LATE XDC文件之前加载。 对于每个PROCESSING_ORDER组,IP XDC文件的加载顺序与IP Sources窗口中IP核的列表顺序相同。 例如,下图显示了XDC文件附带的项目IP内核之一。

Figure 4: XDC Files in the IP Sources

打开设计时,日志文件显示最后加载了IP XDC文件:

Parsing XDC File

[C:/project_wave_gen_hdl.srcs/sources_1/ip/clk_core/clk_core.xdc] for cell 'clk_gen_i0/clk_core_i0/inst'
Finished Parsing XDC File
[C:/project_wave_gen_hdl.srcs/sources_1/ip/clk_core/clk_core.xdc] for cell 'clk_gen_i0/clk_core_i0/inst'
Parsing XDC File
[C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/char_fifo/char_fifo.xdc] for cell 'char_fifo_i0/U0'
Finished Parsing XDC File
[C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/char_fifo/char_fifo.xdc] for cell 'char_fifo_i0/U0'
Parsing XDC File
[C:/project_wave_gen_hdl.srcs/constrs_1/imports/verilog/wave_gen_timing.xdc]
Finished Parsing XDC File
[C:/project_wave_gen_hdl.srcs/constrs_1/imports/verilog/wave_gen_timing.xdc]
Parsing XDC File
[C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/char_fifo/char_fifo_clocks.xdc ] for cell 'char_fifo_i0/U0'
Finished Parsing XDC File
[C:/project_wave_gen_hdl.srcs/sources_1/ip/char_fifo/char_fifo/char_fifo_clocks.xdc ] for cell 'char_fifo_i0/U0'
Completed Processing XDC Constraints

与用户XDC文件不同,您无法直接更改属于同一PROCESSING_ORDER组的IP XDC文件的读取顺序。 如果必须修改订单,请执行以下操作:
1. 禁用相应的IP XDC文件(IS_ENABLED设置为false)。
2. 复制他们的内容。
3. 将内容粘贴到约束集中包含的一个XDC文件中。
4. 在需要的地方使用完整的分层网表对象路径名更新复制的IP XDC命令。 这样做是必需的,因为IP XDC约束以这样的方式编写,即它们可以作用于IP实例。
5. 查看以特殊方式处理范围约束的get_ports查询。

编辑:hfy


收藏 人收藏
分享:

评论

相关推荐

Vivado中运行时出现visual c++运行错误该如何解决

Vivado中运行时出现visual c++运行错误的解决办法Win10系统中运行Vivado一直好....
的头像 OpenFPGA 发表于 10-21 14:56 90次 阅读
Vivado中运行时出现visual c++运行错误该如何解决

VIVADO中时序报告中WNS、WHS、TNS、THS有什么含义

VIVADO中时序报告中WNS,WHS,TNS,THS含义运行“report_timing”或“re....
的头像 OpenFPGA 发表于 10-21 14:32 159次 阅读
VIVADO中时序报告中WNS、WHS、TNS、THS有什么含义

为什么vivado2016调用MIG ip核会收到严重警告呢

为什么vivado2016调用MIG ip核会收到严重警告呢?这个critical warning会有影响吗,要怎么解决呢?...
发表于 10-18 09:41 0次 阅读

Vivado中XDC文件的约束顺序

很对人在使用Vivado时喜欢使用多个约束文件对整个工程进行约束,同时Vivado允许设计者使用一个....
的头像 OpenFPGA 发表于 10-13 16:56 1086次 阅读

Vivado设计套件有何作用

Vivado设计套件有何作用? Verilog HDL是什么? STM32按内核架构分为哪些? ...
发表于 10-11 07:22 0次 阅读

使用Vivado License Manager时Vivado的错误信息

Vivado License Manager在使用Vivado License Manager时,如....
的头像 FPGA交流平台 发表于 09-12 15:15 527次 阅读

verilog语言如何给一个数组赋值呢,新手求助,感谢各位大佬!

给定一组数据,比如1024个8位数据,需要在后续调用,因此希望定义一个位宽为8,个数1024的数组,但是因为实际需求不能用$readmem...
发表于 09-09 18:22 1170次 阅读

Vivado调用Questa Sim或ModelSim仿真小技巧

Vivado调用Questa Sim或ModelSim仿真中存在的一些自动化问题的解决方案。 Viv....
的头像 FPGA之家 发表于 09-02 10:12 492次 阅读
Vivado调用Questa Sim或ModelSim仿真小技巧

如何追溯同一时钟域内partial false path的来源

随着设计复杂度和调用IP丰富度的增加,在调试时序约束的过程中,用户常常会对除了自己设定的约束外所涉及....
的头像 算法与数据结构 发表于 08-23 11:31 2019次 阅读
如何追溯同一时钟域内partial false path的来源

小鸟科技借助Xilinx Kintex® FPGA打造高性价比4K60无损分布式解决方案

赛灵思FPGA平台出色的性能和简洁易用的 Vivado™开发工具,助力小鸟科技将业界领先的专业音视频....
发表于 08-20 14:22 754次 阅读
小鸟科技借助Xilinx Kintex® FPGA打造高性价比4K60无损分布式解决方案

在Vitis中把Settings信息传递到底层的Vivado

本篇文章来自赛灵思高级工具产品应用工程师 Hong Han. 本篇博文将继续介绍在Vitis中把Se....
的头像 算法与数据结构 发表于 08-13 14:35 2025次 阅读

基本的时序约束和STA操作流程

一、前言 无论是FPGA应用开发还是数字IC设计,时序约束和静态时序分析(STA)都是十分重要的设计....
的头像 麻辣软硬件 发表于 08-10 09:33 724次 阅读
基本的时序约束和STA操作流程

vivado点击xsetup.exe没有反应如何解决

1、vivado点击xsetup.exe没有反应 原因1:vivado安装文件存放路径过长 解决方法....
的头像 麻辣软硬件 发表于 08-09 18:11 831次 阅读

在Vivado中Block Design如何改名称?

在一个Demo中找到一个工程叫petalinux_sd,我将它另存为My_Work,可是其中的Block Design仍然叫petalinux_sd,其顶层文件仍...
发表于 08-06 16:04 101次 阅读

Vivado中综合,实现,编程和调试工程可能会出现的问题及解决方案

Xilinx公司的IDE(集成开发环境) Vivado用处广泛,学会使用Vivado对FPGA的学习至关重要,这里以PRX100-D开发板为例...
发表于 07-31 09:09 1010次 阅读

vivado有哪几种常用IP核?如何去调用它们

vivado三种常用IP核的调用当前使用版本为vivado 2018.3vivado的IP核,IP核(IP Core):Vivado中有很多IP核可以直接...
发表于 07-29 06:07 101次 阅读

教大家在Vivado中FFT IP调配置及应用

01 FFT简介 快速傅里叶变换 (Fast Fourier Transform,FFT), 即利用....
的头像 FPGA之家 发表于 07-23 14:29 451次 阅读
教大家在Vivado中FFT IP调配置及应用

Vivado HLS实现OpenCV图像处理的设计流程与分析

本文通过对OpenCV中图像类型和函数处理方法的介绍,通过设计实例描述在vivadoHLS中调用OpenCV库函数实现图像处理的几个...
发表于 07-08 08:30 2222次 阅读

vivado高层次综合HLS定义及挑战

HLS高阶综合(highlevelsynthesis)在被广泛使用之前,作为商业技术其实已经存在了20多年。设计团队对于这项技术可以说呈现出两...
发表于 07-06 08:00 2121次 阅读

STM32是什么?按内核架构可分为哪几种产品?

Vivado是什么? Verilog HDL是什么? STM32是什么?按内核架构可分为哪几种产品? ...
发表于 07-05 06:13 0次 阅读

为什么不用2017.4或者2018.3呢?最稳定的vivado版本是哪一种?

很多开发人员都经历过使用不稳定开发环境导致奇怪问题的经历,为了避免大家重走冤枉路,集众多开发工程师智慧,寻找最稳定的viva...
发表于 06-24 09:31 303次 阅读

浅析Vivado在非工程模式下的FPGA设计流程

参考:UG892 UG835 Vivado集成开发工具为设计者提供了非工程模式下的FPGA设计流程。....
的头像 OpenFPGA 发表于 06-19 10:52 607次 阅读
浅析Vivado在非工程模式下的FPGA设计流程

如何在Vivado下设置BITSTREAM配置信息

首先我们看一下如何在Vivado下设置BITSTREAM配置信息。这可以在综合之后进行。借助如下操作....
的头像 FPGA交流平台 发表于 06-15 14:26 699次 阅读
如何在Vivado下设置BITSTREAM配置信息

Vivado的XDC设置输出延时问题

Vivado 的XDC设置输出延时 Vivado 的XDC设置输出延时,用于输出伴随时钟和数据的,数....
的头像 电子发烧友网工程师 发表于 06-09 17:28 678次 阅读
Vivado的XDC设置输出延时问题

深度解读Vivado之Synthesis

在FPGA设计里,设计仿真完成RTL代码设计后便是交给设计套件进行综合及布局布线。在综合过程里,Vi....
的头像 FPGA之家 发表于 06-01 11:20 1175次 阅读

如何用Python实现Vivado和ModelSim仿真自动化?

芯片设计从RTL代码一直到最后流片的GDSII文件,都是文本文件,因此,掌握文本分析处理语言是集成电....
的头像 FPGA开源工作室 发表于 05-03 10:06 490次 阅读
如何用Python实现Vivado和ModelSim仿真自动化?

详细分析Verilog编写程序测试无符号数和有符号数的乘法

有符号数的计算在 Verilog 中是一个很重要的问题(也很容易会被忽视),在使用 Verilog ....
的头像 FPGA之家 发表于 05-02 10:48 878次 阅读
详细分析Verilog编写程序测试无符号数和有符号数的乘法

使用matlab产生待滤波信号并编写testbench进行仿真分析

本讲使用matlab产生待滤波信号,并编写testbench进行仿真分析,在Vivado中调用FIR....
的头像 Hx 发表于 04-27 18:18 822次 阅读
使用matlab产生待滤波信号并编写testbench进行仿真分析

解析Vivado如何调用DDS的IP进行仿真

本次使用Vivado调用DDS的IP进行仿真,并尝试多种配置方式的区别,设计单通道信号发生器(固定频....
的头像 Hx 发表于 04-27 16:33 1226次 阅读
解析Vivado如何调用DDS的IP进行仿真

浅析Vivado的IP核DDS使用方式及注意事项

vivado提供了DDS IP核可以输出正余弦波形,配置方法如下
的头像 Hx 发表于 04-27 15:52 1318次 阅读
浅析Vivado的IP核DDS使用方式及注意事项

关于Vivado三种常用IP核的调用详细解析

vivado的IP核,IP核(IP Core):Vivado中有很多IP核可以直接使用,例如数学运算....
的头像 Hx 发表于 04-27 15:45 1953次 阅读
关于Vivado三种常用IP核的调用详细解析

关于Vitis使用教程详解

首先是安装,本教程分两个主要的平台(WIN10和Ubuntu)给出安装教程和源文件。
的头像 OpenFPGA 发表于 04-26 10:02 2436次 阅读
关于Vitis使用教程详解

Vivado设计流程分析 Vivado HLS实现OpenCV的开发流程

作者:Harvest Guo来源:Xilinx DSP Specilist 本文通过对OpenCV中....
发表于 04-23 11:32 3891次 阅读
Vivado设计流程分析 Vivado HLS实现OpenCV的开发流程

关于Vivado版本升级导致的IP锁定的俩种解决办法浅析

打开旧版本的vivado工程后,会弹出如下图窗口要求用户选择(图1)。如果用户需要重新修改工程的话,....
的头像 Hx 发表于 04-21 16:20 1004次 阅读
关于Vivado版本升级导致的IP锁定的俩种解决办法浅析

如何用Xilinx官方例程和手册学习IP核的使用方法详细解析

在FPGA开发过程中不可避免的要使用到一些IP,有些IP是很复杂的,且指导手册一般是很长的英文,仅靠....
的头像 Hx 发表于 04-21 16:09 2620次 阅读
如何用Xilinx官方例程和手册学习IP核的使用方法详细解析

如果FPGA配置失败的应对措施解析

都知道FPGA的启动方式有很多种,比如JTAG、SPI,BPI,SeletMAP,Serial等等吧....
的头像 Hx 发表于 04-21 15:49 468次 阅读
如果FPGA配置失败的应对措施解析

Vivado生成、固化烧录文件

Vivado生成、固化烧录文件方法说明。
发表于 04-21 11:08 159次 阅读

详解Vivado与Modelsim关联方法及器件库编译

在vivado中设置modelsim(即第三方仿真工具)的安装路径。在vivado菜单中选择“Too....
的头像 FPGA之家 发表于 04-15 10:10 982次 阅读
详解Vivado与Modelsim关联方法及器件库编译

浅析Vivado中增量编译与设计锁定方法与验证

所谓增量实现,更严格地讲是增量布局和增量布线。它是在设计改动较小的情形下参考原始设计的布局、布线结果....
的头像 Hx 发表于 04-14 12:01 582次 阅读
浅析Vivado中增量编译与设计锁定方法与验证

Xilinx_Vivado_zynq7000入门笔记

Xilinx_Vivado_zynq7000入门笔记说明。
发表于 04-08 11:48 217次 阅读

浅谈如何在Vivado中更改自定义的Interface方法

因为 BD 中连线太多,所以想自定义下 interface 简化连线,定义好了一个 interfac....
的头像 电子发烧友网工程师 发表于 03-30 15:49 1112次 阅读
浅谈如何在Vivado中更改自定义的Interface方法

Vivado设计流程指导说明

Vivado 设计分为 Project Mode 和 Non-project Mode 两种模式,一....
发表于 03-25 14:39 149次 阅读

Vivado设计流程指导手册

Vivado 设计分为 Project Mode 和 Non-project Mode 两种模式,一....
发表于 03-22 11:39 195次 阅读
Vivado设计流程指导手册

Vivado中xilinx_BRAM IP核使用

Vivado2017.2 中BRAM版本为 Block Memory Generator Speci....
发表于 03-10 06:15 217次 阅读
Vivado中xilinx_BRAM IP核使用

【Vivado那些事】Vivado下头文件使用注意事项

并不局限于Vivado一种EDA。头文件主要使用“文件包括”处理,所谓"文件包含"处理是一个源文件可....
发表于 03-07 06:01 143次 阅读
【Vivado那些事】Vivado下头文件使用注意事项

Vivado 开发教程(四) 行为仿真

本文介绍如何在教程(三)基础上, 关联ELF输出文件并使用vivado对系统进行行为仿真。
发表于 03-01 10:25 232次 阅读
Vivado 开发教程(四) 行为仿真

【Vivado那些事】Vivado下怎么查看各子模块的资源占用?

完成Implementation后,在Vivado IDE左侧的Flow Navigator点击Op....
发表于 02-24 07:41 248次 阅读
【Vivado那些事】Vivado下怎么查看各子模块的资源占用?

正则表达式在Vivado约束文件(xdc)中的应用(转)

我在xdc文件中匹配目标的时候,在可行的情况下更倾向于使用正则表达式。本文就介绍一下我常使用的正则表....
发表于 02-23 07:21 153次 阅读
正则表达式在Vivado约束文件(xdc)中的应用(转)

Vivado生成bit流失败,怎么解决?

使用Vivado Runs基础结构时(例如,launch_runs Tcl命令),请将此命令添加到.....
发表于 02-20 06:02 527次 阅读
Vivado生成bit流失败,怎么解决?

FPGA之选择多个jobs能加快实现速度么?

在用Vivado对工程编译时,会弹出下面的对话框: 备注:虽然FPGA不能叫编译,但很多工程师为了方....
的头像 OpenFPGA 发表于 02-11 11:33 584次 阅读
FPGA之选择多个jobs能加快实现速度么?

Vivado 开发教程(一) 创建新硬件工程

本文主要介绍如何使用Vivado 开发套件创建硬件工程。
发表于 02-02 07:13 186次 阅读
Vivado 开发教程(一) 创建新硬件工程

Vivado:查看各模块资源占用情况方法

在vivado中 ,如何查看各个模块的资源占用情况呢?方法如下:
发表于 02-01 06:42 485次 阅读
Vivado:查看各模块资源占用情况方法

Vivado硬件平台更新后Vitis工程如何快捷更新

Vivado硬件平台更新后Vitis工程如何快捷更新
发表于 01-28 09:28 396次 阅读
Vivado硬件平台更新后Vitis工程如何快捷更新

Vivado中xilinx_courdic IP核(求exp指数函数)使用

由于Verilog/Vhdl没有计算exp指数函数的库函数,所以在开发过程中可利用cordic IP....
发表于 01-27 07:21 197次 阅读
Vivado中xilinx_courdic IP核(求exp指数函数)使用

Vivado 开发教程(三) 在SDK中创建应用工程

本文介绍如何导出硬件平台, 并启动SDK开发应用程序及板级支持包(BSP)。
发表于 01-25 07:29 224次 阅读
Vivado 开发教程(三) 在SDK中创建应用工程

Vivado IDDR与ODDR原语的使用

在数据的传输过程中,我们经常可以碰见双沿传输数据到FPGA,或者FPGA传输双沿数据给外部芯片,最常....
发表于 01-25 07:07 405次 阅读
Vivado IDDR与ODDR原语的使用

【Vivado那些事】如何查找官网例程及如何使用官网例程

有的时候需要查找一些官网的例程进行学习和参考,但是总感觉无从下手,今天就教大家怎么利用官网和Viva....
发表于 01-23 07:00 186次 阅读
【Vivado那些事】如何查找官网例程及如何使用官网例程

【ZYNQ Ultrascale+ MPSOC FPGA教程】第九章Vivado下按键实验

按键是FPGA设计当中最常用也是最简单的外设,本章通过按键检测实验,检测开发板的按键功能是否正常,并....
的头像 FPGA技术专栏 发表于 01-22 09:46 1139次 阅读
【ZYNQ Ultrascale+ MPSOC FPGA教程】第九章Vivado下按键实验

【ZYNQ Ultrascale+ MPSOC FPGA教程】第五章Vivado下PLL实验

PLL(phase-locked loop),即锁相环。是FPGA中的重要资源。由于一个复杂的FPG....
的头像 FPGA技术专栏 发表于 01-22 09:41 2254次 阅读
【ZYNQ Ultrascale+ MPSOC FPGA教程】第五章Vivado下PLL实验