基于FPGA的时序分析-主时钟与虚拟时钟约束


一、主时钟概念

  • 主时钟通常是FPGA以外的板级时钟(晶振、数据传输的同步时钟)或FPGA的高速收发器输出数据的同步恢复时钟信号等;
  • 约束主时钟时,必须关联FPGA设计网表中已有的某个时钟节点或引脚(定义整个时序分析的时序零点);
  • 主时钟的定义需要优先进行;

二、主时钟约束语法

creat_clock -name<clock_name> -period<period> -waveform{<rise_time><fall_time>} [get_ports<port_name>]
  • clock_name:创建的主时钟名称,若后续的约束需要引用一句定义的主时钟,则clock_name为唯一标识;若该项缺省,则默认使用<port_name>所指定的时钟物理节点作为时钟名称;注:在定义虚拟时钟时,不指定<port_name>,必须指定<clock_name>
  • period:创建的时钟周期,单位为ns,取指必须大于0;
  • port_name:表示主时钟的物理节点为FPGA引脚;FPGA内部的时钟网络也能作为主时钟的物理节点,可以使用get_nets进行定义

三、设计时钟识别

  通过查看时钟网络报告和时序确认报告,可以掌握设计中的所有时钟信号,识别需要进行约束的时钟信号,获取其基本信息,以便更好地对其添加约束;

1)时钟网络报告

  首先进行实现Implemented Design -> Open Implemented Design
然后 Tcl_Console -> report_clock_networks
在这里插入图片描述在这里插入图片描述

2)时序确认报告

  Tcl_Console ->check_timing
在这里插入图片描述

四、主时钟约束实例

1)创建主时钟Sysclk 周期为10ns 占空比为 50%

creat_clock -name Sysclk -period 10 -waveform{0 5} [get_ports Sysclk]

2) 从引脚输入的主时钟devclk 周期为10ns 占空比25% 90°相移

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

3) 高速传输器输出的主时钟约束

在这里插入图片描述

creat_clock -name rxclk -period 6.667 [get_nets gt0/RXOUTCLK]

4)差分信号的主时钟约束

creat_clock -name sysclk -period 3.33 [get_ports sys_clk_p]

五、 虚拟时钟概念

  • 在一些时序路径中,如一些引脚上的数据信号,其同步时钟只存在于外部芯片,并不存在于FPGA内;
  • 需要定义一个虚拟时钟用于描述时序数据引脚的外部时钟信号;
  • 虚拟时钟并不是实际存在于FPGA中的,因此它在定义时无须依附于任何设计中的实际物理节点;

六、虚拟时钟的应用场景

  • 时序分析(一般是I/O引脚相关的时序路径)的参考时钟并不是FPGA内部的某个设计时钟;
  • 与FPGA器件的I/O路径相关的内部驱动时钟与其板级驱动时钟并不是完全同步的;
  • 设计者希望对I/O的驱动时钟指定一些特殊的抖动和延时值,但又不希望影响此时钟在FPGA内部的时钟传输特性;

七、虚拟时钟约束实例

1)系统同步时钟的pin2reg的虚拟时钟约束

目的寄存器reg2的时钟是真实存在的,而源寄存器的主时钟不会传输到FPGA;
在这里插入图片描述
1.同频同相
在这里插入图片描述

creat_clock -name VIR_CLK -period 10.000 -waveform{0.000 5.000}
creat_clock -name SYS_CLK -period 10.000 -waveform{0.000 5.000} [get_ports clk]

2.同频异相

creat_clock -name VIR_CLK -period 10.000 -waveform{2.000 7.000}
creat_clock -name SYS_CLK -period 10.000 -waveform{0.000 5.000} [get_ports clk]

2)系统同步时钟的reg2pin的虚拟时钟约束

  源寄存器reg1的时钟是真实存在的,而目的寄存器的主时钟不会传输到FPGA;
1.同频同相

creat_clock -name VIR_CLK -period 10.000 -waveform{0.000 5.000}
creat_clock -name SYS_CLK -period 10.000 -waveform{0.000 5.000} [get_ports clk]

2.同频异相

creat_clock -name VIR_CLK -period 10.000 -waveform{2.000 7.000}
creat_clock -name SYS_CLK -period 10.000 -waveform{0.000 5.000}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

PPRAM

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

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

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

打赏作者

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

抵扣说明:

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

余额充值