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

文章目录

  • 主时钟概念
  • 主时钟约束语法
  • 设计时钟识别
    • 1)时钟网络报告
    • 2)时序确认报告
  • 主时钟约束实例
  • 虚拟时钟概念
  • 虚拟时钟的应用场景
  • 虚拟时钟约束实例


主时钟概念

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

主时钟约束语法

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

设计时钟识别

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

1)时钟网络报告

首先进行实现Implemented Design -> Open Implemented Design
然后 Tcl_Console -> report_clock_networks
基于FPGA的时序分析-主时钟与虚拟时钟约束_第1张图片基于FPGA的时序分析-主时钟与虚拟时钟约束_第2张图片

2)时序确认报告

Tcl_Console ->check_timing基于FPGA的时序分析-主时钟与虚拟时钟约束_第3张图片

主时钟约束实例

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

creat_clock -name Sysclk -period 10 -waveform{0 5} [get_ports Sysclk]
  1. 从引脚输入的主时钟devclk 周期为10ns 占空比25% 90°相移
creat_clock -name devclk -period 10 -waveform{2.5 5} [get_ports devclk]
  1. 高速传输器输出的主时钟约束
    基于FPGA的时序分析-主时钟与虚拟时钟约束_第4张图片
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;基于FPGA的时序分析-主时钟与虚拟时钟约束_第5张图片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} [get_ports clk]

你可能感兴趣的:(fpga开发,硬件工程,硬件架构,嵌入式硬件)