之后的都只有我个人能看,想看的请支持单刀大佬。
主时钟约束
主时钟约束,就是我们对主时钟(Primary Clock)的时钟周期进行约束(告诉综合工具布局布线的标准),这个约束是我们用的最多的约束了,也是最重要的约束。
主时钟必须与一个网表对象相连,该对象代表了所有时钟边沿的开始点,并且在时钟树中向下传递;也可以说,主时钟的源点定义了0时刻,Vivado靠此来计算时钟延迟和不确定性 ;vivado会忽略所有时钟树上从主时钟上游的单元到主时钟之间的延时!
主时钟通常有两个来源:(1)板级时钟(主要是晶振)通过输入端口进入FPGA;(2)FPGA的GT收发器的输出管脚(如恢复时钟)。
主时钟只能通过create_clock命令来定义,且必须放在约束的开始,这是因为其它时序约束几乎都要参考主时钟。其基本语法如下:
create_clock -name <clock_name> -period <period> -waveform {<rise_time><fall_time>} [get_ports <port_name>]
- -name: 由设计者指定的主时钟名称,用于标识定义的主时钟,若不指定,则会默认使用<port_name>作为主时钟名称
- -period:是定义的主时钟周期,单位ns,取值必须大于0
- -waveform :{<rise_time><fall_time>}分别代表时钟的上升沿和下降沿,用于指定占空比和时钟相位,单位为ns;若不指定,则时钟占空比默认为50%且第一个上升沿为0时刻
- get_ports表示定义的主时钟的物理节点是FPGA的物理引脚;而GT收发器的引脚则使用get_pins来定义
- 下面是一个50MHZ主时钟的例子:
-
create_clock -period 20.000 -name I_Clk -waveform {0.000 10.000} [get_ports I_Clk]
例1:引脚输入的主时钟约束
下图是一个从引脚sysclk进入FPGA的主时钟,其时钟周期为10ns,占空比50%且不存在相移。
根据主时钟约束的语法,其应该被约束为:
create_clock -period 10 [get_ports sysclk]
该语句定义了名为sysclk的物理节点产生的时钟sysclk,其时钟周期为10ns、占空比为50%(没有定义时的默认占空比)。需要注意的是,这个实例省去了主时钟的名称,以及省去了用 -waveform参数来描述其占空比与相位关系。
类似的,假设有一个外部时钟devclk通过ClkIn进入FPGA作为主时钟,其周期为10ns,占空比25%,相移90度。该时钟根据语法应该被约束为:
create_clock -name devclk -period 10 -waveform {2.5 5} [get_ports ClkIn]
该语句定义了名为ClkIn的物理节点产生的时钟devclk ,其时钟周期为10ns、占空比为50%,第一个上升沿在时刻2.5ns而第一个下降沿则在时刻5ns。
例2:高速收发器GT的恢复时钟
时钟源由高速收发器gt0提供,如下图所示:
进入FPGA,之后经过混合时钟管理单元MMCM生成其他时钟,
以gt0发出的时钟为主时钟,其他生成时钟都有一个共同的时钟源,使用如下命令定义:
create_clock -name rxclk -period 3.33 [get_pins gt0/RXOUTCLK]
该语句定义了名为gt0/RXOUTCLK的物理节点产生的时钟rxclk,其时钟周期为3.33ns、占空比为50%(默认情况下的占空比)。
(使用PLL/CLOCK WIZARD 接入外界输入的时钟来保障稳定是一个常用的做法)
例3:差分时钟约束
差分时钟是指时钟是以差分形式(P端与N端)一起进入FGPA的时钟,
比如差分晶振等,这种情况只需要约束差分时钟的P端即可,N端可以被vivado自动识别到。
如果同时约束了正、负两端,反而会导致未知错误。
像上图这种差分时钟就可以这样约束(仅约束了P端):
create_clock -name sysclk -period 3.33 [get_ports SYS_CLK_clk_p]
MIPI里约束差分时钟的方法:
IBUFDS #(.IOSTANDARD ("LVDS_25")) ibufds_clk_inst (.I ( I_Mipi_phy_clk_p ), .IB ( I_Mipi_phy_clk_n ), .O ( Bufd_CLK )); // High Speed BUFIO clock buffer BUFIO bufio_inst (.O ( Buff_Clk ), .I ( Bufd_CLK ));
标签:get,clock,差分,约束,转单,占空比,时序,时钟 From: https://www.cnblogs.com/VerweileDoch/p/18090523