FPGA时序分析与时序约束(四)——时序例外约束

本文详细阐述了时序例外约束(包括多周期约束、虚假路径约束和最大/最小延时约束)在静态时序分析(STA)中的作用和应用,涉及不同类型的时钟关系、路径调整以及如何优化资源分配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、时序例外约束

1.1 为什么需要时序例外约束

1.2 时序例外约束分类

二、多周期约束

2.1 多周期约束语法

2.2 同频同相时钟的多周期约束

2.3 同频异相时钟的多周期约束

2.4 慢时钟域到快时钟域的多周期约束

2.5 快时钟域到慢时钟域的多周期约束

三、虚假路径约束

四、最大/最小延时约束


一、时序例外约束

1.1 为什么需要时序例外约束

        在STA中时序分析工具默认的时序检查方式可能与实际情况不吻合,此时就需要额外增加一些约束命令,用于调整时序检查方式,添加的这些额外的时序约束称为时序例外约束

        如以下情况就可以通过时序例外约束改善系统时序:

  • 某些逻辑的时序单元不是每个时钟周期都进行数据采样传输,可以使用多周期约束;
  • 对时序路径施加更紧的约束以获得更大的时序余量,可以使用最大最小约束;
  • 某些路径组合是静态的或并不需要进行时序约束,可以使用虚假路径忽略。

        因此对一些可以放宽时序要求的路径添加时序例外约束,以减少对布局布线的占用、释放资源给时序要求高的路径,确保系统更好的收敛。

1.2 时序例外约束分类

        时序例外约束主要包括多周期约束、虚假路径约束和最大最小延时约束。

命令 功能
set_multicycle_path 多周期约束,指定从起始时钟沿到目标时钟沿所需的时钟周期数。常用于放宽某些时序路径的时序要求,以指导设计工具实现更合理的布局布线资源分配。
set_false_path 虚假路径约束,指定在设计中不做分析的时序路径,即在布局布线中作为最低优先级的路径。

set_max_delay

set_min_delay

最大延时约束和最小延时约束。该约束将会覆盖设计默认的(已约束或系统默认)用于建立和保持时间分析的最大或最小路径延时时间,即用延时时间对特定时序路径添加的约束。

二、多周期约束

2.1 多周期约束语法

        默认情况下,时序工具以单周期为单位进行时序路径分析。多周期约束可以调整建立时间和保持时间检查的起始时钟沿到目标时钟沿所需的时钟周期数,多周期约束可以设置在单个路径上,多个路径上,甚至两个时钟之间,使用set_multicycle_path命令实现。

set_multicycle_path <path_multiplier> [-setup|-hold] [-start|-end] [-from <startpoints>] [-to <endpoints>] [-through <pins|cells|nets>]
  • <path_multiplier> 用于设置修改约束路径分析的时钟周期数,取值必须是正整数。一般情况下setup/recovery分析是<path_multiplier>默认为1,hold/removal分析时<path_multiplier>默认为0,因此进行多周期约束就是改变<path_multiplier>默认参数;
  • -setup和-hold用于指定约束命令所针对的是路径的建立时间分析(-setup)还是保持时间分析(-hold);
  • -start和-end用于指定约束命令的<path_multiplier>参数是以源时钟(-start)还是以目标时钟(-end)作为参考时钟;
  • -from指定约束路径的起始节点<startpoints>,可与to同时指定,若只指定form则表示覆盖所有从起始节点开始的路径;
  • -to指定约束路径的终止节点<endpoints>,可与form同时指定,若只指定to则表示覆盖所有到终止节点结束的路径;
  • -through指定约束路径所经过的节点<pins|cells|nets>,可选项。

        单周期约束就是按照单周期关系来分析数据路径,即数据的发起沿和捕获沿是最邻近的一对时钟沿,如下图所示。

  • 建立时间关系:以第一个发送沿为基准,再向后寻找距此发送沿最近的一个捕获沿,并将两者的setup定为1个周期;
  • 保持时间关系:确保当前发送沿推出的数据不被上一个捕获沿给捕获,即hold1(Source clock中的4ns发射的数据不能被Destination clock中的4ns处捕获);确保下一个发送沿推出的数据不被当前捕获沿给捕获,即hold2(Source clock中的8ns发射的数据不能被Destination clock中的8ns处为捕获)。
  • 因此previous capture与current launch 构成一组检查;current capture与next launch 构成一组检查。对于两条保持时间的检查,时序报告最终只会给出裕量最小的一条。一旦确定建立时间路径,保持时间路径会自动根据规则做调整。

         保持(hold)时间关与建立(setup)时间关系可通过如下公式进行换算:

保持时间时钟周期数=建立时间<path_multiplier>参数 —1 — 保持时间<path_multiplier>参数

        由于建立时间的默认<path_multiplier>参数为1,保持时间的默认<path_multiplier>参数为0,则默认的保持时间的时钟周期数就是1-1-0=0.

 总结 -end 和 -start 选项如何影响有效的启动和捕获边沿:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值