一、前言
无论是FPGA应用开发还是数字IC设计,时序约束和静态时序分析(STA)都是十分重要的设计环节。在FPGA设计中,可以在综合后和实现后进行STA来查看设计是否能满足时序上的要求。本文阐述基本的时序约束和STA操作流程。内容主要来源于《Vivado从此开始》这本书,我只是知识的搬运工。
二、时序约束与XDC脚本
时序约束的目的就是告诉工具当前的时序状态,以让工具尽量优化时序并给出详细的分析报告。一般在行为仿真后、综合前即创建基本的时序约束。Vivado使用SDC基础上的XDC脚本以文本形式约束。以下讨论如何进行最基本时序约束相关脚本。
1 时序约束首要任务是创建主时钟,主时钟即为时钟引脚进入时钟信号或高速收发器生成时钟。[create_clock]
create_clock -name clk_name -period N -waveform {pos_time neg_time} [get_ports port_name] (划线部分可选)
创建两个异步的主时钟:
create_clock -name clk_a -period 10 [get_ports clk_a]
create_clock -name clk_b -period 15 [get_ports clk_b]
set_clock_groups -asynchronous -group clk_a -group clk_b
当两个主时钟是异步关系,它们生成时钟同样是异步关系:
set_clock_groups -asynchronous -group [get_clocks clk_a -include_generated_clocks] \
-group [get_clocks clk_b -include_generated_clocks]
差分时钟仅约束P端口:<