【Time6】时钟约束


Primary Clocks 主时钟

主时钟定义了整个时序分析的起点也可以说是参考点(0时刻)

vivado会忽略主时钟的上游时序,只关注主时钟的下游。

create_clock [-name clock_name] \
    -period period_value \
    [-waveform edge_list] \
    [-add] \
    [source_objects]

管脚进入的时钟

推荐把主时钟定义为顶层管脚上,未经过IBUF,这样可以把IBUF的延时也考虑进时序分析。

等占空比、无相移

• Its period is 10 ns.
• Its duty cycle is 50%.
• Its phase is not shifted.

 create_clock -period 10 [get_ports sysclk]

非等占空比、有相移

• Its period is 10 ns.
• Its duty cycle is 25%.
• It is phase shifted by 90 degrees.

create_clock -name devclk -period 10 -waveform {2.5 5} [get_ports ClkIn]

GTP恢复时钟

 create_clock -name rxclk -period 3.33 [get_pins gt0/RXOUTCLK]

差分时钟

只要约束P极。

 create_clock -name sysclk -period 3.33 [get_ports SYS_CLK_clk_p]

Virtual Clocks

虚拟时钟是不绑定物理网络节点的时钟,没有时钟源。

虚拟时钟通常用于input and output delay 约束

当两个时钟之间不是整数倍,但是有跨时钟,就会出现不符合实际的时序路径要求

create_clock -name clk_virt -period 10

Generated Clocks 生成时钟

生成时钟约束:是用来描述生成时钟主时钟的关系;

不是描述生成时钟的周期和波形,而是描述如何从主时钟得到生成时钟。

生成时钟一般来自时钟修改模块(PLL/MMCM/BUFR)或者用户逻辑代码(分频器)。

主时钟master clock:primary clock 或者 另一个generated clock

source pin:主时钟的源pin(为什么有这个?因为source pin到master clock之间有可能有延时

为了计算生成的时钟的延迟,工具跟踪生成的时钟的源引脚和主时钟的源引脚之间的顺序和组合路径。在某些情况下,可能需要只跟踪组合路径来计算生成的时钟延迟。您可以使用-combinational命令行选项来实现这一点。

分频,倍频,分频倍频组合、相移或波形反转、占空比改变和以上改变的组合.

create_generated_clock [-name clock_name] \
    -source master_pin \
    [-master_clock clock] \
    [-edge edge_list] \
    [-edge_shift shift_list] \
    [-divide_by factor] \
    [-multiply_by factor] \
    [-duty_cycle percent] \
    [-combinational]
    [-invert] \
    [-add] \
    source_objects

the master clock for this clock assignment could not be derived. ID:332087
有-master_clock,但是-source的时钟找不到;
无-master_clock,并且-source的时钟找不到;
无-master_clock,并且-source的时钟不唯一;


例子

等占空比、无相移

方法一:

create_clock -name clkin -period 10 [get_ports clkin]
# Option 1: master clock source is the primary clock source point
create_generated_clock -name clkdiv2 -source [get_ports clkin] -divide_by 2 \
[get_pins REGA/Q]
# Option 2: master clock source is the REGA clock pin
create_generated_clock -name clkdiv2 -source [get_pins REGA/C] -divide_by 2 \
[get_pins REGA/Q]

方法二:

# waveform specified with -edges instead of -divide_by
create_generated_clock -name clkdiv2 -source [get_pins REGA/C] -edges {1 3 5} \
[get_pins REGA/Q]

生成时钟的上升沿开始的一个周期内的主时钟的上升和下降沿位置{1 3 5 },从上升沿开始,时钟沿初始不是0,而是1.也可以省略下降沿,只要用单纯的上升沿能描述清楚。

非等占空比、有相移

 -edge_shift:参考主时钟对应的沿的移位值,

例如:

参考主时钟的edge1上升沿,应该右移2.5ns

参考主时钟的edge2下降沿,应该不移动0ns

参考主时钟的edge3上升沿,应该右移动2.5ns

create_clock -name clkin -period 10 [get_ports clkin]
create_generated_clock -name clkshift -source [get_pins mmcm0/CLKIN] -edges {1 2 3} \
-edge_shift {2.5 0 2.5} [get_pins mmcm0/CLKOUT]
# First rising edge: 0ns + 2.5ns = 2.5ns
# Falling edge: 5ns + 0ns = 5ns
# Second rising edge: 10ns + 2.5ns = 12.5ns

分数分频

create_generated_clock -name clk43 -source [get_pins mmcm0/CLKIN] -multiply_by 4 \
-divide_by 3 [get_pins mmcm0/CLKOUT]

选组合路径

 我们希望在多路复用器输出上创建一个生成的时钟,该时钟反映从主时钟到多路复用器的组合路径的延迟

create_generated_clock -name clkout -source [get_pins mmcm0/CLKIN] -combinational
[get_pins MUX/O]

ODDR驱动的前向时钟

create_generated_clock -name ck_vsf_clk_2 \
-source [get_pins ODDRE1_vsfclk2_inst/CLKDIV] -divide_by 1 [get_ports vsf_clk_2]


参考手册Using Constraints UG903


从TimeQuest角度看create_generated_clock

从TimeQuest角度看create_generated_clock - 重归混沌 - 博客园


create_generated_clock的使用问题

Xilinx Customer Community


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
FPGA时钟约束语法是一种用于定义FPGA设计中时钟信号规格的语法规则。通过使用时钟约束语法,设计人员可以明确指定时钟信号的频率、时钟间距、时钟上升边沿和下降边沿的时序要求等。以下是关于FPGA时钟约束语法的一些要点: 1. 时钟约束语法的基本结构:时钟约束通常以约束语句的形式存在于设计的约束文件中,一般使用关键字"create_clock"或"define_clock"开头。语法通常包括时钟信号名称、时钟频率和时钟时序等信息。 2. 时钟频率约束时钟频率是指时钟信号的周期性重复率,它可以通过时钟约束语法中的"period"参数来指定。常用的单位有纳秒或兆赫。 3. 时钟时序约束时钟时序是指时钟信号的上升边沿和下降边沿的时序约束。例如,可以使用时钟约束语法中的"rising_edge"和"falling_edge"关键字来指定时钟上升边沿和下降边沿的要求,如最小保持时间(minium hold time)和最大建立时间(maximum setup time)。 4. 时钟约束层次结构:FPGA设计中,可能存在多个时钟域和时钟层次结构。为了准确描述FPGA设计的时钟关系,时钟约束语法通常支持层次结构的描述,包括主时钟域和从时钟域。 5. 时钟约束检查工具:FPGA设计过程中,可以使用专门的时钟约束检查工具来验证时钟约束是否满足要求。这些工具可以通过分析FPGA设计和时钟约束文件的信息,自动检查时钟频率、时钟时序等是否满足约束要求。 FPGA时钟约束语法的正确使用可以确保设计的稳定性和性能。设计人员应该熟悉并遵守相关的时钟约束规则,以提高FPGA设计的可靠性和可维护性。同时,时钟约束语法也能够帮助设计人员更好地理解和管理FPGA设计中复杂的时钟关系。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qq_1615549892

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

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

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

打赏作者

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

抵扣说明:

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

余额充值