【FPGA】Xilinx Vivado时序约束——时钟约束

约束文件

Vivado目前支持的约束文件为Xilinx Design Constraints(XDC),是由SDC格式转换过来的,是一种tcl语言,主要包括时钟约束、管脚约束以及一些配置约束,最常用到的就是时钟约束以及管脚约束。vivado生成的时钟约束以及管脚约束文件都为.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
# Multicycle Paths

主要可以分为同步时钟约束以及异步时钟约束。
1.Primary clocks
Primary clocks是通过输入端口或千兆收发器输出引脚(例如,恢复时钟)进入设计的板时钟。指令为 create_clock,举例如下:create_clock -period 10 [get_ports sysclk],此处约束了一个周期10ns,管脚名称为sysclk的时钟,属于异步时钟定义指令。
2.Virtual clocks
Virtual clocks是一种在设计中没有物理连接到任何网表元素的时钟,必须在输入和输出延迟约束使用之前定义。虚拟时钟主要是用在I/O输入输出约束上,用来代表与fpga相连的外部器件的时钟。比如源同步输入时,就可以通过创建虚拟时钟进行输入最大最小延迟约束。这是一般不常使用,举例如下:create_clock -name clk_virt -period 10,定义一个名称为clk_virt,周期为10ns的虚拟时钟。
3.Generated clocks
generated clocks是指从PLL生成的时钟,或者由程序分频产生的时钟。指令为create_generated_clock ,举例如下:
create_clock -name clkin -period 10 [get_ports clkin]
create_generated_clock -name clkdiv2 -source [get_ports clkin] -divide_by 2 [get_pins REGA/Q],属于同步时钟约束,一般不常使用,容易造成过度约束。
4.Clock Groups
set_clock_groups命令禁用您识别的时钟组之间的时间分析,而不是同一组内的时钟之间的时间分析。时钟之间的两个方向上的时间被忽略。set_false_path constraint只是忽略一个方向,举例如下:set_clock_groups -name async_clk0_clk1 -asynchronous -group {clk0 usrclk itfclk} -group {clk1 gtclkrx gtclktx},约束后不再分析异步时钟之间的时序,常用于异步时钟之间的约束。
5.Bus Skew constraints
系统抖动是由电源噪声、电路板噪声或系统的任何额外抖动引起的整体抖动,使用set_system_jitter 指令可以对时钟抖动进行约束,举例如下:set_input_jitter [get_clocks -of_objects [get_ports clkin]] 0.1,约束时钟抖动范围在+/-100 ps。
6.Input and output delay constraints
set_input_delay命令指定输入端口上相对于设计接口上的时钟边缘的输入路径延迟,举例如下:

create_clock -name sysClk -period 10 [get_ports CLK0]
set_input_delay -clock sysClk 4 [get_ports DIN]
set_output_delay -clock sysClk 1 [get_ports DOUT]

在端口DIN和DOUT之间的组合路径上设置了5 ns (10 ns - 4 ns - 1 ns)的约束。
7. False Paths
设置伪路径,用于异步时钟之间的约束,约束时候只是一端路径,约束时候一般成对使用,举例如下:

set_false_path -from [get_clocks CLKA] -to [get_clocks CLKB]
set_false_path -from [get_clocks CLKB] -to [get_clocks CLKA]

定义了CLKA以及CLKB的伪路径。
9.Multicycle Paths
Multicycle Paths约束一般常用于同步时钟,最常见的例子是逻辑路径需要多个时钟周期才能使数据在端点稳定。举例如下

set_multicycle_path 2 -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]
set_multicycle_path 1 -hold -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]

C寄存器与D寄存器之间定义了一个多周期的约束。

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
手把手课堂: Xilinx FPGA设计时序约束指南 Xilinx FPGA设计时序约束指南是一份详细的技术指南,旨在帮助设计人员在Xilinx FPGA的设计过程正确地应用时序约束。该指南提供了关于时序约束的基础知识和最佳实践,并详细介绍了如何使用Xilinx工具来设置和验证时序约束。 在设计FPGA时,时序约束对于确保电路操作的正确性和可靠性至关重要。时序约束指定了电路不同信号之间的时序关系,例如时钟和数据信号之间的关系。通过正确地设置时序约束,可以确保电路在特定的时钟频率下工作正常,并且可以防止出现时序冲突和故障。 Xilinx FPGA设计时序约束指南首先介绍了时序约束的基本概念,包括时钟信号和数据路径的相关术语和特性。然后,指南详细解释了如何使用Xilinx工具(如Vivado)来设置时序约束,包括使用基于约束文件约束方法和使用基于时序推导的约束方法。通过这些方法,设计人员可以根据设计需求和时序规范准确地定义时序约束。 此外,该指南还介绍了如何验证时序约束的正确性。通过使用Xilinx工具提供的时序分析功能,设计人员可以分析和优化电路的时序性能,确保设计满足指定的时序要求。指南还提供了一系列实际的案例研究和常见问题解答,帮助设计人员更好地理解和应用时序约束。 综上所述,Xilinx FPGA设计时序约束指南是设计人员在进行FPGA设计时的重要参考资料。通过使用该指南提供的指导和实践经验,设计人员可以更好地应用时序约束,确保电路的时序性能和可靠性,提高FPGA设计的成功率和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FPGA与信号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值