静态时序分析STA——8.1 时序检查(建立时间检查)

文章目录

  • 一、时序路径组
  • 二、建立时间检查
    • 1. 触发器到触发器路径
      • 1)时钟单元UCKBUF0的延迟计算
      • 2)时钟源延迟(clock source latency)
    • 2. 输入到触发器路径
      • 1) 虚拟时钟的输入路径
      • 2) 具有实际时钟的输入路径
    • 3. 触发器到输出路径
    • 4. 输入到输出路径


参考文献
[1]Static Timing Analysis for Nanometer Designs A Practical Approach

一、时序路径组

  静态时序分析STA会分析设计中的所有时序路径,每个路径都有一个起点和终点。
在这里插入图片描述

  如图7-26所示,在 STA 中,时序路径是根据有效的起点和终点来划分的。

  • 有效的路径起点:输入端口、同步器件的时钟引脚(如触发器的CK端口)
  • 有效的路径终点:输出端口、同步器件的数据输入引脚(触发器的D端口)
      因此,有效的时序路径包括:
  • 从输入端口到输出端口。
  • 从输入端口到触发器或存储器的数据输入引脚。
  • 从一个触发器或存储器的时钟引脚到另一个触发器或存储器的数据输入引脚。
  • 从一个触发器或存储器的时钟引脚到输出端口。
      图7-26中有效的时序路径包括
  • 输入端口 A 到输出端口 Z
  • 输入端口 A 到触发器 UFFA 的 D 引脚
  • 触发器 UFFA 的 CK 引脚到触发器 UFFB 的 D 引脚
  • 触发器 UFFB 的 CK 引脚到输出端口 Z
      时序路径可以根据与路径终点相关的时钟分类为不同时序路径组(path groups)。因此,每个时钟都有一组与之相关的时序路径。还有一个默认时序路径组,其中包括了所有非时钟(异步)路径。
    在这里插入图片描述

  在图 7-27 的示例中,时序路径分组为:

  • CLKA 组:输入端口 A 到触发器 UFFA 的 D 引脚
  • CLKB 组:触发器 UFFA 的 CK 引脚到触发器 UFFB 的 D 引脚
  • 默认组:输入端口 A 到输出端口 Z、触发器 UFFB 的 CK 引脚到输出端口 Z
      静态时序分析和报告通常分别在每个时序路径组中单独执行。

二、建立时间检查

  在时钟的有效沿到达触发器之前,数据应在一定时间(触发器的建立时间)内保持稳定,该要求将确保数据可靠地被捕获到触发器中。图 8-1 显示了典型触发器的建立时间要求,建立时间检查将验证触发器的建立时间要求。通常,有一个发起触发器(用于发起数据的触发器)和捕获触发器用于捕获数据的触发器),这个捕获触发器的建立时间要求必须满足。建立时间检查将验证从发起触发器到捕获触发器的最长(或最大)路径,这两个触发器的时钟可以相同也可以不同。建立时间检查是从发起触发器中时钟的第一个有效沿到捕获触发器中时钟后面最接近的那个有效沿。建立时间检查将确保上一个时钟周期发起的数据准备好在一个周期后被捕获。
在这里插入图片描述

  如图 8-2 所示,其中发起触发器和捕获触发器具有相同的时钟。时钟 CLKM 的第一个上升沿在 Tlaunch 时间后出现在发起触发器的时钟引脚上,由该时钟沿发起的数据出现在触发器 UFF1 的 D 引脚的所需时间为 Tlaunch + Tck2q + Tdp。时钟CLKM 的第二个上升沿(通常在一个周期后检查建立时间)出现在捕获触发器 UFF1 的时钟引脚上的时间为 Tcycle + Tcapture。这两个时间之差必须大于触发器 UFF1 的建立时间要求,以确保触发器 UFF1可靠地捕获数据。
  建立时间检查可以用数学公式表达为
T l a u n c h + T c k 2 q + T d p < T c a p t u r e + T c y c l e − T s e t u p T_{launch} + T_{ck2q}+T_{dp} < T_{capture} + T_{cycle} - T_{setup} Tlaunch+Tck2q+Tdp<Tcapture+TcycleTsetup
  其中, T l a u n c h T_{launch} Tlaunch 是发起触发器 UFF0 的时钟树延迟,T_{ck2q}是发射触发器的时钟到输出延迟, T d p T_{dp} Tdp 是组合逻辑路径的延迟, T c y c l e T_{cycle} Tcycle 是时钟周期, T c a p t u r e T_{capture} Tcapture 是捕获触发器 UFF1 的时钟树延迟。
在这里插入图片描述

  总得来说,为了保证数据被捕获触发器正确采样,必须要满足建立时间检查,也就是数据到达捕获触发器 D 引脚所花费的总时间必须小于时钟传输到捕获触发器所花费的时间加上时钟周期再减去建立时间要求。
  由于建立时间检查受到-max 的约束,因此建立时间检查始终使用最长或最大的时序路径。出于同样的原因,通常在延迟最大的慢工艺角(slow corner)下执行建立时间检查。第一部分提到,时序路径分为四类,以下分别分析。

1. 触发器到触发器路径

  以下是一份触发器到触发器时序路径是建立时间检查报告。
在这里插入图片描述

  该报告中显示发起触发器(由 Startpoint 指定)的实例名称为UFF0,由时钟 CLKM 的上升沿触发。捕获触发器(由 Endpoint 指定)为 UFF1,也由时钟 CLKM 的上升沿触发。路径组(PathGroup)显示它属于路径组 CLKM。设计中的所有路径都基于捕获触发器的时钟归类为路径组。路径类型(Path Type)显示此报告中的延迟均为最大路径延迟,表明这是建立时间检查。这是因为建立时间检查对应于通过逻辑的最大(或最长路径)延迟。注意,保持时间检查对应于通过逻辑的最小(或最短路径)延迟。
  Incr 列显示了指定端口或引脚的单元或网络延迟增量, Path 列显示了数据实际到达和需要到达的路径累积延迟,此示例的时钟约束如下。

create_clock -name CLKM -period 10 -waveform {0 5} [get_ports CLKM]
set_clock_uncertainty -setup 0.3 [all_clocks]
set_clock_transition -rise 0.2 [all_clocks]
set_clock_transition -fall 0.15 [all_clocks]

  数据发起路径需要 0.26ns 的延迟才能到达触发器 UFF1 的 D 引脚,这是捕获触发器输入端的到达时间。捕获边沿(建立时间检查时为一个周期)为 10ns,为此时钟指定了 0.3ns 的时钟不确定度(clock cuncertainty),因此,有效时钟周期由于不确定度而减少了 0.3ns。时钟不确定度包括由于时钟源抖动引起的周期变化以及用于分析的任何其它时序裕量。从总的捕获路径中还要减去触发器的建立时间0.04ns(library setup time),得出数据需要到达的时间为9.66ns。由于数据实际到达时间为 0.26ns,因此在此时序路径上有9.41ns 的正裕量(slack)。请注意,所需到达时间和实际到达时间之差可能看起来是 9.40ns,但是实际值是出现在报告中的 9.41ns。之所以存在差异,是因为报表仅显示小数点后两位数字,而内部计算和存储的值比所报告的精度更高

  时序报告中的时钟网络延迟(clock network delay)是什么?为什么将其标记为理想(ideal)?时序报告中的这一行表明时钟树被认为是理想的,时钟路径中的任何缓冲器(buffer)都假定为零延迟。一旦构建了时钟树,就可以将时钟网络标记为“已传播”(propagated),从而使得时钟路径显示实际延迟值,如下一个示例时序报告中所示: 0.11ns 延迟是发起时钟上的时钟网络延迟,而0.12ns 延迟是捕获触发器上的时钟网络延迟。
在这里插入图片描述

  时序路径报告中可以选择包含扩展的时钟路径,即带有明确显示的时钟树。以下是一个例子.路径报告中的 UCKBUF0、 UCKBUF1 和 UCKBUF2 都是时钟缓冲器,提供了有关如何计算时钟树延迟的详细信息。
在这里插入图片描述
在这里插入图片描述

  此外,这里还需要关注以下概念。

1)时钟单元UCKBUF0的延迟计算

  单元延迟是根据单元的输入过渡时间和输出电容来计算的。因此,问题是在时钟树的第一个单元的输入处指定了多大的过渡时间,可以使用set_input_transition 命令明确指定第一个时钟单元输入引脚上的过渡时间(或压摆)。

set_input_transition -rise 0.3 [get_ports CLKM]
set_input_transition -fall 0.45 [get_ports CLKM]

  在上述的 set_input_transition 命令中,我们将输入上升过渡时间指定为了 0.3ns,将下降过渡时间指定为了 0.45ns。在没有该命令约束的情况下,将在时钟树的源端假设存在理想的压摆,这意味着上升和下降过渡时间均为 0ns。
  时序报告中的 “r” 和 “f” 字符表示时钟或数据信号的上升沿(和下降沿)。上一个时序路径报告中显示了一条从 UFF0 / Q 的下降沿开始到UFF1 / D 的上升沿结束的路径。由于 UFF1 / D 可以为 0 或 1,因此也可以有一条路径在 UFF1 / D 的下降沿结束。以下就是这样一条路径:
在这里插入图片描述在这里插入图片描述

  注意,触发器时钟引脚的边沿(称为有效边沿)保持不变。它只能是上升或下降有效沿,具体取决于触发器是由上升沿触发的还是由下降沿触发的。

2)时钟源延迟(clock source latency)

  时钟源延迟(clock source latency)也被称为插入延迟(insertion delay),是时钟从其源端传播到待分析设计的时钟定义点所花费的时间,如图 8-3 所示,这对应于设计之外的时钟树延迟。例如,如果该设计是较大模块的一部分,则时钟源延迟是指直到待分析设计时钟引脚为止的时钟树延迟。可以使用 set_clock_latency 命令明确指定此延迟。
在这里插入图片描述

set_clock_latency -source -rise 0.7 [get_clocks CLKM]
set_clock_latency -source -fall 0.65 [get_clocks CLKM]

  在没有上述命令的情况下,将假定延迟为 0,这是早期路径报告中使用的假设。请注意,源延迟不会影响设计内部的路径,并且它们具有相同的发起时钟和捕获时钟,这是因为发起时钟路径和捕获时钟路径都会加上一段相同的延迟。但是,这种延迟确实会影响经过待分析设计输入和输出的时序路径。
  如果没有-source 选项,则 set_clock_latency 命令将定义时钟网络延迟,这是从 DUA 中时钟定义点到触发器的时钟引脚的延迟。时钟网络延迟用于在建立时钟树之前(即在时钟树综合之前)对通过时钟路径的延迟进行建模。一旦建立了时钟树并标记为了“已传播”(propagated),便会忽略此时钟网络延迟约束

2. 输入到触发器路径

1) 虚拟时钟的输入路径

  以下是一个通过输入端口到触发器的路径报告示例,图 8-4 给出了与输入路径有关的原理图和时钟波形。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  首先要注意的是第一行中的 input port clocked by VIRTUAL_CLKM。如 7.9 节中所述,该时钟可以被认为是驱动设计输入端口 INA 的虚拟触发器,该虚拟触发器的时钟为 VIRTUAL_CLKM。此外,从该虚拟触发器的时钟引脚到输入端口 INA的最大延迟指定为 2.55ns,在报告中显示为 input external delay。可以使用以下 SDC 命令指定这些参数:

create_clock -name VIRTUAL_CLKM -period 10 -waveform {0 5}
set_input_delay -clock VIRTUAL_CLKM -max 2.55 [get_ports INA]

  注意,虚拟时钟 VIRTUAL_CLKM 的定义没有与设计中任何引脚相关,这是因为它是在设计之外定义的(它是虚拟的)。输入延迟约束set_input_delay 指定了相对于虚拟时钟的延迟。

  输入路径从端口 INA 开始,如何计算连接到端口 INA 的第一个单元UINV1 的延迟呢?一种方法是指定输入端口 INA 的驱动单元,该驱动单元用于确定驱动强度,从而确定端口 INA 上的压摆,然后用于计算单元 UINV1 的延迟。在输入端口 INA 上没有任何压摆约束的情况下,将假定端口上的过渡是理想的,即过渡时间为 0ns。输入延迟的设置详细可见

set_driving_cell -lib_cell BUFF -library lib0131wc[get_ports INA]

  图 8-4 还展示了如何进行建立时间检查。数据必须到达 UFF2 / D 的时间为 9.85ns,但是数据实际到达的时间为 2.65ns,因此该报告显示该路径的正裕量为 7.2ns。

2) 具有实际时钟的输入路径

  输入延迟也可以相对于实际时钟来指定,并不一定必须相对于虚拟时钟来指定。实际时钟可以是设计中的内部引脚或者输入端口上的时钟,图 8-5 描绘了一个示例,其中相对于输入端口 CLKP 上的时钟指定了端口 CIN 上的输入延迟约束。此延迟约束为:

set_input_delay -clock CLKP -max 4.3 [get_ports CIN]

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. 触发器到输出路径

  与上述输入端口约束类似,可以相对于虚拟时钟或设计中的内部时钟来约束输出端口,或者可以相对于实际的输入时钟端口或输出时钟端口来约束输出端口。以下是一个示例,相对于虚拟时钟约束了输出引脚 ROUT,输出约束如下:

set_output_delay -clock VIRTUAL_CLKP -max 5.1 [get_ports ROUT]
set_load 0.02 [get_ports ROUT]

  为了确定最后一个单元连接到输出端口的延迟,需要指定该端口上的负载,上面使用了 set_load 命令来指定输出负载。请注意,端口ROUT 可能在 DUA 内部具有负载,而 set_load 约束指定的是额外的负载,即来自 DUA 外部的负载。在没有 set_load 命令约束的情况下,将假定外部负载的值为 0(这可能不现实,因为该设计很可能会在其它设计中使用)。下图 8-6 显示了具有虚拟时钟的虚拟触发器的时序路径:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  注意,指定的输出延迟在报告中显示为 output external delay,其作用类似于虚拟触发器所需的建立时间。输出延迟的设置详情可见

4. 输入到输出路径

  设计也可以具有从输入端口到输出端口的纯组合逻辑路径。可以像我们前面看到的输入和输出路径一样,对路径进行约束和时序分析。下图 8-7 显示了这种路径的一个示例,虚拟时钟同时用于指定输入和输出端口上的约束,以下是输入和输出延迟约束:

set_input_delay -clock VIRTUAL_CLKM -max 3.6 [get_ports INB]
set_output_delay -clock VIRTUAL_CLKM -max 5.8 [get_ports POUT]

在这里插入图片描述

  以下是一个时序路径报告,它经过从输入 INB 到输出 POUT 的组合逻辑。请注意,任何内部时钟延迟(如果存在)都不会对该路径报告产生影响。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

了解高速设计的信号完整性仿真

高速设计需要精确的信号传输&#xff0c;以确保最佳性能。信号完整性差会导致关键应用中的误码、数据损坏甚至系统故障等问题。介电常数、损耗角正切和插入损耗等因素会显著影响信号质量。通过使用信号完整性仿真&#xff0c;您可以及早发现并解决这些挑战。这种主动方法有助于…

RAGFlowwindows本地pycharm运行

Python环境准备 1. 安装pipx。如已经安装&#xff0c;可跳过本步骤&#xff1a; python -m pip install --user pipxpython -m pipx ensurepath## 验证安装pipx --version2. 安装 uv。如已经安装&#xff0c;可跳过本步骤&#xff1a; pipx install uv ## 设置为阿里云 PyPI…

STM32-FreeRTOS的详细配置

配置FreeRTOS 原文链接&#xff1a;https://ydamooc.github.io/posts/c9defcd/ 1.1 下载FreeRTOS 打开FreeRTOS官网&#xff1a;https://www.freertos.org/ 点击下载&#xff0c;并且选择"FreeRTOS 202212.01"版本&#xff0c;再点击Download按钮下载官方的资源包…

Linux笔记---动静态库(原理篇)

1. ELF文件格式 动静态库文件的构成是什么样的呢&#xff1f;或者说二者的内容是什么&#xff1f; 实际上&#xff0c;可执行文件&#xff0c;目标文件&#xff0c;静态库文件&#xff0c;动态库文件都是使用ELF文件格式进行组织的。 ELF&#xff08;Executable and Linkable…

HVV-某田相关经历

一、背景 本次项目为期两周&#xff0c;由集团主导招募攻击队员对集团下属及其子公司进行的攻防演练。本次项目主导研判分析应急排查内部Nday发掘。 二、研判分析 2.1、帆软V10 漏洞概述 帆软 V10 及 V11 版本报表软件存在反序列化漏洞&#xff0c;攻击者可利用该漏洞使用…

AI与物联网的深度融合:开启智能生活新时代

在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;和物联网&#xff08;IoT&#xff09;作为两大前沿技术&#xff0c;正在加速融合&#xff0c;为我们的生活和工作带来前所未有的变革。这种融合不仅提升了设备的智能化水平&#xff0c;还为各行各业带来了新的机…

Linux `init` 相关命令的完整使用指南

Linux init 相关命令的完整使用指南—目录 一、init 系统简介二、运行级别&#xff08;Runlevel&#xff09;详解三、常用 init 命令及使用方法1. 切换运行级别2. 查看当前运行级别3. 服务管理4. 紧急模式&#xff08;Rescue Mode&#xff09; 四、不同 Init 系统的兼容性1. Sy…

UNet 改进(12):UNet with ECA (Efficient Channel Attention) 网络

详解 下面将详细解析这个实现了ECA注意力机制的UNet网络代码。 1. 代码概述 代码实现了一个带有Efficient Channel Attention (ECA)模块的UNet网络架构。 UNet是一种常用于图像分割任务的编码器-解码器结构网络,而ECA模块则是一种轻量级的通道注意力机制,可以增强网络对重…

视频监控EasyCVR视频汇聚平台接入海康监控摄像头如何配置http监听功能?

一、方案概述 本方案主要通过EasyCVR视频管理平台&#xff0c;实现报警信息的高效传输与实时监控。海康监控设备能通过HTTP协议将报警信息发送至指定的目的IP或域名&#xff0c;而EasyCVR平台则可以接收并处理这些报警信息&#xff0c;同时提供丰富的监控与管理功能&#xff0…

人工智能与网络安全:AI如何预防、检测和应对网络攻击?

引言&#xff1a;网络安全新战场&#xff0c;AI成关键角色 在数字化浪潮不断推进的今天&#xff0c;网络安全问题已经成为每一家企业、每一个组织无法回避的“隐形战场”。无论是电商平台、金融机构&#xff0c;还是政府机关、制造企业&#xff0c;都可能面临数据泄露、勒索病毒…

3D人脸扫描技术如何让真人“进入“虚拟,虚拟数字人反向“激活“现实?

随着虚拟人技术的飞速发展&#xff0c;超写实数字人已经成为数字娱乐、广告营销和虚拟互动领域的核心趋势。无论是企业家、知名主持人还是明星&#xff0c;数字分身正在以高度还原的形象替代真人参与各类活动&#xff0c;甚至成为品牌代言、直播互动的新宠。 3D人脸扫描&#…

递归函数详解

定义 递归是指一个函数在其定义中直接或间接地调用自身的方法。通过这种方式&#xff0c;函数可以将一个复杂的问题分解为规模更小的、与原问题相似的子问题&#xff0c;然后通过不断地解决这些子问题来最终解决整个问题。 组成部分 递归主体 这是函数中递归调用自身的部分…

ASP.NET Core Web API 配置系统集成

文章目录 前言一、配置源与默认设置二、使用步骤1&#xff09;创建项目并添加配置2&#xff09;配置文件3&#xff09;强类型配置类4&#xff09;配置Program.cs5&#xff09;控制器中使用配置6&#xff09;配置优先级测试7&#xff09;动态重载配置测试8&#xff09;运行结果示…

在生信分析中,从生物学数据库中下载的序列存放在哪里?要不要建立一个小型数据库,或者存放在Gitee上?

李升伟 整理 在Galaxy平台中使用时&#xff0c;从NCBI等生物学数据库下载的DNA序列的存储位置和管理方式需要根据具体的工作流程和需求进行调整。以下是详细的分步说明和建议&#xff1a; 一、Galaxy中DNA序列的默认存储位置 在Galaxy的“历史记录”&#xff08;History&…

SDK游戏盾如何接入?复杂吗?

接入SDK游戏盾&#xff08;通常指游戏安全防护类SDK&#xff0c;如防DDoS攻击、防作弊、防外挂等功能&#xff09;的流程和复杂度取决于具体的服务商&#xff08;如腾讯云、上海云盾等&#xff09;以及游戏类型和技术架构。以下是一般性的接入步骤、复杂度评估及注意事项&#…

通过类似数据蒸馏或主动学习采样的方法,更加高效地学习良品数据分布

好的&#xff0c;我们先聚焦第一个突破点&#xff1a; 通过类似数据蒸馏或主动学习采样的方法&#xff0c;更加高效地学习良品数据分布。 这里我提供一个完整的代码示例&#xff1a; ✅ Masked图像重建 残差热力图 这属于自监督蒸馏方法的一个变体&#xff1a; 使用一个 预…

【课题推荐】多速率自适应卡尔曼滤波(MRAKF)用于目标跟踪

多速率自适应卡尔曼滤波(Multi-Rate Adaptive Kalman Filter, MRAKF)是一种针对多传感器异步数据融合的滤波算法,适用于传感器采样率不同、噪声特性时变的目标跟踪场景。本文给出一个多速率自适应卡尔曼滤波框架,以无人机跟踪场景为例,融合IMU和GPS数据 文章目录 背景多速…

软考 系统架构设计师系列知识点之杂项集萃(49)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;48&#xff09; 第76题 某文件管理系统在磁盘上建立了位视图&#xff08;bitmap&#xff09;&#xff0c;记录磁盘的使用情况。若磁盘上物理块的编号依次为&#xff1a;0、1、2、……&#xff1b…

HTTP:七.HTTP缓存

HTTP缓存介绍 HTTP缓存是一种通过存储网络资源的副本,以减少对原始服务器请求的技术。当客户端再次请求相同资源时,如果该资源未过期,服务器可以直接从本地缓存中提供响应,而无需再次从原始服务器获取。这大大减少了网络延迟,提高了加载速度,并减轻了服务器的负载。HTTP…

WPF 图标原地旋转

如何使元素原地旋转 - WPF .NET Framework | Microsoft Learn <ButtonRenderTransformOrigin"0.5,0.5"HorizontalAlignment"Left">Hello,World<Button.RenderTransform><RotateTransform x:Name"MyAnimatedTransform" Angle"…