FPGA 时序约束与分析

张开发
2026/4/11 7:45:59 15 分钟阅读

分享文章

FPGA 时序约束与分析
1.1 什么是时序约束在很多 FPGA 初学者甚至是一些初级的 FPGA 工程师眼里FPGA 的开发就是建个工程、写写代码、分配引脚、编译、然后上板调试看结果而已。一些相对简单的FPGA 工程姑且可以这么糊弄过去但是稍微复杂一点的设计这么开发起来就会显得极其低效和不专业对于稍具规模的复杂工程这样更是行不通的。如图1.1所示在FPGA 的基本开发流程中设计仿真和设计约束必不可少可以说它们是 FPGA 设计中的重点和难点。设计仿真难在环境的搭建、库的编译和配置很多初学者往往止步于此而仿真的有效性和准确性也是设计者开发功底的体现一个好的设计就一定要配套好的仿真测试平台以确保设计验证的快速高效。设计约束涉及 FPGA 开发流程中的“约束输入”“分析实现结果”“设计优化”等环节设计约束定义了设计工程在编译过程中为了实现最终的板级功能所需达到的设计要求。设计约束主要分为物理约束和时序约束。物理约束主要包括1/0接口约束如引脚分配、电平标准设定等物理属性的约束、布局约束、布线约束以及配置约束。1/0接口的物理约束以及配置相关的物理约束是设计中常用到的约束但约束的方式和原理都相对简单易懂。对于布局约束或布线约束来说只要掌握基本的方法和技巧就能够在实际需要时进行应用。说得直白一些物理约束无非就是一些位置定义和功能开关的设定相对直观可视不涉及很深的理论知识易于理解和掌握。时序约束则是涉及 FPGA 内部的各种逻辑或走线的延时反应系统的频率和速度的约束。谈论处理器的处理性能时常常会提到主频主时钟频率这个参数它是一个很重要的指标对 FPGA 器件来说也是一样的。现代 FPGA 设计绝大多数功能是以时序逻辑实现的也就是通过时钟触发工作所以时钟频率的高低也是衡量 FPGA 处理能力的一个很重要的指标但不是唯一指标这个时钟频率的要求就是通过时序约束实现的。时序约束的目的很简单让 FPGA编译工具合理地调配 FPGA 内部有限的布局布线资源尽可能地满足设计者设定的所有时序要求主要是将走线、逻辑电路等产生的延时限制在范围内。没有任何功能逻辑的 FPGA 器件其内部结构就好比一块尚未焊接元器件的 PCBPrinted Circuit Board而设计者为项目量身定制的FPGA 逻辑功能就好比 PCB 上的电阻、电容、芯片等各样元器件。PCB通过导线将具有相关电气特性的信号相连接这些电气信号在 PCB上进行走线传输时势必会产生一定的传播延时一般定义为 0. 17ns/in1in2.54cm。FPGA 内部也有非常丰富的可配置的布线资源用于 FPGA 内部各个逻辑节点的导通这些走线和 PCB 的走线一样也会由于走线的长短不同而产生或大或小的传输延时简称“走线延时”。PCB上的信号通过任何一个元器件时哪怕只是一个小小的电阻或电容都会产生一定的延时FPGA的信号通过逻辑门电路进行各种运算处理时也会产生延时简称“门延时”。在半导体工艺发展的早期门延时远大于走线延时以至于走线延时可以忽略不计但在进入深亚微米乃至纳米工艺之后门延时被不断地优化降低使得今天的芯片和 FPGA 设计中走线延时也成为不可忽略的延时“大头”。那么问题来了一个信号从 FPGA 的一端输入经过一定的逻辑门电路处理后从 FPGA 的另一端输出这期间会产生多大的延时呢一组总线的多个信号从 FPGA 的一端输入经过一定的逻辑门电路处理后从 FPGA 的另一端输出这条总线的各个信号的延时一致吗之所以需要关心这此问题是因为过长的延时或者一条总线多个信号传输延时的不一致不仅会影响FPGA 本身的性能能够使用的最高时钟频率和所使用的时钟频率是否能正常工作而且也会给FPGA之外的电路或者系统带来诸多的问题。在 FPGA 器件中需要进行时序约束与分析也正是基于上述这些问题的考虑。FPGA的时序分析与约束通俗的理解可以定义为设计者根据实际的系统功能通过时序约束的方式提出时序要求FPGA 编译工具根据设计者的时序要求进行布局布线编译完成后FPGA编译工具还需要针对布局布线的结果套用特定的时序模型FPGA 器件厂商能够使用这样的模型对 FPGA 布局布线后的每一个逻辑电路和走线计算出延时信息给出最终的时序分析和报告设计者通过查看时序报告确认布局布线后的时序结果是否满足设计要求。下面举一个最简单的例子说明时序约束与分析的基本概念。如图1.2所示假设信号从FPGA 的一侧输入在 FPGA 内部经过一些逻辑处理产生逻辑延时和走线连接产生走线延时最终从 FPGA 的另一侧输出图中给出了多条可能实现该功能的路径。遍历所有可能的路径可以算得延时分别为14ns24ns15ns16ns21ns17ns18ns。可以把这些路径上的圆形节点认为是 FPGA 中所需的逻辑单元及其布局两个节点之间或输入/输出端口与节点之间的连线认是 FPGA 中的走线。这么多的布局布线方式如果设计者不对FPGA 提出约束要求告诉 FPGA编译工具设计者所期望的目标延时时序要求那么默认情况下FPGA 编译工具很可能就随便找一条路径进行布局布线了。如果实际上设计者对此系统的延时是有一定要求的如延时必须不高于 15ns。那么如果运气好FPGA 编译工.具选择了14ns或15ns 这两条最短延时路径系统尚且可以正常稳定地工作但是按概率算也还有2/3的可能性FPGA 编译工具会选择大于 15ns 的另外4条路径此时设计者的实际延时要求将无法得到满足。所以在对系统延时时序有要求的情况下不能指望FPGA 编译工具自己“猜测”或靠“碰运气”保证系统延时要求得到满足。需要将对系统的所有时序要求通过时序约束的方式告诉 FPGA编译工具。这样FPGA 编译工具工作起来就会有的放矢。而且布局布线结束后也可以通过查看开发工具给出的时序分析报告确认时序要求执行的状况。这正是对 FPGA 设计进行时序约束和时序分析的意义所在。

更多文章