zl程序教程

您现在的位置是:首页 >  Javascript

当前栏目

FPGA时序约束与分析 --- 时序约束概述

2023-04-18 16:44:02 时间

本系列参考文献 — FPGA时序与约束分析-吴厚航

FPGA从综合到实现需要的过程如下:synth_design -> opt_design -> place-design -> phys_opt_design -> route_design

1、时序约束的理解
2、时序约束的基本路径
3、时序约束的步骤
4、时序约束的主要方法
5、查看相关时序信息

1、时序约束的理解

FPGA的设计约束分为物理约束和时序约束:

  • 物理约束主要包括 I/O 接口约束,布局约束,布线约束以及配置约束。其中 I/O 接口约束主要为引脚分配、电平标准设定等物理属性的约束。
  • 时序约束是涉及FPGA内部的各种逻辑或走线的延时,反应系统的频率和速度的约束。

FPGA实现时序约束与分析的流程可以定义为:

  1. 提出时序要求:设计者根据实际的系统功能,通过时序约束的方式提出时序要求;
  2. 根据要求布线:FPGA编译工具根据设计者的时序要求,进行布局布线;
  3. 给出时序报告:编译完成后,FPGA编译工具针对布局布线的结果,套用特定的时序模型给出最终的时序分析和报告。
  4. 根据报告修改时序设计:设计者通过查看时需报告,确定布局布线后的时序结果是否满足者及要求。

时序约束中的欠约束和过约束:

  • 欠约束:约束的过松,约束要求比实际要求低;
  • 过约束:约束的过紧,约束要求比实际要求高。

2、时序约束的基本路径

时序约束所覆盖的时序路径主要有一下4类:

  1. reg2reg,FPGA内部寄存器之间的时序路径;
  2. pin2reg,输入引脚到FPGA内部寄存器的时序路径;
  3. reg2pin,FPGA内部寄存器到输出引脚的时序路径;
  4. pin2pin,输入引脚到输出引脚之间的时序路径(不通过寄存器)。
    在这里插入图片描述

3、时序约束的步骤

时序约束通常分为4个主要步骤:时钟约束 —> 输入/输出接口约束 —> 时钟分组和跨时钟约束 —> 时序例外约束。在这里插入图片描述

4、时序约束的主要方法

注意: 时序约束辅助工具或者相关的TCL命令,都必须在 open synthesis design / open implemention design 后才能有效运行。

(1)、GUI

  时序约束编辑器: 可以按照左边的Clocks分组添加时钟约束,需要自己搜索要添加的时钟。
在这里插入图片描述

在这里插入图片描述

  时序约束向导: 按照 primary clocks/generated clocks等时钟顺序一页一页显示添加约束,会显示当前需要添加约束的部分时钟(只显示get_port,pins和nets不显示)以及已经约束的时钟。
在这里插入图片描述

(2)、手动输入约束

在.xdc文件中进行编辑。在 vivado 的 Language Templates 中,有基本语法模板。

5、查看相关时序信息

(1)识别设计时钟
  查看所有时钟:report_clock_networks(TCL),打印已约束和未约束的所有时钟。
  时序确认报告: check_timing(TCL),打印工程基本信息以及12条check timming。这12条报告中,可以确认当前工程的时序约束状态,明确有多少路径目前没有被约束。
(2)查看时钟信息:
  查看已约束时钟的详细信息: report_clocks(TCL)打印包含时钟周期在内的的所有时钟信息。
  查看是否有 unsafe 时钟:report_clock_interaction(TCL) 或 Implentation- Report Clock Interaction(推荐)。
  查看时序约束状态:report_timing_summary (TCL)或者 Implentation- report timing summary (推荐)或者直接 open implemented design ,查看 Timing 窗口,主要查看WNS、TNS、WHS、THS、WPWS、TPWS这6个参数,参数具体含义及标红报错修改方法见后续文章。