【STA】多场景时序检查学习记录

2024-03-03 05:44

本文主要是介绍【STA】多场景时序检查学习记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

单周期路径

建立时间时序检查

在时钟的有效沿到达触发器之前,数据应在一定时间内保持稳定,这段时间即触发器的建立
时间。满足建立时间要求将确保数据可靠地被捕获到触发器中。
建立时间检查是从发起触发器中时钟的第一个有效沿到捕获触发器中时钟后面最接近的那个有效沿。
在这里插入图片描述

触发器到触发器路径

在这里插入图片描述
建立时间检查可以用数学公式表示:

Tlaunch + Tck2q + Tdp < Tcapture + Tcycle - Tsetup

其中Tlaunch是发起触发器UFF0的时钟树延迟,Tdp是组合逻辑数据路径的延迟,Tcycle是时钟周期,Tcapture是捕获触发器UFF1的时钟树延迟。

触发器间可能存在多条路径,每条路径均需满足建立时间的要求,这等价于在延时最高的工作条件(PVT)下,触发器间的最长时序路径需要满足建立时间的要求。因此在时序报告中建立时间用-max表示。

输入引脚到触发器路径

输入引脚数据采用虚拟时钟发出

在这里插入图片描述

输入引脚数据采用实际时钟发出

在这里插入图片描述

触发器到输出引脚路径

输出引脚数据采用虚拟时钟捕获

在这里插入图片描述

输入引脚到输出引脚路径(组合逻辑路径)

在这里插入图片描述

保持时间时序检查

触发器的保持时间要求规定在时钟的有效沿之后的指定时间段内,被锁存的数据应保持稳定。
保持时间检查可确保正在变化的触发器输出值不会传递到捕获触发器,并在捕获触发器有机会捕获其原始值之前覆盖其输出。

在这里插入图片描述

触发器到触发器路径

在这里插入图片描述
保持时间检查可以用数学公式表示为:

Tlaunch + Tck2q + Tdp > Tcapture + Thold

其中Tlaunch是发起触发器的时钟树延迟,Tdp是组合逻辑数据路径中的延迟,Tcapture是捕获触发器的时钟树延迟。换句话说,由时钟边沿发起的数据到达捕获触发器D引脚所需的总时间必须大于时钟同一边沿到达捕获触发器所需的时间加上保持时间。这样可以确保UFF1 / D保持稳定状态,直到触发器的时钟引脚UFF1 / CK时钟上升沿之后的保持时间为止。

触发器间可能存在多条路径,每条路径均需满足保持时间的要求,这等价于在延时最低的工作条件(PVT)下,触发器间的最短时序路径需要满足保持时间的要求。因此在时序报告中建立时间用-min表示。

保持时间检查需要确保:

  • 当前数据发起时钟沿(Setup launch edge)的下一个(subsequent)时钟沿发起的数据不被当前数据捕获时钟沿(Setup receiving edge)所捕获。
  • 当前数据发起时钟沿发起的数据不被当前数据捕获时钟沿的前一个(Preceding)时钟沿所捕获。

在这里插入图片描述

触发器到输出引脚路径

输出引脚数据采用已知时钟捕获

在这里插入图片描述

多周期路径

两个触发器之间的数据路径可能需要一个以上的时钟周期才能传播通过逻辑。在这种情况下,这条组合逻辑路径会被定义为多周期路径。这意味着设计中后继触发器每隔多个周期才会使用一次前级触发器输出引脚上的数据,而不是每个周期都使用。

create_clock -name CLKM -period 10 [get_ports CLKM]
set_multicycle_path 3 -setup -from [get_pins UFF0/Q] -to [get_pins UFF1/D]
set_multicycle_path 2 -hold -from [get_pins UFF0/Q] -to [get_pins UFF1/D]
在这里插入图片描述

伪路径

  1. 利用已知/可预测时钟对信号采样时,尽量用多周期路径代替伪路径约束。

  2. 尽量不用-through复杂性高。

  3. 若要在两个时钟域之间设置伪路径,使用get_clocks效率更高:

set_false_path -from [get_clocks clockA] -to [get_clocks clockB]

  代替

set_false_path -from [get_pins {regA_ * }/CK] -to [get_pins {regB_ * }/D]

半周期路径

设计中同时具有负边沿触发的触发器(有效时钟沿为下降沿)和正边沿触发的触发器(有效时钟沿为上升沿),则设计中可能存在半周期路径。

在这里插入图片描述

半周期路径的建立时间、保持时间捕获时钟沿与发起时钟沿偏移均为半个时钟周期。

撤销时间检查

撤销时间检查用于确保在有效时钟沿与释放异步控制信号之间有足够的时间。类似于保持时间检查。

在这里插入图片描述

恢复时间检查

恢复时间检查用于确保异步信号变为无效状态的时刻与下一个有效时钟沿之间的时间间隔大于一个最
小值。类似于建立时间检查。

在这里插入图片描述

跨时钟域

当数据发起触发器和捕获触发器的时钟频率不同时,STA会首先确定一个公共基本周期(common base period)。快时钟的时钟周期会被延拓,以便获得两个时钟的一段公共周期。

慢时钟到快时钟

对于nMHz的慢时钟到4nMHz的快时钟数据传输:
在这里插入图片描述
假设该设计的目的是在CLKP的每隔第4个捕获沿上捕获数据,且数据发起沿后数据会发生变动,即需要将保持时间检查一直移回到数据发起沿所在位置,对应波形图如下:

在这里插入图片描述

对应上述波形图可使用的多周期约束如下。

set_multicycle_path 4 -setup -from [get_clocks CLKM] -to [get_clocks CLKP] -end
set_multicycle_path 3 -hold -from [get_clocks CLKM] -to [get_clocks CLKP] -end

其中-end表示依照捕获时钟沿,默认情况下-setup使用-start即发起时钟沿,-hold使用-end即捕获时钟沿。使用-end时会从默认的捕获时钟沿开始前移指定倍数周期,使用-start会从默认的发起时钟沿后移指定倍数周期。

快时钟到慢时钟

在这里插入图片描述

如果设计能够支持放宽建立时间检查要求,为数据路径提供两个快时钟周期,此时波形图如下:

在这里插入图片描述
此时多周期路径约束如下:

set_multicycle_path 2 -setup -from [get_clocks CLKP] -to [get_clocks CLKM] -start
set_multicycle_path 1 -hold -from [get_clocks CLKP] -to [get_clocks CLKM] -start

多时钟域

不同频率

  • 整数倍:设计中多个时钟的频率是彼此的整数倍。在这种情况下,会通过计算所有相关时钟之间的公共基本周期,以便所有时钟同步。
  • 非整数倍:对于两个频率不是彼此整数倍的时钟域之间存在数据路径的情况,时序分析会先计算相关时钟的公共周期,然后再将时钟扩展到该公共周期。之后,建立时间检查在时钟发起沿和捕获沿之间的最短时间内进行(根据建立时间不等式,两沿最短时检查最严格)。保持时间检查在发起时钟沿对应捕获时钟沿的前一周期与当前发起时钟沿最小时进行。

在这里插入图片描述

不同相位

在这里插入图片描述

这篇关于【STA】多场景时序检查学习记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/768639

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Spring Security 前后端分离场景下的会话并发管理

《SpringSecurity前后端分离场景下的会话并发管理》本文介绍了在前后端分离架构下实现SpringSecurity会话并发管理的问题,传统Web开发中只需简单配置sessionManage... 目录背景分析传统 web 开发中的 sessionManagement 入口ConcurrentSess

99%的人都选错了! 路由器WiFi双频合一还是分开好的专业解析与适用场景探讨

《99%的人都选错了!路由器WiFi双频合一还是分开好的专业解析与适用场景探讨》关于双频路由器的“双频合一”与“分开使用”两种模式,用户往往存在诸多疑问,本文将从多个维度深入探讨这两种模式的优缺点,... 在如今“没有WiFi就等于与世隔绝”的时代,越来越多家庭、办公室都开始配置双频无线路由器。但你有没有注

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

基于Spring Boot 的小区人脸识别与出入记录管理系统功能

《基于SpringBoot的小区人脸识别与出入记录管理系统功能》文章介绍基于SpringBoot框架与百度AI人脸识别API的小区出入管理系统,实现自动识别、记录及查询功能,涵盖技术选型、数据模型... 目录系统功能概述技术栈选择核心依赖配置数据模型设计出入记录实体类出入记录查询表单出入记录 VO 类(用于

深入解析Java NIO在高并发场景下的性能优化实践指南

《深入解析JavaNIO在高并发场景下的性能优化实践指南》随着互联网业务不断演进,对高并发、低延时网络服务的需求日益增长,本文将深入解析JavaNIO在高并发场景下的性能优化方法,希望对大家有所帮助... 目录简介一、技术背景与应用场景二、核心原理深入分析2.1 Selector多路复用2.2 Buffer

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream